diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -7,9 +7,8 @@
 
 
 ## Version
-
-`1.6.1`
-
+ 
+`2.0` - Derived from API version @2017-08-29@ of the AWS service descriptions, licensed under Apache 2.0.
 
 ## Description
 
@@ -26,7 +25,7 @@
 The provided lenses should be compatible with any of the major lens libraries
 [lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
 
-See [Network.AWS.MediaConvert](http://hackage.haskell.org/package/amazonka-mediaconvert/docs/Network-AWS-MediaConvert.html)
+See [Amazonka.MediaConvert](http://hackage.haskell.org/package/amazonka-mediaconvert/docs/Amazonka-MediaConvert.html)
 or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.
 
 
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import           Distribution.Simple
-main = defaultMain
diff --git a/amazonka-mediaconvert.cabal b/amazonka-mediaconvert.cabal
--- a/amazonka-mediaconvert.cabal
+++ b/amazonka-mediaconvert.cabal
@@ -1,105 +1,681 @@
-name:                  amazonka-mediaconvert
-version:               1.6.1
-synopsis:              Amazon Elemental MediaConvert SDK.
-homepage:              https://github.com/brendanhay/amazonka
-bug-reports:           https://github.com/brendanhay/amazonka/issues
-license:               MPL-2.0
-license-file:          LICENSE
-author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-copyright:             Copyright (c) 2013-2018 Brendan Hay
-category:              Network, AWS, Cloud, Distributed Computing
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
+cabal-version:      2.2
+name:               amazonka-mediaconvert
+version:            2.0
+synopsis:           Amazon Elemental MediaConvert SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
 description:
-    The types from this library are intended to be used with
-    <http://hackage.haskell.org/package/amazonka amazonka>, which provides
-    mechanisms for specifying AuthN/AuthZ information, sending requests,
-    and receiving responses.
-    .
-    Lenses are used for constructing and manipulating types,
-    due to the depth of nesting of AWS types and transparency regarding
-    de/serialisation into more palatable Haskell values.
-    The provided lenses should be compatible with any of the major lens libraries
-    such as <http://hackage.haskell.org/package/lens lens> or
-    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
-    .
-    See "Network.AWS.MediaConvert" or <https://aws.amazon.com/documentation/ the AWS documentation>
-    to get started.
+  Derived from API version @2017-08-29@ of the AWS service descriptions, licensed under Apache 2.0.
+  .
+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,
+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.
+  .
+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.
+  .
+  Generated lenses can be found in "Amazonka.MediaConvert.Lens" and are
+  suitable for use with a lens package such as <http://hackage.haskell.org/package/lens lens> or <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
+  .
+  See "Amazonka.MediaConvert" and the <https://aws.amazon.com/documentation/ AWS documentation> to get started.
 
 source-repository head
-    type:              git
-    location:          git://github.com/brendanhay/amazonka.git
-    subdir:            amazonka-mediaconvert
+  type:     git
+  location: git://github.com/brendanhay/amazonka.git
+  subdir:   amazonka-mediaconvert
 
 library
-    default-language:  Haskell2010
-    hs-source-dirs:    src gen
-
-    ghc-options:
-        -Wall
-        -fwarn-incomplete-uni-patterns
-        -fwarn-incomplete-record-updates
-        -funbox-strict-fields
-
-    exposed-modules:
-          Network.AWS.MediaConvert
-        , Network.AWS.MediaConvert.CancelJob
-        , Network.AWS.MediaConvert.CreateJob
-        , Network.AWS.MediaConvert.CreateJobTemplate
-        , Network.AWS.MediaConvert.CreatePreset
-        , Network.AWS.MediaConvert.CreateQueue
-        , Network.AWS.MediaConvert.DeleteJobTemplate
-        , Network.AWS.MediaConvert.DeletePreset
-        , Network.AWS.MediaConvert.DeleteQueue
-        , Network.AWS.MediaConvert.DescribeEndpoints
-        , Network.AWS.MediaConvert.GetJob
-        , Network.AWS.MediaConvert.GetJobTemplate
-        , Network.AWS.MediaConvert.GetPreset
-        , Network.AWS.MediaConvert.GetQueue
-        , Network.AWS.MediaConvert.ListJobTemplates
-        , Network.AWS.MediaConvert.ListJobs
-        , Network.AWS.MediaConvert.ListPresets
-        , Network.AWS.MediaConvert.ListQueues
-        , Network.AWS.MediaConvert.Types
-        , Network.AWS.MediaConvert.UpdateJobTemplate
-        , Network.AWS.MediaConvert.UpdatePreset
-        , Network.AWS.MediaConvert.UpdateQueue
-        , Network.AWS.MediaConvert.Waiters
+  default-language: Haskell2010
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
 
-    other-modules:
-          Network.AWS.MediaConvert.Types.Product
-        , Network.AWS.MediaConvert.Types.Sum
+  exposed-modules:
+    Amazonka.MediaConvert
+    Amazonka.MediaConvert.AssociateCertificate
+    Amazonka.MediaConvert.CancelJob
+    Amazonka.MediaConvert.CreateJob
+    Amazonka.MediaConvert.CreateJobTemplate
+    Amazonka.MediaConvert.CreatePreset
+    Amazonka.MediaConvert.CreateQueue
+    Amazonka.MediaConvert.DeleteJobTemplate
+    Amazonka.MediaConvert.DeletePolicy
+    Amazonka.MediaConvert.DeletePreset
+    Amazonka.MediaConvert.DeleteQueue
+    Amazonka.MediaConvert.DescribeEndpoints
+    Amazonka.MediaConvert.DisassociateCertificate
+    Amazonka.MediaConvert.GetJob
+    Amazonka.MediaConvert.GetJobTemplate
+    Amazonka.MediaConvert.GetPolicy
+    Amazonka.MediaConvert.GetPreset
+    Amazonka.MediaConvert.GetQueue
+    Amazonka.MediaConvert.Lens
+    Amazonka.MediaConvert.ListJobs
+    Amazonka.MediaConvert.ListJobTemplates
+    Amazonka.MediaConvert.ListPresets
+    Amazonka.MediaConvert.ListQueues
+    Amazonka.MediaConvert.ListTagsForResource
+    Amazonka.MediaConvert.PutPolicy
+    Amazonka.MediaConvert.TagResource
+    Amazonka.MediaConvert.Types
+    Amazonka.MediaConvert.Types.AacAudioDescriptionBroadcasterMix
+    Amazonka.MediaConvert.Types.AacCodecProfile
+    Amazonka.MediaConvert.Types.AacCodingMode
+    Amazonka.MediaConvert.Types.AacRateControlMode
+    Amazonka.MediaConvert.Types.AacRawFormat
+    Amazonka.MediaConvert.Types.AacSettings
+    Amazonka.MediaConvert.Types.AacSpecification
+    Amazonka.MediaConvert.Types.AacVbrQuality
+    Amazonka.MediaConvert.Types.Ac3BitstreamMode
+    Amazonka.MediaConvert.Types.Ac3CodingMode
+    Amazonka.MediaConvert.Types.Ac3DynamicRangeCompressionLine
+    Amazonka.MediaConvert.Types.Ac3DynamicRangeCompressionProfile
+    Amazonka.MediaConvert.Types.Ac3DynamicRangeCompressionRf
+    Amazonka.MediaConvert.Types.Ac3LfeFilter
+    Amazonka.MediaConvert.Types.Ac3MetadataControl
+    Amazonka.MediaConvert.Types.Ac3Settings
+    Amazonka.MediaConvert.Types.AccelerationMode
+    Amazonka.MediaConvert.Types.AccelerationSettings
+    Amazonka.MediaConvert.Types.AccelerationStatus
+    Amazonka.MediaConvert.Types.AfdSignaling
+    Amazonka.MediaConvert.Types.AiffSettings
+    Amazonka.MediaConvert.Types.AllowedRenditionSize
+    Amazonka.MediaConvert.Types.AlphaBehavior
+    Amazonka.MediaConvert.Types.AncillaryConvert608To708
+    Amazonka.MediaConvert.Types.AncillarySourceSettings
+    Amazonka.MediaConvert.Types.AncillaryTerminateCaptions
+    Amazonka.MediaConvert.Types.AntiAlias
+    Amazonka.MediaConvert.Types.AudioChannelTag
+    Amazonka.MediaConvert.Types.AudioChannelTaggingSettings
+    Amazonka.MediaConvert.Types.AudioCodec
+    Amazonka.MediaConvert.Types.AudioCodecSettings
+    Amazonka.MediaConvert.Types.AudioDefaultSelection
+    Amazonka.MediaConvert.Types.AudioDescription
+    Amazonka.MediaConvert.Types.AudioDurationCorrection
+    Amazonka.MediaConvert.Types.AudioLanguageCodeControl
+    Amazonka.MediaConvert.Types.AudioNormalizationAlgorithm
+    Amazonka.MediaConvert.Types.AudioNormalizationAlgorithmControl
+    Amazonka.MediaConvert.Types.AudioNormalizationLoudnessLogging
+    Amazonka.MediaConvert.Types.AudioNormalizationPeakCalculation
+    Amazonka.MediaConvert.Types.AudioNormalizationSettings
+    Amazonka.MediaConvert.Types.AudioSelector
+    Amazonka.MediaConvert.Types.AudioSelectorGroup
+    Amazonka.MediaConvert.Types.AudioSelectorType
+    Amazonka.MediaConvert.Types.AudioTypeControl
+    Amazonka.MediaConvert.Types.AutomatedAbrRule
+    Amazonka.MediaConvert.Types.AutomatedAbrSettings
+    Amazonka.MediaConvert.Types.AutomatedEncodingSettings
+    Amazonka.MediaConvert.Types.Av1AdaptiveQuantization
+    Amazonka.MediaConvert.Types.Av1BitDepth
+    Amazonka.MediaConvert.Types.Av1FramerateControl
+    Amazonka.MediaConvert.Types.Av1FramerateConversionAlgorithm
+    Amazonka.MediaConvert.Types.Av1QvbrSettings
+    Amazonka.MediaConvert.Types.Av1RateControlMode
+    Amazonka.MediaConvert.Types.Av1Settings
+    Amazonka.MediaConvert.Types.Av1SpatialAdaptiveQuantization
+    Amazonka.MediaConvert.Types.AvailBlanking
+    Amazonka.MediaConvert.Types.AvcIntraClass
+    Amazonka.MediaConvert.Types.AvcIntraFramerateControl
+    Amazonka.MediaConvert.Types.AvcIntraFramerateConversionAlgorithm
+    Amazonka.MediaConvert.Types.AvcIntraInterlaceMode
+    Amazonka.MediaConvert.Types.AvcIntraScanTypeConversionMode
+    Amazonka.MediaConvert.Types.AvcIntraSettings
+    Amazonka.MediaConvert.Types.AvcIntraSlowPal
+    Amazonka.MediaConvert.Types.AvcIntraTelecine
+    Amazonka.MediaConvert.Types.AvcIntraUhdQualityTuningLevel
+    Amazonka.MediaConvert.Types.AvcIntraUhdSettings
+    Amazonka.MediaConvert.Types.BillingTagsSource
+    Amazonka.MediaConvert.Types.BurninDestinationSettings
+    Amazonka.MediaConvert.Types.BurninSubtitleAlignment
+    Amazonka.MediaConvert.Types.BurninSubtitleApplyFontColor
+    Amazonka.MediaConvert.Types.BurninSubtitleBackgroundColor
+    Amazonka.MediaConvert.Types.BurninSubtitleFallbackFont
+    Amazonka.MediaConvert.Types.BurninSubtitleFontColor
+    Amazonka.MediaConvert.Types.BurninSubtitleOutlineColor
+    Amazonka.MediaConvert.Types.BurninSubtitleShadowColor
+    Amazonka.MediaConvert.Types.BurnInSubtitleStylePassthrough
+    Amazonka.MediaConvert.Types.BurninSubtitleTeletextSpacing
+    Amazonka.MediaConvert.Types.CaptionDescription
+    Amazonka.MediaConvert.Types.CaptionDescriptionPreset
+    Amazonka.MediaConvert.Types.CaptionDestinationSettings
+    Amazonka.MediaConvert.Types.CaptionDestinationType
+    Amazonka.MediaConvert.Types.CaptionSelector
+    Amazonka.MediaConvert.Types.CaptionSourceFramerate
+    Amazonka.MediaConvert.Types.CaptionSourceSettings
+    Amazonka.MediaConvert.Types.CaptionSourceType
+    Amazonka.MediaConvert.Types.ChannelMapping
+    Amazonka.MediaConvert.Types.CmafAdditionalManifest
+    Amazonka.MediaConvert.Types.CmafClientCache
+    Amazonka.MediaConvert.Types.CmafCodecSpecification
+    Amazonka.MediaConvert.Types.CmafEncryptionSettings
+    Amazonka.MediaConvert.Types.CmafEncryptionType
+    Amazonka.MediaConvert.Types.CmafGroupSettings
+    Amazonka.MediaConvert.Types.CmafImageBasedTrickPlay
+    Amazonka.MediaConvert.Types.CmafImageBasedTrickPlaySettings
+    Amazonka.MediaConvert.Types.CmafInitializationVectorInManifest
+    Amazonka.MediaConvert.Types.CmafIntervalCadence
+    Amazonka.MediaConvert.Types.CmafKeyProviderType
+    Amazonka.MediaConvert.Types.CmafManifestCompression
+    Amazonka.MediaConvert.Types.CmafManifestDurationFormat
+    Amazonka.MediaConvert.Types.CmafMpdManifestBandwidthType
+    Amazonka.MediaConvert.Types.CmafMpdProfile
+    Amazonka.MediaConvert.Types.CmafPtsOffsetHandlingForBFrames
+    Amazonka.MediaConvert.Types.CmafSegmentControl
+    Amazonka.MediaConvert.Types.CmafSegmentLengthControl
+    Amazonka.MediaConvert.Types.CmafStreamInfResolution
+    Amazonka.MediaConvert.Types.CmafTargetDurationCompatibilityMode
+    Amazonka.MediaConvert.Types.CmafVideoCompositionOffsets
+    Amazonka.MediaConvert.Types.CmafWriteDASHManifest
+    Amazonka.MediaConvert.Types.CmafWriteHLSManifest
+    Amazonka.MediaConvert.Types.CmafWriteSegmentTimelineInRepresentation
+    Amazonka.MediaConvert.Types.CmfcAudioDuration
+    Amazonka.MediaConvert.Types.CmfcAudioTrackType
+    Amazonka.MediaConvert.Types.CmfcDescriptiveVideoServiceFlag
+    Amazonka.MediaConvert.Types.CmfcIFrameOnlyManifest
+    Amazonka.MediaConvert.Types.CmfcKlvMetadata
+    Amazonka.MediaConvert.Types.CmfcManifestMetadataSignaling
+    Amazonka.MediaConvert.Types.CmfcScte35Esam
+    Amazonka.MediaConvert.Types.CmfcScte35Source
+    Amazonka.MediaConvert.Types.CmfcSettings
+    Amazonka.MediaConvert.Types.CmfcTimedMetadata
+    Amazonka.MediaConvert.Types.CmfcTimedMetadataBoxVersion
+    Amazonka.MediaConvert.Types.ColorCorrector
+    Amazonka.MediaConvert.Types.ColorMetadata
+    Amazonka.MediaConvert.Types.ColorSpace
+    Amazonka.MediaConvert.Types.ColorSpaceConversion
+    Amazonka.MediaConvert.Types.ColorSpaceUsage
+    Amazonka.MediaConvert.Types.Commitment
+    Amazonka.MediaConvert.Types.ContainerSettings
+    Amazonka.MediaConvert.Types.ContainerType
+    Amazonka.MediaConvert.Types.CopyProtectionAction
+    Amazonka.MediaConvert.Types.DashAdditionalManifest
+    Amazonka.MediaConvert.Types.DashIsoEncryptionSettings
+    Amazonka.MediaConvert.Types.DashIsoGroupAudioChannelConfigSchemeIdUri
+    Amazonka.MediaConvert.Types.DashIsoGroupSettings
+    Amazonka.MediaConvert.Types.DashIsoHbbtvCompliance
+    Amazonka.MediaConvert.Types.DashIsoImageBasedTrickPlay
+    Amazonka.MediaConvert.Types.DashIsoImageBasedTrickPlaySettings
+    Amazonka.MediaConvert.Types.DashIsoIntervalCadence
+    Amazonka.MediaConvert.Types.DashIsoMpdManifestBandwidthType
+    Amazonka.MediaConvert.Types.DashIsoMpdProfile
+    Amazonka.MediaConvert.Types.DashIsoPlaybackDeviceCompatibility
+    Amazonka.MediaConvert.Types.DashIsoPtsOffsetHandlingForBFrames
+    Amazonka.MediaConvert.Types.DashIsoSegmentControl
+    Amazonka.MediaConvert.Types.DashIsoSegmentLengthControl
+    Amazonka.MediaConvert.Types.DashIsoVideoCompositionOffsets
+    Amazonka.MediaConvert.Types.DashIsoWriteSegmentTimelineInRepresentation
+    Amazonka.MediaConvert.Types.DecryptionMode
+    Amazonka.MediaConvert.Types.DeinterlaceAlgorithm
+    Amazonka.MediaConvert.Types.Deinterlacer
+    Amazonka.MediaConvert.Types.DeinterlacerControl
+    Amazonka.MediaConvert.Types.DeinterlacerMode
+    Amazonka.MediaConvert.Types.DescribeEndpointsMode
+    Amazonka.MediaConvert.Types.DestinationSettings
+    Amazonka.MediaConvert.Types.DolbyVision
+    Amazonka.MediaConvert.Types.DolbyVisionLevel6Metadata
+    Amazonka.MediaConvert.Types.DolbyVisionLevel6Mode
+    Amazonka.MediaConvert.Types.DolbyVisionMapping
+    Amazonka.MediaConvert.Types.DolbyVisionProfile
+    Amazonka.MediaConvert.Types.DropFrameTimecode
+    Amazonka.MediaConvert.Types.DvbddsHandling
+    Amazonka.MediaConvert.Types.DvbNitSettings
+    Amazonka.MediaConvert.Types.DvbSdtSettings
+    Amazonka.MediaConvert.Types.DvbSubDestinationSettings
+    Amazonka.MediaConvert.Types.DvbSubSourceSettings
+    Amazonka.MediaConvert.Types.DvbSubSubtitleFallbackFont
+    Amazonka.MediaConvert.Types.DvbSubtitleAlignment
+    Amazonka.MediaConvert.Types.DvbSubtitleApplyFontColor
+    Amazonka.MediaConvert.Types.DvbSubtitleBackgroundColor
+    Amazonka.MediaConvert.Types.DvbSubtitleFontColor
+    Amazonka.MediaConvert.Types.DvbSubtitleOutlineColor
+    Amazonka.MediaConvert.Types.DvbSubtitleShadowColor
+    Amazonka.MediaConvert.Types.DvbSubtitleStylePassthrough
+    Amazonka.MediaConvert.Types.DvbSubtitleTeletextSpacing
+    Amazonka.MediaConvert.Types.DvbSubtitlingType
+    Amazonka.MediaConvert.Types.DvbTdtSettings
+    Amazonka.MediaConvert.Types.Eac3AtmosBitstreamMode
+    Amazonka.MediaConvert.Types.Eac3AtmosCodingMode
+    Amazonka.MediaConvert.Types.Eac3AtmosDialogueIntelligence
+    Amazonka.MediaConvert.Types.Eac3AtmosDownmixControl
+    Amazonka.MediaConvert.Types.Eac3AtmosDynamicRangeCompressionLine
+    Amazonka.MediaConvert.Types.Eac3AtmosDynamicRangeCompressionRf
+    Amazonka.MediaConvert.Types.Eac3AtmosDynamicRangeControl
+    Amazonka.MediaConvert.Types.Eac3AtmosMeteringMode
+    Amazonka.MediaConvert.Types.Eac3AtmosSettings
+    Amazonka.MediaConvert.Types.Eac3AtmosStereoDownmix
+    Amazonka.MediaConvert.Types.Eac3AtmosSurroundExMode
+    Amazonka.MediaConvert.Types.Eac3AttenuationControl
+    Amazonka.MediaConvert.Types.Eac3BitstreamMode
+    Amazonka.MediaConvert.Types.Eac3CodingMode
+    Amazonka.MediaConvert.Types.Eac3DcFilter
+    Amazonka.MediaConvert.Types.Eac3DynamicRangeCompressionLine
+    Amazonka.MediaConvert.Types.Eac3DynamicRangeCompressionRf
+    Amazonka.MediaConvert.Types.Eac3LfeControl
+    Amazonka.MediaConvert.Types.Eac3LfeFilter
+    Amazonka.MediaConvert.Types.Eac3MetadataControl
+    Amazonka.MediaConvert.Types.Eac3PassthroughControl
+    Amazonka.MediaConvert.Types.Eac3PhaseControl
+    Amazonka.MediaConvert.Types.Eac3Settings
+    Amazonka.MediaConvert.Types.Eac3StereoDownmix
+    Amazonka.MediaConvert.Types.Eac3SurroundExMode
+    Amazonka.MediaConvert.Types.Eac3SurroundMode
+    Amazonka.MediaConvert.Types.EmbeddedConvert608To708
+    Amazonka.MediaConvert.Types.EmbeddedDestinationSettings
+    Amazonka.MediaConvert.Types.EmbeddedSourceSettings
+    Amazonka.MediaConvert.Types.EmbeddedTerminateCaptions
+    Amazonka.MediaConvert.Types.EmbeddedTimecodeOverride
+    Amazonka.MediaConvert.Types.Endpoint
+    Amazonka.MediaConvert.Types.EsamManifestConfirmConditionNotification
+    Amazonka.MediaConvert.Types.EsamSettings
+    Amazonka.MediaConvert.Types.EsamSignalProcessingNotification
+    Amazonka.MediaConvert.Types.ExtendedDataServices
+    Amazonka.MediaConvert.Types.F4vMoovPlacement
+    Amazonka.MediaConvert.Types.F4vSettings
+    Amazonka.MediaConvert.Types.FileGroupSettings
+    Amazonka.MediaConvert.Types.FileSourceConvert608To708
+    Amazonka.MediaConvert.Types.FileSourceSettings
+    Amazonka.MediaConvert.Types.FileSourceTimeDeltaUnits
+    Amazonka.MediaConvert.Types.FontScript
+    Amazonka.MediaConvert.Types.ForceIncludeRenditionSize
+    Amazonka.MediaConvert.Types.FrameCaptureSettings
+    Amazonka.MediaConvert.Types.H264AdaptiveQuantization
+    Amazonka.MediaConvert.Types.H264CodecLevel
+    Amazonka.MediaConvert.Types.H264CodecProfile
+    Amazonka.MediaConvert.Types.H264DynamicSubGop
+    Amazonka.MediaConvert.Types.H264EntropyEncoding
+    Amazonka.MediaConvert.Types.H264FieldEncoding
+    Amazonka.MediaConvert.Types.H264FlickerAdaptiveQuantization
+    Amazonka.MediaConvert.Types.H264FramerateControl
+    Amazonka.MediaConvert.Types.H264FramerateConversionAlgorithm
+    Amazonka.MediaConvert.Types.H264GopBReference
+    Amazonka.MediaConvert.Types.H264GopSizeUnits
+    Amazonka.MediaConvert.Types.H264InterlaceMode
+    Amazonka.MediaConvert.Types.H264ParControl
+    Amazonka.MediaConvert.Types.H264QualityTuningLevel
+    Amazonka.MediaConvert.Types.H264QvbrSettings
+    Amazonka.MediaConvert.Types.H264RateControlMode
+    Amazonka.MediaConvert.Types.H264RepeatPps
+    Amazonka.MediaConvert.Types.H264ScanTypeConversionMode
+    Amazonka.MediaConvert.Types.H264SceneChangeDetect
+    Amazonka.MediaConvert.Types.H264Settings
+    Amazonka.MediaConvert.Types.H264SlowPal
+    Amazonka.MediaConvert.Types.H264SpatialAdaptiveQuantization
+    Amazonka.MediaConvert.Types.H264Syntax
+    Amazonka.MediaConvert.Types.H264Telecine
+    Amazonka.MediaConvert.Types.H264TemporalAdaptiveQuantization
+    Amazonka.MediaConvert.Types.H264UnregisteredSeiTimecode
+    Amazonka.MediaConvert.Types.H265AdaptiveQuantization
+    Amazonka.MediaConvert.Types.H265AlternateTransferFunctionSei
+    Amazonka.MediaConvert.Types.H265CodecLevel
+    Amazonka.MediaConvert.Types.H265CodecProfile
+    Amazonka.MediaConvert.Types.H265DynamicSubGop
+    Amazonka.MediaConvert.Types.H265FlickerAdaptiveQuantization
+    Amazonka.MediaConvert.Types.H265FramerateControl
+    Amazonka.MediaConvert.Types.H265FramerateConversionAlgorithm
+    Amazonka.MediaConvert.Types.H265GopBReference
+    Amazonka.MediaConvert.Types.H265GopSizeUnits
+    Amazonka.MediaConvert.Types.H265InterlaceMode
+    Amazonka.MediaConvert.Types.H265ParControl
+    Amazonka.MediaConvert.Types.H265QualityTuningLevel
+    Amazonka.MediaConvert.Types.H265QvbrSettings
+    Amazonka.MediaConvert.Types.H265RateControlMode
+    Amazonka.MediaConvert.Types.H265SampleAdaptiveOffsetFilterMode
+    Amazonka.MediaConvert.Types.H265ScanTypeConversionMode
+    Amazonka.MediaConvert.Types.H265SceneChangeDetect
+    Amazonka.MediaConvert.Types.H265Settings
+    Amazonka.MediaConvert.Types.H265SlowPal
+    Amazonka.MediaConvert.Types.H265SpatialAdaptiveQuantization
+    Amazonka.MediaConvert.Types.H265Telecine
+    Amazonka.MediaConvert.Types.H265TemporalAdaptiveQuantization
+    Amazonka.MediaConvert.Types.H265TemporalIds
+    Amazonka.MediaConvert.Types.H265Tiles
+    Amazonka.MediaConvert.Types.H265UnregisteredSeiTimecode
+    Amazonka.MediaConvert.Types.H265WriteMp4PackagingType
+    Amazonka.MediaConvert.Types.Hdr10Metadata
+    Amazonka.MediaConvert.Types.Hdr10Plus
+    Amazonka.MediaConvert.Types.HlsAdditionalManifest
+    Amazonka.MediaConvert.Types.HlsAdMarkers
+    Amazonka.MediaConvert.Types.HlsAudioOnlyContainer
+    Amazonka.MediaConvert.Types.HlsAudioOnlyHeader
+    Amazonka.MediaConvert.Types.HlsAudioTrackType
+    Amazonka.MediaConvert.Types.HlsCaptionLanguageMapping
+    Amazonka.MediaConvert.Types.HlsCaptionLanguageSetting
+    Amazonka.MediaConvert.Types.HlsCaptionSegmentLengthControl
+    Amazonka.MediaConvert.Types.HlsClientCache
+    Amazonka.MediaConvert.Types.HlsCodecSpecification
+    Amazonka.MediaConvert.Types.HlsDescriptiveVideoServiceFlag
+    Amazonka.MediaConvert.Types.HlsDirectoryStructure
+    Amazonka.MediaConvert.Types.HlsEncryptionSettings
+    Amazonka.MediaConvert.Types.HlsEncryptionType
+    Amazonka.MediaConvert.Types.HlsGroupSettings
+    Amazonka.MediaConvert.Types.HlsIFrameOnlyManifest
+    Amazonka.MediaConvert.Types.HlsImageBasedTrickPlay
+    Amazonka.MediaConvert.Types.HlsImageBasedTrickPlaySettings
+    Amazonka.MediaConvert.Types.HlsInitializationVectorInManifest
+    Amazonka.MediaConvert.Types.HlsIntervalCadence
+    Amazonka.MediaConvert.Types.HlsKeyProviderType
+    Amazonka.MediaConvert.Types.HlsManifestCompression
+    Amazonka.MediaConvert.Types.HlsManifestDurationFormat
+    Amazonka.MediaConvert.Types.HlsOfflineEncrypted
+    Amazonka.MediaConvert.Types.HlsOutputSelection
+    Amazonka.MediaConvert.Types.HlsProgramDateTime
+    Amazonka.MediaConvert.Types.HlsRenditionGroupSettings
+    Amazonka.MediaConvert.Types.HlsSegmentControl
+    Amazonka.MediaConvert.Types.HlsSegmentLengthControl
+    Amazonka.MediaConvert.Types.HlsSettings
+    Amazonka.MediaConvert.Types.HlsStreamInfResolution
+    Amazonka.MediaConvert.Types.HlsTargetDurationCompatibilityMode
+    Amazonka.MediaConvert.Types.HlsTimedMetadataId3Frame
+    Amazonka.MediaConvert.Types.HopDestination
+    Amazonka.MediaConvert.Types.Id3Insertion
+    Amazonka.MediaConvert.Types.ImageInserter
+    Amazonka.MediaConvert.Types.ImscAccessibilitySubs
+    Amazonka.MediaConvert.Types.ImscDestinationSettings
+    Amazonka.MediaConvert.Types.ImscStylePassthrough
+    Amazonka.MediaConvert.Types.Input
+    Amazonka.MediaConvert.Types.InputClipping
+    Amazonka.MediaConvert.Types.InputDeblockFilter
+    Amazonka.MediaConvert.Types.InputDecryptionSettings
+    Amazonka.MediaConvert.Types.InputDenoiseFilter
+    Amazonka.MediaConvert.Types.InputFilterEnable
+    Amazonka.MediaConvert.Types.InputPolicy
+    Amazonka.MediaConvert.Types.InputPsiControl
+    Amazonka.MediaConvert.Types.InputRotate
+    Amazonka.MediaConvert.Types.InputSampleRange
+    Amazonka.MediaConvert.Types.InputScanType
+    Amazonka.MediaConvert.Types.InputTemplate
+    Amazonka.MediaConvert.Types.InputTimecodeSource
+    Amazonka.MediaConvert.Types.InputVideoGenerator
+    Amazonka.MediaConvert.Types.InsertableImage
+    Amazonka.MediaConvert.Types.Job
+    Amazonka.MediaConvert.Types.JobMessages
+    Amazonka.MediaConvert.Types.JobPhase
+    Amazonka.MediaConvert.Types.JobSettings
+    Amazonka.MediaConvert.Types.JobStatus
+    Amazonka.MediaConvert.Types.JobTemplate
+    Amazonka.MediaConvert.Types.JobTemplateListBy
+    Amazonka.MediaConvert.Types.JobTemplateSettings
+    Amazonka.MediaConvert.Types.KantarWatermarkSettings
+    Amazonka.MediaConvert.Types.LanguageCode
+    Amazonka.MediaConvert.Types.M2tsAudioBufferModel
+    Amazonka.MediaConvert.Types.M2tsAudioDuration
+    Amazonka.MediaConvert.Types.M2tsBufferModel
+    Amazonka.MediaConvert.Types.M2tsDataPtsControl
+    Amazonka.MediaConvert.Types.M2tsEbpAudioInterval
+    Amazonka.MediaConvert.Types.M2tsEbpPlacement
+    Amazonka.MediaConvert.Types.M2tsEsRateInPes
+    Amazonka.MediaConvert.Types.M2tsForceTsVideoEbpOrder
+    Amazonka.MediaConvert.Types.M2tsKlvMetadata
+    Amazonka.MediaConvert.Types.M2tsNielsenId3
+    Amazonka.MediaConvert.Types.M2tsPcrControl
+    Amazonka.MediaConvert.Types.M2tsRateMode
+    Amazonka.MediaConvert.Types.M2tsScte35Esam
+    Amazonka.MediaConvert.Types.M2tsScte35Source
+    Amazonka.MediaConvert.Types.M2tsSegmentationMarkers
+    Amazonka.MediaConvert.Types.M2tsSegmentationStyle
+    Amazonka.MediaConvert.Types.M2tsSettings
+    Amazonka.MediaConvert.Types.M3u8AudioDuration
+    Amazonka.MediaConvert.Types.M3u8DataPtsControl
+    Amazonka.MediaConvert.Types.M3u8NielsenId3
+    Amazonka.MediaConvert.Types.M3u8PcrControl
+    Amazonka.MediaConvert.Types.M3u8Scte35Source
+    Amazonka.MediaConvert.Types.M3u8Settings
+    Amazonka.MediaConvert.Types.MinBottomRenditionSize
+    Amazonka.MediaConvert.Types.MinTopRenditionSize
+    Amazonka.MediaConvert.Types.MotionImageInserter
+    Amazonka.MediaConvert.Types.MotionImageInsertionFramerate
+    Amazonka.MediaConvert.Types.MotionImageInsertionMode
+    Amazonka.MediaConvert.Types.MotionImageInsertionOffset
+    Amazonka.MediaConvert.Types.MotionImagePlayback
+    Amazonka.MediaConvert.Types.MovClapAtom
+    Amazonka.MediaConvert.Types.MovCslgAtom
+    Amazonka.MediaConvert.Types.MovMpeg2FourCCControl
+    Amazonka.MediaConvert.Types.MovPaddingControl
+    Amazonka.MediaConvert.Types.MovReference
+    Amazonka.MediaConvert.Types.MovSettings
+    Amazonka.MediaConvert.Types.Mp2Settings
+    Amazonka.MediaConvert.Types.Mp3RateControlMode
+    Amazonka.MediaConvert.Types.Mp3Settings
+    Amazonka.MediaConvert.Types.Mp4CslgAtom
+    Amazonka.MediaConvert.Types.Mp4FreeSpaceBox
+    Amazonka.MediaConvert.Types.Mp4MoovPlacement
+    Amazonka.MediaConvert.Types.Mp4Settings
+    Amazonka.MediaConvert.Types.MpdAccessibilityCaptionHints
+    Amazonka.MediaConvert.Types.MpdAudioDuration
+    Amazonka.MediaConvert.Types.MpdCaptionContainerType
+    Amazonka.MediaConvert.Types.MpdKlvMetadata
+    Amazonka.MediaConvert.Types.MpdManifestMetadataSignaling
+    Amazonka.MediaConvert.Types.MpdScte35Esam
+    Amazonka.MediaConvert.Types.MpdScte35Source
+    Amazonka.MediaConvert.Types.MpdSettings
+    Amazonka.MediaConvert.Types.MpdTimedMetadata
+    Amazonka.MediaConvert.Types.MpdTimedMetadataBoxVersion
+    Amazonka.MediaConvert.Types.Mpeg2AdaptiveQuantization
+    Amazonka.MediaConvert.Types.Mpeg2CodecLevel
+    Amazonka.MediaConvert.Types.Mpeg2CodecProfile
+    Amazonka.MediaConvert.Types.Mpeg2DynamicSubGop
+    Amazonka.MediaConvert.Types.Mpeg2FramerateControl
+    Amazonka.MediaConvert.Types.Mpeg2FramerateConversionAlgorithm
+    Amazonka.MediaConvert.Types.Mpeg2GopSizeUnits
+    Amazonka.MediaConvert.Types.Mpeg2InterlaceMode
+    Amazonka.MediaConvert.Types.Mpeg2IntraDcPrecision
+    Amazonka.MediaConvert.Types.Mpeg2ParControl
+    Amazonka.MediaConvert.Types.Mpeg2QualityTuningLevel
+    Amazonka.MediaConvert.Types.Mpeg2RateControlMode
+    Amazonka.MediaConvert.Types.Mpeg2ScanTypeConversionMode
+    Amazonka.MediaConvert.Types.Mpeg2SceneChangeDetect
+    Amazonka.MediaConvert.Types.Mpeg2Settings
+    Amazonka.MediaConvert.Types.Mpeg2SlowPal
+    Amazonka.MediaConvert.Types.Mpeg2SpatialAdaptiveQuantization
+    Amazonka.MediaConvert.Types.Mpeg2Syntax
+    Amazonka.MediaConvert.Types.Mpeg2Telecine
+    Amazonka.MediaConvert.Types.Mpeg2TemporalAdaptiveQuantization
+    Amazonka.MediaConvert.Types.MsSmoothAdditionalManifest
+    Amazonka.MediaConvert.Types.MsSmoothAudioDeduplication
+    Amazonka.MediaConvert.Types.MsSmoothEncryptionSettings
+    Amazonka.MediaConvert.Types.MsSmoothFragmentLengthControl
+    Amazonka.MediaConvert.Types.MsSmoothGroupSettings
+    Amazonka.MediaConvert.Types.MsSmoothManifestEncoding
+    Amazonka.MediaConvert.Types.MxfAfdSignaling
+    Amazonka.MediaConvert.Types.MxfProfile
+    Amazonka.MediaConvert.Types.MxfSettings
+    Amazonka.MediaConvert.Types.MxfXavcDurationMode
+    Amazonka.MediaConvert.Types.MxfXavcProfileSettings
+    Amazonka.MediaConvert.Types.NexGuardFileMarkerSettings
+    Amazonka.MediaConvert.Types.NielsenActiveWatermarkProcessType
+    Amazonka.MediaConvert.Types.NielsenConfiguration
+    Amazonka.MediaConvert.Types.NielsenNonLinearWatermarkSettings
+    Amazonka.MediaConvert.Types.NielsenSourceWatermarkStatusType
+    Amazonka.MediaConvert.Types.NielsenUniqueTicPerAudioTrackType
+    Amazonka.MediaConvert.Types.NoiseFilterPostTemporalSharpening
+    Amazonka.MediaConvert.Types.NoiseFilterPostTemporalSharpeningStrength
+    Amazonka.MediaConvert.Types.NoiseReducer
+    Amazonka.MediaConvert.Types.NoiseReducerFilter
+    Amazonka.MediaConvert.Types.NoiseReducerFilterSettings
+    Amazonka.MediaConvert.Types.NoiseReducerSpatialFilterSettings
+    Amazonka.MediaConvert.Types.NoiseReducerTemporalFilterSettings
+    Amazonka.MediaConvert.Types.OpusSettings
+    Amazonka.MediaConvert.Types.Order
+    Amazonka.MediaConvert.Types.Output
+    Amazonka.MediaConvert.Types.OutputChannelMapping
+    Amazonka.MediaConvert.Types.OutputDetail
+    Amazonka.MediaConvert.Types.OutputGroup
+    Amazonka.MediaConvert.Types.OutputGroupDetail
+    Amazonka.MediaConvert.Types.OutputGroupSettings
+    Amazonka.MediaConvert.Types.OutputGroupType
+    Amazonka.MediaConvert.Types.OutputSdt
+    Amazonka.MediaConvert.Types.OutputSettings
+    Amazonka.MediaConvert.Types.PadVideo
+    Amazonka.MediaConvert.Types.PartnerWatermarking
+    Amazonka.MediaConvert.Types.Policy
+    Amazonka.MediaConvert.Types.Preset
+    Amazonka.MediaConvert.Types.PresetListBy
+    Amazonka.MediaConvert.Types.PresetSettings
+    Amazonka.MediaConvert.Types.PricingPlan
+    Amazonka.MediaConvert.Types.ProresChromaSampling
+    Amazonka.MediaConvert.Types.ProresCodecProfile
+    Amazonka.MediaConvert.Types.ProresFramerateControl
+    Amazonka.MediaConvert.Types.ProresFramerateConversionAlgorithm
+    Amazonka.MediaConvert.Types.ProresInterlaceMode
+    Amazonka.MediaConvert.Types.ProresParControl
+    Amazonka.MediaConvert.Types.ProresScanTypeConversionMode
+    Amazonka.MediaConvert.Types.ProresSettings
+    Amazonka.MediaConvert.Types.ProresSlowPal
+    Amazonka.MediaConvert.Types.ProresTelecine
+    Amazonka.MediaConvert.Types.Queue
+    Amazonka.MediaConvert.Types.QueueListBy
+    Amazonka.MediaConvert.Types.QueueStatus
+    Amazonka.MediaConvert.Types.QueueTransition
+    Amazonka.MediaConvert.Types.Rectangle
+    Amazonka.MediaConvert.Types.RemixSettings
+    Amazonka.MediaConvert.Types.RenewalType
+    Amazonka.MediaConvert.Types.RequiredFlag
+    Amazonka.MediaConvert.Types.ReservationPlan
+    Amazonka.MediaConvert.Types.ReservationPlanSettings
+    Amazonka.MediaConvert.Types.ReservationPlanStatus
+    Amazonka.MediaConvert.Types.ResourceTags
+    Amazonka.MediaConvert.Types.RespondToAfd
+    Amazonka.MediaConvert.Types.RuleType
+    Amazonka.MediaConvert.Types.S3DestinationAccessControl
+    Amazonka.MediaConvert.Types.S3DestinationSettings
+    Amazonka.MediaConvert.Types.S3EncryptionSettings
+    Amazonka.MediaConvert.Types.S3ObjectCannedAcl
+    Amazonka.MediaConvert.Types.S3ServerSideEncryptionType
+    Amazonka.MediaConvert.Types.SampleRangeConversion
+    Amazonka.MediaConvert.Types.ScalingBehavior
+    Amazonka.MediaConvert.Types.SccDestinationFramerate
+    Amazonka.MediaConvert.Types.SccDestinationSettings
+    Amazonka.MediaConvert.Types.SimulateReservedQueue
+    Amazonka.MediaConvert.Types.SpekeKeyProvider
+    Amazonka.MediaConvert.Types.SpekeKeyProviderCmaf
+    Amazonka.MediaConvert.Types.SrtDestinationSettings
+    Amazonka.MediaConvert.Types.SrtStylePassthrough
+    Amazonka.MediaConvert.Types.StaticKeyProvider
+    Amazonka.MediaConvert.Types.StatusUpdateInterval
+    Amazonka.MediaConvert.Types.TeletextDestinationSettings
+    Amazonka.MediaConvert.Types.TeletextPageType
+    Amazonka.MediaConvert.Types.TeletextSourceSettings
+    Amazonka.MediaConvert.Types.TimecodeBurnin
+    Amazonka.MediaConvert.Types.TimecodeBurninPosition
+    Amazonka.MediaConvert.Types.TimecodeConfig
+    Amazonka.MediaConvert.Types.TimecodeSource
+    Amazonka.MediaConvert.Types.TimedMetadata
+    Amazonka.MediaConvert.Types.TimedMetadataInsertion
+    Amazonka.MediaConvert.Types.Timing
+    Amazonka.MediaConvert.Types.TrackSourceSettings
+    Amazonka.MediaConvert.Types.TtmlDestinationSettings
+    Amazonka.MediaConvert.Types.TtmlStylePassthrough
+    Amazonka.MediaConvert.Types.Type
+    Amazonka.MediaConvert.Types.Vc3Class
+    Amazonka.MediaConvert.Types.Vc3FramerateControl
+    Amazonka.MediaConvert.Types.Vc3FramerateConversionAlgorithm
+    Amazonka.MediaConvert.Types.Vc3InterlaceMode
+    Amazonka.MediaConvert.Types.Vc3ScanTypeConversionMode
+    Amazonka.MediaConvert.Types.Vc3Settings
+    Amazonka.MediaConvert.Types.Vc3SlowPal
+    Amazonka.MediaConvert.Types.Vc3Telecine
+    Amazonka.MediaConvert.Types.VchipAction
+    Amazonka.MediaConvert.Types.VideoCodec
+    Amazonka.MediaConvert.Types.VideoCodecSettings
+    Amazonka.MediaConvert.Types.VideoDescription
+    Amazonka.MediaConvert.Types.VideoDetail
+    Amazonka.MediaConvert.Types.VideoPreprocessor
+    Amazonka.MediaConvert.Types.VideoSelector
+    Amazonka.MediaConvert.Types.VideoTimecodeInsertion
+    Amazonka.MediaConvert.Types.VorbisSettings
+    Amazonka.MediaConvert.Types.Vp8FramerateControl
+    Amazonka.MediaConvert.Types.Vp8FramerateConversionAlgorithm
+    Amazonka.MediaConvert.Types.Vp8ParControl
+    Amazonka.MediaConvert.Types.Vp8QualityTuningLevel
+    Amazonka.MediaConvert.Types.Vp8RateControlMode
+    Amazonka.MediaConvert.Types.Vp8Settings
+    Amazonka.MediaConvert.Types.Vp9FramerateControl
+    Amazonka.MediaConvert.Types.Vp9FramerateConversionAlgorithm
+    Amazonka.MediaConvert.Types.Vp9ParControl
+    Amazonka.MediaConvert.Types.Vp9QualityTuningLevel
+    Amazonka.MediaConvert.Types.Vp9RateControlMode
+    Amazonka.MediaConvert.Types.Vp9Settings
+    Amazonka.MediaConvert.Types.WatermarkingStrength
+    Amazonka.MediaConvert.Types.WavFormat
+    Amazonka.MediaConvert.Types.WavSettings
+    Amazonka.MediaConvert.Types.WebvttAccessibilitySubs
+    Amazonka.MediaConvert.Types.WebvttDestinationSettings
+    Amazonka.MediaConvert.Types.WebvttHlsSourceSettings
+    Amazonka.MediaConvert.Types.WebvttStylePassthrough
+    Amazonka.MediaConvert.Types.Xavc4kIntraCbgProfileClass
+    Amazonka.MediaConvert.Types.Xavc4kIntraCbgProfileSettings
+    Amazonka.MediaConvert.Types.Xavc4kIntraVbrProfileClass
+    Amazonka.MediaConvert.Types.Xavc4kIntraVbrProfileSettings
+    Amazonka.MediaConvert.Types.Xavc4kProfileBitrateClass
+    Amazonka.MediaConvert.Types.Xavc4kProfileCodecProfile
+    Amazonka.MediaConvert.Types.Xavc4kProfileQualityTuningLevel
+    Amazonka.MediaConvert.Types.Xavc4kProfileSettings
+    Amazonka.MediaConvert.Types.XavcAdaptiveQuantization
+    Amazonka.MediaConvert.Types.XavcEntropyEncoding
+    Amazonka.MediaConvert.Types.XavcFlickerAdaptiveQuantization
+    Amazonka.MediaConvert.Types.XavcFramerateControl
+    Amazonka.MediaConvert.Types.XavcFramerateConversionAlgorithm
+    Amazonka.MediaConvert.Types.XavcGopBReference
+    Amazonka.MediaConvert.Types.XavcHdIntraCbgProfileClass
+    Amazonka.MediaConvert.Types.XavcHdIntraCbgProfileSettings
+    Amazonka.MediaConvert.Types.XavcHdProfileBitrateClass
+    Amazonka.MediaConvert.Types.XavcHdProfileQualityTuningLevel
+    Amazonka.MediaConvert.Types.XavcHdProfileSettings
+    Amazonka.MediaConvert.Types.XavcHdProfileTelecine
+    Amazonka.MediaConvert.Types.XavcInterlaceMode
+    Amazonka.MediaConvert.Types.XavcProfile
+    Amazonka.MediaConvert.Types.XavcSettings
+    Amazonka.MediaConvert.Types.XavcSlowPal
+    Amazonka.MediaConvert.Types.XavcSpatialAdaptiveQuantization
+    Amazonka.MediaConvert.Types.XavcTemporalAdaptiveQuantization
+    Amazonka.MediaConvert.UntagResource
+    Amazonka.MediaConvert.UpdateJobTemplate
+    Amazonka.MediaConvert.UpdatePreset
+    Amazonka.MediaConvert.UpdateQueue
+    Amazonka.MediaConvert.Waiters
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , base          >= 4.7     && < 5
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
 
 test-suite amazonka-mediaconvert-test
-    type:              exitcode-stdio-1.0
-    default-language:  Haskell2010
-    hs-source-dirs:    test
-    main-is:           Main.hs
-
-    ghc-options:       -Wall -threaded
+  type:             exitcode-stdio-1.0
+  default-language: Haskell2010
+  hs-source-dirs:   test
+  main-is:          Main.hs
+  ghc-options:      -Wall -threaded
 
-    -- This section is encoded by the template and any modules added by
-    -- hand outside these namespaces will not correctly be added to the
-    -- distribution package.
-    other-modules:
-          Test.AWS.MediaConvert
-        , Test.AWS.Gen.MediaConvert
-        , Test.AWS.MediaConvert.Internal
+  -- This section is encoded by the template and any modules added by
+  -- hand outside these namespaces will not correctly be added to the
+  -- distribution package.
+  other-modules:
+    Test.Amazonka.Gen.MediaConvert
+    Test.Amazonka.MediaConvert
+    Test.Amazonka.MediaConvert.Internal
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , amazonka-test == 1.6.1.*
-        , amazonka-mediaconvert
-        , base
-        , bytestring
-        , tasty
-        , tasty-hunit
-        , text
-        , time
-        , unordered-containers
+  build-depends:
+    , amazonka-core          >=2.0 && <2.1
+    , amazonka-mediaconvert
+    , amazonka-test          >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AssociateCertificate.yaml b/fixture/AssociateCertificate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateCertificate.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediaconvert/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediaconvert.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/AssociateCertificateResponse.proto b/fixture/AssociateCertificateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateCertificateResponse.proto
diff --git a/fixture/DeletePolicy.yaml b/fixture/DeletePolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediaconvert/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediaconvert.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeletePolicyResponse.proto b/fixture/DeletePolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePolicyResponse.proto
diff --git a/fixture/DisassociateCertificate.yaml b/fixture/DisassociateCertificate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateCertificate.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediaconvert/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediaconvert.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DisassociateCertificateResponse.proto b/fixture/DisassociateCertificateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateCertificateResponse.proto
diff --git a/fixture/GetPolicy.yaml b/fixture/GetPolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetPolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediaconvert/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediaconvert.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetPolicyResponse.proto b/fixture/GetPolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetPolicyResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediaconvert/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediaconvert.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTagsForResourceResponse.proto b/fixture/ListTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResourceResponse.proto
diff --git a/fixture/PutPolicy.yaml b/fixture/PutPolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutPolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediaconvert/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediaconvert.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutPolicyResponse.proto b/fixture/PutPolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutPolicyResponse.proto
diff --git a/fixture/TagResource.yaml b/fixture/TagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediaconvert/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediaconvert.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediaconvert/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediaconvert.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/gen/Amazonka/MediaConvert.hs b/gen/Amazonka/MediaConvert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert.hs
@@ -0,0 +1,2156 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.MediaConvert
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2017-08-29@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- AWS Elemental MediaConvert
+module Amazonka.MediaConvert
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** BadRequestException
+    _BadRequestException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** ForbiddenException
+    _ForbiddenException,
+
+    -- ** InternalServerErrorException
+    _InternalServerErrorException,
+
+    -- ** NotFoundException
+    _NotFoundException,
+
+    -- ** TooManyRequestsException
+    _TooManyRequestsException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AssociateCertificate
+    AssociateCertificate (AssociateCertificate'),
+    newAssociateCertificate,
+    AssociateCertificateResponse (AssociateCertificateResponse'),
+    newAssociateCertificateResponse,
+
+    -- ** CancelJob
+    CancelJob (CancelJob'),
+    newCancelJob,
+    CancelJobResponse (CancelJobResponse'),
+    newCancelJobResponse,
+
+    -- ** CreateJob
+    CreateJob (CreateJob'),
+    newCreateJob,
+    CreateJobResponse (CreateJobResponse'),
+    newCreateJobResponse,
+
+    -- ** CreateJobTemplate
+    CreateJobTemplate (CreateJobTemplate'),
+    newCreateJobTemplate,
+    CreateJobTemplateResponse (CreateJobTemplateResponse'),
+    newCreateJobTemplateResponse,
+
+    -- ** CreatePreset
+    CreatePreset (CreatePreset'),
+    newCreatePreset,
+    CreatePresetResponse (CreatePresetResponse'),
+    newCreatePresetResponse,
+
+    -- ** CreateQueue
+    CreateQueue (CreateQueue'),
+    newCreateQueue,
+    CreateQueueResponse (CreateQueueResponse'),
+    newCreateQueueResponse,
+
+    -- ** DeleteJobTemplate
+    DeleteJobTemplate (DeleteJobTemplate'),
+    newDeleteJobTemplate,
+    DeleteJobTemplateResponse (DeleteJobTemplateResponse'),
+    newDeleteJobTemplateResponse,
+
+    -- ** DeletePolicy
+    DeletePolicy (DeletePolicy'),
+    newDeletePolicy,
+    DeletePolicyResponse (DeletePolicyResponse'),
+    newDeletePolicyResponse,
+
+    -- ** DeletePreset
+    DeletePreset (DeletePreset'),
+    newDeletePreset,
+    DeletePresetResponse (DeletePresetResponse'),
+    newDeletePresetResponse,
+
+    -- ** DeleteQueue
+    DeleteQueue (DeleteQueue'),
+    newDeleteQueue,
+    DeleteQueueResponse (DeleteQueueResponse'),
+    newDeleteQueueResponse,
+
+    -- ** DescribeEndpoints (Paginated)
+    DescribeEndpoints (DescribeEndpoints'),
+    newDescribeEndpoints,
+    DescribeEndpointsResponse (DescribeEndpointsResponse'),
+    newDescribeEndpointsResponse,
+
+    -- ** DisassociateCertificate
+    DisassociateCertificate (DisassociateCertificate'),
+    newDisassociateCertificate,
+    DisassociateCertificateResponse (DisassociateCertificateResponse'),
+    newDisassociateCertificateResponse,
+
+    -- ** GetJob
+    GetJob (GetJob'),
+    newGetJob,
+    GetJobResponse (GetJobResponse'),
+    newGetJobResponse,
+
+    -- ** GetJobTemplate
+    GetJobTemplate (GetJobTemplate'),
+    newGetJobTemplate,
+    GetJobTemplateResponse (GetJobTemplateResponse'),
+    newGetJobTemplateResponse,
+
+    -- ** GetPolicy
+    GetPolicy (GetPolicy'),
+    newGetPolicy,
+    GetPolicyResponse (GetPolicyResponse'),
+    newGetPolicyResponse,
+
+    -- ** GetPreset
+    GetPreset (GetPreset'),
+    newGetPreset,
+    GetPresetResponse (GetPresetResponse'),
+    newGetPresetResponse,
+
+    -- ** GetQueue
+    GetQueue (GetQueue'),
+    newGetQueue,
+    GetQueueResponse (GetQueueResponse'),
+    newGetQueueResponse,
+
+    -- ** ListJobTemplates (Paginated)
+    ListJobTemplates (ListJobTemplates'),
+    newListJobTemplates,
+    ListJobTemplatesResponse (ListJobTemplatesResponse'),
+    newListJobTemplatesResponse,
+
+    -- ** ListJobs (Paginated)
+    ListJobs (ListJobs'),
+    newListJobs,
+    ListJobsResponse (ListJobsResponse'),
+    newListJobsResponse,
+
+    -- ** ListPresets (Paginated)
+    ListPresets (ListPresets'),
+    newListPresets,
+    ListPresetsResponse (ListPresetsResponse'),
+    newListPresetsResponse,
+
+    -- ** ListQueues (Paginated)
+    ListQueues (ListQueues'),
+    newListQueues,
+    ListQueuesResponse (ListQueuesResponse'),
+    newListQueuesResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** PutPolicy
+    PutPolicy (PutPolicy'),
+    newPutPolicy,
+    PutPolicyResponse (PutPolicyResponse'),
+    newPutPolicyResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateJobTemplate
+    UpdateJobTemplate (UpdateJobTemplate'),
+    newUpdateJobTemplate,
+    UpdateJobTemplateResponse (UpdateJobTemplateResponse'),
+    newUpdateJobTemplateResponse,
+
+    -- ** UpdatePreset
+    UpdatePreset (UpdatePreset'),
+    newUpdatePreset,
+    UpdatePresetResponse (UpdatePresetResponse'),
+    newUpdatePresetResponse,
+
+    -- ** UpdateQueue
+    UpdateQueue (UpdateQueue'),
+    newUpdateQueue,
+    UpdateQueueResponse (UpdateQueueResponse'),
+    newUpdateQueueResponse,
+
+    -- * Types
+
+    -- ** AacAudioDescriptionBroadcasterMix
+    AacAudioDescriptionBroadcasterMix (..),
+
+    -- ** AacCodecProfile
+    AacCodecProfile (..),
+
+    -- ** AacCodingMode
+    AacCodingMode (..),
+
+    -- ** AacRateControlMode
+    AacRateControlMode (..),
+
+    -- ** AacRawFormat
+    AacRawFormat (..),
+
+    -- ** AacSpecification
+    AacSpecification (..),
+
+    -- ** AacVbrQuality
+    AacVbrQuality (..),
+
+    -- ** Ac3BitstreamMode
+    Ac3BitstreamMode (..),
+
+    -- ** Ac3CodingMode
+    Ac3CodingMode (..),
+
+    -- ** Ac3DynamicRangeCompressionLine
+    Ac3DynamicRangeCompressionLine (..),
+
+    -- ** Ac3DynamicRangeCompressionProfile
+    Ac3DynamicRangeCompressionProfile (..),
+
+    -- ** Ac3DynamicRangeCompressionRf
+    Ac3DynamicRangeCompressionRf (..),
+
+    -- ** Ac3LfeFilter
+    Ac3LfeFilter (..),
+
+    -- ** Ac3MetadataControl
+    Ac3MetadataControl (..),
+
+    -- ** AccelerationMode
+    AccelerationMode (..),
+
+    -- ** AccelerationStatus
+    AccelerationStatus (..),
+
+    -- ** AfdSignaling
+    AfdSignaling (..),
+
+    -- ** AlphaBehavior
+    AlphaBehavior (..),
+
+    -- ** AncillaryConvert608To708
+    AncillaryConvert608To708 (..),
+
+    -- ** AncillaryTerminateCaptions
+    AncillaryTerminateCaptions (..),
+
+    -- ** AntiAlias
+    AntiAlias (..),
+
+    -- ** AudioChannelTag
+    AudioChannelTag (..),
+
+    -- ** AudioCodec
+    AudioCodec (..),
+
+    -- ** AudioDefaultSelection
+    AudioDefaultSelection (..),
+
+    -- ** AudioDurationCorrection
+    AudioDurationCorrection (..),
+
+    -- ** AudioLanguageCodeControl
+    AudioLanguageCodeControl (..),
+
+    -- ** AudioNormalizationAlgorithm
+    AudioNormalizationAlgorithm (..),
+
+    -- ** AudioNormalizationAlgorithmControl
+    AudioNormalizationAlgorithmControl (..),
+
+    -- ** AudioNormalizationLoudnessLogging
+    AudioNormalizationLoudnessLogging (..),
+
+    -- ** AudioNormalizationPeakCalculation
+    AudioNormalizationPeakCalculation (..),
+
+    -- ** AudioSelectorType
+    AudioSelectorType (..),
+
+    -- ** AudioTypeControl
+    AudioTypeControl (..),
+
+    -- ** Av1AdaptiveQuantization
+    Av1AdaptiveQuantization (..),
+
+    -- ** Av1BitDepth
+    Av1BitDepth (..),
+
+    -- ** Av1FramerateControl
+    Av1FramerateControl (..),
+
+    -- ** Av1FramerateConversionAlgorithm
+    Av1FramerateConversionAlgorithm (..),
+
+    -- ** Av1RateControlMode
+    Av1RateControlMode (..),
+
+    -- ** Av1SpatialAdaptiveQuantization
+    Av1SpatialAdaptiveQuantization (..),
+
+    -- ** AvcIntraClass
+    AvcIntraClass (..),
+
+    -- ** AvcIntraFramerateControl
+    AvcIntraFramerateControl (..),
+
+    -- ** AvcIntraFramerateConversionAlgorithm
+    AvcIntraFramerateConversionAlgorithm (..),
+
+    -- ** AvcIntraInterlaceMode
+    AvcIntraInterlaceMode (..),
+
+    -- ** AvcIntraScanTypeConversionMode
+    AvcIntraScanTypeConversionMode (..),
+
+    -- ** AvcIntraSlowPal
+    AvcIntraSlowPal (..),
+
+    -- ** AvcIntraTelecine
+    AvcIntraTelecine (..),
+
+    -- ** AvcIntraUhdQualityTuningLevel
+    AvcIntraUhdQualityTuningLevel (..),
+
+    -- ** BillingTagsSource
+    BillingTagsSource (..),
+
+    -- ** BurnInSubtitleStylePassthrough
+    BurnInSubtitleStylePassthrough (..),
+
+    -- ** BurninSubtitleAlignment
+    BurninSubtitleAlignment (..),
+
+    -- ** BurninSubtitleApplyFontColor
+    BurninSubtitleApplyFontColor (..),
+
+    -- ** BurninSubtitleBackgroundColor
+    BurninSubtitleBackgroundColor (..),
+
+    -- ** BurninSubtitleFallbackFont
+    BurninSubtitleFallbackFont (..),
+
+    -- ** BurninSubtitleFontColor
+    BurninSubtitleFontColor (..),
+
+    -- ** BurninSubtitleOutlineColor
+    BurninSubtitleOutlineColor (..),
+
+    -- ** BurninSubtitleShadowColor
+    BurninSubtitleShadowColor (..),
+
+    -- ** BurninSubtitleTeletextSpacing
+    BurninSubtitleTeletextSpacing (..),
+
+    -- ** CaptionDestinationType
+    CaptionDestinationType (..),
+
+    -- ** CaptionSourceType
+    CaptionSourceType (..),
+
+    -- ** CmafClientCache
+    CmafClientCache (..),
+
+    -- ** CmafCodecSpecification
+    CmafCodecSpecification (..),
+
+    -- ** CmafEncryptionType
+    CmafEncryptionType (..),
+
+    -- ** CmafImageBasedTrickPlay
+    CmafImageBasedTrickPlay (..),
+
+    -- ** CmafInitializationVectorInManifest
+    CmafInitializationVectorInManifest (..),
+
+    -- ** CmafIntervalCadence
+    CmafIntervalCadence (..),
+
+    -- ** CmafKeyProviderType
+    CmafKeyProviderType (..),
+
+    -- ** CmafManifestCompression
+    CmafManifestCompression (..),
+
+    -- ** CmafManifestDurationFormat
+    CmafManifestDurationFormat (..),
+
+    -- ** CmafMpdManifestBandwidthType
+    CmafMpdManifestBandwidthType (..),
+
+    -- ** CmafMpdProfile
+    CmafMpdProfile (..),
+
+    -- ** CmafPtsOffsetHandlingForBFrames
+    CmafPtsOffsetHandlingForBFrames (..),
+
+    -- ** CmafSegmentControl
+    CmafSegmentControl (..),
+
+    -- ** CmafSegmentLengthControl
+    CmafSegmentLengthControl (..),
+
+    -- ** CmafStreamInfResolution
+    CmafStreamInfResolution (..),
+
+    -- ** CmafTargetDurationCompatibilityMode
+    CmafTargetDurationCompatibilityMode (..),
+
+    -- ** CmafVideoCompositionOffsets
+    CmafVideoCompositionOffsets (..),
+
+    -- ** CmafWriteDASHManifest
+    CmafWriteDASHManifest (..),
+
+    -- ** CmafWriteHLSManifest
+    CmafWriteHLSManifest (..),
+
+    -- ** CmafWriteSegmentTimelineInRepresentation
+    CmafWriteSegmentTimelineInRepresentation (..),
+
+    -- ** CmfcAudioDuration
+    CmfcAudioDuration (..),
+
+    -- ** CmfcAudioTrackType
+    CmfcAudioTrackType (..),
+
+    -- ** CmfcDescriptiveVideoServiceFlag
+    CmfcDescriptiveVideoServiceFlag (..),
+
+    -- ** CmfcIFrameOnlyManifest
+    CmfcIFrameOnlyManifest (..),
+
+    -- ** CmfcKlvMetadata
+    CmfcKlvMetadata (..),
+
+    -- ** CmfcManifestMetadataSignaling
+    CmfcManifestMetadataSignaling (..),
+
+    -- ** CmfcScte35Esam
+    CmfcScte35Esam (..),
+
+    -- ** CmfcScte35Source
+    CmfcScte35Source (..),
+
+    -- ** CmfcTimedMetadata
+    CmfcTimedMetadata (..),
+
+    -- ** CmfcTimedMetadataBoxVersion
+    CmfcTimedMetadataBoxVersion (..),
+
+    -- ** ColorMetadata
+    ColorMetadata (..),
+
+    -- ** ColorSpace
+    ColorSpace (..),
+
+    -- ** ColorSpaceConversion
+    ColorSpaceConversion (..),
+
+    -- ** ColorSpaceUsage
+    ColorSpaceUsage (..),
+
+    -- ** Commitment
+    Commitment (..),
+
+    -- ** ContainerType
+    ContainerType (..),
+
+    -- ** CopyProtectionAction
+    CopyProtectionAction (..),
+
+    -- ** DashIsoGroupAudioChannelConfigSchemeIdUri
+    DashIsoGroupAudioChannelConfigSchemeIdUri (..),
+
+    -- ** DashIsoHbbtvCompliance
+    DashIsoHbbtvCompliance (..),
+
+    -- ** DashIsoImageBasedTrickPlay
+    DashIsoImageBasedTrickPlay (..),
+
+    -- ** DashIsoIntervalCadence
+    DashIsoIntervalCadence (..),
+
+    -- ** DashIsoMpdManifestBandwidthType
+    DashIsoMpdManifestBandwidthType (..),
+
+    -- ** DashIsoMpdProfile
+    DashIsoMpdProfile (..),
+
+    -- ** DashIsoPlaybackDeviceCompatibility
+    DashIsoPlaybackDeviceCompatibility (..),
+
+    -- ** DashIsoPtsOffsetHandlingForBFrames
+    DashIsoPtsOffsetHandlingForBFrames (..),
+
+    -- ** DashIsoSegmentControl
+    DashIsoSegmentControl (..),
+
+    -- ** DashIsoSegmentLengthControl
+    DashIsoSegmentLengthControl (..),
+
+    -- ** DashIsoVideoCompositionOffsets
+    DashIsoVideoCompositionOffsets (..),
+
+    -- ** DashIsoWriteSegmentTimelineInRepresentation
+    DashIsoWriteSegmentTimelineInRepresentation (..),
+
+    -- ** DecryptionMode
+    DecryptionMode (..),
+
+    -- ** DeinterlaceAlgorithm
+    DeinterlaceAlgorithm (..),
+
+    -- ** DeinterlacerControl
+    DeinterlacerControl (..),
+
+    -- ** DeinterlacerMode
+    DeinterlacerMode (..),
+
+    -- ** DescribeEndpointsMode
+    DescribeEndpointsMode (..),
+
+    -- ** DolbyVisionLevel6Mode
+    DolbyVisionLevel6Mode (..),
+
+    -- ** DolbyVisionMapping
+    DolbyVisionMapping (..),
+
+    -- ** DolbyVisionProfile
+    DolbyVisionProfile (..),
+
+    -- ** DropFrameTimecode
+    DropFrameTimecode (..),
+
+    -- ** DvbSubSubtitleFallbackFont
+    DvbSubSubtitleFallbackFont (..),
+
+    -- ** DvbSubtitleAlignment
+    DvbSubtitleAlignment (..),
+
+    -- ** DvbSubtitleApplyFontColor
+    DvbSubtitleApplyFontColor (..),
+
+    -- ** DvbSubtitleBackgroundColor
+    DvbSubtitleBackgroundColor (..),
+
+    -- ** DvbSubtitleFontColor
+    DvbSubtitleFontColor (..),
+
+    -- ** DvbSubtitleOutlineColor
+    DvbSubtitleOutlineColor (..),
+
+    -- ** DvbSubtitleShadowColor
+    DvbSubtitleShadowColor (..),
+
+    -- ** DvbSubtitleStylePassthrough
+    DvbSubtitleStylePassthrough (..),
+
+    -- ** DvbSubtitleTeletextSpacing
+    DvbSubtitleTeletextSpacing (..),
+
+    -- ** DvbSubtitlingType
+    DvbSubtitlingType (..),
+
+    -- ** DvbddsHandling
+    DvbddsHandling (..),
+
+    -- ** Eac3AtmosBitstreamMode
+    Eac3AtmosBitstreamMode (..),
+
+    -- ** Eac3AtmosCodingMode
+    Eac3AtmosCodingMode (..),
+
+    -- ** Eac3AtmosDialogueIntelligence
+    Eac3AtmosDialogueIntelligence (..),
+
+    -- ** Eac3AtmosDownmixControl
+    Eac3AtmosDownmixControl (..),
+
+    -- ** Eac3AtmosDynamicRangeCompressionLine
+    Eac3AtmosDynamicRangeCompressionLine (..),
+
+    -- ** Eac3AtmosDynamicRangeCompressionRf
+    Eac3AtmosDynamicRangeCompressionRf (..),
+
+    -- ** Eac3AtmosDynamicRangeControl
+    Eac3AtmosDynamicRangeControl (..),
+
+    -- ** Eac3AtmosMeteringMode
+    Eac3AtmosMeteringMode (..),
+
+    -- ** Eac3AtmosStereoDownmix
+    Eac3AtmosStereoDownmix (..),
+
+    -- ** Eac3AtmosSurroundExMode
+    Eac3AtmosSurroundExMode (..),
+
+    -- ** Eac3AttenuationControl
+    Eac3AttenuationControl (..),
+
+    -- ** Eac3BitstreamMode
+    Eac3BitstreamMode (..),
+
+    -- ** Eac3CodingMode
+    Eac3CodingMode (..),
+
+    -- ** Eac3DcFilter
+    Eac3DcFilter (..),
+
+    -- ** Eac3DynamicRangeCompressionLine
+    Eac3DynamicRangeCompressionLine (..),
+
+    -- ** Eac3DynamicRangeCompressionRf
+    Eac3DynamicRangeCompressionRf (..),
+
+    -- ** Eac3LfeControl
+    Eac3LfeControl (..),
+
+    -- ** Eac3LfeFilter
+    Eac3LfeFilter (..),
+
+    -- ** Eac3MetadataControl
+    Eac3MetadataControl (..),
+
+    -- ** Eac3PassthroughControl
+    Eac3PassthroughControl (..),
+
+    -- ** Eac3PhaseControl
+    Eac3PhaseControl (..),
+
+    -- ** Eac3StereoDownmix
+    Eac3StereoDownmix (..),
+
+    -- ** Eac3SurroundExMode
+    Eac3SurroundExMode (..),
+
+    -- ** Eac3SurroundMode
+    Eac3SurroundMode (..),
+
+    -- ** EmbeddedConvert608To708
+    EmbeddedConvert608To708 (..),
+
+    -- ** EmbeddedTerminateCaptions
+    EmbeddedTerminateCaptions (..),
+
+    -- ** EmbeddedTimecodeOverride
+    EmbeddedTimecodeOverride (..),
+
+    -- ** F4vMoovPlacement
+    F4vMoovPlacement (..),
+
+    -- ** FileSourceConvert608To708
+    FileSourceConvert608To708 (..),
+
+    -- ** FileSourceTimeDeltaUnits
+    FileSourceTimeDeltaUnits (..),
+
+    -- ** FontScript
+    FontScript (..),
+
+    -- ** H264AdaptiveQuantization
+    H264AdaptiveQuantization (..),
+
+    -- ** H264CodecLevel
+    H264CodecLevel (..),
+
+    -- ** H264CodecProfile
+    H264CodecProfile (..),
+
+    -- ** H264DynamicSubGop
+    H264DynamicSubGop (..),
+
+    -- ** H264EntropyEncoding
+    H264EntropyEncoding (..),
+
+    -- ** H264FieldEncoding
+    H264FieldEncoding (..),
+
+    -- ** H264FlickerAdaptiveQuantization
+    H264FlickerAdaptiveQuantization (..),
+
+    -- ** H264FramerateControl
+    H264FramerateControl (..),
+
+    -- ** H264FramerateConversionAlgorithm
+    H264FramerateConversionAlgorithm (..),
+
+    -- ** H264GopBReference
+    H264GopBReference (..),
+
+    -- ** H264GopSizeUnits
+    H264GopSizeUnits (..),
+
+    -- ** H264InterlaceMode
+    H264InterlaceMode (..),
+
+    -- ** H264ParControl
+    H264ParControl (..),
+
+    -- ** H264QualityTuningLevel
+    H264QualityTuningLevel (..),
+
+    -- ** H264RateControlMode
+    H264RateControlMode (..),
+
+    -- ** H264RepeatPps
+    H264RepeatPps (..),
+
+    -- ** H264ScanTypeConversionMode
+    H264ScanTypeConversionMode (..),
+
+    -- ** H264SceneChangeDetect
+    H264SceneChangeDetect (..),
+
+    -- ** H264SlowPal
+    H264SlowPal (..),
+
+    -- ** H264SpatialAdaptiveQuantization
+    H264SpatialAdaptiveQuantization (..),
+
+    -- ** H264Syntax
+    H264Syntax (..),
+
+    -- ** H264Telecine
+    H264Telecine (..),
+
+    -- ** H264TemporalAdaptiveQuantization
+    H264TemporalAdaptiveQuantization (..),
+
+    -- ** H264UnregisteredSeiTimecode
+    H264UnregisteredSeiTimecode (..),
+
+    -- ** H265AdaptiveQuantization
+    H265AdaptiveQuantization (..),
+
+    -- ** H265AlternateTransferFunctionSei
+    H265AlternateTransferFunctionSei (..),
+
+    -- ** H265CodecLevel
+    H265CodecLevel (..),
+
+    -- ** H265CodecProfile
+    H265CodecProfile (..),
+
+    -- ** H265DynamicSubGop
+    H265DynamicSubGop (..),
+
+    -- ** H265FlickerAdaptiveQuantization
+    H265FlickerAdaptiveQuantization (..),
+
+    -- ** H265FramerateControl
+    H265FramerateControl (..),
+
+    -- ** H265FramerateConversionAlgorithm
+    H265FramerateConversionAlgorithm (..),
+
+    -- ** H265GopBReference
+    H265GopBReference (..),
+
+    -- ** H265GopSizeUnits
+    H265GopSizeUnits (..),
+
+    -- ** H265InterlaceMode
+    H265InterlaceMode (..),
+
+    -- ** H265ParControl
+    H265ParControl (..),
+
+    -- ** H265QualityTuningLevel
+    H265QualityTuningLevel (..),
+
+    -- ** H265RateControlMode
+    H265RateControlMode (..),
+
+    -- ** H265SampleAdaptiveOffsetFilterMode
+    H265SampleAdaptiveOffsetFilterMode (..),
+
+    -- ** H265ScanTypeConversionMode
+    H265ScanTypeConversionMode (..),
+
+    -- ** H265SceneChangeDetect
+    H265SceneChangeDetect (..),
+
+    -- ** H265SlowPal
+    H265SlowPal (..),
+
+    -- ** H265SpatialAdaptiveQuantization
+    H265SpatialAdaptiveQuantization (..),
+
+    -- ** H265Telecine
+    H265Telecine (..),
+
+    -- ** H265TemporalAdaptiveQuantization
+    H265TemporalAdaptiveQuantization (..),
+
+    -- ** H265TemporalIds
+    H265TemporalIds (..),
+
+    -- ** H265Tiles
+    H265Tiles (..),
+
+    -- ** H265UnregisteredSeiTimecode
+    H265UnregisteredSeiTimecode (..),
+
+    -- ** H265WriteMp4PackagingType
+    H265WriteMp4PackagingType (..),
+
+    -- ** HlsAdMarkers
+    HlsAdMarkers (..),
+
+    -- ** HlsAudioOnlyContainer
+    HlsAudioOnlyContainer (..),
+
+    -- ** HlsAudioOnlyHeader
+    HlsAudioOnlyHeader (..),
+
+    -- ** HlsAudioTrackType
+    HlsAudioTrackType (..),
+
+    -- ** HlsCaptionLanguageSetting
+    HlsCaptionLanguageSetting (..),
+
+    -- ** HlsCaptionSegmentLengthControl
+    HlsCaptionSegmentLengthControl (..),
+
+    -- ** HlsClientCache
+    HlsClientCache (..),
+
+    -- ** HlsCodecSpecification
+    HlsCodecSpecification (..),
+
+    -- ** HlsDescriptiveVideoServiceFlag
+    HlsDescriptiveVideoServiceFlag (..),
+
+    -- ** HlsDirectoryStructure
+    HlsDirectoryStructure (..),
+
+    -- ** HlsEncryptionType
+    HlsEncryptionType (..),
+
+    -- ** HlsIFrameOnlyManifest
+    HlsIFrameOnlyManifest (..),
+
+    -- ** HlsImageBasedTrickPlay
+    HlsImageBasedTrickPlay (..),
+
+    -- ** HlsInitializationVectorInManifest
+    HlsInitializationVectorInManifest (..),
+
+    -- ** HlsIntervalCadence
+    HlsIntervalCadence (..),
+
+    -- ** HlsKeyProviderType
+    HlsKeyProviderType (..),
+
+    -- ** HlsManifestCompression
+    HlsManifestCompression (..),
+
+    -- ** HlsManifestDurationFormat
+    HlsManifestDurationFormat (..),
+
+    -- ** HlsOfflineEncrypted
+    HlsOfflineEncrypted (..),
+
+    -- ** HlsOutputSelection
+    HlsOutputSelection (..),
+
+    -- ** HlsProgramDateTime
+    HlsProgramDateTime (..),
+
+    -- ** HlsSegmentControl
+    HlsSegmentControl (..),
+
+    -- ** HlsSegmentLengthControl
+    HlsSegmentLengthControl (..),
+
+    -- ** HlsStreamInfResolution
+    HlsStreamInfResolution (..),
+
+    -- ** HlsTargetDurationCompatibilityMode
+    HlsTargetDurationCompatibilityMode (..),
+
+    -- ** HlsTimedMetadataId3Frame
+    HlsTimedMetadataId3Frame (..),
+
+    -- ** ImscAccessibilitySubs
+    ImscAccessibilitySubs (..),
+
+    -- ** ImscStylePassthrough
+    ImscStylePassthrough (..),
+
+    -- ** InputDeblockFilter
+    InputDeblockFilter (..),
+
+    -- ** InputDenoiseFilter
+    InputDenoiseFilter (..),
+
+    -- ** InputFilterEnable
+    InputFilterEnable (..),
+
+    -- ** InputPolicy
+    InputPolicy (..),
+
+    -- ** InputPsiControl
+    InputPsiControl (..),
+
+    -- ** InputRotate
+    InputRotate (..),
+
+    -- ** InputSampleRange
+    InputSampleRange (..),
+
+    -- ** InputScanType
+    InputScanType (..),
+
+    -- ** InputTimecodeSource
+    InputTimecodeSource (..),
+
+    -- ** JobPhase
+    JobPhase (..),
+
+    -- ** JobStatus
+    JobStatus (..),
+
+    -- ** JobTemplateListBy
+    JobTemplateListBy (..),
+
+    -- ** LanguageCode
+    LanguageCode (..),
+
+    -- ** M2tsAudioBufferModel
+    M2tsAudioBufferModel (..),
+
+    -- ** M2tsAudioDuration
+    M2tsAudioDuration (..),
+
+    -- ** M2tsBufferModel
+    M2tsBufferModel (..),
+
+    -- ** M2tsDataPtsControl
+    M2tsDataPtsControl (..),
+
+    -- ** M2tsEbpAudioInterval
+    M2tsEbpAudioInterval (..),
+
+    -- ** M2tsEbpPlacement
+    M2tsEbpPlacement (..),
+
+    -- ** M2tsEsRateInPes
+    M2tsEsRateInPes (..),
+
+    -- ** M2tsForceTsVideoEbpOrder
+    M2tsForceTsVideoEbpOrder (..),
+
+    -- ** M2tsKlvMetadata
+    M2tsKlvMetadata (..),
+
+    -- ** M2tsNielsenId3
+    M2tsNielsenId3 (..),
+
+    -- ** M2tsPcrControl
+    M2tsPcrControl (..),
+
+    -- ** M2tsRateMode
+    M2tsRateMode (..),
+
+    -- ** M2tsScte35Source
+    M2tsScte35Source (..),
+
+    -- ** M2tsSegmentationMarkers
+    M2tsSegmentationMarkers (..),
+
+    -- ** M2tsSegmentationStyle
+    M2tsSegmentationStyle (..),
+
+    -- ** M3u8AudioDuration
+    M3u8AudioDuration (..),
+
+    -- ** M3u8DataPtsControl
+    M3u8DataPtsControl (..),
+
+    -- ** M3u8NielsenId3
+    M3u8NielsenId3 (..),
+
+    -- ** M3u8PcrControl
+    M3u8PcrControl (..),
+
+    -- ** M3u8Scte35Source
+    M3u8Scte35Source (..),
+
+    -- ** MotionImageInsertionMode
+    MotionImageInsertionMode (..),
+
+    -- ** MotionImagePlayback
+    MotionImagePlayback (..),
+
+    -- ** MovClapAtom
+    MovClapAtom (..),
+
+    -- ** MovCslgAtom
+    MovCslgAtom (..),
+
+    -- ** MovMpeg2FourCCControl
+    MovMpeg2FourCCControl (..),
+
+    -- ** MovPaddingControl
+    MovPaddingControl (..),
+
+    -- ** MovReference
+    MovReference (..),
+
+    -- ** Mp3RateControlMode
+    Mp3RateControlMode (..),
+
+    -- ** Mp4CslgAtom
+    Mp4CslgAtom (..),
+
+    -- ** Mp4FreeSpaceBox
+    Mp4FreeSpaceBox (..),
+
+    -- ** Mp4MoovPlacement
+    Mp4MoovPlacement (..),
+
+    -- ** MpdAccessibilityCaptionHints
+    MpdAccessibilityCaptionHints (..),
+
+    -- ** MpdAudioDuration
+    MpdAudioDuration (..),
+
+    -- ** MpdCaptionContainerType
+    MpdCaptionContainerType (..),
+
+    -- ** MpdKlvMetadata
+    MpdKlvMetadata (..),
+
+    -- ** MpdManifestMetadataSignaling
+    MpdManifestMetadataSignaling (..),
+
+    -- ** MpdScte35Esam
+    MpdScte35Esam (..),
+
+    -- ** MpdScte35Source
+    MpdScte35Source (..),
+
+    -- ** MpdTimedMetadata
+    MpdTimedMetadata (..),
+
+    -- ** MpdTimedMetadataBoxVersion
+    MpdTimedMetadataBoxVersion (..),
+
+    -- ** Mpeg2AdaptiveQuantization
+    Mpeg2AdaptiveQuantization (..),
+
+    -- ** Mpeg2CodecLevel
+    Mpeg2CodecLevel (..),
+
+    -- ** Mpeg2CodecProfile
+    Mpeg2CodecProfile (..),
+
+    -- ** Mpeg2DynamicSubGop
+    Mpeg2DynamicSubGop (..),
+
+    -- ** Mpeg2FramerateControl
+    Mpeg2FramerateControl (..),
+
+    -- ** Mpeg2FramerateConversionAlgorithm
+    Mpeg2FramerateConversionAlgorithm (..),
+
+    -- ** Mpeg2GopSizeUnits
+    Mpeg2GopSizeUnits (..),
+
+    -- ** Mpeg2InterlaceMode
+    Mpeg2InterlaceMode (..),
+
+    -- ** Mpeg2IntraDcPrecision
+    Mpeg2IntraDcPrecision (..),
+
+    -- ** Mpeg2ParControl
+    Mpeg2ParControl (..),
+
+    -- ** Mpeg2QualityTuningLevel
+    Mpeg2QualityTuningLevel (..),
+
+    -- ** Mpeg2RateControlMode
+    Mpeg2RateControlMode (..),
+
+    -- ** Mpeg2ScanTypeConversionMode
+    Mpeg2ScanTypeConversionMode (..),
+
+    -- ** Mpeg2SceneChangeDetect
+    Mpeg2SceneChangeDetect (..),
+
+    -- ** Mpeg2SlowPal
+    Mpeg2SlowPal (..),
+
+    -- ** Mpeg2SpatialAdaptiveQuantization
+    Mpeg2SpatialAdaptiveQuantization (..),
+
+    -- ** Mpeg2Syntax
+    Mpeg2Syntax (..),
+
+    -- ** Mpeg2Telecine
+    Mpeg2Telecine (..),
+
+    -- ** Mpeg2TemporalAdaptiveQuantization
+    Mpeg2TemporalAdaptiveQuantization (..),
+
+    -- ** MsSmoothAudioDeduplication
+    MsSmoothAudioDeduplication (..),
+
+    -- ** MsSmoothFragmentLengthControl
+    MsSmoothFragmentLengthControl (..),
+
+    -- ** MsSmoothManifestEncoding
+    MsSmoothManifestEncoding (..),
+
+    -- ** MxfAfdSignaling
+    MxfAfdSignaling (..),
+
+    -- ** MxfProfile
+    MxfProfile (..),
+
+    -- ** MxfXavcDurationMode
+    MxfXavcDurationMode (..),
+
+    -- ** NielsenActiveWatermarkProcessType
+    NielsenActiveWatermarkProcessType (..),
+
+    -- ** NielsenSourceWatermarkStatusType
+    NielsenSourceWatermarkStatusType (..),
+
+    -- ** NielsenUniqueTicPerAudioTrackType
+    NielsenUniqueTicPerAudioTrackType (..),
+
+    -- ** NoiseFilterPostTemporalSharpening
+    NoiseFilterPostTemporalSharpening (..),
+
+    -- ** NoiseFilterPostTemporalSharpeningStrength
+    NoiseFilterPostTemporalSharpeningStrength (..),
+
+    -- ** NoiseReducerFilter
+    NoiseReducerFilter (..),
+
+    -- ** Order
+    Order (..),
+
+    -- ** OutputGroupType
+    OutputGroupType (..),
+
+    -- ** OutputSdt
+    OutputSdt (..),
+
+    -- ** PadVideo
+    PadVideo (..),
+
+    -- ** PresetListBy
+    PresetListBy (..),
+
+    -- ** PricingPlan
+    PricingPlan (..),
+
+    -- ** ProresChromaSampling
+    ProresChromaSampling (..),
+
+    -- ** ProresCodecProfile
+    ProresCodecProfile (..),
+
+    -- ** ProresFramerateControl
+    ProresFramerateControl (..),
+
+    -- ** ProresFramerateConversionAlgorithm
+    ProresFramerateConversionAlgorithm (..),
+
+    -- ** ProresInterlaceMode
+    ProresInterlaceMode (..),
+
+    -- ** ProresParControl
+    ProresParControl (..),
+
+    -- ** ProresScanTypeConversionMode
+    ProresScanTypeConversionMode (..),
+
+    -- ** ProresSlowPal
+    ProresSlowPal (..),
+
+    -- ** ProresTelecine
+    ProresTelecine (..),
+
+    -- ** QueueListBy
+    QueueListBy (..),
+
+    -- ** QueueStatus
+    QueueStatus (..),
+
+    -- ** RenewalType
+    RenewalType (..),
+
+    -- ** RequiredFlag
+    RequiredFlag (..),
+
+    -- ** ReservationPlanStatus
+    ReservationPlanStatus (..),
+
+    -- ** RespondToAfd
+    RespondToAfd (..),
+
+    -- ** RuleType
+    RuleType (..),
+
+    -- ** S3ObjectCannedAcl
+    S3ObjectCannedAcl (..),
+
+    -- ** S3ServerSideEncryptionType
+    S3ServerSideEncryptionType (..),
+
+    -- ** SampleRangeConversion
+    SampleRangeConversion (..),
+
+    -- ** ScalingBehavior
+    ScalingBehavior (..),
+
+    -- ** SccDestinationFramerate
+    SccDestinationFramerate (..),
+
+    -- ** SimulateReservedQueue
+    SimulateReservedQueue (..),
+
+    -- ** SrtStylePassthrough
+    SrtStylePassthrough (..),
+
+    -- ** StatusUpdateInterval
+    StatusUpdateInterval (..),
+
+    -- ** TeletextPageType
+    TeletextPageType (..),
+
+    -- ** TimecodeBurninPosition
+    TimecodeBurninPosition (..),
+
+    -- ** TimecodeSource
+    TimecodeSource (..),
+
+    -- ** TimedMetadata
+    TimedMetadata (..),
+
+    -- ** TtmlStylePassthrough
+    TtmlStylePassthrough (..),
+
+    -- ** Type
+    Type (..),
+
+    -- ** Vc3Class
+    Vc3Class (..),
+
+    -- ** Vc3FramerateControl
+    Vc3FramerateControl (..),
+
+    -- ** Vc3FramerateConversionAlgorithm
+    Vc3FramerateConversionAlgorithm (..),
+
+    -- ** Vc3InterlaceMode
+    Vc3InterlaceMode (..),
+
+    -- ** Vc3ScanTypeConversionMode
+    Vc3ScanTypeConversionMode (..),
+
+    -- ** Vc3SlowPal
+    Vc3SlowPal (..),
+
+    -- ** Vc3Telecine
+    Vc3Telecine (..),
+
+    -- ** VchipAction
+    VchipAction (..),
+
+    -- ** VideoCodec
+    VideoCodec (..),
+
+    -- ** VideoTimecodeInsertion
+    VideoTimecodeInsertion (..),
+
+    -- ** Vp8FramerateControl
+    Vp8FramerateControl (..),
+
+    -- ** Vp8FramerateConversionAlgorithm
+    Vp8FramerateConversionAlgorithm (..),
+
+    -- ** Vp8ParControl
+    Vp8ParControl (..),
+
+    -- ** Vp8QualityTuningLevel
+    Vp8QualityTuningLevel (..),
+
+    -- ** Vp8RateControlMode
+    Vp8RateControlMode (..),
+
+    -- ** Vp9FramerateControl
+    Vp9FramerateControl (..),
+
+    -- ** Vp9FramerateConversionAlgorithm
+    Vp9FramerateConversionAlgorithm (..),
+
+    -- ** Vp9ParControl
+    Vp9ParControl (..),
+
+    -- ** Vp9QualityTuningLevel
+    Vp9QualityTuningLevel (..),
+
+    -- ** Vp9RateControlMode
+    Vp9RateControlMode (..),
+
+    -- ** WatermarkingStrength
+    WatermarkingStrength (..),
+
+    -- ** WavFormat
+    WavFormat (..),
+
+    -- ** WebvttAccessibilitySubs
+    WebvttAccessibilitySubs (..),
+
+    -- ** WebvttStylePassthrough
+    WebvttStylePassthrough (..),
+
+    -- ** Xavc4kIntraCbgProfileClass
+    Xavc4kIntraCbgProfileClass (..),
+
+    -- ** Xavc4kIntraVbrProfileClass
+    Xavc4kIntraVbrProfileClass (..),
+
+    -- ** Xavc4kProfileBitrateClass
+    Xavc4kProfileBitrateClass (..),
+
+    -- ** Xavc4kProfileCodecProfile
+    Xavc4kProfileCodecProfile (..),
+
+    -- ** Xavc4kProfileQualityTuningLevel
+    Xavc4kProfileQualityTuningLevel (..),
+
+    -- ** XavcAdaptiveQuantization
+    XavcAdaptiveQuantization (..),
+
+    -- ** XavcEntropyEncoding
+    XavcEntropyEncoding (..),
+
+    -- ** XavcFlickerAdaptiveQuantization
+    XavcFlickerAdaptiveQuantization (..),
+
+    -- ** XavcFramerateControl
+    XavcFramerateControl (..),
+
+    -- ** XavcFramerateConversionAlgorithm
+    XavcFramerateConversionAlgorithm (..),
+
+    -- ** XavcGopBReference
+    XavcGopBReference (..),
+
+    -- ** XavcHdIntraCbgProfileClass
+    XavcHdIntraCbgProfileClass (..),
+
+    -- ** XavcHdProfileBitrateClass
+    XavcHdProfileBitrateClass (..),
+
+    -- ** XavcHdProfileQualityTuningLevel
+    XavcHdProfileQualityTuningLevel (..),
+
+    -- ** XavcHdProfileTelecine
+    XavcHdProfileTelecine (..),
+
+    -- ** XavcInterlaceMode
+    XavcInterlaceMode (..),
+
+    -- ** XavcProfile
+    XavcProfile (..),
+
+    -- ** XavcSlowPal
+    XavcSlowPal (..),
+
+    -- ** XavcSpatialAdaptiveQuantization
+    XavcSpatialAdaptiveQuantization (..),
+
+    -- ** XavcTemporalAdaptiveQuantization
+    XavcTemporalAdaptiveQuantization (..),
+
+    -- ** AacSettings
+    AacSettings (AacSettings'),
+    newAacSettings,
+
+    -- ** Ac3Settings
+    Ac3Settings (Ac3Settings'),
+    newAc3Settings,
+
+    -- ** AccelerationSettings
+    AccelerationSettings (AccelerationSettings'),
+    newAccelerationSettings,
+
+    -- ** AiffSettings
+    AiffSettings (AiffSettings'),
+    newAiffSettings,
+
+    -- ** AllowedRenditionSize
+    AllowedRenditionSize (AllowedRenditionSize'),
+    newAllowedRenditionSize,
+
+    -- ** AncillarySourceSettings
+    AncillarySourceSettings (AncillarySourceSettings'),
+    newAncillarySourceSettings,
+
+    -- ** AudioChannelTaggingSettings
+    AudioChannelTaggingSettings (AudioChannelTaggingSettings'),
+    newAudioChannelTaggingSettings,
+
+    -- ** AudioCodecSettings
+    AudioCodecSettings (AudioCodecSettings'),
+    newAudioCodecSettings,
+
+    -- ** AudioDescription
+    AudioDescription (AudioDescription'),
+    newAudioDescription,
+
+    -- ** AudioNormalizationSettings
+    AudioNormalizationSettings (AudioNormalizationSettings'),
+    newAudioNormalizationSettings,
+
+    -- ** AudioSelector
+    AudioSelector (AudioSelector'),
+    newAudioSelector,
+
+    -- ** AudioSelectorGroup
+    AudioSelectorGroup (AudioSelectorGroup'),
+    newAudioSelectorGroup,
+
+    -- ** AutomatedAbrRule
+    AutomatedAbrRule (AutomatedAbrRule'),
+    newAutomatedAbrRule,
+
+    -- ** AutomatedAbrSettings
+    AutomatedAbrSettings (AutomatedAbrSettings'),
+    newAutomatedAbrSettings,
+
+    -- ** AutomatedEncodingSettings
+    AutomatedEncodingSettings (AutomatedEncodingSettings'),
+    newAutomatedEncodingSettings,
+
+    -- ** Av1QvbrSettings
+    Av1QvbrSettings (Av1QvbrSettings'),
+    newAv1QvbrSettings,
+
+    -- ** Av1Settings
+    Av1Settings (Av1Settings'),
+    newAv1Settings,
+
+    -- ** AvailBlanking
+    AvailBlanking (AvailBlanking'),
+    newAvailBlanking,
+
+    -- ** AvcIntraSettings
+    AvcIntraSettings (AvcIntraSettings'),
+    newAvcIntraSettings,
+
+    -- ** AvcIntraUhdSettings
+    AvcIntraUhdSettings (AvcIntraUhdSettings'),
+    newAvcIntraUhdSettings,
+
+    -- ** BurninDestinationSettings
+    BurninDestinationSettings (BurninDestinationSettings'),
+    newBurninDestinationSettings,
+
+    -- ** CaptionDescription
+    CaptionDescription (CaptionDescription'),
+    newCaptionDescription,
+
+    -- ** CaptionDescriptionPreset
+    CaptionDescriptionPreset (CaptionDescriptionPreset'),
+    newCaptionDescriptionPreset,
+
+    -- ** CaptionDestinationSettings
+    CaptionDestinationSettings (CaptionDestinationSettings'),
+    newCaptionDestinationSettings,
+
+    -- ** CaptionSelector
+    CaptionSelector (CaptionSelector'),
+    newCaptionSelector,
+
+    -- ** CaptionSourceFramerate
+    CaptionSourceFramerate (CaptionSourceFramerate'),
+    newCaptionSourceFramerate,
+
+    -- ** CaptionSourceSettings
+    CaptionSourceSettings (CaptionSourceSettings'),
+    newCaptionSourceSettings,
+
+    -- ** ChannelMapping
+    ChannelMapping (ChannelMapping'),
+    newChannelMapping,
+
+    -- ** CmafAdditionalManifest
+    CmafAdditionalManifest (CmafAdditionalManifest'),
+    newCmafAdditionalManifest,
+
+    -- ** CmafEncryptionSettings
+    CmafEncryptionSettings (CmafEncryptionSettings'),
+    newCmafEncryptionSettings,
+
+    -- ** CmafGroupSettings
+    CmafGroupSettings (CmafGroupSettings'),
+    newCmafGroupSettings,
+
+    -- ** CmafImageBasedTrickPlaySettings
+    CmafImageBasedTrickPlaySettings (CmafImageBasedTrickPlaySettings'),
+    newCmafImageBasedTrickPlaySettings,
+
+    -- ** CmfcSettings
+    CmfcSettings (CmfcSettings'),
+    newCmfcSettings,
+
+    -- ** ColorCorrector
+    ColorCorrector (ColorCorrector'),
+    newColorCorrector,
+
+    -- ** ContainerSettings
+    ContainerSettings (ContainerSettings'),
+    newContainerSettings,
+
+    -- ** DashAdditionalManifest
+    DashAdditionalManifest (DashAdditionalManifest'),
+    newDashAdditionalManifest,
+
+    -- ** DashIsoEncryptionSettings
+    DashIsoEncryptionSettings (DashIsoEncryptionSettings'),
+    newDashIsoEncryptionSettings,
+
+    -- ** DashIsoGroupSettings
+    DashIsoGroupSettings (DashIsoGroupSettings'),
+    newDashIsoGroupSettings,
+
+    -- ** DashIsoImageBasedTrickPlaySettings
+    DashIsoImageBasedTrickPlaySettings (DashIsoImageBasedTrickPlaySettings'),
+    newDashIsoImageBasedTrickPlaySettings,
+
+    -- ** Deinterlacer
+    Deinterlacer (Deinterlacer'),
+    newDeinterlacer,
+
+    -- ** DestinationSettings
+    DestinationSettings (DestinationSettings'),
+    newDestinationSettings,
+
+    -- ** DolbyVision
+    DolbyVision (DolbyVision'),
+    newDolbyVision,
+
+    -- ** DolbyVisionLevel6Metadata
+    DolbyVisionLevel6Metadata (DolbyVisionLevel6Metadata'),
+    newDolbyVisionLevel6Metadata,
+
+    -- ** DvbNitSettings
+    DvbNitSettings (DvbNitSettings'),
+    newDvbNitSettings,
+
+    -- ** DvbSdtSettings
+    DvbSdtSettings (DvbSdtSettings'),
+    newDvbSdtSettings,
+
+    -- ** DvbSubDestinationSettings
+    DvbSubDestinationSettings (DvbSubDestinationSettings'),
+    newDvbSubDestinationSettings,
+
+    -- ** DvbSubSourceSettings
+    DvbSubSourceSettings (DvbSubSourceSettings'),
+    newDvbSubSourceSettings,
+
+    -- ** DvbTdtSettings
+    DvbTdtSettings (DvbTdtSettings'),
+    newDvbTdtSettings,
+
+    -- ** Eac3AtmosSettings
+    Eac3AtmosSettings (Eac3AtmosSettings'),
+    newEac3AtmosSettings,
+
+    -- ** Eac3Settings
+    Eac3Settings (Eac3Settings'),
+    newEac3Settings,
+
+    -- ** EmbeddedDestinationSettings
+    EmbeddedDestinationSettings (EmbeddedDestinationSettings'),
+    newEmbeddedDestinationSettings,
+
+    -- ** EmbeddedSourceSettings
+    EmbeddedSourceSettings (EmbeddedSourceSettings'),
+    newEmbeddedSourceSettings,
+
+    -- ** Endpoint
+    Endpoint (Endpoint'),
+    newEndpoint,
+
+    -- ** EsamManifestConfirmConditionNotification
+    EsamManifestConfirmConditionNotification (EsamManifestConfirmConditionNotification'),
+    newEsamManifestConfirmConditionNotification,
+
+    -- ** EsamSettings
+    EsamSettings (EsamSettings'),
+    newEsamSettings,
+
+    -- ** EsamSignalProcessingNotification
+    EsamSignalProcessingNotification (EsamSignalProcessingNotification'),
+    newEsamSignalProcessingNotification,
+
+    -- ** ExtendedDataServices
+    ExtendedDataServices (ExtendedDataServices'),
+    newExtendedDataServices,
+
+    -- ** F4vSettings
+    F4vSettings (F4vSettings'),
+    newF4vSettings,
+
+    -- ** FileGroupSettings
+    FileGroupSettings (FileGroupSettings'),
+    newFileGroupSettings,
+
+    -- ** FileSourceSettings
+    FileSourceSettings (FileSourceSettings'),
+    newFileSourceSettings,
+
+    -- ** ForceIncludeRenditionSize
+    ForceIncludeRenditionSize (ForceIncludeRenditionSize'),
+    newForceIncludeRenditionSize,
+
+    -- ** FrameCaptureSettings
+    FrameCaptureSettings (FrameCaptureSettings'),
+    newFrameCaptureSettings,
+
+    -- ** H264QvbrSettings
+    H264QvbrSettings (H264QvbrSettings'),
+    newH264QvbrSettings,
+
+    -- ** H264Settings
+    H264Settings (H264Settings'),
+    newH264Settings,
+
+    -- ** H265QvbrSettings
+    H265QvbrSettings (H265QvbrSettings'),
+    newH265QvbrSettings,
+
+    -- ** H265Settings
+    H265Settings (H265Settings'),
+    newH265Settings,
+
+    -- ** Hdr10Metadata
+    Hdr10Metadata (Hdr10Metadata'),
+    newHdr10Metadata,
+
+    -- ** Hdr10Plus
+    Hdr10Plus (Hdr10Plus'),
+    newHdr10Plus,
+
+    -- ** HlsAdditionalManifest
+    HlsAdditionalManifest (HlsAdditionalManifest'),
+    newHlsAdditionalManifest,
+
+    -- ** HlsCaptionLanguageMapping
+    HlsCaptionLanguageMapping (HlsCaptionLanguageMapping'),
+    newHlsCaptionLanguageMapping,
+
+    -- ** HlsEncryptionSettings
+    HlsEncryptionSettings (HlsEncryptionSettings'),
+    newHlsEncryptionSettings,
+
+    -- ** HlsGroupSettings
+    HlsGroupSettings (HlsGroupSettings'),
+    newHlsGroupSettings,
+
+    -- ** HlsImageBasedTrickPlaySettings
+    HlsImageBasedTrickPlaySettings (HlsImageBasedTrickPlaySettings'),
+    newHlsImageBasedTrickPlaySettings,
+
+    -- ** HlsRenditionGroupSettings
+    HlsRenditionGroupSettings (HlsRenditionGroupSettings'),
+    newHlsRenditionGroupSettings,
+
+    -- ** HlsSettings
+    HlsSettings (HlsSettings'),
+    newHlsSettings,
+
+    -- ** HopDestination
+    HopDestination (HopDestination'),
+    newHopDestination,
+
+    -- ** Id3Insertion
+    Id3Insertion (Id3Insertion'),
+    newId3Insertion,
+
+    -- ** ImageInserter
+    ImageInserter (ImageInserter'),
+    newImageInserter,
+
+    -- ** ImscDestinationSettings
+    ImscDestinationSettings (ImscDestinationSettings'),
+    newImscDestinationSettings,
+
+    -- ** Input
+    Input (Input'),
+    newInput,
+
+    -- ** InputClipping
+    InputClipping (InputClipping'),
+    newInputClipping,
+
+    -- ** InputDecryptionSettings
+    InputDecryptionSettings (InputDecryptionSettings'),
+    newInputDecryptionSettings,
+
+    -- ** InputTemplate
+    InputTemplate (InputTemplate'),
+    newInputTemplate,
+
+    -- ** InputVideoGenerator
+    InputVideoGenerator (InputVideoGenerator'),
+    newInputVideoGenerator,
+
+    -- ** InsertableImage
+    InsertableImage (InsertableImage'),
+    newInsertableImage,
+
+    -- ** Job
+    Job (Job'),
+    newJob,
+
+    -- ** JobMessages
+    JobMessages (JobMessages'),
+    newJobMessages,
+
+    -- ** JobSettings
+    JobSettings (JobSettings'),
+    newJobSettings,
+
+    -- ** JobTemplate
+    JobTemplate (JobTemplate'),
+    newJobTemplate,
+
+    -- ** JobTemplateSettings
+    JobTemplateSettings (JobTemplateSettings'),
+    newJobTemplateSettings,
+
+    -- ** KantarWatermarkSettings
+    KantarWatermarkSettings (KantarWatermarkSettings'),
+    newKantarWatermarkSettings,
+
+    -- ** M2tsScte35Esam
+    M2tsScte35Esam (M2tsScte35Esam'),
+    newM2tsScte35Esam,
+
+    -- ** M2tsSettings
+    M2tsSettings (M2tsSettings'),
+    newM2tsSettings,
+
+    -- ** M3u8Settings
+    M3u8Settings (M3u8Settings'),
+    newM3u8Settings,
+
+    -- ** MinBottomRenditionSize
+    MinBottomRenditionSize (MinBottomRenditionSize'),
+    newMinBottomRenditionSize,
+
+    -- ** MinTopRenditionSize
+    MinTopRenditionSize (MinTopRenditionSize'),
+    newMinTopRenditionSize,
+
+    -- ** MotionImageInserter
+    MotionImageInserter (MotionImageInserter'),
+    newMotionImageInserter,
+
+    -- ** MotionImageInsertionFramerate
+    MotionImageInsertionFramerate (MotionImageInsertionFramerate'),
+    newMotionImageInsertionFramerate,
+
+    -- ** MotionImageInsertionOffset
+    MotionImageInsertionOffset (MotionImageInsertionOffset'),
+    newMotionImageInsertionOffset,
+
+    -- ** MovSettings
+    MovSettings (MovSettings'),
+    newMovSettings,
+
+    -- ** Mp2Settings
+    Mp2Settings (Mp2Settings'),
+    newMp2Settings,
+
+    -- ** Mp3Settings
+    Mp3Settings (Mp3Settings'),
+    newMp3Settings,
+
+    -- ** Mp4Settings
+    Mp4Settings (Mp4Settings'),
+    newMp4Settings,
+
+    -- ** MpdSettings
+    MpdSettings (MpdSettings'),
+    newMpdSettings,
+
+    -- ** Mpeg2Settings
+    Mpeg2Settings (Mpeg2Settings'),
+    newMpeg2Settings,
+
+    -- ** MsSmoothAdditionalManifest
+    MsSmoothAdditionalManifest (MsSmoothAdditionalManifest'),
+    newMsSmoothAdditionalManifest,
+
+    -- ** MsSmoothEncryptionSettings
+    MsSmoothEncryptionSettings (MsSmoothEncryptionSettings'),
+    newMsSmoothEncryptionSettings,
+
+    -- ** MsSmoothGroupSettings
+    MsSmoothGroupSettings (MsSmoothGroupSettings'),
+    newMsSmoothGroupSettings,
+
+    -- ** MxfSettings
+    MxfSettings (MxfSettings'),
+    newMxfSettings,
+
+    -- ** MxfXavcProfileSettings
+    MxfXavcProfileSettings (MxfXavcProfileSettings'),
+    newMxfXavcProfileSettings,
+
+    -- ** NexGuardFileMarkerSettings
+    NexGuardFileMarkerSettings (NexGuardFileMarkerSettings'),
+    newNexGuardFileMarkerSettings,
+
+    -- ** NielsenConfiguration
+    NielsenConfiguration (NielsenConfiguration'),
+    newNielsenConfiguration,
+
+    -- ** NielsenNonLinearWatermarkSettings
+    NielsenNonLinearWatermarkSettings (NielsenNonLinearWatermarkSettings'),
+    newNielsenNonLinearWatermarkSettings,
+
+    -- ** NoiseReducer
+    NoiseReducer (NoiseReducer'),
+    newNoiseReducer,
+
+    -- ** NoiseReducerFilterSettings
+    NoiseReducerFilterSettings (NoiseReducerFilterSettings'),
+    newNoiseReducerFilterSettings,
+
+    -- ** NoiseReducerSpatialFilterSettings
+    NoiseReducerSpatialFilterSettings (NoiseReducerSpatialFilterSettings'),
+    newNoiseReducerSpatialFilterSettings,
+
+    -- ** NoiseReducerTemporalFilterSettings
+    NoiseReducerTemporalFilterSettings (NoiseReducerTemporalFilterSettings'),
+    newNoiseReducerTemporalFilterSettings,
+
+    -- ** OpusSettings
+    OpusSettings (OpusSettings'),
+    newOpusSettings,
+
+    -- ** Output
+    Output (Output'),
+    newOutput,
+
+    -- ** OutputChannelMapping
+    OutputChannelMapping (OutputChannelMapping'),
+    newOutputChannelMapping,
+
+    -- ** OutputDetail
+    OutputDetail (OutputDetail'),
+    newOutputDetail,
+
+    -- ** OutputGroup
+    OutputGroup (OutputGroup'),
+    newOutputGroup,
+
+    -- ** OutputGroupDetail
+    OutputGroupDetail (OutputGroupDetail'),
+    newOutputGroupDetail,
+
+    -- ** OutputGroupSettings
+    OutputGroupSettings (OutputGroupSettings'),
+    newOutputGroupSettings,
+
+    -- ** OutputSettings
+    OutputSettings (OutputSettings'),
+    newOutputSettings,
+
+    -- ** PartnerWatermarking
+    PartnerWatermarking (PartnerWatermarking'),
+    newPartnerWatermarking,
+
+    -- ** Policy
+    Policy (Policy'),
+    newPolicy,
+
+    -- ** Preset
+    Preset (Preset'),
+    newPreset,
+
+    -- ** PresetSettings
+    PresetSettings (PresetSettings'),
+    newPresetSettings,
+
+    -- ** ProresSettings
+    ProresSettings (ProresSettings'),
+    newProresSettings,
+
+    -- ** Queue
+    Queue (Queue'),
+    newQueue,
+
+    -- ** QueueTransition
+    QueueTransition (QueueTransition'),
+    newQueueTransition,
+
+    -- ** Rectangle
+    Rectangle (Rectangle'),
+    newRectangle,
+
+    -- ** RemixSettings
+    RemixSettings (RemixSettings'),
+    newRemixSettings,
+
+    -- ** ReservationPlan
+    ReservationPlan (ReservationPlan'),
+    newReservationPlan,
+
+    -- ** ReservationPlanSettings
+    ReservationPlanSettings (ReservationPlanSettings'),
+    newReservationPlanSettings,
+
+    -- ** ResourceTags
+    ResourceTags (ResourceTags'),
+    newResourceTags,
+
+    -- ** S3DestinationAccessControl
+    S3DestinationAccessControl (S3DestinationAccessControl'),
+    newS3DestinationAccessControl,
+
+    -- ** S3DestinationSettings
+    S3DestinationSettings (S3DestinationSettings'),
+    newS3DestinationSettings,
+
+    -- ** S3EncryptionSettings
+    S3EncryptionSettings (S3EncryptionSettings'),
+    newS3EncryptionSettings,
+
+    -- ** SccDestinationSettings
+    SccDestinationSettings (SccDestinationSettings'),
+    newSccDestinationSettings,
+
+    -- ** SpekeKeyProvider
+    SpekeKeyProvider (SpekeKeyProvider'),
+    newSpekeKeyProvider,
+
+    -- ** SpekeKeyProviderCmaf
+    SpekeKeyProviderCmaf (SpekeKeyProviderCmaf'),
+    newSpekeKeyProviderCmaf,
+
+    -- ** SrtDestinationSettings
+    SrtDestinationSettings (SrtDestinationSettings'),
+    newSrtDestinationSettings,
+
+    -- ** StaticKeyProvider
+    StaticKeyProvider (StaticKeyProvider'),
+    newStaticKeyProvider,
+
+    -- ** TeletextDestinationSettings
+    TeletextDestinationSettings (TeletextDestinationSettings'),
+    newTeletextDestinationSettings,
+
+    -- ** TeletextSourceSettings
+    TeletextSourceSettings (TeletextSourceSettings'),
+    newTeletextSourceSettings,
+
+    -- ** TimecodeBurnin
+    TimecodeBurnin (TimecodeBurnin'),
+    newTimecodeBurnin,
+
+    -- ** TimecodeConfig
+    TimecodeConfig (TimecodeConfig'),
+    newTimecodeConfig,
+
+    -- ** TimedMetadataInsertion
+    TimedMetadataInsertion (TimedMetadataInsertion'),
+    newTimedMetadataInsertion,
+
+    -- ** Timing
+    Timing (Timing'),
+    newTiming,
+
+    -- ** TrackSourceSettings
+    TrackSourceSettings (TrackSourceSettings'),
+    newTrackSourceSettings,
+
+    -- ** TtmlDestinationSettings
+    TtmlDestinationSettings (TtmlDestinationSettings'),
+    newTtmlDestinationSettings,
+
+    -- ** Vc3Settings
+    Vc3Settings (Vc3Settings'),
+    newVc3Settings,
+
+    -- ** VideoCodecSettings
+    VideoCodecSettings (VideoCodecSettings'),
+    newVideoCodecSettings,
+
+    -- ** VideoDescription
+    VideoDescription (VideoDescription'),
+    newVideoDescription,
+
+    -- ** VideoDetail
+    VideoDetail (VideoDetail'),
+    newVideoDetail,
+
+    -- ** VideoPreprocessor
+    VideoPreprocessor (VideoPreprocessor'),
+    newVideoPreprocessor,
+
+    -- ** VideoSelector
+    VideoSelector (VideoSelector'),
+    newVideoSelector,
+
+    -- ** VorbisSettings
+    VorbisSettings (VorbisSettings'),
+    newVorbisSettings,
+
+    -- ** Vp8Settings
+    Vp8Settings (Vp8Settings'),
+    newVp8Settings,
+
+    -- ** Vp9Settings
+    Vp9Settings (Vp9Settings'),
+    newVp9Settings,
+
+    -- ** WavSettings
+    WavSettings (WavSettings'),
+    newWavSettings,
+
+    -- ** WebvttDestinationSettings
+    WebvttDestinationSettings (WebvttDestinationSettings'),
+    newWebvttDestinationSettings,
+
+    -- ** WebvttHlsSourceSettings
+    WebvttHlsSourceSettings (WebvttHlsSourceSettings'),
+    newWebvttHlsSourceSettings,
+
+    -- ** Xavc4kIntraCbgProfileSettings
+    Xavc4kIntraCbgProfileSettings (Xavc4kIntraCbgProfileSettings'),
+    newXavc4kIntraCbgProfileSettings,
+
+    -- ** Xavc4kIntraVbrProfileSettings
+    Xavc4kIntraVbrProfileSettings (Xavc4kIntraVbrProfileSettings'),
+    newXavc4kIntraVbrProfileSettings,
+
+    -- ** Xavc4kProfileSettings
+    Xavc4kProfileSettings (Xavc4kProfileSettings'),
+    newXavc4kProfileSettings,
+
+    -- ** XavcHdIntraCbgProfileSettings
+    XavcHdIntraCbgProfileSettings (XavcHdIntraCbgProfileSettings'),
+    newXavcHdIntraCbgProfileSettings,
+
+    -- ** XavcHdProfileSettings
+    XavcHdProfileSettings (XavcHdProfileSettings'),
+    newXavcHdProfileSettings,
+
+    -- ** XavcSettings
+    XavcSettings (XavcSettings'),
+    newXavcSettings,
+  )
+where
+
+import Amazonka.MediaConvert.AssociateCertificate
+import Amazonka.MediaConvert.CancelJob
+import Amazonka.MediaConvert.CreateJob
+import Amazonka.MediaConvert.CreateJobTemplate
+import Amazonka.MediaConvert.CreatePreset
+import Amazonka.MediaConvert.CreateQueue
+import Amazonka.MediaConvert.DeleteJobTemplate
+import Amazonka.MediaConvert.DeletePolicy
+import Amazonka.MediaConvert.DeletePreset
+import Amazonka.MediaConvert.DeleteQueue
+import Amazonka.MediaConvert.DescribeEndpoints
+import Amazonka.MediaConvert.DisassociateCertificate
+import Amazonka.MediaConvert.GetJob
+import Amazonka.MediaConvert.GetJobTemplate
+import Amazonka.MediaConvert.GetPolicy
+import Amazonka.MediaConvert.GetPreset
+import Amazonka.MediaConvert.GetQueue
+import Amazonka.MediaConvert.Lens
+import Amazonka.MediaConvert.ListJobTemplates
+import Amazonka.MediaConvert.ListJobs
+import Amazonka.MediaConvert.ListPresets
+import Amazonka.MediaConvert.ListQueues
+import Amazonka.MediaConvert.ListTagsForResource
+import Amazonka.MediaConvert.PutPolicy
+import Amazonka.MediaConvert.TagResource
+import Amazonka.MediaConvert.Types
+import Amazonka.MediaConvert.UntagResource
+import Amazonka.MediaConvert.UpdateJobTemplate
+import Amazonka.MediaConvert.UpdatePreset
+import Amazonka.MediaConvert.UpdateQueue
+import Amazonka.MediaConvert.Waiters
+
+-- $errors
+-- Error matchers are designed for use with the functions provided by
+-- <http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
+-- This allows catching (and rethrowing) service specific errors returned
+-- by 'MediaConvert'.
+
+-- $operations
+-- Some AWS operations return results that are incomplete and require subsequent
+-- requests in order to obtain the entire result set. The process of sending
+-- subsequent requests to continue where a previous request left off is called
+-- pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
+-- 1000 objects at a time, and you must send subsequent requests with the
+-- appropriate Marker in order to retrieve the next page of results.
+--
+-- Operations that have an 'AWSPager' instance can transparently perform subsequent
+-- requests, correctly setting Markers and other request facets to iterate through
+-- the entire result set of a truncated API operation. Operations which support
+-- this have an additional note in the documentation.
+--
+-- Many operations have the ability to filter results on the server side. See the
+-- individual operation parameters for details.
+
+-- $waiters
+-- Waiters poll by repeatedly sending a request until some remote success condition
+-- configured by the 'Wait' specification is fulfilled. The 'Wait' specification
+-- determines how many attempts should be made, in addition to delay and retry strategies.
diff --git a/gen/Amazonka/MediaConvert/AssociateCertificate.hs b/gen/Amazonka/MediaConvert/AssociateCertificate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/AssociateCertificate.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.AssociateCertificate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates an AWS Certificate Manager (ACM) Amazon Resource Name (ARN)
+-- with AWS Elemental MediaConvert.
+module Amazonka.MediaConvert.AssociateCertificate
+  ( -- * Creating a Request
+    AssociateCertificate (..),
+    newAssociateCertificate,
+
+    -- * Request Lenses
+    associateCertificate_arn,
+
+    -- * Destructuring the Response
+    AssociateCertificateResponse (..),
+    newAssociateCertificateResponse,
+
+    -- * Response Lenses
+    associateCertificateResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociateCertificate' smart constructor.
+data AssociateCertificate = AssociateCertificate'
+  { -- | The ARN of the ACM certificate that you want to associate with your
+    -- MediaConvert resource.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateCertificate' 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:
+--
+-- 'arn', 'associateCertificate_arn' - The ARN of the ACM certificate that you want to associate with your
+-- MediaConvert resource.
+newAssociateCertificate ::
+  -- | 'arn'
+  Prelude.Text ->
+  AssociateCertificate
+newAssociateCertificate pArn_ =
+  AssociateCertificate' {arn = pArn_}
+
+-- | The ARN of the ACM certificate that you want to associate with your
+-- MediaConvert resource.
+associateCertificate_arn :: Lens.Lens' AssociateCertificate Prelude.Text
+associateCertificate_arn = Lens.lens (\AssociateCertificate' {arn} -> arn) (\s@AssociateCertificate' {} a -> s {arn = a} :: AssociateCertificate)
+
+instance Core.AWSRequest AssociateCertificate where
+  type
+    AWSResponse AssociateCertificate =
+      AssociateCertificateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          AssociateCertificateResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AssociateCertificate where
+  hashWithSalt _salt AssociateCertificate' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData AssociateCertificate where
+  rnf AssociateCertificate' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders AssociateCertificate where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateCertificate where
+  toJSON AssociateCertificate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("arn" Data..= arn)]
+      )
+
+instance Data.ToPath AssociateCertificate where
+  toPath = Prelude.const "/2017-08-29/certificates"
+
+instance Data.ToQuery AssociateCertificate where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateCertificateResponse' smart constructor.
+data AssociateCertificateResponse = AssociateCertificateResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateCertificateResponse' 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:
+--
+-- 'httpStatus', 'associateCertificateResponse_httpStatus' - The response's http status code.
+newAssociateCertificateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateCertificateResponse
+newAssociateCertificateResponse pHttpStatus_ =
+  AssociateCertificateResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+associateCertificateResponse_httpStatus :: Lens.Lens' AssociateCertificateResponse Prelude.Int
+associateCertificateResponse_httpStatus = Lens.lens (\AssociateCertificateResponse' {httpStatus} -> httpStatus) (\s@AssociateCertificateResponse' {} a -> s {httpStatus = a} :: AssociateCertificateResponse)
+
+instance Prelude.NFData AssociateCertificateResponse where
+  rnf AssociateCertificateResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/CancelJob.hs b/gen/Amazonka/MediaConvert/CancelJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/CancelJob.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.CancelJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Permanently cancel a job. Once you have canceled a job, you can\'t start
+-- it again.
+module Amazonka.MediaConvert.CancelJob
+  ( -- * Creating a Request
+    CancelJob (..),
+    newCancelJob,
+
+    -- * Request Lenses
+    cancelJob_id,
+
+    -- * Destructuring the Response
+    CancelJobResponse (..),
+    newCancelJobResponse,
+
+    -- * Response Lenses
+    cancelJobResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCancelJob' smart constructor.
+data CancelJob = CancelJob'
+  { -- | The Job ID of the job to be cancelled.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CancelJob' 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:
+--
+-- 'id', 'cancelJob_id' - The Job ID of the job to be cancelled.
+newCancelJob ::
+  -- | 'id'
+  Prelude.Text ->
+  CancelJob
+newCancelJob pId_ = CancelJob' {id = pId_}
+
+-- | The Job ID of the job to be cancelled.
+cancelJob_id :: Lens.Lens' CancelJob Prelude.Text
+cancelJob_id = Lens.lens (\CancelJob' {id} -> id) (\s@CancelJob' {} a -> s {id = a} :: CancelJob)
+
+instance Core.AWSRequest CancelJob where
+  type AWSResponse CancelJob = CancelJobResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          CancelJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CancelJob where
+  hashWithSalt _salt CancelJob' {..} =
+    _salt `Prelude.hashWithSalt` id
+
+instance Prelude.NFData CancelJob where
+  rnf CancelJob' {..} = Prelude.rnf id
+
+instance Data.ToHeaders CancelJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath CancelJob where
+  toPath CancelJob' {..} =
+    Prelude.mconcat ["/2017-08-29/jobs/", Data.toBS id]
+
+instance Data.ToQuery CancelJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCancelJobResponse' smart constructor.
+data CancelJobResponse = CancelJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CancelJobResponse' 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:
+--
+-- 'httpStatus', 'cancelJobResponse_httpStatus' - The response's http status code.
+newCancelJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CancelJobResponse
+newCancelJobResponse pHttpStatus_ =
+  CancelJobResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+cancelJobResponse_httpStatus :: Lens.Lens' CancelJobResponse Prelude.Int
+cancelJobResponse_httpStatus = Lens.lens (\CancelJobResponse' {httpStatus} -> httpStatus) (\s@CancelJobResponse' {} a -> s {httpStatus = a} :: CancelJobResponse)
+
+instance Prelude.NFData CancelJobResponse where
+  rnf CancelJobResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/CreateJob.hs b/gen/Amazonka/MediaConvert/CreateJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/CreateJob.hs
@@ -0,0 +1,446 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.CreateJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new transcoding job. For information about jobs and job
+-- settings, see the User Guide at
+-- http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+module Amazonka.MediaConvert.CreateJob
+  ( -- * Creating a Request
+    CreateJob (..),
+    newCreateJob,
+
+    -- * Request Lenses
+    createJob_accelerationSettings,
+    createJob_billingTagsSource,
+    createJob_clientRequestToken,
+    createJob_hopDestinations,
+    createJob_jobTemplate,
+    createJob_priority,
+    createJob_queue,
+    createJob_simulateReservedQueue,
+    createJob_statusUpdateInterval,
+    createJob_tags,
+    createJob_userMetadata,
+    createJob_role,
+    createJob_settings,
+
+    -- * Destructuring the Response
+    CreateJobResponse (..),
+    newCreateJobResponse,
+
+    -- * Response Lenses
+    createJobResponse_job,
+    createJobResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateJob' smart constructor.
+data CreateJob = CreateJob'
+  { -- | Optional. Accelerated transcoding can significantly speed up jobs with
+    -- long, visually complex content. Outputs that use this feature incur
+    -- pro-tier pricing. For information about feature limitations, see the AWS
+    -- Elemental MediaConvert User Guide.
+    accelerationSettings :: Prelude.Maybe AccelerationSettings,
+    -- | Optional. Choose a tag type that AWS Billing and Cost Management will
+    -- use to sort your AWS Elemental MediaConvert costs on any billing report
+    -- that you set up. Any transcoding outputs that don\'t have an associated
+    -- tag will appear in your billing report unsorted. If you don\'t choose a
+    -- valid value for this field, your job outputs will appear on the billing
+    -- report unsorted.
+    billingTagsSource :: Prelude.Maybe BillingTagsSource,
+    -- | Optional. Idempotency token for CreateJob operation.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | Optional. Use queue hopping to avoid overly long waits in the backlog of
+    -- the queue that you submit your job to. Specify an alternate queue and
+    -- the maximum time that your job will wait in the initial queue before
+    -- hopping. For more information about this feature, see the AWS Elemental
+    -- MediaConvert User Guide.
+    hopDestinations :: Prelude.Maybe [HopDestination],
+    -- | Optional. When you create a job, you can either specify a job template
+    -- or specify the transcoding settings individually.
+    jobTemplate :: Prelude.Maybe Prelude.Text,
+    -- | Optional. Specify the relative priority for this job. In any given
+    -- queue, the service begins processing the job with the highest value
+    -- first. When more than one job has the same priority, the service begins
+    -- processing the job that you submitted first. If you don\'t specify a
+    -- priority, the service uses the default value 0.
+    priority :: Prelude.Maybe Prelude.Int,
+    -- | Optional. When you create a job, you can specify a queue to send it to.
+    -- If you don\'t specify, the job will go to the default queue. For more
+    -- about queues, see the User Guide topic at
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html.
+    queue :: Prelude.Maybe Prelude.Text,
+    -- | Optional. Enable this setting when you run a test job to estimate how
+    -- many reserved transcoding slots (RTS) you need. When this is enabled,
+    -- MediaConvert runs your job from an on-demand queue with similar
+    -- performance to what you will see with one RTS in a reserved queue. This
+    -- setting is disabled by default.
+    simulateReservedQueue :: Prelude.Maybe SimulateReservedQueue,
+    -- | Optional. Specify how often MediaConvert sends STATUS_UPDATE events to
+    -- Amazon CloudWatch Events. Set the interval, in seconds, between status
+    -- updates. MediaConvert sends an update at this interval from the time the
+    -- service begins processing your job to the time it completes the
+    -- transcode or encounters an error.
+    statusUpdateInterval :: Prelude.Maybe StatusUpdateInterval,
+    -- | Optional. The tags that you want to add to the resource. You can tag
+    -- resources with a key-value pair or with only a key. Use standard AWS
+    -- tags on your job for automatic integration with AWS services and for
+    -- custom integrations and workflows.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Optional. User-defined metadata that you want to associate with an
+    -- MediaConvert job. You specify metadata in key\/value pairs. Use only for
+    -- existing integrations or workflows that rely on job metadata tags.
+    -- Otherwise, we recommend that you use standard AWS tags.
+    userMetadata :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Required. The IAM role you use for creating this job. For details about
+    -- permissions, see the User Guide topic at the User Guide at
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html.
+    role' :: Prelude.Text,
+    -- | JobSettings contains all the transcode settings for a job.
+    settings :: JobSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateJob' 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:
+--
+-- 'accelerationSettings', 'createJob_accelerationSettings' - Optional. Accelerated transcoding can significantly speed up jobs with
+-- long, visually complex content. Outputs that use this feature incur
+-- pro-tier pricing. For information about feature limitations, see the AWS
+-- Elemental MediaConvert User Guide.
+--
+-- 'billingTagsSource', 'createJob_billingTagsSource' - Optional. Choose a tag type that AWS Billing and Cost Management will
+-- use to sort your AWS Elemental MediaConvert costs on any billing report
+-- that you set up. Any transcoding outputs that don\'t have an associated
+-- tag will appear in your billing report unsorted. If you don\'t choose a
+-- valid value for this field, your job outputs will appear on the billing
+-- report unsorted.
+--
+-- 'clientRequestToken', 'createJob_clientRequestToken' - Optional. Idempotency token for CreateJob operation.
+--
+-- 'hopDestinations', 'createJob_hopDestinations' - Optional. Use queue hopping to avoid overly long waits in the backlog of
+-- the queue that you submit your job to. Specify an alternate queue and
+-- the maximum time that your job will wait in the initial queue before
+-- hopping. For more information about this feature, see the AWS Elemental
+-- MediaConvert User Guide.
+--
+-- 'jobTemplate', 'createJob_jobTemplate' - Optional. When you create a job, you can either specify a job template
+-- or specify the transcoding settings individually.
+--
+-- 'priority', 'createJob_priority' - Optional. Specify the relative priority for this job. In any given
+-- queue, the service begins processing the job with the highest value
+-- first. When more than one job has the same priority, the service begins
+-- processing the job that you submitted first. If you don\'t specify a
+-- priority, the service uses the default value 0.
+--
+-- 'queue', 'createJob_queue' - Optional. When you create a job, you can specify a queue to send it to.
+-- If you don\'t specify, the job will go to the default queue. For more
+-- about queues, see the User Guide topic at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html.
+--
+-- 'simulateReservedQueue', 'createJob_simulateReservedQueue' - Optional. Enable this setting when you run a test job to estimate how
+-- many reserved transcoding slots (RTS) you need. When this is enabled,
+-- MediaConvert runs your job from an on-demand queue with similar
+-- performance to what you will see with one RTS in a reserved queue. This
+-- setting is disabled by default.
+--
+-- 'statusUpdateInterval', 'createJob_statusUpdateInterval' - Optional. Specify how often MediaConvert sends STATUS_UPDATE events to
+-- Amazon CloudWatch Events. Set the interval, in seconds, between status
+-- updates. MediaConvert sends an update at this interval from the time the
+-- service begins processing your job to the time it completes the
+-- transcode or encounters an error.
+--
+-- 'tags', 'createJob_tags' - Optional. The tags that you want to add to the resource. You can tag
+-- resources with a key-value pair or with only a key. Use standard AWS
+-- tags on your job for automatic integration with AWS services and for
+-- custom integrations and workflows.
+--
+-- 'userMetadata', 'createJob_userMetadata' - Optional. User-defined metadata that you want to associate with an
+-- MediaConvert job. You specify metadata in key\/value pairs. Use only for
+-- existing integrations or workflows that rely on job metadata tags.
+-- Otherwise, we recommend that you use standard AWS tags.
+--
+-- 'role'', 'createJob_role' - Required. The IAM role you use for creating this job. For details about
+-- permissions, see the User Guide topic at the User Guide at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html.
+--
+-- 'settings', 'createJob_settings' - JobSettings contains all the transcode settings for a job.
+newCreateJob ::
+  -- | 'role''
+  Prelude.Text ->
+  -- | 'settings'
+  JobSettings ->
+  CreateJob
+newCreateJob pRole_ pSettings_ =
+  CreateJob'
+    { accelerationSettings = Prelude.Nothing,
+      billingTagsSource = Prelude.Nothing,
+      clientRequestToken = Prelude.Nothing,
+      hopDestinations = Prelude.Nothing,
+      jobTemplate = Prelude.Nothing,
+      priority = Prelude.Nothing,
+      queue = Prelude.Nothing,
+      simulateReservedQueue = Prelude.Nothing,
+      statusUpdateInterval = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      userMetadata = Prelude.Nothing,
+      role' = pRole_,
+      settings = pSettings_
+    }
+
+-- | Optional. Accelerated transcoding can significantly speed up jobs with
+-- long, visually complex content. Outputs that use this feature incur
+-- pro-tier pricing. For information about feature limitations, see the AWS
+-- Elemental MediaConvert User Guide.
+createJob_accelerationSettings :: Lens.Lens' CreateJob (Prelude.Maybe AccelerationSettings)
+createJob_accelerationSettings = Lens.lens (\CreateJob' {accelerationSettings} -> accelerationSettings) (\s@CreateJob' {} a -> s {accelerationSettings = a} :: CreateJob)
+
+-- | Optional. Choose a tag type that AWS Billing and Cost Management will
+-- use to sort your AWS Elemental MediaConvert costs on any billing report
+-- that you set up. Any transcoding outputs that don\'t have an associated
+-- tag will appear in your billing report unsorted. If you don\'t choose a
+-- valid value for this field, your job outputs will appear on the billing
+-- report unsorted.
+createJob_billingTagsSource :: Lens.Lens' CreateJob (Prelude.Maybe BillingTagsSource)
+createJob_billingTagsSource = Lens.lens (\CreateJob' {billingTagsSource} -> billingTagsSource) (\s@CreateJob' {} a -> s {billingTagsSource = a} :: CreateJob)
+
+-- | Optional. Idempotency token for CreateJob operation.
+createJob_clientRequestToken :: Lens.Lens' CreateJob (Prelude.Maybe Prelude.Text)
+createJob_clientRequestToken = Lens.lens (\CreateJob' {clientRequestToken} -> clientRequestToken) (\s@CreateJob' {} a -> s {clientRequestToken = a} :: CreateJob)
+
+-- | Optional. Use queue hopping to avoid overly long waits in the backlog of
+-- the queue that you submit your job to. Specify an alternate queue and
+-- the maximum time that your job will wait in the initial queue before
+-- hopping. For more information about this feature, see the AWS Elemental
+-- MediaConvert User Guide.
+createJob_hopDestinations :: Lens.Lens' CreateJob (Prelude.Maybe [HopDestination])
+createJob_hopDestinations = Lens.lens (\CreateJob' {hopDestinations} -> hopDestinations) (\s@CreateJob' {} a -> s {hopDestinations = a} :: CreateJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Optional. When you create a job, you can either specify a job template
+-- or specify the transcoding settings individually.
+createJob_jobTemplate :: Lens.Lens' CreateJob (Prelude.Maybe Prelude.Text)
+createJob_jobTemplate = Lens.lens (\CreateJob' {jobTemplate} -> jobTemplate) (\s@CreateJob' {} a -> s {jobTemplate = a} :: CreateJob)
+
+-- | Optional. Specify the relative priority for this job. In any given
+-- queue, the service begins processing the job with the highest value
+-- first. When more than one job has the same priority, the service begins
+-- processing the job that you submitted first. If you don\'t specify a
+-- priority, the service uses the default value 0.
+createJob_priority :: Lens.Lens' CreateJob (Prelude.Maybe Prelude.Int)
+createJob_priority = Lens.lens (\CreateJob' {priority} -> priority) (\s@CreateJob' {} a -> s {priority = a} :: CreateJob)
+
+-- | Optional. When you create a job, you can specify a queue to send it to.
+-- If you don\'t specify, the job will go to the default queue. For more
+-- about queues, see the User Guide topic at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html.
+createJob_queue :: Lens.Lens' CreateJob (Prelude.Maybe Prelude.Text)
+createJob_queue = Lens.lens (\CreateJob' {queue} -> queue) (\s@CreateJob' {} a -> s {queue = a} :: CreateJob)
+
+-- | Optional. Enable this setting when you run a test job to estimate how
+-- many reserved transcoding slots (RTS) you need. When this is enabled,
+-- MediaConvert runs your job from an on-demand queue with similar
+-- performance to what you will see with one RTS in a reserved queue. This
+-- setting is disabled by default.
+createJob_simulateReservedQueue :: Lens.Lens' CreateJob (Prelude.Maybe SimulateReservedQueue)
+createJob_simulateReservedQueue = Lens.lens (\CreateJob' {simulateReservedQueue} -> simulateReservedQueue) (\s@CreateJob' {} a -> s {simulateReservedQueue = a} :: CreateJob)
+
+-- | Optional. Specify how often MediaConvert sends STATUS_UPDATE events to
+-- Amazon CloudWatch Events. Set the interval, in seconds, between status
+-- updates. MediaConvert sends an update at this interval from the time the
+-- service begins processing your job to the time it completes the
+-- transcode or encounters an error.
+createJob_statusUpdateInterval :: Lens.Lens' CreateJob (Prelude.Maybe StatusUpdateInterval)
+createJob_statusUpdateInterval = Lens.lens (\CreateJob' {statusUpdateInterval} -> statusUpdateInterval) (\s@CreateJob' {} a -> s {statusUpdateInterval = a} :: CreateJob)
+
+-- | Optional. The tags that you want to add to the resource. You can tag
+-- resources with a key-value pair or with only a key. Use standard AWS
+-- tags on your job for automatic integration with AWS services and for
+-- custom integrations and workflows.
+createJob_tags :: Lens.Lens' CreateJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createJob_tags = Lens.lens (\CreateJob' {tags} -> tags) (\s@CreateJob' {} a -> s {tags = a} :: CreateJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Optional. User-defined metadata that you want to associate with an
+-- MediaConvert job. You specify metadata in key\/value pairs. Use only for
+-- existing integrations or workflows that rely on job metadata tags.
+-- Otherwise, we recommend that you use standard AWS tags.
+createJob_userMetadata :: Lens.Lens' CreateJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createJob_userMetadata = Lens.lens (\CreateJob' {userMetadata} -> userMetadata) (\s@CreateJob' {} a -> s {userMetadata = a} :: CreateJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Required. The IAM role you use for creating this job. For details about
+-- permissions, see the User Guide topic at the User Guide at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html.
+createJob_role :: Lens.Lens' CreateJob Prelude.Text
+createJob_role = Lens.lens (\CreateJob' {role'} -> role') (\s@CreateJob' {} a -> s {role' = a} :: CreateJob)
+
+-- | JobSettings contains all the transcode settings for a job.
+createJob_settings :: Lens.Lens' CreateJob JobSettings
+createJob_settings = Lens.lens (\CreateJob' {settings} -> settings) (\s@CreateJob' {} a -> s {settings = a} :: CreateJob)
+
+instance Core.AWSRequest CreateJob where
+  type AWSResponse CreateJob = CreateJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateJobResponse'
+            Prelude.<$> (x Data..?> "job")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateJob where
+  hashWithSalt _salt CreateJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` accelerationSettings
+      `Prelude.hashWithSalt` billingTagsSource
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` hopDestinations
+      `Prelude.hashWithSalt` jobTemplate
+      `Prelude.hashWithSalt` priority
+      `Prelude.hashWithSalt` queue
+      `Prelude.hashWithSalt` simulateReservedQueue
+      `Prelude.hashWithSalt` statusUpdateInterval
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` userMetadata
+      `Prelude.hashWithSalt` role'
+      `Prelude.hashWithSalt` settings
+
+instance Prelude.NFData CreateJob where
+  rnf CreateJob' {..} =
+    Prelude.rnf accelerationSettings
+      `Prelude.seq` Prelude.rnf billingTagsSource
+      `Prelude.seq` Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf hopDestinations
+      `Prelude.seq` Prelude.rnf jobTemplate
+      `Prelude.seq` Prelude.rnf priority
+      `Prelude.seq` Prelude.rnf queue
+      `Prelude.seq` Prelude.rnf simulateReservedQueue
+      `Prelude.seq` Prelude.rnf statusUpdateInterval
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf userMetadata
+      `Prelude.seq` Prelude.rnf role'
+      `Prelude.seq` Prelude.rnf settings
+
+instance Data.ToHeaders CreateJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateJob where
+  toJSON CreateJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accelerationSettings" Data..=)
+              Prelude.<$> accelerationSettings,
+            ("billingTagsSource" Data..=)
+              Prelude.<$> billingTagsSource,
+            ("clientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("hopDestinations" Data..=)
+              Prelude.<$> hopDestinations,
+            ("jobTemplate" Data..=) Prelude.<$> jobTemplate,
+            ("priority" Data..=) Prelude.<$> priority,
+            ("queue" Data..=) Prelude.<$> queue,
+            ("simulateReservedQueue" Data..=)
+              Prelude.<$> simulateReservedQueue,
+            ("statusUpdateInterval" Data..=)
+              Prelude.<$> statusUpdateInterval,
+            ("tags" Data..=) Prelude.<$> tags,
+            ("userMetadata" Data..=) Prelude.<$> userMetadata,
+            Prelude.Just ("role" Data..= role'),
+            Prelude.Just ("settings" Data..= settings)
+          ]
+      )
+
+instance Data.ToPath CreateJob where
+  toPath = Prelude.const "/2017-08-29/jobs"
+
+instance Data.ToQuery CreateJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateJobResponse' smart constructor.
+data CreateJobResponse = CreateJobResponse'
+  { -- | Each job converts an input file into an output file or files. For more
+    -- information, see the User Guide at
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+    job :: Prelude.Maybe Job,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateJobResponse' 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:
+--
+-- 'job', 'createJobResponse_job' - Each job converts an input file into an output file or files. For more
+-- information, see the User Guide at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+--
+-- 'httpStatus', 'createJobResponse_httpStatus' - The response's http status code.
+newCreateJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateJobResponse
+newCreateJobResponse pHttpStatus_ =
+  CreateJobResponse'
+    { job = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Each job converts an input file into an output file or files. For more
+-- information, see the User Guide at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+createJobResponse_job :: Lens.Lens' CreateJobResponse (Prelude.Maybe Job)
+createJobResponse_job = Lens.lens (\CreateJobResponse' {job} -> job) (\s@CreateJobResponse' {} a -> s {job = a} :: CreateJobResponse)
+
+-- | The response's http status code.
+createJobResponse_httpStatus :: Lens.Lens' CreateJobResponse Prelude.Int
+createJobResponse_httpStatus = Lens.lens (\CreateJobResponse' {httpStatus} -> httpStatus) (\s@CreateJobResponse' {} a -> s {httpStatus = a} :: CreateJobResponse)
+
+instance Prelude.NFData CreateJobResponse where
+  rnf CreateJobResponse' {..} =
+    Prelude.rnf job
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/CreateJobTemplate.hs b/gen/Amazonka/MediaConvert/CreateJobTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/CreateJobTemplate.hs
@@ -0,0 +1,351 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.CreateJobTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new job template. For information about job templates see the
+-- User Guide at
+-- http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+module Amazonka.MediaConvert.CreateJobTemplate
+  ( -- * Creating a Request
+    CreateJobTemplate (..),
+    newCreateJobTemplate,
+
+    -- * Request Lenses
+    createJobTemplate_accelerationSettings,
+    createJobTemplate_category,
+    createJobTemplate_description,
+    createJobTemplate_hopDestinations,
+    createJobTemplate_priority,
+    createJobTemplate_queue,
+    createJobTemplate_statusUpdateInterval,
+    createJobTemplate_tags,
+    createJobTemplate_settings,
+    createJobTemplate_name,
+
+    -- * Destructuring the Response
+    CreateJobTemplateResponse (..),
+    newCreateJobTemplateResponse,
+
+    -- * Response Lenses
+    createJobTemplateResponse_jobTemplate,
+    createJobTemplateResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateJobTemplate' smart constructor.
+data CreateJobTemplate = CreateJobTemplate'
+  { -- | Accelerated transcoding can significantly speed up jobs with long,
+    -- visually complex content. Outputs that use this feature incur pro-tier
+    -- pricing. For information about feature limitations, see the AWS
+    -- Elemental MediaConvert User Guide.
+    accelerationSettings :: Prelude.Maybe AccelerationSettings,
+    -- | Optional. A category for the job template you are creating
+    category :: Prelude.Maybe Prelude.Text,
+    -- | Optional. A description of the job template you are creating.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Optional. Use queue hopping to avoid overly long waits in the backlog of
+    -- the queue that you submit your job to. Specify an alternate queue and
+    -- the maximum time that your job will wait in the initial queue before
+    -- hopping. For more information about this feature, see the AWS Elemental
+    -- MediaConvert User Guide.
+    hopDestinations :: Prelude.Maybe [HopDestination],
+    -- | Specify the relative priority for this job. In any given queue, the
+    -- service begins processing the job with the highest value first. When
+    -- more than one job has the same priority, the service begins processing
+    -- the job that you submitted first. If you don\'t specify a priority, the
+    -- service uses the default value 0.
+    priority :: Prelude.Maybe Prelude.Int,
+    -- | Optional. The queue that jobs created from this template are assigned
+    -- to. If you don\'t specify this, jobs will go to the default queue.
+    queue :: Prelude.Maybe Prelude.Text,
+    -- | Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
+    -- CloudWatch Events. Set the interval, in seconds, between status updates.
+    -- MediaConvert sends an update at this interval from the time the service
+    -- begins processing your job to the time it completes the transcode or
+    -- encounters an error.
+    statusUpdateInterval :: Prelude.Maybe StatusUpdateInterval,
+    -- | The tags that you want to add to the resource. You can tag resources
+    -- with a key-value pair or with only a key.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | JobTemplateSettings contains all the transcode settings saved in the
+    -- template that will be applied to jobs created from it.
+    settings :: JobTemplateSettings,
+    -- | The name of the job template you are creating.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateJobTemplate' 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:
+--
+-- 'accelerationSettings', 'createJobTemplate_accelerationSettings' - Accelerated transcoding can significantly speed up jobs with long,
+-- visually complex content. Outputs that use this feature incur pro-tier
+-- pricing. For information about feature limitations, see the AWS
+-- Elemental MediaConvert User Guide.
+--
+-- 'category', 'createJobTemplate_category' - Optional. A category for the job template you are creating
+--
+-- 'description', 'createJobTemplate_description' - Optional. A description of the job template you are creating.
+--
+-- 'hopDestinations', 'createJobTemplate_hopDestinations' - Optional. Use queue hopping to avoid overly long waits in the backlog of
+-- the queue that you submit your job to. Specify an alternate queue and
+-- the maximum time that your job will wait in the initial queue before
+-- hopping. For more information about this feature, see the AWS Elemental
+-- MediaConvert User Guide.
+--
+-- 'priority', 'createJobTemplate_priority' - Specify the relative priority for this job. In any given queue, the
+-- service begins processing the job with the highest value first. When
+-- more than one job has the same priority, the service begins processing
+-- the job that you submitted first. If you don\'t specify a priority, the
+-- service uses the default value 0.
+--
+-- 'queue', 'createJobTemplate_queue' - Optional. The queue that jobs created from this template are assigned
+-- to. If you don\'t specify this, jobs will go to the default queue.
+--
+-- 'statusUpdateInterval', 'createJobTemplate_statusUpdateInterval' - Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
+-- CloudWatch Events. Set the interval, in seconds, between status updates.
+-- MediaConvert sends an update at this interval from the time the service
+-- begins processing your job to the time it completes the transcode or
+-- encounters an error.
+--
+-- 'tags', 'createJobTemplate_tags' - The tags that you want to add to the resource. You can tag resources
+-- with a key-value pair or with only a key.
+--
+-- 'settings', 'createJobTemplate_settings' - JobTemplateSettings contains all the transcode settings saved in the
+-- template that will be applied to jobs created from it.
+--
+-- 'name', 'createJobTemplate_name' - The name of the job template you are creating.
+newCreateJobTemplate ::
+  -- | 'settings'
+  JobTemplateSettings ->
+  -- | 'name'
+  Prelude.Text ->
+  CreateJobTemplate
+newCreateJobTemplate pSettings_ pName_ =
+  CreateJobTemplate'
+    { accelerationSettings =
+        Prelude.Nothing,
+      category = Prelude.Nothing,
+      description = Prelude.Nothing,
+      hopDestinations = Prelude.Nothing,
+      priority = Prelude.Nothing,
+      queue = Prelude.Nothing,
+      statusUpdateInterval = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      settings = pSettings_,
+      name = pName_
+    }
+
+-- | Accelerated transcoding can significantly speed up jobs with long,
+-- visually complex content. Outputs that use this feature incur pro-tier
+-- pricing. For information about feature limitations, see the AWS
+-- Elemental MediaConvert User Guide.
+createJobTemplate_accelerationSettings :: Lens.Lens' CreateJobTemplate (Prelude.Maybe AccelerationSettings)
+createJobTemplate_accelerationSettings = Lens.lens (\CreateJobTemplate' {accelerationSettings} -> accelerationSettings) (\s@CreateJobTemplate' {} a -> s {accelerationSettings = a} :: CreateJobTemplate)
+
+-- | Optional. A category for the job template you are creating
+createJobTemplate_category :: Lens.Lens' CreateJobTemplate (Prelude.Maybe Prelude.Text)
+createJobTemplate_category = Lens.lens (\CreateJobTemplate' {category} -> category) (\s@CreateJobTemplate' {} a -> s {category = a} :: CreateJobTemplate)
+
+-- | Optional. A description of the job template you are creating.
+createJobTemplate_description :: Lens.Lens' CreateJobTemplate (Prelude.Maybe Prelude.Text)
+createJobTemplate_description = Lens.lens (\CreateJobTemplate' {description} -> description) (\s@CreateJobTemplate' {} a -> s {description = a} :: CreateJobTemplate)
+
+-- | Optional. Use queue hopping to avoid overly long waits in the backlog of
+-- the queue that you submit your job to. Specify an alternate queue and
+-- the maximum time that your job will wait in the initial queue before
+-- hopping. For more information about this feature, see the AWS Elemental
+-- MediaConvert User Guide.
+createJobTemplate_hopDestinations :: Lens.Lens' CreateJobTemplate (Prelude.Maybe [HopDestination])
+createJobTemplate_hopDestinations = Lens.lens (\CreateJobTemplate' {hopDestinations} -> hopDestinations) (\s@CreateJobTemplate' {} a -> s {hopDestinations = a} :: CreateJobTemplate) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specify the relative priority for this job. In any given queue, the
+-- service begins processing the job with the highest value first. When
+-- more than one job has the same priority, the service begins processing
+-- the job that you submitted first. If you don\'t specify a priority, the
+-- service uses the default value 0.
+createJobTemplate_priority :: Lens.Lens' CreateJobTemplate (Prelude.Maybe Prelude.Int)
+createJobTemplate_priority = Lens.lens (\CreateJobTemplate' {priority} -> priority) (\s@CreateJobTemplate' {} a -> s {priority = a} :: CreateJobTemplate)
+
+-- | Optional. The queue that jobs created from this template are assigned
+-- to. If you don\'t specify this, jobs will go to the default queue.
+createJobTemplate_queue :: Lens.Lens' CreateJobTemplate (Prelude.Maybe Prelude.Text)
+createJobTemplate_queue = Lens.lens (\CreateJobTemplate' {queue} -> queue) (\s@CreateJobTemplate' {} a -> s {queue = a} :: CreateJobTemplate)
+
+-- | Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
+-- CloudWatch Events. Set the interval, in seconds, between status updates.
+-- MediaConvert sends an update at this interval from the time the service
+-- begins processing your job to the time it completes the transcode or
+-- encounters an error.
+createJobTemplate_statusUpdateInterval :: Lens.Lens' CreateJobTemplate (Prelude.Maybe StatusUpdateInterval)
+createJobTemplate_statusUpdateInterval = Lens.lens (\CreateJobTemplate' {statusUpdateInterval} -> statusUpdateInterval) (\s@CreateJobTemplate' {} a -> s {statusUpdateInterval = a} :: CreateJobTemplate)
+
+-- | The tags that you want to add to the resource. You can tag resources
+-- with a key-value pair or with only a key.
+createJobTemplate_tags :: Lens.Lens' CreateJobTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createJobTemplate_tags = Lens.lens (\CreateJobTemplate' {tags} -> tags) (\s@CreateJobTemplate' {} a -> s {tags = a} :: CreateJobTemplate) Prelude.. Lens.mapping Lens.coerced
+
+-- | JobTemplateSettings contains all the transcode settings saved in the
+-- template that will be applied to jobs created from it.
+createJobTemplate_settings :: Lens.Lens' CreateJobTemplate JobTemplateSettings
+createJobTemplate_settings = Lens.lens (\CreateJobTemplate' {settings} -> settings) (\s@CreateJobTemplate' {} a -> s {settings = a} :: CreateJobTemplate)
+
+-- | The name of the job template you are creating.
+createJobTemplate_name :: Lens.Lens' CreateJobTemplate Prelude.Text
+createJobTemplate_name = Lens.lens (\CreateJobTemplate' {name} -> name) (\s@CreateJobTemplate' {} a -> s {name = a} :: CreateJobTemplate)
+
+instance Core.AWSRequest CreateJobTemplate where
+  type
+    AWSResponse CreateJobTemplate =
+      CreateJobTemplateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateJobTemplateResponse'
+            Prelude.<$> (x Data..?> "jobTemplate")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateJobTemplate where
+  hashWithSalt _salt CreateJobTemplate' {..} =
+    _salt
+      `Prelude.hashWithSalt` accelerationSettings
+      `Prelude.hashWithSalt` category
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` hopDestinations
+      `Prelude.hashWithSalt` priority
+      `Prelude.hashWithSalt` queue
+      `Prelude.hashWithSalt` statusUpdateInterval
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` settings
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateJobTemplate where
+  rnf CreateJobTemplate' {..} =
+    Prelude.rnf accelerationSettings
+      `Prelude.seq` Prelude.rnf category
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf hopDestinations
+      `Prelude.seq` Prelude.rnf priority
+      `Prelude.seq` Prelude.rnf queue
+      `Prelude.seq` Prelude.rnf statusUpdateInterval
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf settings
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreateJobTemplate where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateJobTemplate where
+  toJSON CreateJobTemplate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accelerationSettings" Data..=)
+              Prelude.<$> accelerationSettings,
+            ("category" Data..=) Prelude.<$> category,
+            ("description" Data..=) Prelude.<$> description,
+            ("hopDestinations" Data..=)
+              Prelude.<$> hopDestinations,
+            ("priority" Data..=) Prelude.<$> priority,
+            ("queue" Data..=) Prelude.<$> queue,
+            ("statusUpdateInterval" Data..=)
+              Prelude.<$> statusUpdateInterval,
+            ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("settings" Data..= settings),
+            Prelude.Just ("name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreateJobTemplate where
+  toPath = Prelude.const "/2017-08-29/jobTemplates"
+
+instance Data.ToQuery CreateJobTemplate where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateJobTemplateResponse' smart constructor.
+data CreateJobTemplateResponse = CreateJobTemplateResponse'
+  { -- | A job template is a pre-made set of encoding instructions that you can
+    -- use to quickly create a job.
+    jobTemplate :: Prelude.Maybe JobTemplate,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateJobTemplateResponse' 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:
+--
+-- 'jobTemplate', 'createJobTemplateResponse_jobTemplate' - A job template is a pre-made set of encoding instructions that you can
+-- use to quickly create a job.
+--
+-- 'httpStatus', 'createJobTemplateResponse_httpStatus' - The response's http status code.
+newCreateJobTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateJobTemplateResponse
+newCreateJobTemplateResponse pHttpStatus_ =
+  CreateJobTemplateResponse'
+    { jobTemplate =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A job template is a pre-made set of encoding instructions that you can
+-- use to quickly create a job.
+createJobTemplateResponse_jobTemplate :: Lens.Lens' CreateJobTemplateResponse (Prelude.Maybe JobTemplate)
+createJobTemplateResponse_jobTemplate = Lens.lens (\CreateJobTemplateResponse' {jobTemplate} -> jobTemplate) (\s@CreateJobTemplateResponse' {} a -> s {jobTemplate = a} :: CreateJobTemplateResponse)
+
+-- | The response's http status code.
+createJobTemplateResponse_httpStatus :: Lens.Lens' CreateJobTemplateResponse Prelude.Int
+createJobTemplateResponse_httpStatus = Lens.lens (\CreateJobTemplateResponse' {httpStatus} -> httpStatus) (\s@CreateJobTemplateResponse' {} a -> s {httpStatus = a} :: CreateJobTemplateResponse)
+
+instance Prelude.NFData CreateJobTemplateResponse where
+  rnf CreateJobTemplateResponse' {..} =
+    Prelude.rnf jobTemplate
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/CreatePreset.hs b/gen/Amazonka/MediaConvert/CreatePreset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/CreatePreset.hs
@@ -0,0 +1,231 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.CreatePreset
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new preset. For information about job templates see the User
+-- Guide at
+-- http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+module Amazonka.MediaConvert.CreatePreset
+  ( -- * Creating a Request
+    CreatePreset (..),
+    newCreatePreset,
+
+    -- * Request Lenses
+    createPreset_category,
+    createPreset_description,
+    createPreset_tags,
+    createPreset_settings,
+    createPreset_name,
+
+    -- * Destructuring the Response
+    CreatePresetResponse (..),
+    newCreatePresetResponse,
+
+    -- * Response Lenses
+    createPresetResponse_preset,
+    createPresetResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreatePreset' smart constructor.
+data CreatePreset = CreatePreset'
+  { -- | Optional. A category for the preset you are creating.
+    category :: Prelude.Maybe Prelude.Text,
+    -- | Optional. A description of the preset you are creating.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The tags that you want to add to the resource. You can tag resources
+    -- with a key-value pair or with only a key.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Settings for preset
+    settings :: PresetSettings,
+    -- | The name of the preset you are creating.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatePreset' 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:
+--
+-- 'category', 'createPreset_category' - Optional. A category for the preset you are creating.
+--
+-- 'description', 'createPreset_description' - Optional. A description of the preset you are creating.
+--
+-- 'tags', 'createPreset_tags' - The tags that you want to add to the resource. You can tag resources
+-- with a key-value pair or with only a key.
+--
+-- 'settings', 'createPreset_settings' - Settings for preset
+--
+-- 'name', 'createPreset_name' - The name of the preset you are creating.
+newCreatePreset ::
+  -- | 'settings'
+  PresetSettings ->
+  -- | 'name'
+  Prelude.Text ->
+  CreatePreset
+newCreatePreset pSettings_ pName_ =
+  CreatePreset'
+    { category = Prelude.Nothing,
+      description = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      settings = pSettings_,
+      name = pName_
+    }
+
+-- | Optional. A category for the preset you are creating.
+createPreset_category :: Lens.Lens' CreatePreset (Prelude.Maybe Prelude.Text)
+createPreset_category = Lens.lens (\CreatePreset' {category} -> category) (\s@CreatePreset' {} a -> s {category = a} :: CreatePreset)
+
+-- | Optional. A description of the preset you are creating.
+createPreset_description :: Lens.Lens' CreatePreset (Prelude.Maybe Prelude.Text)
+createPreset_description = Lens.lens (\CreatePreset' {description} -> description) (\s@CreatePreset' {} a -> s {description = a} :: CreatePreset)
+
+-- | The tags that you want to add to the resource. You can tag resources
+-- with a key-value pair or with only a key.
+createPreset_tags :: Lens.Lens' CreatePreset (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createPreset_tags = Lens.lens (\CreatePreset' {tags} -> tags) (\s@CreatePreset' {} a -> s {tags = a} :: CreatePreset) Prelude.. Lens.mapping Lens.coerced
+
+-- | Settings for preset
+createPreset_settings :: Lens.Lens' CreatePreset PresetSettings
+createPreset_settings = Lens.lens (\CreatePreset' {settings} -> settings) (\s@CreatePreset' {} a -> s {settings = a} :: CreatePreset)
+
+-- | The name of the preset you are creating.
+createPreset_name :: Lens.Lens' CreatePreset Prelude.Text
+createPreset_name = Lens.lens (\CreatePreset' {name} -> name) (\s@CreatePreset' {} a -> s {name = a} :: CreatePreset)
+
+instance Core.AWSRequest CreatePreset where
+  type AWSResponse CreatePreset = CreatePresetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreatePresetResponse'
+            Prelude.<$> (x Data..?> "preset")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreatePreset where
+  hashWithSalt _salt CreatePreset' {..} =
+    _salt
+      `Prelude.hashWithSalt` category
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` settings
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreatePreset where
+  rnf CreatePreset' {..} =
+    Prelude.rnf category
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf settings
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreatePreset where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreatePreset where
+  toJSON CreatePreset' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("category" Data..=) Prelude.<$> category,
+            ("description" Data..=) Prelude.<$> description,
+            ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("settings" Data..= settings),
+            Prelude.Just ("name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreatePreset where
+  toPath = Prelude.const "/2017-08-29/presets"
+
+instance Data.ToQuery CreatePreset where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreatePresetResponse' smart constructor.
+data CreatePresetResponse = CreatePresetResponse'
+  { -- | A preset is a collection of preconfigured media conversion settings that
+    -- you want MediaConvert to apply to the output during the conversion
+    -- process.
+    preset :: Prelude.Maybe Preset,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatePresetResponse' 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:
+--
+-- 'preset', 'createPresetResponse_preset' - A preset is a collection of preconfigured media conversion settings that
+-- you want MediaConvert to apply to the output during the conversion
+-- process.
+--
+-- 'httpStatus', 'createPresetResponse_httpStatus' - The response's http status code.
+newCreatePresetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreatePresetResponse
+newCreatePresetResponse pHttpStatus_ =
+  CreatePresetResponse'
+    { preset = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A preset is a collection of preconfigured media conversion settings that
+-- you want MediaConvert to apply to the output during the conversion
+-- process.
+createPresetResponse_preset :: Lens.Lens' CreatePresetResponse (Prelude.Maybe Preset)
+createPresetResponse_preset = Lens.lens (\CreatePresetResponse' {preset} -> preset) (\s@CreatePresetResponse' {} a -> s {preset = a} :: CreatePresetResponse)
+
+-- | The response's http status code.
+createPresetResponse_httpStatus :: Lens.Lens' CreatePresetResponse Prelude.Int
+createPresetResponse_httpStatus = Lens.lens (\CreatePresetResponse' {httpStatus} -> httpStatus) (\s@CreatePresetResponse' {} a -> s {httpStatus = a} :: CreatePresetResponse)
+
+instance Prelude.NFData CreatePresetResponse where
+  rnf CreatePresetResponse' {..} =
+    Prelude.rnf preset
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/CreateQueue.hs b/gen/Amazonka/MediaConvert/CreateQueue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/CreateQueue.hs
@@ -0,0 +1,270 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.CreateQueue
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new transcoding queue. For information about queues, see
+-- Working With Queues in the User Guide at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-queues.html
+module Amazonka.MediaConvert.CreateQueue
+  ( -- * Creating a Request
+    CreateQueue (..),
+    newCreateQueue,
+
+    -- * Request Lenses
+    createQueue_description,
+    createQueue_pricingPlan,
+    createQueue_reservationPlanSettings,
+    createQueue_status,
+    createQueue_tags,
+    createQueue_name,
+
+    -- * Destructuring the Response
+    CreateQueueResponse (..),
+    newCreateQueueResponse,
+
+    -- * Response Lenses
+    createQueueResponse_queue,
+    createQueueResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateQueue' smart constructor.
+data CreateQueue = CreateQueue'
+  { -- | Optional. A description of the queue that you are creating.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Specifies whether the pricing plan for the queue is on-demand or
+    -- reserved. For on-demand, you pay per minute, billed in increments of .01
+    -- minute. For reserved, you pay for the transcoding capacity of the entire
+    -- queue, regardless of how much or how little you use it. Reserved pricing
+    -- requires a 12-month commitment. When you use the API to create a queue,
+    -- the default is on-demand.
+    pricingPlan :: Prelude.Maybe PricingPlan,
+    -- | Details about the pricing plan for your reserved queue. Required for
+    -- reserved queues and not applicable to on-demand queues.
+    reservationPlanSettings :: Prelude.Maybe ReservationPlanSettings,
+    -- | Initial state of the queue. If you create a paused queue, then jobs in
+    -- that queue won\'t begin.
+    status :: Prelude.Maybe QueueStatus,
+    -- | The tags that you want to add to the resource. You can tag resources
+    -- with a key-value pair or with only a key.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The name of the queue that you are creating.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateQueue' 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:
+--
+-- 'description', 'createQueue_description' - Optional. A description of the queue that you are creating.
+--
+-- 'pricingPlan', 'createQueue_pricingPlan' - Specifies whether the pricing plan for the queue is on-demand or
+-- reserved. For on-demand, you pay per minute, billed in increments of .01
+-- minute. For reserved, you pay for the transcoding capacity of the entire
+-- queue, regardless of how much or how little you use it. Reserved pricing
+-- requires a 12-month commitment. When you use the API to create a queue,
+-- the default is on-demand.
+--
+-- 'reservationPlanSettings', 'createQueue_reservationPlanSettings' - Details about the pricing plan for your reserved queue. Required for
+-- reserved queues and not applicable to on-demand queues.
+--
+-- 'status', 'createQueue_status' - Initial state of the queue. If you create a paused queue, then jobs in
+-- that queue won\'t begin.
+--
+-- 'tags', 'createQueue_tags' - The tags that you want to add to the resource. You can tag resources
+-- with a key-value pair or with only a key.
+--
+-- 'name', 'createQueue_name' - The name of the queue that you are creating.
+newCreateQueue ::
+  -- | 'name'
+  Prelude.Text ->
+  CreateQueue
+newCreateQueue pName_ =
+  CreateQueue'
+    { description = Prelude.Nothing,
+      pricingPlan = Prelude.Nothing,
+      reservationPlanSettings = Prelude.Nothing,
+      status = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | Optional. A description of the queue that you are creating.
+createQueue_description :: Lens.Lens' CreateQueue (Prelude.Maybe Prelude.Text)
+createQueue_description = Lens.lens (\CreateQueue' {description} -> description) (\s@CreateQueue' {} a -> s {description = a} :: CreateQueue)
+
+-- | Specifies whether the pricing plan for the queue is on-demand or
+-- reserved. For on-demand, you pay per minute, billed in increments of .01
+-- minute. For reserved, you pay for the transcoding capacity of the entire
+-- queue, regardless of how much or how little you use it. Reserved pricing
+-- requires a 12-month commitment. When you use the API to create a queue,
+-- the default is on-demand.
+createQueue_pricingPlan :: Lens.Lens' CreateQueue (Prelude.Maybe PricingPlan)
+createQueue_pricingPlan = Lens.lens (\CreateQueue' {pricingPlan} -> pricingPlan) (\s@CreateQueue' {} a -> s {pricingPlan = a} :: CreateQueue)
+
+-- | Details about the pricing plan for your reserved queue. Required for
+-- reserved queues and not applicable to on-demand queues.
+createQueue_reservationPlanSettings :: Lens.Lens' CreateQueue (Prelude.Maybe ReservationPlanSettings)
+createQueue_reservationPlanSettings = Lens.lens (\CreateQueue' {reservationPlanSettings} -> reservationPlanSettings) (\s@CreateQueue' {} a -> s {reservationPlanSettings = a} :: CreateQueue)
+
+-- | Initial state of the queue. If you create a paused queue, then jobs in
+-- that queue won\'t begin.
+createQueue_status :: Lens.Lens' CreateQueue (Prelude.Maybe QueueStatus)
+createQueue_status = Lens.lens (\CreateQueue' {status} -> status) (\s@CreateQueue' {} a -> s {status = a} :: CreateQueue)
+
+-- | The tags that you want to add to the resource. You can tag resources
+-- with a key-value pair or with only a key.
+createQueue_tags :: Lens.Lens' CreateQueue (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createQueue_tags = Lens.lens (\CreateQueue' {tags} -> tags) (\s@CreateQueue' {} a -> s {tags = a} :: CreateQueue) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the queue that you are creating.
+createQueue_name :: Lens.Lens' CreateQueue Prelude.Text
+createQueue_name = Lens.lens (\CreateQueue' {name} -> name) (\s@CreateQueue' {} a -> s {name = a} :: CreateQueue)
+
+instance Core.AWSRequest CreateQueue where
+  type AWSResponse CreateQueue = CreateQueueResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateQueueResponse'
+            Prelude.<$> (x Data..?> "queue")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateQueue where
+  hashWithSalt _salt CreateQueue' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` pricingPlan
+      `Prelude.hashWithSalt` reservationPlanSettings
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateQueue where
+  rnf CreateQueue' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf pricingPlan
+      `Prelude.seq` Prelude.rnf reservationPlanSettings
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreateQueue where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateQueue where
+  toJSON CreateQueue' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("description" Data..=) Prelude.<$> description,
+            ("pricingPlan" Data..=) Prelude.<$> pricingPlan,
+            ("reservationPlanSettings" Data..=)
+              Prelude.<$> reservationPlanSettings,
+            ("status" Data..=) Prelude.<$> status,
+            ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreateQueue where
+  toPath = Prelude.const "/2017-08-29/queues"
+
+instance Data.ToQuery CreateQueue where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateQueueResponse' smart constructor.
+data CreateQueueResponse = CreateQueueResponse'
+  { -- | You can use queues to manage the resources that are available to your
+    -- AWS account for running multiple transcoding jobs at the same time. If
+    -- you don\'t specify a queue, the service sends all jobs through the
+    -- default queue. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-queues.html.
+    queue :: Prelude.Maybe Queue,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateQueueResponse' 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:
+--
+-- 'queue', 'createQueueResponse_queue' - You can use queues to manage the resources that are available to your
+-- AWS account for running multiple transcoding jobs at the same time. If
+-- you don\'t specify a queue, the service sends all jobs through the
+-- default queue. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-queues.html.
+--
+-- 'httpStatus', 'createQueueResponse_httpStatus' - The response's http status code.
+newCreateQueueResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateQueueResponse
+newCreateQueueResponse pHttpStatus_ =
+  CreateQueueResponse'
+    { queue = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | You can use queues to manage the resources that are available to your
+-- AWS account for running multiple transcoding jobs at the same time. If
+-- you don\'t specify a queue, the service sends all jobs through the
+-- default queue. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-queues.html.
+createQueueResponse_queue :: Lens.Lens' CreateQueueResponse (Prelude.Maybe Queue)
+createQueueResponse_queue = Lens.lens (\CreateQueueResponse' {queue} -> queue) (\s@CreateQueueResponse' {} a -> s {queue = a} :: CreateQueueResponse)
+
+-- | The response's http status code.
+createQueueResponse_httpStatus :: Lens.Lens' CreateQueueResponse Prelude.Int
+createQueueResponse_httpStatus = Lens.lens (\CreateQueueResponse' {httpStatus} -> httpStatus) (\s@CreateQueueResponse' {} a -> s {httpStatus = a} :: CreateQueueResponse)
+
+instance Prelude.NFData CreateQueueResponse where
+  rnf CreateQueueResponse' {..} =
+    Prelude.rnf queue
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/DeleteJobTemplate.hs b/gen/Amazonka/MediaConvert/DeleteJobTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/DeleteJobTemplate.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.DeleteJobTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Permanently delete a job template you have created.
+module Amazonka.MediaConvert.DeleteJobTemplate
+  ( -- * Creating a Request
+    DeleteJobTemplate (..),
+    newDeleteJobTemplate,
+
+    -- * Request Lenses
+    deleteJobTemplate_name,
+
+    -- * Destructuring the Response
+    DeleteJobTemplateResponse (..),
+    newDeleteJobTemplateResponse,
+
+    -- * Response Lenses
+    deleteJobTemplateResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteJobTemplate' smart constructor.
+data DeleteJobTemplate = DeleteJobTemplate'
+  { -- | The name of the job template to be deleted.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteJobTemplate' 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:
+--
+-- 'name', 'deleteJobTemplate_name' - The name of the job template to be deleted.
+newDeleteJobTemplate ::
+  -- | 'name'
+  Prelude.Text ->
+  DeleteJobTemplate
+newDeleteJobTemplate pName_ =
+  DeleteJobTemplate' {name = pName_}
+
+-- | The name of the job template to be deleted.
+deleteJobTemplate_name :: Lens.Lens' DeleteJobTemplate Prelude.Text
+deleteJobTemplate_name = Lens.lens (\DeleteJobTemplate' {name} -> name) (\s@DeleteJobTemplate' {} a -> s {name = a} :: DeleteJobTemplate)
+
+instance Core.AWSRequest DeleteJobTemplate where
+  type
+    AWSResponse DeleteJobTemplate =
+      DeleteJobTemplateResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteJobTemplateResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteJobTemplate where
+  hashWithSalt _salt DeleteJobTemplate' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData DeleteJobTemplate where
+  rnf DeleteJobTemplate' {..} = Prelude.rnf name
+
+instance Data.ToHeaders DeleteJobTemplate where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteJobTemplate where
+  toPath DeleteJobTemplate' {..} =
+    Prelude.mconcat
+      ["/2017-08-29/jobTemplates/", Data.toBS name]
+
+instance Data.ToQuery DeleteJobTemplate where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteJobTemplateResponse' smart constructor.
+data DeleteJobTemplateResponse = DeleteJobTemplateResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteJobTemplateResponse' 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:
+--
+-- 'httpStatus', 'deleteJobTemplateResponse_httpStatus' - The response's http status code.
+newDeleteJobTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteJobTemplateResponse
+newDeleteJobTemplateResponse pHttpStatus_ =
+  DeleteJobTemplateResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteJobTemplateResponse_httpStatus :: Lens.Lens' DeleteJobTemplateResponse Prelude.Int
+deleteJobTemplateResponse_httpStatus = Lens.lens (\DeleteJobTemplateResponse' {httpStatus} -> httpStatus) (\s@DeleteJobTemplateResponse' {} a -> s {httpStatus = a} :: DeleteJobTemplateResponse)
+
+instance Prelude.NFData DeleteJobTemplateResponse where
+  rnf DeleteJobTemplateResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/DeletePolicy.hs b/gen/Amazonka/MediaConvert/DeletePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/DeletePolicy.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.DeletePolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Permanently delete a policy that you created.
+module Amazonka.MediaConvert.DeletePolicy
+  ( -- * Creating a Request
+    DeletePolicy (..),
+    newDeletePolicy,
+
+    -- * Destructuring the Response
+    DeletePolicyResponse (..),
+    newDeletePolicyResponse,
+
+    -- * Response Lenses
+    deletePolicyResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeletePolicy' smart constructor.
+data DeletePolicy = DeletePolicy'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeletePolicy' 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.
+newDeletePolicy ::
+  DeletePolicy
+newDeletePolicy = DeletePolicy'
+
+instance Core.AWSRequest DeletePolicy where
+  type AWSResponse DeletePolicy = DeletePolicyResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeletePolicyResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeletePolicy where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData DeletePolicy where
+  rnf _ = ()
+
+instance Data.ToHeaders DeletePolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeletePolicy where
+  toPath = Prelude.const "/2017-08-29/policy"
+
+instance Data.ToQuery DeletePolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeletePolicyResponse' smart constructor.
+data DeletePolicyResponse = DeletePolicyResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeletePolicyResponse' 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:
+--
+-- 'httpStatus', 'deletePolicyResponse_httpStatus' - The response's http status code.
+newDeletePolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeletePolicyResponse
+newDeletePolicyResponse pHttpStatus_ =
+  DeletePolicyResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deletePolicyResponse_httpStatus :: Lens.Lens' DeletePolicyResponse Prelude.Int
+deletePolicyResponse_httpStatus = Lens.lens (\DeletePolicyResponse' {httpStatus} -> httpStatus) (\s@DeletePolicyResponse' {} a -> s {httpStatus = a} :: DeletePolicyResponse)
+
+instance Prelude.NFData DeletePolicyResponse where
+  rnf DeletePolicyResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/DeletePreset.hs b/gen/Amazonka/MediaConvert/DeletePreset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/DeletePreset.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.DeletePreset
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Permanently delete a preset you have created.
+module Amazonka.MediaConvert.DeletePreset
+  ( -- * Creating a Request
+    DeletePreset (..),
+    newDeletePreset,
+
+    -- * Request Lenses
+    deletePreset_name,
+
+    -- * Destructuring the Response
+    DeletePresetResponse (..),
+    newDeletePresetResponse,
+
+    -- * Response Lenses
+    deletePresetResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeletePreset' smart constructor.
+data DeletePreset = DeletePreset'
+  { -- | The name of the preset to be deleted.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeletePreset' 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:
+--
+-- 'name', 'deletePreset_name' - The name of the preset to be deleted.
+newDeletePreset ::
+  -- | 'name'
+  Prelude.Text ->
+  DeletePreset
+newDeletePreset pName_ = DeletePreset' {name = pName_}
+
+-- | The name of the preset to be deleted.
+deletePreset_name :: Lens.Lens' DeletePreset Prelude.Text
+deletePreset_name = Lens.lens (\DeletePreset' {name} -> name) (\s@DeletePreset' {} a -> s {name = a} :: DeletePreset)
+
+instance Core.AWSRequest DeletePreset where
+  type AWSResponse DeletePreset = DeletePresetResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeletePresetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeletePreset where
+  hashWithSalt _salt DeletePreset' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData DeletePreset where
+  rnf DeletePreset' {..} = Prelude.rnf name
+
+instance Data.ToHeaders DeletePreset where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeletePreset where
+  toPath DeletePreset' {..} =
+    Prelude.mconcat
+      ["/2017-08-29/presets/", Data.toBS name]
+
+instance Data.ToQuery DeletePreset where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeletePresetResponse' smart constructor.
+data DeletePresetResponse = DeletePresetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeletePresetResponse' 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:
+--
+-- 'httpStatus', 'deletePresetResponse_httpStatus' - The response's http status code.
+newDeletePresetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeletePresetResponse
+newDeletePresetResponse pHttpStatus_ =
+  DeletePresetResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deletePresetResponse_httpStatus :: Lens.Lens' DeletePresetResponse Prelude.Int
+deletePresetResponse_httpStatus = Lens.lens (\DeletePresetResponse' {httpStatus} -> httpStatus) (\s@DeletePresetResponse' {} a -> s {httpStatus = a} :: DeletePresetResponse)
+
+instance Prelude.NFData DeletePresetResponse where
+  rnf DeletePresetResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/DeleteQueue.hs b/gen/Amazonka/MediaConvert/DeleteQueue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/DeleteQueue.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.DeleteQueue
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Permanently delete a queue you have created.
+module Amazonka.MediaConvert.DeleteQueue
+  ( -- * Creating a Request
+    DeleteQueue (..),
+    newDeleteQueue,
+
+    -- * Request Lenses
+    deleteQueue_name,
+
+    -- * Destructuring the Response
+    DeleteQueueResponse (..),
+    newDeleteQueueResponse,
+
+    -- * Response Lenses
+    deleteQueueResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteQueue' smart constructor.
+data DeleteQueue = DeleteQueue'
+  { -- | The name of the queue that you want to delete.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteQueue' 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:
+--
+-- 'name', 'deleteQueue_name' - The name of the queue that you want to delete.
+newDeleteQueue ::
+  -- | 'name'
+  Prelude.Text ->
+  DeleteQueue
+newDeleteQueue pName_ = DeleteQueue' {name = pName_}
+
+-- | The name of the queue that you want to delete.
+deleteQueue_name :: Lens.Lens' DeleteQueue Prelude.Text
+deleteQueue_name = Lens.lens (\DeleteQueue' {name} -> name) (\s@DeleteQueue' {} a -> s {name = a} :: DeleteQueue)
+
+instance Core.AWSRequest DeleteQueue where
+  type AWSResponse DeleteQueue = DeleteQueueResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteQueueResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteQueue where
+  hashWithSalt _salt DeleteQueue' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData DeleteQueue where
+  rnf DeleteQueue' {..} = Prelude.rnf name
+
+instance Data.ToHeaders DeleteQueue where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteQueue where
+  toPath DeleteQueue' {..} =
+    Prelude.mconcat
+      ["/2017-08-29/queues/", Data.toBS name]
+
+instance Data.ToQuery DeleteQueue where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteQueueResponse' smart constructor.
+data DeleteQueueResponse = DeleteQueueResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteQueueResponse' 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:
+--
+-- 'httpStatus', 'deleteQueueResponse_httpStatus' - The response's http status code.
+newDeleteQueueResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteQueueResponse
+newDeleteQueueResponse pHttpStatus_ =
+  DeleteQueueResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteQueueResponse_httpStatus :: Lens.Lens' DeleteQueueResponse Prelude.Int
+deleteQueueResponse_httpStatus = Lens.lens (\DeleteQueueResponse' {httpStatus} -> httpStatus) (\s@DeleteQueueResponse' {} a -> s {httpStatus = a} :: DeleteQueueResponse)
+
+instance Prelude.NFData DeleteQueueResponse where
+  rnf DeleteQueueResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/DescribeEndpoints.hs b/gen/Amazonka/MediaConvert/DescribeEndpoints.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/DescribeEndpoints.hs
@@ -0,0 +1,247 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.DescribeEndpoints
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Send an request with an empty body to the regional API endpoint to get
+-- your account API endpoint.
+--
+-- This operation returns paginated results.
+module Amazonka.MediaConvert.DescribeEndpoints
+  ( -- * Creating a Request
+    DescribeEndpoints (..),
+    newDescribeEndpoints,
+
+    -- * Request Lenses
+    describeEndpoints_maxResults,
+    describeEndpoints_mode,
+    describeEndpoints_nextToken,
+
+    -- * Destructuring the Response
+    DescribeEndpointsResponse (..),
+    newDescribeEndpointsResponse,
+
+    -- * Response Lenses
+    describeEndpointsResponse_endpoints,
+    describeEndpointsResponse_nextToken,
+    describeEndpointsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | DescribeEndpointsRequest
+--
+-- /See:/ 'newDescribeEndpoints' smart constructor.
+data DescribeEndpoints = DescribeEndpoints'
+  { -- | Optional. Max number of endpoints, up to twenty, that will be returned
+    -- at one time.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | Optional field, defaults to DEFAULT. Specify DEFAULT for this operation
+    -- to return your endpoints if any exist, or to create an endpoint for you
+    -- and return it if one doesn\'t already exist. Specify GET_ONLY to return
+    -- your endpoints if any exist, or an empty list if none exist.
+    mode :: Prelude.Maybe DescribeEndpointsMode,
+    -- | Use this string, provided with the response to a previous request, to
+    -- request the next batch of endpoints.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEndpoints' 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:
+--
+-- 'maxResults', 'describeEndpoints_maxResults' - Optional. Max number of endpoints, up to twenty, that will be returned
+-- at one time.
+--
+-- 'mode', 'describeEndpoints_mode' - Optional field, defaults to DEFAULT. Specify DEFAULT for this operation
+-- to return your endpoints if any exist, or to create an endpoint for you
+-- and return it if one doesn\'t already exist. Specify GET_ONLY to return
+-- your endpoints if any exist, or an empty list if none exist.
+--
+-- 'nextToken', 'describeEndpoints_nextToken' - Use this string, provided with the response to a previous request, to
+-- request the next batch of endpoints.
+newDescribeEndpoints ::
+  DescribeEndpoints
+newDescribeEndpoints =
+  DescribeEndpoints'
+    { maxResults = Prelude.Nothing,
+      mode = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Optional. Max number of endpoints, up to twenty, that will be returned
+-- at one time.
+describeEndpoints_maxResults :: Lens.Lens' DescribeEndpoints (Prelude.Maybe Prelude.Int)
+describeEndpoints_maxResults = Lens.lens (\DescribeEndpoints' {maxResults} -> maxResults) (\s@DescribeEndpoints' {} a -> s {maxResults = a} :: DescribeEndpoints)
+
+-- | Optional field, defaults to DEFAULT. Specify DEFAULT for this operation
+-- to return your endpoints if any exist, or to create an endpoint for you
+-- and return it if one doesn\'t already exist. Specify GET_ONLY to return
+-- your endpoints if any exist, or an empty list if none exist.
+describeEndpoints_mode :: Lens.Lens' DescribeEndpoints (Prelude.Maybe DescribeEndpointsMode)
+describeEndpoints_mode = Lens.lens (\DescribeEndpoints' {mode} -> mode) (\s@DescribeEndpoints' {} a -> s {mode = a} :: DescribeEndpoints)
+
+-- | Use this string, provided with the response to a previous request, to
+-- request the next batch of endpoints.
+describeEndpoints_nextToken :: Lens.Lens' DescribeEndpoints (Prelude.Maybe Prelude.Text)
+describeEndpoints_nextToken = Lens.lens (\DescribeEndpoints' {nextToken} -> nextToken) (\s@DescribeEndpoints' {} a -> s {nextToken = a} :: DescribeEndpoints)
+
+instance Core.AWSPager DescribeEndpoints where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeEndpointsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeEndpointsResponse_endpoints
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeEndpoints_nextToken
+          Lens..~ rs
+          Lens.^? describeEndpointsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeEndpoints where
+  type
+    AWSResponse DescribeEndpoints =
+      DescribeEndpointsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeEndpointsResponse'
+            Prelude.<$> (x Data..?> "endpoints" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeEndpoints where
+  hashWithSalt _salt DescribeEndpoints' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` mode
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData DescribeEndpoints where
+  rnf DescribeEndpoints' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf mode
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders DescribeEndpoints where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeEndpoints where
+  toJSON DescribeEndpoints' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("mode" Data..=) Prelude.<$> mode,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath DescribeEndpoints where
+  toPath = Prelude.const "/2017-08-29/endpoints"
+
+instance Data.ToQuery DescribeEndpoints where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeEndpointsResponse' smart constructor.
+data DescribeEndpointsResponse = DescribeEndpointsResponse'
+  { -- | List of endpoints
+    endpoints :: Prelude.Maybe [Endpoint],
+    -- | Use this string to request the next batch of endpoints.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEndpointsResponse' 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:
+--
+-- 'endpoints', 'describeEndpointsResponse_endpoints' - List of endpoints
+--
+-- 'nextToken', 'describeEndpointsResponse_nextToken' - Use this string to request the next batch of endpoints.
+--
+-- 'httpStatus', 'describeEndpointsResponse_httpStatus' - The response's http status code.
+newDescribeEndpointsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeEndpointsResponse
+newDescribeEndpointsResponse pHttpStatus_ =
+  DescribeEndpointsResponse'
+    { endpoints =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | List of endpoints
+describeEndpointsResponse_endpoints :: Lens.Lens' DescribeEndpointsResponse (Prelude.Maybe [Endpoint])
+describeEndpointsResponse_endpoints = Lens.lens (\DescribeEndpointsResponse' {endpoints} -> endpoints) (\s@DescribeEndpointsResponse' {} a -> s {endpoints = a} :: DescribeEndpointsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use this string to request the next batch of endpoints.
+describeEndpointsResponse_nextToken :: Lens.Lens' DescribeEndpointsResponse (Prelude.Maybe Prelude.Text)
+describeEndpointsResponse_nextToken = Lens.lens (\DescribeEndpointsResponse' {nextToken} -> nextToken) (\s@DescribeEndpointsResponse' {} a -> s {nextToken = a} :: DescribeEndpointsResponse)
+
+-- | The response's http status code.
+describeEndpointsResponse_httpStatus :: Lens.Lens' DescribeEndpointsResponse Prelude.Int
+describeEndpointsResponse_httpStatus = Lens.lens (\DescribeEndpointsResponse' {httpStatus} -> httpStatus) (\s@DescribeEndpointsResponse' {} a -> s {httpStatus = a} :: DescribeEndpointsResponse)
+
+instance Prelude.NFData DescribeEndpointsResponse where
+  rnf DescribeEndpointsResponse' {..} =
+    Prelude.rnf endpoints
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/DisassociateCertificate.hs b/gen/Amazonka/MediaConvert/DisassociateCertificate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/DisassociateCertificate.hs
@@ -0,0 +1,155 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.DisassociateCertificate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes an association between the Amazon Resource Name (ARN) of an AWS
+-- Certificate Manager (ACM) certificate and an AWS Elemental MediaConvert
+-- resource.
+module Amazonka.MediaConvert.DisassociateCertificate
+  ( -- * Creating a Request
+    DisassociateCertificate (..),
+    newDisassociateCertificate,
+
+    -- * Request Lenses
+    disassociateCertificate_arn,
+
+    -- * Destructuring the Response
+    DisassociateCertificateResponse (..),
+    newDisassociateCertificateResponse,
+
+    -- * Response Lenses
+    disassociateCertificateResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociateCertificate' smart constructor.
+data DisassociateCertificate = DisassociateCertificate'
+  { -- | The ARN of the ACM certificate that you want to disassociate from your
+    -- MediaConvert resource.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateCertificate' 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:
+--
+-- 'arn', 'disassociateCertificate_arn' - The ARN of the ACM certificate that you want to disassociate from your
+-- MediaConvert resource.
+newDisassociateCertificate ::
+  -- | 'arn'
+  Prelude.Text ->
+  DisassociateCertificate
+newDisassociateCertificate pArn_ =
+  DisassociateCertificate' {arn = pArn_}
+
+-- | The ARN of the ACM certificate that you want to disassociate from your
+-- MediaConvert resource.
+disassociateCertificate_arn :: Lens.Lens' DisassociateCertificate Prelude.Text
+disassociateCertificate_arn = Lens.lens (\DisassociateCertificate' {arn} -> arn) (\s@DisassociateCertificate' {} a -> s {arn = a} :: DisassociateCertificate)
+
+instance Core.AWSRequest DisassociateCertificate where
+  type
+    AWSResponse DisassociateCertificate =
+      DisassociateCertificateResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DisassociateCertificateResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DisassociateCertificate where
+  hashWithSalt _salt DisassociateCertificate' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData DisassociateCertificate where
+  rnf DisassociateCertificate' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders DisassociateCertificate where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DisassociateCertificate where
+  toPath DisassociateCertificate' {..} =
+    Prelude.mconcat
+      ["/2017-08-29/certificates/", Data.toBS arn]
+
+instance Data.ToQuery DisassociateCertificate where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateCertificateResponse' smart constructor.
+data DisassociateCertificateResponse = DisassociateCertificateResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateCertificateResponse' 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:
+--
+-- 'httpStatus', 'disassociateCertificateResponse_httpStatus' - The response's http status code.
+newDisassociateCertificateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateCertificateResponse
+newDisassociateCertificateResponse pHttpStatus_ =
+  DisassociateCertificateResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+disassociateCertificateResponse_httpStatus :: Lens.Lens' DisassociateCertificateResponse Prelude.Int
+disassociateCertificateResponse_httpStatus = Lens.lens (\DisassociateCertificateResponse' {httpStatus} -> httpStatus) (\s@DisassociateCertificateResponse' {} a -> s {httpStatus = a} :: DisassociateCertificateResponse)
+
+instance
+  Prelude.NFData
+    DisassociateCertificateResponse
+  where
+  rnf DisassociateCertificateResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/GetJob.hs b/gen/Amazonka/MediaConvert/GetJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/GetJob.hs
@@ -0,0 +1,160 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.GetJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve the JSON for a specific completed transcoding job.
+module Amazonka.MediaConvert.GetJob
+  ( -- * Creating a Request
+    GetJob (..),
+    newGetJob,
+
+    -- * Request Lenses
+    getJob_id,
+
+    -- * Destructuring the Response
+    GetJobResponse (..),
+    newGetJobResponse,
+
+    -- * Response Lenses
+    getJobResponse_job,
+    getJobResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetJob' smart constructor.
+data GetJob = GetJob'
+  { -- | the job ID of the job.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetJob' 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:
+--
+-- 'id', 'getJob_id' - the job ID of the job.
+newGetJob ::
+  -- | 'id'
+  Prelude.Text ->
+  GetJob
+newGetJob pId_ = GetJob' {id = pId_}
+
+-- | the job ID of the job.
+getJob_id :: Lens.Lens' GetJob Prelude.Text
+getJob_id = Lens.lens (\GetJob' {id} -> id) (\s@GetJob' {} a -> s {id = a} :: GetJob)
+
+instance Core.AWSRequest GetJob where
+  type AWSResponse GetJob = GetJobResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetJobResponse'
+            Prelude.<$> (x Data..?> "job")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetJob where
+  hashWithSalt _salt GetJob' {..} =
+    _salt `Prelude.hashWithSalt` id
+
+instance Prelude.NFData GetJob where
+  rnf GetJob' {..} = Prelude.rnf id
+
+instance Data.ToHeaders GetJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetJob where
+  toPath GetJob' {..} =
+    Prelude.mconcat ["/2017-08-29/jobs/", Data.toBS id]
+
+instance Data.ToQuery GetJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetJobResponse' smart constructor.
+data GetJobResponse = GetJobResponse'
+  { -- | Each job converts an input file into an output file or files. For more
+    -- information, see the User Guide at
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+    job :: Prelude.Maybe Job,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetJobResponse' 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:
+--
+-- 'job', 'getJobResponse_job' - Each job converts an input file into an output file or files. For more
+-- information, see the User Guide at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+--
+-- 'httpStatus', 'getJobResponse_httpStatus' - The response's http status code.
+newGetJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetJobResponse
+newGetJobResponse pHttpStatus_ =
+  GetJobResponse'
+    { job = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Each job converts an input file into an output file or files. For more
+-- information, see the User Guide at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+getJobResponse_job :: Lens.Lens' GetJobResponse (Prelude.Maybe Job)
+getJobResponse_job = Lens.lens (\GetJobResponse' {job} -> job) (\s@GetJobResponse' {} a -> s {job = a} :: GetJobResponse)
+
+-- | The response's http status code.
+getJobResponse_httpStatus :: Lens.Lens' GetJobResponse Prelude.Int
+getJobResponse_httpStatus = Lens.lens (\GetJobResponse' {httpStatus} -> httpStatus) (\s@GetJobResponse' {} a -> s {httpStatus = a} :: GetJobResponse)
+
+instance Prelude.NFData GetJobResponse where
+  rnf GetJobResponse' {..} =
+    Prelude.rnf job
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/GetJobTemplate.hs b/gen/Amazonka/MediaConvert/GetJobTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/GetJobTemplate.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.GetJobTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve the JSON for a specific job template.
+module Amazonka.MediaConvert.GetJobTemplate
+  ( -- * Creating a Request
+    GetJobTemplate (..),
+    newGetJobTemplate,
+
+    -- * Request Lenses
+    getJobTemplate_name,
+
+    -- * Destructuring the Response
+    GetJobTemplateResponse (..),
+    newGetJobTemplateResponse,
+
+    -- * Response Lenses
+    getJobTemplateResponse_jobTemplate,
+    getJobTemplateResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetJobTemplate' smart constructor.
+data GetJobTemplate = GetJobTemplate'
+  { -- | The name of the job template.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetJobTemplate' 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:
+--
+-- 'name', 'getJobTemplate_name' - The name of the job template.
+newGetJobTemplate ::
+  -- | 'name'
+  Prelude.Text ->
+  GetJobTemplate
+newGetJobTemplate pName_ =
+  GetJobTemplate' {name = pName_}
+
+-- | The name of the job template.
+getJobTemplate_name :: Lens.Lens' GetJobTemplate Prelude.Text
+getJobTemplate_name = Lens.lens (\GetJobTemplate' {name} -> name) (\s@GetJobTemplate' {} a -> s {name = a} :: GetJobTemplate)
+
+instance Core.AWSRequest GetJobTemplate where
+  type
+    AWSResponse GetJobTemplate =
+      GetJobTemplateResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetJobTemplateResponse'
+            Prelude.<$> (x Data..?> "jobTemplate")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetJobTemplate where
+  hashWithSalt _salt GetJobTemplate' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData GetJobTemplate where
+  rnf GetJobTemplate' {..} = Prelude.rnf name
+
+instance Data.ToHeaders GetJobTemplate where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetJobTemplate where
+  toPath GetJobTemplate' {..} =
+    Prelude.mconcat
+      ["/2017-08-29/jobTemplates/", Data.toBS name]
+
+instance Data.ToQuery GetJobTemplate where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetJobTemplateResponse' smart constructor.
+data GetJobTemplateResponse = GetJobTemplateResponse'
+  { -- | A job template is a pre-made set of encoding instructions that you can
+    -- use to quickly create a job.
+    jobTemplate :: Prelude.Maybe JobTemplate,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetJobTemplateResponse' 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:
+--
+-- 'jobTemplate', 'getJobTemplateResponse_jobTemplate' - A job template is a pre-made set of encoding instructions that you can
+-- use to quickly create a job.
+--
+-- 'httpStatus', 'getJobTemplateResponse_httpStatus' - The response's http status code.
+newGetJobTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetJobTemplateResponse
+newGetJobTemplateResponse pHttpStatus_ =
+  GetJobTemplateResponse'
+    { jobTemplate =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A job template is a pre-made set of encoding instructions that you can
+-- use to quickly create a job.
+getJobTemplateResponse_jobTemplate :: Lens.Lens' GetJobTemplateResponse (Prelude.Maybe JobTemplate)
+getJobTemplateResponse_jobTemplate = Lens.lens (\GetJobTemplateResponse' {jobTemplate} -> jobTemplate) (\s@GetJobTemplateResponse' {} a -> s {jobTemplate = a} :: GetJobTemplateResponse)
+
+-- | The response's http status code.
+getJobTemplateResponse_httpStatus :: Lens.Lens' GetJobTemplateResponse Prelude.Int
+getJobTemplateResponse_httpStatus = Lens.lens (\GetJobTemplateResponse' {httpStatus} -> httpStatus) (\s@GetJobTemplateResponse' {} a -> s {httpStatus = a} :: GetJobTemplateResponse)
+
+instance Prelude.NFData GetJobTemplateResponse where
+  rnf GetJobTemplateResponse' {..} =
+    Prelude.rnf jobTemplate
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/GetPolicy.hs b/gen/Amazonka/MediaConvert/GetPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/GetPolicy.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.GetPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve the JSON for your policy.
+module Amazonka.MediaConvert.GetPolicy
+  ( -- * Creating a Request
+    GetPolicy (..),
+    newGetPolicy,
+
+    -- * Destructuring the Response
+    GetPolicyResponse (..),
+    newGetPolicyResponse,
+
+    -- * Response Lenses
+    getPolicyResponse_policy,
+    getPolicyResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetPolicy' smart constructor.
+data GetPolicy = GetPolicy'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetPolicy' 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.
+newGetPolicy ::
+  GetPolicy
+newGetPolicy = GetPolicy'
+
+instance Core.AWSRequest GetPolicy where
+  type AWSResponse GetPolicy = GetPolicyResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetPolicyResponse'
+            Prelude.<$> (x Data..?> "policy")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetPolicy where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData GetPolicy where
+  rnf _ = ()
+
+instance Data.ToHeaders GetPolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetPolicy where
+  toPath = Prelude.const "/2017-08-29/policy"
+
+instance Data.ToQuery GetPolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetPolicyResponse' smart constructor.
+data GetPolicyResponse = GetPolicyResponse'
+  { -- | A policy configures behavior that you allow or disallow for your
+    -- account. For information about MediaConvert policies, see the user guide
+    -- at http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+    policy :: Prelude.Maybe Policy,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetPolicyResponse' 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:
+--
+-- 'policy', 'getPolicyResponse_policy' - A policy configures behavior that you allow or disallow for your
+-- account. For information about MediaConvert policies, see the user guide
+-- at http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+--
+-- 'httpStatus', 'getPolicyResponse_httpStatus' - The response's http status code.
+newGetPolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetPolicyResponse
+newGetPolicyResponse pHttpStatus_ =
+  GetPolicyResponse'
+    { policy = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A policy configures behavior that you allow or disallow for your
+-- account. For information about MediaConvert policies, see the user guide
+-- at http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+getPolicyResponse_policy :: Lens.Lens' GetPolicyResponse (Prelude.Maybe Policy)
+getPolicyResponse_policy = Lens.lens (\GetPolicyResponse' {policy} -> policy) (\s@GetPolicyResponse' {} a -> s {policy = a} :: GetPolicyResponse)
+
+-- | The response's http status code.
+getPolicyResponse_httpStatus :: Lens.Lens' GetPolicyResponse Prelude.Int
+getPolicyResponse_httpStatus = Lens.lens (\GetPolicyResponse' {httpStatus} -> httpStatus) (\s@GetPolicyResponse' {} a -> s {httpStatus = a} :: GetPolicyResponse)
+
+instance Prelude.NFData GetPolicyResponse where
+  rnf GetPolicyResponse' {..} =
+    Prelude.rnf policy
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/GetPreset.hs b/gen/Amazonka/MediaConvert/GetPreset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/GetPreset.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.GetPreset
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve the JSON for a specific preset.
+module Amazonka.MediaConvert.GetPreset
+  ( -- * Creating a Request
+    GetPreset (..),
+    newGetPreset,
+
+    -- * Request Lenses
+    getPreset_name,
+
+    -- * Destructuring the Response
+    GetPresetResponse (..),
+    newGetPresetResponse,
+
+    -- * Response Lenses
+    getPresetResponse_preset,
+    getPresetResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetPreset' smart constructor.
+data GetPreset = GetPreset'
+  { -- | The name of the preset.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetPreset' 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:
+--
+-- 'name', 'getPreset_name' - The name of the preset.
+newGetPreset ::
+  -- | 'name'
+  Prelude.Text ->
+  GetPreset
+newGetPreset pName_ = GetPreset' {name = pName_}
+
+-- | The name of the preset.
+getPreset_name :: Lens.Lens' GetPreset Prelude.Text
+getPreset_name = Lens.lens (\GetPreset' {name} -> name) (\s@GetPreset' {} a -> s {name = a} :: GetPreset)
+
+instance Core.AWSRequest GetPreset where
+  type AWSResponse GetPreset = GetPresetResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetPresetResponse'
+            Prelude.<$> (x Data..?> "preset")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetPreset where
+  hashWithSalt _salt GetPreset' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData GetPreset where
+  rnf GetPreset' {..} = Prelude.rnf name
+
+instance Data.ToHeaders GetPreset where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetPreset where
+  toPath GetPreset' {..} =
+    Prelude.mconcat
+      ["/2017-08-29/presets/", Data.toBS name]
+
+instance Data.ToQuery GetPreset where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetPresetResponse' smart constructor.
+data GetPresetResponse = GetPresetResponse'
+  { -- | A preset is a collection of preconfigured media conversion settings that
+    -- you want MediaConvert to apply to the output during the conversion
+    -- process.
+    preset :: Prelude.Maybe Preset,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetPresetResponse' 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:
+--
+-- 'preset', 'getPresetResponse_preset' - A preset is a collection of preconfigured media conversion settings that
+-- you want MediaConvert to apply to the output during the conversion
+-- process.
+--
+-- 'httpStatus', 'getPresetResponse_httpStatus' - The response's http status code.
+newGetPresetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetPresetResponse
+newGetPresetResponse pHttpStatus_ =
+  GetPresetResponse'
+    { preset = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A preset is a collection of preconfigured media conversion settings that
+-- you want MediaConvert to apply to the output during the conversion
+-- process.
+getPresetResponse_preset :: Lens.Lens' GetPresetResponse (Prelude.Maybe Preset)
+getPresetResponse_preset = Lens.lens (\GetPresetResponse' {preset} -> preset) (\s@GetPresetResponse' {} a -> s {preset = a} :: GetPresetResponse)
+
+-- | The response's http status code.
+getPresetResponse_httpStatus :: Lens.Lens' GetPresetResponse Prelude.Int
+getPresetResponse_httpStatus = Lens.lens (\GetPresetResponse' {httpStatus} -> httpStatus) (\s@GetPresetResponse' {} a -> s {httpStatus = a} :: GetPresetResponse)
+
+instance Prelude.NFData GetPresetResponse where
+  rnf GetPresetResponse' {..} =
+    Prelude.rnf preset
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/GetQueue.hs b/gen/Amazonka/MediaConvert/GetQueue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/GetQueue.hs
@@ -0,0 +1,167 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.GetQueue
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve the JSON for a specific queue.
+module Amazonka.MediaConvert.GetQueue
+  ( -- * Creating a Request
+    GetQueue (..),
+    newGetQueue,
+
+    -- * Request Lenses
+    getQueue_name,
+
+    -- * Destructuring the Response
+    GetQueueResponse (..),
+    newGetQueueResponse,
+
+    -- * Response Lenses
+    getQueueResponse_queue,
+    getQueueResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetQueue' smart constructor.
+data GetQueue = GetQueue'
+  { -- | The name of the queue that you want information about.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetQueue' 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:
+--
+-- 'name', 'getQueue_name' - The name of the queue that you want information about.
+newGetQueue ::
+  -- | 'name'
+  Prelude.Text ->
+  GetQueue
+newGetQueue pName_ = GetQueue' {name = pName_}
+
+-- | The name of the queue that you want information about.
+getQueue_name :: Lens.Lens' GetQueue Prelude.Text
+getQueue_name = Lens.lens (\GetQueue' {name} -> name) (\s@GetQueue' {} a -> s {name = a} :: GetQueue)
+
+instance Core.AWSRequest GetQueue where
+  type AWSResponse GetQueue = GetQueueResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetQueueResponse'
+            Prelude.<$> (x Data..?> "queue")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetQueue where
+  hashWithSalt _salt GetQueue' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData GetQueue where
+  rnf GetQueue' {..} = Prelude.rnf name
+
+instance Data.ToHeaders GetQueue where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetQueue where
+  toPath GetQueue' {..} =
+    Prelude.mconcat
+      ["/2017-08-29/queues/", Data.toBS name]
+
+instance Data.ToQuery GetQueue where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetQueueResponse' smart constructor.
+data GetQueueResponse = GetQueueResponse'
+  { -- | You can use queues to manage the resources that are available to your
+    -- AWS account for running multiple transcoding jobs at the same time. If
+    -- you don\'t specify a queue, the service sends all jobs through the
+    -- default queue. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-queues.html.
+    queue :: Prelude.Maybe Queue,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetQueueResponse' 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:
+--
+-- 'queue', 'getQueueResponse_queue' - You can use queues to manage the resources that are available to your
+-- AWS account for running multiple transcoding jobs at the same time. If
+-- you don\'t specify a queue, the service sends all jobs through the
+-- default queue. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-queues.html.
+--
+-- 'httpStatus', 'getQueueResponse_httpStatus' - The response's http status code.
+newGetQueueResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetQueueResponse
+newGetQueueResponse pHttpStatus_ =
+  GetQueueResponse'
+    { queue = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | You can use queues to manage the resources that are available to your
+-- AWS account for running multiple transcoding jobs at the same time. If
+-- you don\'t specify a queue, the service sends all jobs through the
+-- default queue. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-queues.html.
+getQueueResponse_queue :: Lens.Lens' GetQueueResponse (Prelude.Maybe Queue)
+getQueueResponse_queue = Lens.lens (\GetQueueResponse' {queue} -> queue) (\s@GetQueueResponse' {} a -> s {queue = a} :: GetQueueResponse)
+
+-- | The response's http status code.
+getQueueResponse_httpStatus :: Lens.Lens' GetQueueResponse Prelude.Int
+getQueueResponse_httpStatus = Lens.lens (\GetQueueResponse' {httpStatus} -> httpStatus) (\s@GetQueueResponse' {} a -> s {httpStatus = a} :: GetQueueResponse)
+
+instance Prelude.NFData GetQueueResponse where
+  rnf GetQueueResponse' {..} =
+    Prelude.rnf queue
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/Lens.hs b/gen/Amazonka/MediaConvert/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Lens.hs
@@ -0,0 +1,1877 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Lens
+-- 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.Lens
+  ( -- * Operations
+
+    -- ** AssociateCertificate
+    associateCertificate_arn,
+    associateCertificateResponse_httpStatus,
+
+    -- ** CancelJob
+    cancelJob_id,
+    cancelJobResponse_httpStatus,
+
+    -- ** CreateJob
+    createJob_accelerationSettings,
+    createJob_billingTagsSource,
+    createJob_clientRequestToken,
+    createJob_hopDestinations,
+    createJob_jobTemplate,
+    createJob_priority,
+    createJob_queue,
+    createJob_simulateReservedQueue,
+    createJob_statusUpdateInterval,
+    createJob_tags,
+    createJob_userMetadata,
+    createJob_role,
+    createJob_settings,
+    createJobResponse_job,
+    createJobResponse_httpStatus,
+
+    -- ** CreateJobTemplate
+    createJobTemplate_accelerationSettings,
+    createJobTemplate_category,
+    createJobTemplate_description,
+    createJobTemplate_hopDestinations,
+    createJobTemplate_priority,
+    createJobTemplate_queue,
+    createJobTemplate_statusUpdateInterval,
+    createJobTemplate_tags,
+    createJobTemplate_settings,
+    createJobTemplate_name,
+    createJobTemplateResponse_jobTemplate,
+    createJobTemplateResponse_httpStatus,
+
+    -- ** CreatePreset
+    createPreset_category,
+    createPreset_description,
+    createPreset_tags,
+    createPreset_settings,
+    createPreset_name,
+    createPresetResponse_preset,
+    createPresetResponse_httpStatus,
+
+    -- ** CreateQueue
+    createQueue_description,
+    createQueue_pricingPlan,
+    createQueue_reservationPlanSettings,
+    createQueue_status,
+    createQueue_tags,
+    createQueue_name,
+    createQueueResponse_queue,
+    createQueueResponse_httpStatus,
+
+    -- ** DeleteJobTemplate
+    deleteJobTemplate_name,
+    deleteJobTemplateResponse_httpStatus,
+
+    -- ** DeletePolicy
+    deletePolicyResponse_httpStatus,
+
+    -- ** DeletePreset
+    deletePreset_name,
+    deletePresetResponse_httpStatus,
+
+    -- ** DeleteQueue
+    deleteQueue_name,
+    deleteQueueResponse_httpStatus,
+
+    -- ** DescribeEndpoints
+    describeEndpoints_maxResults,
+    describeEndpoints_mode,
+    describeEndpoints_nextToken,
+    describeEndpointsResponse_endpoints,
+    describeEndpointsResponse_nextToken,
+    describeEndpointsResponse_httpStatus,
+
+    -- ** DisassociateCertificate
+    disassociateCertificate_arn,
+    disassociateCertificateResponse_httpStatus,
+
+    -- ** GetJob
+    getJob_id,
+    getJobResponse_job,
+    getJobResponse_httpStatus,
+
+    -- ** GetJobTemplate
+    getJobTemplate_name,
+    getJobTemplateResponse_jobTemplate,
+    getJobTemplateResponse_httpStatus,
+
+    -- ** GetPolicy
+    getPolicyResponse_policy,
+    getPolicyResponse_httpStatus,
+
+    -- ** GetPreset
+    getPreset_name,
+    getPresetResponse_preset,
+    getPresetResponse_httpStatus,
+
+    -- ** GetQueue
+    getQueue_name,
+    getQueueResponse_queue,
+    getQueueResponse_httpStatus,
+
+    -- ** ListJobTemplates
+    listJobTemplates_category,
+    listJobTemplates_listBy,
+    listJobTemplates_maxResults,
+    listJobTemplates_nextToken,
+    listJobTemplates_order,
+    listJobTemplatesResponse_jobTemplates,
+    listJobTemplatesResponse_nextToken,
+    listJobTemplatesResponse_httpStatus,
+
+    -- ** ListJobs
+    listJobs_maxResults,
+    listJobs_nextToken,
+    listJobs_order,
+    listJobs_queue,
+    listJobs_status,
+    listJobsResponse_jobs,
+    listJobsResponse_nextToken,
+    listJobsResponse_httpStatus,
+
+    -- ** ListPresets
+    listPresets_category,
+    listPresets_listBy,
+    listPresets_maxResults,
+    listPresets_nextToken,
+    listPresets_order,
+    listPresetsResponse_nextToken,
+    listPresetsResponse_presets,
+    listPresetsResponse_httpStatus,
+
+    -- ** ListQueues
+    listQueues_listBy,
+    listQueues_maxResults,
+    listQueues_nextToken,
+    listQueues_order,
+    listQueuesResponse_nextToken,
+    listQueuesResponse_queues,
+    listQueuesResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_arn,
+    listTagsForResourceResponse_resourceTags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** PutPolicy
+    putPolicy_policy,
+    putPolicyResponse_policy,
+    putPolicyResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_arn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_tagKeys,
+    untagResource_arn,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateJobTemplate
+    updateJobTemplate_accelerationSettings,
+    updateJobTemplate_category,
+    updateJobTemplate_description,
+    updateJobTemplate_hopDestinations,
+    updateJobTemplate_priority,
+    updateJobTemplate_queue,
+    updateJobTemplate_settings,
+    updateJobTemplate_statusUpdateInterval,
+    updateJobTemplate_name,
+    updateJobTemplateResponse_jobTemplate,
+    updateJobTemplateResponse_httpStatus,
+
+    -- ** UpdatePreset
+    updatePreset_category,
+    updatePreset_description,
+    updatePreset_settings,
+    updatePreset_name,
+    updatePresetResponse_preset,
+    updatePresetResponse_httpStatus,
+
+    -- ** UpdateQueue
+    updateQueue_description,
+    updateQueue_reservationPlanSettings,
+    updateQueue_status,
+    updateQueue_name,
+    updateQueueResponse_queue,
+    updateQueueResponse_httpStatus,
+
+    -- * Types
+
+    -- ** AacSettings
+    aacSettings_audioDescriptionBroadcasterMix,
+    aacSettings_bitrate,
+    aacSettings_codecProfile,
+    aacSettings_codingMode,
+    aacSettings_rateControlMode,
+    aacSettings_rawFormat,
+    aacSettings_sampleRate,
+    aacSettings_specification,
+    aacSettings_vbrQuality,
+
+    -- ** Ac3Settings
+    ac3Settings_bitrate,
+    ac3Settings_bitstreamMode,
+    ac3Settings_codingMode,
+    ac3Settings_dialnorm,
+    ac3Settings_dynamicRangeCompressionLine,
+    ac3Settings_dynamicRangeCompressionProfile,
+    ac3Settings_dynamicRangeCompressionRf,
+    ac3Settings_lfeFilter,
+    ac3Settings_metadataControl,
+    ac3Settings_sampleRate,
+
+    -- ** AccelerationSettings
+    accelerationSettings_mode,
+
+    -- ** AiffSettings
+    aiffSettings_bitDepth,
+    aiffSettings_channels,
+    aiffSettings_sampleRate,
+
+    -- ** AllowedRenditionSize
+    allowedRenditionSize_height,
+    allowedRenditionSize_required,
+    allowedRenditionSize_width,
+
+    -- ** AncillarySourceSettings
+    ancillarySourceSettings_convert608To708,
+    ancillarySourceSettings_sourceAncillaryChannelNumber,
+    ancillarySourceSettings_terminateCaptions,
+
+    -- ** AudioChannelTaggingSettings
+    audioChannelTaggingSettings_channelTag,
+
+    -- ** AudioCodecSettings
+    audioCodecSettings_aacSettings,
+    audioCodecSettings_ac3Settings,
+    audioCodecSettings_aiffSettings,
+    audioCodecSettings_codec,
+    audioCodecSettings_eac3AtmosSettings,
+    audioCodecSettings_eac3Settings,
+    audioCodecSettings_mp2Settings,
+    audioCodecSettings_mp3Settings,
+    audioCodecSettings_opusSettings,
+    audioCodecSettings_vorbisSettings,
+    audioCodecSettings_wavSettings,
+
+    -- ** AudioDescription
+    audioDescription_audioChannelTaggingSettings,
+    audioDescription_audioNormalizationSettings,
+    audioDescription_audioSourceName,
+    audioDescription_audioType,
+    audioDescription_audioTypeControl,
+    audioDescription_codecSettings,
+    audioDescription_customLanguageCode,
+    audioDescription_languageCode,
+    audioDescription_languageCodeControl,
+    audioDescription_remixSettings,
+    audioDescription_streamName,
+
+    -- ** AudioNormalizationSettings
+    audioNormalizationSettings_algorithm,
+    audioNormalizationSettings_algorithmControl,
+    audioNormalizationSettings_correctionGateLevel,
+    audioNormalizationSettings_loudnessLogging,
+    audioNormalizationSettings_peakCalculation,
+    audioNormalizationSettings_targetLkfs,
+
+    -- ** AudioSelector
+    audioSelector_audioDurationCorrection,
+    audioSelector_customLanguageCode,
+    audioSelector_defaultSelection,
+    audioSelector_externalAudioFileInput,
+    audioSelector_hlsRenditionGroupSettings,
+    audioSelector_languageCode,
+    audioSelector_offset,
+    audioSelector_pids,
+    audioSelector_programSelection,
+    audioSelector_remixSettings,
+    audioSelector_selectorType,
+    audioSelector_tracks,
+
+    -- ** AudioSelectorGroup
+    audioSelectorGroup_audioSelectorNames,
+
+    -- ** AutomatedAbrRule
+    automatedAbrRule_allowedRenditions,
+    automatedAbrRule_forceIncludeRenditions,
+    automatedAbrRule_minBottomRenditionSize,
+    automatedAbrRule_minTopRenditionSize,
+    automatedAbrRule_type,
+
+    -- ** AutomatedAbrSettings
+    automatedAbrSettings_maxAbrBitrate,
+    automatedAbrSettings_maxRenditions,
+    automatedAbrSettings_minAbrBitrate,
+    automatedAbrSettings_rules,
+
+    -- ** AutomatedEncodingSettings
+    automatedEncodingSettings_abrSettings,
+
+    -- ** Av1QvbrSettings
+    av1QvbrSettings_qvbrQualityLevel,
+    av1QvbrSettings_qvbrQualityLevelFineTune,
+
+    -- ** Av1Settings
+    av1Settings_adaptiveQuantization,
+    av1Settings_bitDepth,
+    av1Settings_framerateControl,
+    av1Settings_framerateConversionAlgorithm,
+    av1Settings_framerateDenominator,
+    av1Settings_framerateNumerator,
+    av1Settings_gopSize,
+    av1Settings_maxBitrate,
+    av1Settings_numberBFramesBetweenReferenceFrames,
+    av1Settings_qvbrSettings,
+    av1Settings_rateControlMode,
+    av1Settings_slices,
+    av1Settings_spatialAdaptiveQuantization,
+
+    -- ** AvailBlanking
+    availBlanking_availBlankingImage,
+
+    -- ** AvcIntraSettings
+    avcIntraSettings_avcIntraClass,
+    avcIntraSettings_avcIntraUhdSettings,
+    avcIntraSettings_framerateControl,
+    avcIntraSettings_framerateConversionAlgorithm,
+    avcIntraSettings_framerateDenominator,
+    avcIntraSettings_framerateNumerator,
+    avcIntraSettings_interlaceMode,
+    avcIntraSettings_scanTypeConversionMode,
+    avcIntraSettings_slowPal,
+    avcIntraSettings_telecine,
+
+    -- ** AvcIntraUhdSettings
+    avcIntraUhdSettings_qualityTuningLevel,
+
+    -- ** BurninDestinationSettings
+    burninDestinationSettings_alignment,
+    burninDestinationSettings_applyFontColor,
+    burninDestinationSettings_backgroundColor,
+    burninDestinationSettings_backgroundOpacity,
+    burninDestinationSettings_fallbackFont,
+    burninDestinationSettings_fontColor,
+    burninDestinationSettings_fontOpacity,
+    burninDestinationSettings_fontResolution,
+    burninDestinationSettings_fontScript,
+    burninDestinationSettings_fontSize,
+    burninDestinationSettings_hexFontColor,
+    burninDestinationSettings_outlineColor,
+    burninDestinationSettings_outlineSize,
+    burninDestinationSettings_shadowColor,
+    burninDestinationSettings_shadowOpacity,
+    burninDestinationSettings_shadowXOffset,
+    burninDestinationSettings_shadowYOffset,
+    burninDestinationSettings_stylePassthrough,
+    burninDestinationSettings_teletextSpacing,
+    burninDestinationSettings_xPosition,
+    burninDestinationSettings_yPosition,
+
+    -- ** CaptionDescription
+    captionDescription_captionSelectorName,
+    captionDescription_customLanguageCode,
+    captionDescription_destinationSettings,
+    captionDescription_languageCode,
+    captionDescription_languageDescription,
+
+    -- ** CaptionDescriptionPreset
+    captionDescriptionPreset_customLanguageCode,
+    captionDescriptionPreset_destinationSettings,
+    captionDescriptionPreset_languageCode,
+    captionDescriptionPreset_languageDescription,
+
+    -- ** CaptionDestinationSettings
+    captionDestinationSettings_burninDestinationSettings,
+    captionDestinationSettings_destinationType,
+    captionDestinationSettings_dvbSubDestinationSettings,
+    captionDestinationSettings_embeddedDestinationSettings,
+    captionDestinationSettings_imscDestinationSettings,
+    captionDestinationSettings_sccDestinationSettings,
+    captionDestinationSettings_srtDestinationSettings,
+    captionDestinationSettings_teletextDestinationSettings,
+    captionDestinationSettings_ttmlDestinationSettings,
+    captionDestinationSettings_webvttDestinationSettings,
+
+    -- ** CaptionSelector
+    captionSelector_customLanguageCode,
+    captionSelector_languageCode,
+    captionSelector_sourceSettings,
+
+    -- ** CaptionSourceFramerate
+    captionSourceFramerate_framerateDenominator,
+    captionSourceFramerate_framerateNumerator,
+
+    -- ** CaptionSourceSettings
+    captionSourceSettings_ancillarySourceSettings,
+    captionSourceSettings_dvbSubSourceSettings,
+    captionSourceSettings_embeddedSourceSettings,
+    captionSourceSettings_fileSourceSettings,
+    captionSourceSettings_sourceType,
+    captionSourceSettings_teletextSourceSettings,
+    captionSourceSettings_trackSourceSettings,
+    captionSourceSettings_webvttHlsSourceSettings,
+
+    -- ** ChannelMapping
+    channelMapping_outputChannels,
+
+    -- ** CmafAdditionalManifest
+    cmafAdditionalManifest_manifestNameModifier,
+    cmafAdditionalManifest_selectedOutputs,
+
+    -- ** CmafEncryptionSettings
+    cmafEncryptionSettings_constantInitializationVector,
+    cmafEncryptionSettings_encryptionMethod,
+    cmafEncryptionSettings_initializationVectorInManifest,
+    cmafEncryptionSettings_spekeKeyProvider,
+    cmafEncryptionSettings_staticKeyProvider,
+    cmafEncryptionSettings_type,
+
+    -- ** CmafGroupSettings
+    cmafGroupSettings_additionalManifests,
+    cmafGroupSettings_baseUrl,
+    cmafGroupSettings_clientCache,
+    cmafGroupSettings_codecSpecification,
+    cmafGroupSettings_destination,
+    cmafGroupSettings_destinationSettings,
+    cmafGroupSettings_encryption,
+    cmafGroupSettings_fragmentLength,
+    cmafGroupSettings_imageBasedTrickPlay,
+    cmafGroupSettings_imageBasedTrickPlaySettings,
+    cmafGroupSettings_manifestCompression,
+    cmafGroupSettings_manifestDurationFormat,
+    cmafGroupSettings_minBufferTime,
+    cmafGroupSettings_minFinalSegmentLength,
+    cmafGroupSettings_mpdManifestBandwidthType,
+    cmafGroupSettings_mpdProfile,
+    cmafGroupSettings_ptsOffsetHandlingForBFrames,
+    cmafGroupSettings_segmentControl,
+    cmafGroupSettings_segmentLength,
+    cmafGroupSettings_segmentLengthControl,
+    cmafGroupSettings_streamInfResolution,
+    cmafGroupSettings_targetDurationCompatibilityMode,
+    cmafGroupSettings_videoCompositionOffsets,
+    cmafGroupSettings_writeDashManifest,
+    cmafGroupSettings_writeHlsManifest,
+    cmafGroupSettings_writeSegmentTimelineInRepresentation,
+
+    -- ** CmafImageBasedTrickPlaySettings
+    cmafImageBasedTrickPlaySettings_intervalCadence,
+    cmafImageBasedTrickPlaySettings_thumbnailHeight,
+    cmafImageBasedTrickPlaySettings_thumbnailInterval,
+    cmafImageBasedTrickPlaySettings_thumbnailWidth,
+    cmafImageBasedTrickPlaySettings_tileHeight,
+    cmafImageBasedTrickPlaySettings_tileWidth,
+
+    -- ** CmfcSettings
+    cmfcSettings_audioDuration,
+    cmfcSettings_audioGroupId,
+    cmfcSettings_audioRenditionSets,
+    cmfcSettings_audioTrackType,
+    cmfcSettings_descriptiveVideoServiceFlag,
+    cmfcSettings_iFrameOnlyManifest,
+    cmfcSettings_klvMetadata,
+    cmfcSettings_manifestMetadataSignaling,
+    cmfcSettings_scte35Esam,
+    cmfcSettings_scte35Source,
+    cmfcSettings_timedMetadata,
+    cmfcSettings_timedMetadataBoxVersion,
+    cmfcSettings_timedMetadataSchemeIdUri,
+    cmfcSettings_timedMetadataValue,
+
+    -- ** ColorCorrector
+    colorCorrector_brightness,
+    colorCorrector_colorSpaceConversion,
+    colorCorrector_contrast,
+    colorCorrector_hdr10Metadata,
+    colorCorrector_hue,
+    colorCorrector_sampleRangeConversion,
+    colorCorrector_saturation,
+    colorCorrector_sdrReferenceWhiteLevel,
+
+    -- ** ContainerSettings
+    containerSettings_cmfcSettings,
+    containerSettings_container,
+    containerSettings_f4vSettings,
+    containerSettings_m2tsSettings,
+    containerSettings_m3u8Settings,
+    containerSettings_movSettings,
+    containerSettings_mp4Settings,
+    containerSettings_mpdSettings,
+    containerSettings_mxfSettings,
+
+    -- ** DashAdditionalManifest
+    dashAdditionalManifest_manifestNameModifier,
+    dashAdditionalManifest_selectedOutputs,
+
+    -- ** DashIsoEncryptionSettings
+    dashIsoEncryptionSettings_playbackDeviceCompatibility,
+    dashIsoEncryptionSettings_spekeKeyProvider,
+
+    -- ** DashIsoGroupSettings
+    dashIsoGroupSettings_additionalManifests,
+    dashIsoGroupSettings_audioChannelConfigSchemeIdUri,
+    dashIsoGroupSettings_baseUrl,
+    dashIsoGroupSettings_destination,
+    dashIsoGroupSettings_destinationSettings,
+    dashIsoGroupSettings_encryption,
+    dashIsoGroupSettings_fragmentLength,
+    dashIsoGroupSettings_hbbtvCompliance,
+    dashIsoGroupSettings_imageBasedTrickPlay,
+    dashIsoGroupSettings_imageBasedTrickPlaySettings,
+    dashIsoGroupSettings_minBufferTime,
+    dashIsoGroupSettings_minFinalSegmentLength,
+    dashIsoGroupSettings_mpdManifestBandwidthType,
+    dashIsoGroupSettings_mpdProfile,
+    dashIsoGroupSettings_ptsOffsetHandlingForBFrames,
+    dashIsoGroupSettings_segmentControl,
+    dashIsoGroupSettings_segmentLength,
+    dashIsoGroupSettings_segmentLengthControl,
+    dashIsoGroupSettings_videoCompositionOffsets,
+    dashIsoGroupSettings_writeSegmentTimelineInRepresentation,
+
+    -- ** DashIsoImageBasedTrickPlaySettings
+    dashIsoImageBasedTrickPlaySettings_intervalCadence,
+    dashIsoImageBasedTrickPlaySettings_thumbnailHeight,
+    dashIsoImageBasedTrickPlaySettings_thumbnailInterval,
+    dashIsoImageBasedTrickPlaySettings_thumbnailWidth,
+    dashIsoImageBasedTrickPlaySettings_tileHeight,
+    dashIsoImageBasedTrickPlaySettings_tileWidth,
+
+    -- ** Deinterlacer
+    deinterlacer_algorithm,
+    deinterlacer_control,
+    deinterlacer_mode,
+
+    -- ** DestinationSettings
+    destinationSettings_s3Settings,
+
+    -- ** DolbyVision
+    dolbyVision_l6Metadata,
+    dolbyVision_l6Mode,
+    dolbyVision_mapping,
+    dolbyVision_profile,
+
+    -- ** DolbyVisionLevel6Metadata
+    dolbyVisionLevel6Metadata_maxCll,
+    dolbyVisionLevel6Metadata_maxFall,
+
+    -- ** DvbNitSettings
+    dvbNitSettings_networkId,
+    dvbNitSettings_networkName,
+    dvbNitSettings_nitInterval,
+
+    -- ** DvbSdtSettings
+    dvbSdtSettings_outputSdt,
+    dvbSdtSettings_sdtInterval,
+    dvbSdtSettings_serviceName,
+    dvbSdtSettings_serviceProviderName,
+
+    -- ** DvbSubDestinationSettings
+    dvbSubDestinationSettings_alignment,
+    dvbSubDestinationSettings_applyFontColor,
+    dvbSubDestinationSettings_backgroundColor,
+    dvbSubDestinationSettings_backgroundOpacity,
+    dvbSubDestinationSettings_ddsHandling,
+    dvbSubDestinationSettings_ddsXCoordinate,
+    dvbSubDestinationSettings_ddsYCoordinate,
+    dvbSubDestinationSettings_fallbackFont,
+    dvbSubDestinationSettings_fontColor,
+    dvbSubDestinationSettings_fontOpacity,
+    dvbSubDestinationSettings_fontResolution,
+    dvbSubDestinationSettings_fontScript,
+    dvbSubDestinationSettings_fontSize,
+    dvbSubDestinationSettings_height,
+    dvbSubDestinationSettings_hexFontColor,
+    dvbSubDestinationSettings_outlineColor,
+    dvbSubDestinationSettings_outlineSize,
+    dvbSubDestinationSettings_shadowColor,
+    dvbSubDestinationSettings_shadowOpacity,
+    dvbSubDestinationSettings_shadowXOffset,
+    dvbSubDestinationSettings_shadowYOffset,
+    dvbSubDestinationSettings_stylePassthrough,
+    dvbSubDestinationSettings_subtitlingType,
+    dvbSubDestinationSettings_teletextSpacing,
+    dvbSubDestinationSettings_width,
+    dvbSubDestinationSettings_xPosition,
+    dvbSubDestinationSettings_yPosition,
+
+    -- ** DvbSubSourceSettings
+    dvbSubSourceSettings_pid,
+
+    -- ** DvbTdtSettings
+    dvbTdtSettings_tdtInterval,
+
+    -- ** Eac3AtmosSettings
+    eac3AtmosSettings_bitrate,
+    eac3AtmosSettings_bitstreamMode,
+    eac3AtmosSettings_codingMode,
+    eac3AtmosSettings_dialogueIntelligence,
+    eac3AtmosSettings_downmixControl,
+    eac3AtmosSettings_dynamicRangeCompressionLine,
+    eac3AtmosSettings_dynamicRangeCompressionRf,
+    eac3AtmosSettings_dynamicRangeControl,
+    eac3AtmosSettings_loRoCenterMixLevel,
+    eac3AtmosSettings_loRoSurroundMixLevel,
+    eac3AtmosSettings_ltRtCenterMixLevel,
+    eac3AtmosSettings_ltRtSurroundMixLevel,
+    eac3AtmosSettings_meteringMode,
+    eac3AtmosSettings_sampleRate,
+    eac3AtmosSettings_speechThreshold,
+    eac3AtmosSettings_stereoDownmix,
+    eac3AtmosSettings_surroundExMode,
+
+    -- ** Eac3Settings
+    eac3Settings_attenuationControl,
+    eac3Settings_bitrate,
+    eac3Settings_bitstreamMode,
+    eac3Settings_codingMode,
+    eac3Settings_dcFilter,
+    eac3Settings_dialnorm,
+    eac3Settings_dynamicRangeCompressionLine,
+    eac3Settings_dynamicRangeCompressionRf,
+    eac3Settings_lfeControl,
+    eac3Settings_lfeFilter,
+    eac3Settings_loRoCenterMixLevel,
+    eac3Settings_loRoSurroundMixLevel,
+    eac3Settings_ltRtCenterMixLevel,
+    eac3Settings_ltRtSurroundMixLevel,
+    eac3Settings_metadataControl,
+    eac3Settings_passthroughControl,
+    eac3Settings_phaseControl,
+    eac3Settings_sampleRate,
+    eac3Settings_stereoDownmix,
+    eac3Settings_surroundExMode,
+    eac3Settings_surroundMode,
+
+    -- ** EmbeddedDestinationSettings
+    embeddedDestinationSettings_destination608ChannelNumber,
+    embeddedDestinationSettings_destination708ServiceNumber,
+
+    -- ** EmbeddedSourceSettings
+    embeddedSourceSettings_convert608To708,
+    embeddedSourceSettings_source608ChannelNumber,
+    embeddedSourceSettings_source608TrackNumber,
+    embeddedSourceSettings_terminateCaptions,
+
+    -- ** Endpoint
+    endpoint_url,
+
+    -- ** EsamManifestConfirmConditionNotification
+    esamManifestConfirmConditionNotification_mccXml,
+
+    -- ** EsamSettings
+    esamSettings_manifestConfirmConditionNotification,
+    esamSettings_responseSignalPreroll,
+    esamSettings_signalProcessingNotification,
+
+    -- ** EsamSignalProcessingNotification
+    esamSignalProcessingNotification_sccXml,
+
+    -- ** ExtendedDataServices
+    extendedDataServices_copyProtectionAction,
+    extendedDataServices_vchipAction,
+
+    -- ** F4vSettings
+    f4vSettings_moovPlacement,
+
+    -- ** FileGroupSettings
+    fileGroupSettings_destination,
+    fileGroupSettings_destinationSettings,
+
+    -- ** FileSourceSettings
+    fileSourceSettings_convert608To708,
+    fileSourceSettings_framerate,
+    fileSourceSettings_sourceFile,
+    fileSourceSettings_timeDelta,
+    fileSourceSettings_timeDeltaUnits,
+
+    -- ** ForceIncludeRenditionSize
+    forceIncludeRenditionSize_height,
+    forceIncludeRenditionSize_width,
+
+    -- ** FrameCaptureSettings
+    frameCaptureSettings_framerateDenominator,
+    frameCaptureSettings_framerateNumerator,
+    frameCaptureSettings_maxCaptures,
+    frameCaptureSettings_quality,
+
+    -- ** H264QvbrSettings
+    h264QvbrSettings_maxAverageBitrate,
+    h264QvbrSettings_qvbrQualityLevel,
+    h264QvbrSettings_qvbrQualityLevelFineTune,
+
+    -- ** H264Settings
+    h264Settings_adaptiveQuantization,
+    h264Settings_bitrate,
+    h264Settings_codecLevel,
+    h264Settings_codecProfile,
+    h264Settings_dynamicSubGop,
+    h264Settings_entropyEncoding,
+    h264Settings_fieldEncoding,
+    h264Settings_flickerAdaptiveQuantization,
+    h264Settings_framerateControl,
+    h264Settings_framerateConversionAlgorithm,
+    h264Settings_framerateDenominator,
+    h264Settings_framerateNumerator,
+    h264Settings_gopBReference,
+    h264Settings_gopClosedCadence,
+    h264Settings_gopSize,
+    h264Settings_gopSizeUnits,
+    h264Settings_hrdBufferFinalFillPercentage,
+    h264Settings_hrdBufferInitialFillPercentage,
+    h264Settings_hrdBufferSize,
+    h264Settings_interlaceMode,
+    h264Settings_maxBitrate,
+    h264Settings_minIInterval,
+    h264Settings_numberBFramesBetweenReferenceFrames,
+    h264Settings_numberReferenceFrames,
+    h264Settings_parControl,
+    h264Settings_parDenominator,
+    h264Settings_parNumerator,
+    h264Settings_qualityTuningLevel,
+    h264Settings_qvbrSettings,
+    h264Settings_rateControlMode,
+    h264Settings_repeatPps,
+    h264Settings_scanTypeConversionMode,
+    h264Settings_sceneChangeDetect,
+    h264Settings_slices,
+    h264Settings_slowPal,
+    h264Settings_softness,
+    h264Settings_spatialAdaptiveQuantization,
+    h264Settings_syntax,
+    h264Settings_telecine,
+    h264Settings_temporalAdaptiveQuantization,
+    h264Settings_unregisteredSeiTimecode,
+
+    -- ** H265QvbrSettings
+    h265QvbrSettings_maxAverageBitrate,
+    h265QvbrSettings_qvbrQualityLevel,
+    h265QvbrSettings_qvbrQualityLevelFineTune,
+
+    -- ** H265Settings
+    h265Settings_adaptiveQuantization,
+    h265Settings_alternateTransferFunctionSei,
+    h265Settings_bitrate,
+    h265Settings_codecLevel,
+    h265Settings_codecProfile,
+    h265Settings_dynamicSubGop,
+    h265Settings_flickerAdaptiveQuantization,
+    h265Settings_framerateControl,
+    h265Settings_framerateConversionAlgorithm,
+    h265Settings_framerateDenominator,
+    h265Settings_framerateNumerator,
+    h265Settings_gopBReference,
+    h265Settings_gopClosedCadence,
+    h265Settings_gopSize,
+    h265Settings_gopSizeUnits,
+    h265Settings_hrdBufferFinalFillPercentage,
+    h265Settings_hrdBufferInitialFillPercentage,
+    h265Settings_hrdBufferSize,
+    h265Settings_interlaceMode,
+    h265Settings_maxBitrate,
+    h265Settings_minIInterval,
+    h265Settings_numberBFramesBetweenReferenceFrames,
+    h265Settings_numberReferenceFrames,
+    h265Settings_parControl,
+    h265Settings_parDenominator,
+    h265Settings_parNumerator,
+    h265Settings_qualityTuningLevel,
+    h265Settings_qvbrSettings,
+    h265Settings_rateControlMode,
+    h265Settings_sampleAdaptiveOffsetFilterMode,
+    h265Settings_scanTypeConversionMode,
+    h265Settings_sceneChangeDetect,
+    h265Settings_slices,
+    h265Settings_slowPal,
+    h265Settings_spatialAdaptiveQuantization,
+    h265Settings_telecine,
+    h265Settings_temporalAdaptiveQuantization,
+    h265Settings_temporalIds,
+    h265Settings_tiles,
+    h265Settings_unregisteredSeiTimecode,
+    h265Settings_writeMp4PackagingType,
+
+    -- ** Hdr10Metadata
+    hdr10Metadata_bluePrimaryX,
+    hdr10Metadata_bluePrimaryY,
+    hdr10Metadata_greenPrimaryX,
+    hdr10Metadata_greenPrimaryY,
+    hdr10Metadata_maxContentLightLevel,
+    hdr10Metadata_maxFrameAverageLightLevel,
+    hdr10Metadata_maxLuminance,
+    hdr10Metadata_minLuminance,
+    hdr10Metadata_redPrimaryX,
+    hdr10Metadata_redPrimaryY,
+    hdr10Metadata_whitePointX,
+    hdr10Metadata_whitePointY,
+
+    -- ** Hdr10Plus
+    hdr10Plus_masteringMonitorNits,
+    hdr10Plus_targetMonitorNits,
+
+    -- ** HlsAdditionalManifest
+    hlsAdditionalManifest_manifestNameModifier,
+    hlsAdditionalManifest_selectedOutputs,
+
+    -- ** HlsCaptionLanguageMapping
+    hlsCaptionLanguageMapping_captionChannel,
+    hlsCaptionLanguageMapping_customLanguageCode,
+    hlsCaptionLanguageMapping_languageCode,
+    hlsCaptionLanguageMapping_languageDescription,
+
+    -- ** HlsEncryptionSettings
+    hlsEncryptionSettings_constantInitializationVector,
+    hlsEncryptionSettings_encryptionMethod,
+    hlsEncryptionSettings_initializationVectorInManifest,
+    hlsEncryptionSettings_offlineEncrypted,
+    hlsEncryptionSettings_spekeKeyProvider,
+    hlsEncryptionSettings_staticKeyProvider,
+    hlsEncryptionSettings_type,
+
+    -- ** HlsGroupSettings
+    hlsGroupSettings_adMarkers,
+    hlsGroupSettings_additionalManifests,
+    hlsGroupSettings_audioOnlyHeader,
+    hlsGroupSettings_baseUrl,
+    hlsGroupSettings_captionLanguageMappings,
+    hlsGroupSettings_captionLanguageSetting,
+    hlsGroupSettings_captionSegmentLengthControl,
+    hlsGroupSettings_clientCache,
+    hlsGroupSettings_codecSpecification,
+    hlsGroupSettings_destination,
+    hlsGroupSettings_destinationSettings,
+    hlsGroupSettings_directoryStructure,
+    hlsGroupSettings_encryption,
+    hlsGroupSettings_imageBasedTrickPlay,
+    hlsGroupSettings_imageBasedTrickPlaySettings,
+    hlsGroupSettings_manifestCompression,
+    hlsGroupSettings_manifestDurationFormat,
+    hlsGroupSettings_minFinalSegmentLength,
+    hlsGroupSettings_minSegmentLength,
+    hlsGroupSettings_outputSelection,
+    hlsGroupSettings_programDateTime,
+    hlsGroupSettings_programDateTimePeriod,
+    hlsGroupSettings_segmentControl,
+    hlsGroupSettings_segmentLength,
+    hlsGroupSettings_segmentLengthControl,
+    hlsGroupSettings_segmentsPerSubdirectory,
+    hlsGroupSettings_streamInfResolution,
+    hlsGroupSettings_targetDurationCompatibilityMode,
+    hlsGroupSettings_timedMetadataId3Frame,
+    hlsGroupSettings_timedMetadataId3Period,
+    hlsGroupSettings_timestampDeltaMilliseconds,
+
+    -- ** HlsImageBasedTrickPlaySettings
+    hlsImageBasedTrickPlaySettings_intervalCadence,
+    hlsImageBasedTrickPlaySettings_thumbnailHeight,
+    hlsImageBasedTrickPlaySettings_thumbnailInterval,
+    hlsImageBasedTrickPlaySettings_thumbnailWidth,
+    hlsImageBasedTrickPlaySettings_tileHeight,
+    hlsImageBasedTrickPlaySettings_tileWidth,
+
+    -- ** HlsRenditionGroupSettings
+    hlsRenditionGroupSettings_renditionGroupId,
+    hlsRenditionGroupSettings_renditionLanguageCode,
+    hlsRenditionGroupSettings_renditionName,
+
+    -- ** HlsSettings
+    hlsSettings_audioGroupId,
+    hlsSettings_audioOnlyContainer,
+    hlsSettings_audioRenditionSets,
+    hlsSettings_audioTrackType,
+    hlsSettings_descriptiveVideoServiceFlag,
+    hlsSettings_iFrameOnlyManifest,
+    hlsSettings_segmentModifier,
+
+    -- ** HopDestination
+    hopDestination_priority,
+    hopDestination_queue,
+    hopDestination_waitMinutes,
+
+    -- ** Id3Insertion
+    id3Insertion_id3,
+    id3Insertion_timecode,
+
+    -- ** ImageInserter
+    imageInserter_insertableImages,
+    imageInserter_sdrReferenceWhiteLevel,
+
+    -- ** ImscDestinationSettings
+    imscDestinationSettings_accessibility,
+    imscDestinationSettings_stylePassthrough,
+
+    -- ** Input
+    input_audioSelectorGroups,
+    input_audioSelectors,
+    input_captionSelectors,
+    input_crop,
+    input_deblockFilter,
+    input_decryptionSettings,
+    input_denoiseFilter,
+    input_dolbyVisionMetadataXml,
+    input_fileInput,
+    input_filterEnable,
+    input_filterStrength,
+    input_imageInserter,
+    input_inputClippings,
+    input_inputScanType,
+    input_position,
+    input_programNumber,
+    input_psiControl,
+    input_supplementalImps,
+    input_timecodeSource,
+    input_timecodeStart,
+    input_videoGenerator,
+    input_videoSelector,
+
+    -- ** InputClipping
+    inputClipping_endTimecode,
+    inputClipping_startTimecode,
+
+    -- ** InputDecryptionSettings
+    inputDecryptionSettings_decryptionMode,
+    inputDecryptionSettings_encryptedDecryptionKey,
+    inputDecryptionSettings_initializationVector,
+    inputDecryptionSettings_kmsKeyRegion,
+
+    -- ** InputTemplate
+    inputTemplate_audioSelectorGroups,
+    inputTemplate_audioSelectors,
+    inputTemplate_captionSelectors,
+    inputTemplate_crop,
+    inputTemplate_deblockFilter,
+    inputTemplate_denoiseFilter,
+    inputTemplate_dolbyVisionMetadataXml,
+    inputTemplate_filterEnable,
+    inputTemplate_filterStrength,
+    inputTemplate_imageInserter,
+    inputTemplate_inputClippings,
+    inputTemplate_inputScanType,
+    inputTemplate_position,
+    inputTemplate_programNumber,
+    inputTemplate_psiControl,
+    inputTemplate_timecodeSource,
+    inputTemplate_timecodeStart,
+    inputTemplate_videoSelector,
+
+    -- ** InputVideoGenerator
+    inputVideoGenerator_duration,
+
+    -- ** InsertableImage
+    insertableImage_duration,
+    insertableImage_fadeIn,
+    insertableImage_fadeOut,
+    insertableImage_height,
+    insertableImage_imageInserterInput,
+    insertableImage_imageX,
+    insertableImage_imageY,
+    insertableImage_layer,
+    insertableImage_opacity,
+    insertableImage_startTime,
+    insertableImage_width,
+
+    -- ** Job
+    job_accelerationSettings,
+    job_accelerationStatus,
+    job_arn,
+    job_billingTagsSource,
+    job_createdAt,
+    job_currentPhase,
+    job_errorCode,
+    job_errorMessage,
+    job_hopDestinations,
+    job_id,
+    job_jobPercentComplete,
+    job_jobTemplate,
+    job_messages,
+    job_outputGroupDetails,
+    job_priority,
+    job_queue,
+    job_queueTransitions,
+    job_retryCount,
+    job_simulateReservedQueue,
+    job_status,
+    job_statusUpdateInterval,
+    job_timing,
+    job_userMetadata,
+    job_role,
+    job_settings,
+
+    -- ** JobMessages
+    jobMessages_info,
+    jobMessages_warning,
+
+    -- ** JobSettings
+    jobSettings_adAvailOffset,
+    jobSettings_availBlanking,
+    jobSettings_esam,
+    jobSettings_extendedDataServices,
+    jobSettings_inputs,
+    jobSettings_kantarWatermark,
+    jobSettings_motionImageInserter,
+    jobSettings_nielsenConfiguration,
+    jobSettings_nielsenNonLinearWatermark,
+    jobSettings_outputGroups,
+    jobSettings_timecodeConfig,
+    jobSettings_timedMetadataInsertion,
+
+    -- ** JobTemplate
+    jobTemplate_accelerationSettings,
+    jobTemplate_arn,
+    jobTemplate_category,
+    jobTemplate_createdAt,
+    jobTemplate_description,
+    jobTemplate_hopDestinations,
+    jobTemplate_lastUpdated,
+    jobTemplate_priority,
+    jobTemplate_queue,
+    jobTemplate_statusUpdateInterval,
+    jobTemplate_type,
+    jobTemplate_settings,
+    jobTemplate_name,
+
+    -- ** JobTemplateSettings
+    jobTemplateSettings_adAvailOffset,
+    jobTemplateSettings_availBlanking,
+    jobTemplateSettings_esam,
+    jobTemplateSettings_extendedDataServices,
+    jobTemplateSettings_inputs,
+    jobTemplateSettings_kantarWatermark,
+    jobTemplateSettings_motionImageInserter,
+    jobTemplateSettings_nielsenConfiguration,
+    jobTemplateSettings_nielsenNonLinearWatermark,
+    jobTemplateSettings_outputGroups,
+    jobTemplateSettings_timecodeConfig,
+    jobTemplateSettings_timedMetadataInsertion,
+
+    -- ** KantarWatermarkSettings
+    kantarWatermarkSettings_channelName,
+    kantarWatermarkSettings_contentReference,
+    kantarWatermarkSettings_credentialsSecretName,
+    kantarWatermarkSettings_fileOffset,
+    kantarWatermarkSettings_kantarLicenseId,
+    kantarWatermarkSettings_kantarServerUrl,
+    kantarWatermarkSettings_logDestination,
+    kantarWatermarkSettings_metadata3,
+    kantarWatermarkSettings_metadata4,
+    kantarWatermarkSettings_metadata5,
+    kantarWatermarkSettings_metadata6,
+    kantarWatermarkSettings_metadata7,
+    kantarWatermarkSettings_metadata8,
+
+    -- ** M2tsScte35Esam
+    m2tsScte35Esam_scte35EsamPid,
+
+    -- ** M2tsSettings
+    m2tsSettings_audioBufferModel,
+    m2tsSettings_audioDuration,
+    m2tsSettings_audioFramesPerPes,
+    m2tsSettings_audioPids,
+    m2tsSettings_bitrate,
+    m2tsSettings_bufferModel,
+    m2tsSettings_dataPTSControl,
+    m2tsSettings_dvbNitSettings,
+    m2tsSettings_dvbSdtSettings,
+    m2tsSettings_dvbSubPids,
+    m2tsSettings_dvbTdtSettings,
+    m2tsSettings_dvbTeletextPid,
+    m2tsSettings_ebpAudioInterval,
+    m2tsSettings_ebpPlacement,
+    m2tsSettings_esRateInPes,
+    m2tsSettings_forceTsVideoEbpOrder,
+    m2tsSettings_fragmentTime,
+    m2tsSettings_klvMetadata,
+    m2tsSettings_maxPcrInterval,
+    m2tsSettings_minEbpInterval,
+    m2tsSettings_nielsenId3,
+    m2tsSettings_nullPacketBitrate,
+    m2tsSettings_patInterval,
+    m2tsSettings_pcrControl,
+    m2tsSettings_pcrPid,
+    m2tsSettings_pmtInterval,
+    m2tsSettings_pmtPid,
+    m2tsSettings_privateMetadataPid,
+    m2tsSettings_programNumber,
+    m2tsSettings_rateMode,
+    m2tsSettings_scte35Esam,
+    m2tsSettings_scte35Pid,
+    m2tsSettings_scte35Source,
+    m2tsSettings_segmentationMarkers,
+    m2tsSettings_segmentationStyle,
+    m2tsSettings_segmentationTime,
+    m2tsSettings_timedMetadataPid,
+    m2tsSettings_transportStreamId,
+    m2tsSettings_videoPid,
+
+    -- ** M3u8Settings
+    m3u8Settings_audioDuration,
+    m3u8Settings_audioFramesPerPes,
+    m3u8Settings_audioPids,
+    m3u8Settings_dataPTSControl,
+    m3u8Settings_maxPcrInterval,
+    m3u8Settings_nielsenId3,
+    m3u8Settings_patInterval,
+    m3u8Settings_pcrControl,
+    m3u8Settings_pcrPid,
+    m3u8Settings_pmtInterval,
+    m3u8Settings_pmtPid,
+    m3u8Settings_privateMetadataPid,
+    m3u8Settings_programNumber,
+    m3u8Settings_scte35Pid,
+    m3u8Settings_scte35Source,
+    m3u8Settings_timedMetadata,
+    m3u8Settings_timedMetadataPid,
+    m3u8Settings_transportStreamId,
+    m3u8Settings_videoPid,
+
+    -- ** MinBottomRenditionSize
+    minBottomRenditionSize_height,
+    minBottomRenditionSize_width,
+
+    -- ** MinTopRenditionSize
+    minTopRenditionSize_height,
+    minTopRenditionSize_width,
+
+    -- ** MotionImageInserter
+    motionImageInserter_framerate,
+    motionImageInserter_input,
+    motionImageInserter_insertionMode,
+    motionImageInserter_offset,
+    motionImageInserter_playback,
+    motionImageInserter_startTime,
+
+    -- ** MotionImageInsertionFramerate
+    motionImageInsertionFramerate_framerateDenominator,
+    motionImageInsertionFramerate_framerateNumerator,
+
+    -- ** MotionImageInsertionOffset
+    motionImageInsertionOffset_imageX,
+    motionImageInsertionOffset_imageY,
+
+    -- ** MovSettings
+    movSettings_clapAtom,
+    movSettings_cslgAtom,
+    movSettings_mpeg2FourCCControl,
+    movSettings_paddingControl,
+    movSettings_reference,
+
+    -- ** Mp2Settings
+    mp2Settings_bitrate,
+    mp2Settings_channels,
+    mp2Settings_sampleRate,
+
+    -- ** Mp3Settings
+    mp3Settings_bitrate,
+    mp3Settings_channels,
+    mp3Settings_rateControlMode,
+    mp3Settings_sampleRate,
+    mp3Settings_vbrQuality,
+
+    -- ** Mp4Settings
+    mp4Settings_audioDuration,
+    mp4Settings_cslgAtom,
+    mp4Settings_cttsVersion,
+    mp4Settings_freeSpaceBox,
+    mp4Settings_moovPlacement,
+    mp4Settings_mp4MajorBrand,
+
+    -- ** MpdSettings
+    mpdSettings_accessibilityCaptionHints,
+    mpdSettings_audioDuration,
+    mpdSettings_captionContainerType,
+    mpdSettings_klvMetadata,
+    mpdSettings_manifestMetadataSignaling,
+    mpdSettings_scte35Esam,
+    mpdSettings_scte35Source,
+    mpdSettings_timedMetadata,
+    mpdSettings_timedMetadataBoxVersion,
+    mpdSettings_timedMetadataSchemeIdUri,
+    mpdSettings_timedMetadataValue,
+
+    -- ** Mpeg2Settings
+    mpeg2Settings_adaptiveQuantization,
+    mpeg2Settings_bitrate,
+    mpeg2Settings_codecLevel,
+    mpeg2Settings_codecProfile,
+    mpeg2Settings_dynamicSubGop,
+    mpeg2Settings_framerateControl,
+    mpeg2Settings_framerateConversionAlgorithm,
+    mpeg2Settings_framerateDenominator,
+    mpeg2Settings_framerateNumerator,
+    mpeg2Settings_gopClosedCadence,
+    mpeg2Settings_gopSize,
+    mpeg2Settings_gopSizeUnits,
+    mpeg2Settings_hrdBufferFinalFillPercentage,
+    mpeg2Settings_hrdBufferInitialFillPercentage,
+    mpeg2Settings_hrdBufferSize,
+    mpeg2Settings_interlaceMode,
+    mpeg2Settings_intraDcPrecision,
+    mpeg2Settings_maxBitrate,
+    mpeg2Settings_minIInterval,
+    mpeg2Settings_numberBFramesBetweenReferenceFrames,
+    mpeg2Settings_parControl,
+    mpeg2Settings_parDenominator,
+    mpeg2Settings_parNumerator,
+    mpeg2Settings_qualityTuningLevel,
+    mpeg2Settings_rateControlMode,
+    mpeg2Settings_scanTypeConversionMode,
+    mpeg2Settings_sceneChangeDetect,
+    mpeg2Settings_slowPal,
+    mpeg2Settings_softness,
+    mpeg2Settings_spatialAdaptiveQuantization,
+    mpeg2Settings_syntax,
+    mpeg2Settings_telecine,
+    mpeg2Settings_temporalAdaptiveQuantization,
+
+    -- ** MsSmoothAdditionalManifest
+    msSmoothAdditionalManifest_manifestNameModifier,
+    msSmoothAdditionalManifest_selectedOutputs,
+
+    -- ** MsSmoothEncryptionSettings
+    msSmoothEncryptionSettings_spekeKeyProvider,
+
+    -- ** MsSmoothGroupSettings
+    msSmoothGroupSettings_additionalManifests,
+    msSmoothGroupSettings_audioDeduplication,
+    msSmoothGroupSettings_destination,
+    msSmoothGroupSettings_destinationSettings,
+    msSmoothGroupSettings_encryption,
+    msSmoothGroupSettings_fragmentLength,
+    msSmoothGroupSettings_fragmentLengthControl,
+    msSmoothGroupSettings_manifestEncoding,
+
+    -- ** MxfSettings
+    mxfSettings_afdSignaling,
+    mxfSettings_profile,
+    mxfSettings_xavcProfileSettings,
+
+    -- ** MxfXavcProfileSettings
+    mxfXavcProfileSettings_durationMode,
+    mxfXavcProfileSettings_maxAncDataSize,
+
+    -- ** NexGuardFileMarkerSettings
+    nexGuardFileMarkerSettings_license,
+    nexGuardFileMarkerSettings_payload,
+    nexGuardFileMarkerSettings_preset,
+    nexGuardFileMarkerSettings_strength,
+
+    -- ** NielsenConfiguration
+    nielsenConfiguration_breakoutCode,
+    nielsenConfiguration_distributorId,
+
+    -- ** NielsenNonLinearWatermarkSettings
+    nielsenNonLinearWatermarkSettings_activeWatermarkProcess,
+    nielsenNonLinearWatermarkSettings_adiFilename,
+    nielsenNonLinearWatermarkSettings_assetId,
+    nielsenNonLinearWatermarkSettings_assetName,
+    nielsenNonLinearWatermarkSettings_cbetSourceId,
+    nielsenNonLinearWatermarkSettings_episodeId,
+    nielsenNonLinearWatermarkSettings_metadataDestination,
+    nielsenNonLinearWatermarkSettings_sourceId,
+    nielsenNonLinearWatermarkSettings_sourceWatermarkStatus,
+    nielsenNonLinearWatermarkSettings_ticServerUrl,
+    nielsenNonLinearWatermarkSettings_uniqueTicPerAudioTrack,
+
+    -- ** NoiseReducer
+    noiseReducer_filter,
+    noiseReducer_filterSettings,
+    noiseReducer_spatialFilterSettings,
+    noiseReducer_temporalFilterSettings,
+
+    -- ** NoiseReducerFilterSettings
+    noiseReducerFilterSettings_strength,
+
+    -- ** NoiseReducerSpatialFilterSettings
+    noiseReducerSpatialFilterSettings_postFilterSharpenStrength,
+    noiseReducerSpatialFilterSettings_speed,
+    noiseReducerSpatialFilterSettings_strength,
+
+    -- ** NoiseReducerTemporalFilterSettings
+    noiseReducerTemporalFilterSettings_aggressiveMode,
+    noiseReducerTemporalFilterSettings_postTemporalSharpening,
+    noiseReducerTemporalFilterSettings_postTemporalSharpeningStrength,
+    noiseReducerTemporalFilterSettings_speed,
+    noiseReducerTemporalFilterSettings_strength,
+
+    -- ** OpusSettings
+    opusSettings_bitrate,
+    opusSettings_channels,
+    opusSettings_sampleRate,
+
+    -- ** Output
+    output_audioDescriptions,
+    output_captionDescriptions,
+    output_containerSettings,
+    output_extension,
+    output_nameModifier,
+    output_outputSettings,
+    output_preset,
+    output_videoDescription,
+
+    -- ** OutputChannelMapping
+    outputChannelMapping_inputChannels,
+    outputChannelMapping_inputChannelsFineTune,
+
+    -- ** OutputDetail
+    outputDetail_durationInMs,
+    outputDetail_videoDetails,
+
+    -- ** OutputGroup
+    outputGroup_automatedEncodingSettings,
+    outputGroup_customName,
+    outputGroup_name,
+    outputGroup_outputGroupSettings,
+    outputGroup_outputs,
+
+    -- ** OutputGroupDetail
+    outputGroupDetail_outputDetails,
+
+    -- ** OutputGroupSettings
+    outputGroupSettings_cmafGroupSettings,
+    outputGroupSettings_dashIsoGroupSettings,
+    outputGroupSettings_fileGroupSettings,
+    outputGroupSettings_hlsGroupSettings,
+    outputGroupSettings_msSmoothGroupSettings,
+    outputGroupSettings_type,
+
+    -- ** OutputSettings
+    outputSettings_hlsSettings,
+
+    -- ** PartnerWatermarking
+    partnerWatermarking_nexguardFileMarkerSettings,
+
+    -- ** Policy
+    policy_httpInputs,
+    policy_httpsInputs,
+    policy_s3Inputs,
+
+    -- ** Preset
+    preset_arn,
+    preset_category,
+    preset_createdAt,
+    preset_description,
+    preset_lastUpdated,
+    preset_type,
+    preset_settings,
+    preset_name,
+
+    -- ** PresetSettings
+    presetSettings_audioDescriptions,
+    presetSettings_captionDescriptions,
+    presetSettings_containerSettings,
+    presetSettings_videoDescription,
+
+    -- ** ProresSettings
+    proresSettings_chromaSampling,
+    proresSettings_codecProfile,
+    proresSettings_framerateControl,
+    proresSettings_framerateConversionAlgorithm,
+    proresSettings_framerateDenominator,
+    proresSettings_framerateNumerator,
+    proresSettings_interlaceMode,
+    proresSettings_parControl,
+    proresSettings_parDenominator,
+    proresSettings_parNumerator,
+    proresSettings_scanTypeConversionMode,
+    proresSettings_slowPal,
+    proresSettings_telecine,
+
+    -- ** Queue
+    queue_arn,
+    queue_createdAt,
+    queue_description,
+    queue_lastUpdated,
+    queue_pricingPlan,
+    queue_progressingJobsCount,
+    queue_reservationPlan,
+    queue_status,
+    queue_submittedJobsCount,
+    queue_type,
+    queue_name,
+
+    -- ** QueueTransition
+    queueTransition_destinationQueue,
+    queueTransition_sourceQueue,
+    queueTransition_timestamp,
+
+    -- ** Rectangle
+    rectangle_height,
+    rectangle_width,
+    rectangle_x,
+    rectangle_y,
+
+    -- ** RemixSettings
+    remixSettings_channelMapping,
+    remixSettings_channelsIn,
+    remixSettings_channelsOut,
+
+    -- ** ReservationPlan
+    reservationPlan_commitment,
+    reservationPlan_expiresAt,
+    reservationPlan_purchasedAt,
+    reservationPlan_renewalType,
+    reservationPlan_reservedSlots,
+    reservationPlan_status,
+
+    -- ** ReservationPlanSettings
+    reservationPlanSettings_commitment,
+    reservationPlanSettings_reservedSlots,
+    reservationPlanSettings_renewalType,
+
+    -- ** ResourceTags
+    resourceTags_arn,
+    resourceTags_tags,
+
+    -- ** S3DestinationAccessControl
+    s3DestinationAccessControl_cannedAcl,
+
+    -- ** S3DestinationSettings
+    s3DestinationSettings_accessControl,
+    s3DestinationSettings_encryption,
+
+    -- ** S3EncryptionSettings
+    s3EncryptionSettings_encryptionType,
+    s3EncryptionSettings_kmsEncryptionContext,
+    s3EncryptionSettings_kmsKeyArn,
+
+    -- ** SccDestinationSettings
+    sccDestinationSettings_framerate,
+
+    -- ** SpekeKeyProvider
+    spekeKeyProvider_certificateArn,
+    spekeKeyProvider_resourceId,
+    spekeKeyProvider_systemIds,
+    spekeKeyProvider_url,
+
+    -- ** SpekeKeyProviderCmaf
+    spekeKeyProviderCmaf_certificateArn,
+    spekeKeyProviderCmaf_dashSignaledSystemIds,
+    spekeKeyProviderCmaf_hlsSignaledSystemIds,
+    spekeKeyProviderCmaf_resourceId,
+    spekeKeyProviderCmaf_url,
+
+    -- ** SrtDestinationSettings
+    srtDestinationSettings_stylePassthrough,
+
+    -- ** StaticKeyProvider
+    staticKeyProvider_keyFormat,
+    staticKeyProvider_keyFormatVersions,
+    staticKeyProvider_staticKeyValue,
+    staticKeyProvider_url,
+
+    -- ** TeletextDestinationSettings
+    teletextDestinationSettings_pageNumber,
+    teletextDestinationSettings_pageTypes,
+
+    -- ** TeletextSourceSettings
+    teletextSourceSettings_pageNumber,
+
+    -- ** TimecodeBurnin
+    timecodeBurnin_fontSize,
+    timecodeBurnin_position,
+    timecodeBurnin_prefix,
+
+    -- ** TimecodeConfig
+    timecodeConfig_anchor,
+    timecodeConfig_source,
+    timecodeConfig_start,
+    timecodeConfig_timestampOffset,
+
+    -- ** TimedMetadataInsertion
+    timedMetadataInsertion_id3Insertions,
+
+    -- ** Timing
+    timing_finishTime,
+    timing_startTime,
+    timing_submitTime,
+
+    -- ** TrackSourceSettings
+    trackSourceSettings_trackNumber,
+
+    -- ** TtmlDestinationSettings
+    ttmlDestinationSettings_stylePassthrough,
+
+    -- ** Vc3Settings
+    vc3Settings_framerateControl,
+    vc3Settings_framerateConversionAlgorithm,
+    vc3Settings_framerateDenominator,
+    vc3Settings_framerateNumerator,
+    vc3Settings_interlaceMode,
+    vc3Settings_scanTypeConversionMode,
+    vc3Settings_slowPal,
+    vc3Settings_telecine,
+    vc3Settings_vc3Class,
+
+    -- ** VideoCodecSettings
+    videoCodecSettings_av1Settings,
+    videoCodecSettings_avcIntraSettings,
+    videoCodecSettings_codec,
+    videoCodecSettings_frameCaptureSettings,
+    videoCodecSettings_h264Settings,
+    videoCodecSettings_h265Settings,
+    videoCodecSettings_mpeg2Settings,
+    videoCodecSettings_proresSettings,
+    videoCodecSettings_vc3Settings,
+    videoCodecSettings_vp8Settings,
+    videoCodecSettings_vp9Settings,
+    videoCodecSettings_xavcSettings,
+
+    -- ** VideoDescription
+    videoDescription_afdSignaling,
+    videoDescription_antiAlias,
+    videoDescription_codecSettings,
+    videoDescription_colorMetadata,
+    videoDescription_crop,
+    videoDescription_dropFrameTimecode,
+    videoDescription_fixedAfd,
+    videoDescription_height,
+    videoDescription_position,
+    videoDescription_respondToAfd,
+    videoDescription_scalingBehavior,
+    videoDescription_sharpness,
+    videoDescription_timecodeInsertion,
+    videoDescription_videoPreprocessors,
+    videoDescription_width,
+
+    -- ** VideoDetail
+    videoDetail_heightInPx,
+    videoDetail_widthInPx,
+
+    -- ** VideoPreprocessor
+    videoPreprocessor_colorCorrector,
+    videoPreprocessor_deinterlacer,
+    videoPreprocessor_dolbyVision,
+    videoPreprocessor_hdr10Plus,
+    videoPreprocessor_imageInserter,
+    videoPreprocessor_noiseReducer,
+    videoPreprocessor_partnerWatermarking,
+    videoPreprocessor_timecodeBurnin,
+
+    -- ** VideoSelector
+    videoSelector_alphaBehavior,
+    videoSelector_colorSpace,
+    videoSelector_colorSpaceUsage,
+    videoSelector_embeddedTimecodeOverride,
+    videoSelector_hdr10Metadata,
+    videoSelector_padVideo,
+    videoSelector_pid,
+    videoSelector_programNumber,
+    videoSelector_rotate,
+    videoSelector_sampleRange,
+
+    -- ** VorbisSettings
+    vorbisSettings_channels,
+    vorbisSettings_sampleRate,
+    vorbisSettings_vbrQuality,
+
+    -- ** Vp8Settings
+    vp8Settings_bitrate,
+    vp8Settings_framerateControl,
+    vp8Settings_framerateConversionAlgorithm,
+    vp8Settings_framerateDenominator,
+    vp8Settings_framerateNumerator,
+    vp8Settings_gopSize,
+    vp8Settings_hrdBufferSize,
+    vp8Settings_maxBitrate,
+    vp8Settings_parControl,
+    vp8Settings_parDenominator,
+    vp8Settings_parNumerator,
+    vp8Settings_qualityTuningLevel,
+    vp8Settings_rateControlMode,
+
+    -- ** Vp9Settings
+    vp9Settings_bitrate,
+    vp9Settings_framerateControl,
+    vp9Settings_framerateConversionAlgorithm,
+    vp9Settings_framerateDenominator,
+    vp9Settings_framerateNumerator,
+    vp9Settings_gopSize,
+    vp9Settings_hrdBufferSize,
+    vp9Settings_maxBitrate,
+    vp9Settings_parControl,
+    vp9Settings_parDenominator,
+    vp9Settings_parNumerator,
+    vp9Settings_qualityTuningLevel,
+    vp9Settings_rateControlMode,
+
+    -- ** WavSettings
+    wavSettings_bitDepth,
+    wavSettings_channels,
+    wavSettings_format,
+    wavSettings_sampleRate,
+
+    -- ** WebvttDestinationSettings
+    webvttDestinationSettings_accessibility,
+    webvttDestinationSettings_stylePassthrough,
+
+    -- ** WebvttHlsSourceSettings
+    webvttHlsSourceSettings_renditionGroupId,
+    webvttHlsSourceSettings_renditionLanguageCode,
+    webvttHlsSourceSettings_renditionName,
+
+    -- ** Xavc4kIntraCbgProfileSettings
+    xavc4kIntraCbgProfileSettings_xavcClass,
+
+    -- ** Xavc4kIntraVbrProfileSettings
+    xavc4kIntraVbrProfileSettings_xavcClass,
+
+    -- ** Xavc4kProfileSettings
+    xavc4kProfileSettings_bitrateClass,
+    xavc4kProfileSettings_codecProfile,
+    xavc4kProfileSettings_flickerAdaptiveQuantization,
+    xavc4kProfileSettings_gopBReference,
+    xavc4kProfileSettings_gopClosedCadence,
+    xavc4kProfileSettings_hrdBufferSize,
+    xavc4kProfileSettings_qualityTuningLevel,
+    xavc4kProfileSettings_slices,
+
+    -- ** XavcHdIntraCbgProfileSettings
+    xavcHdIntraCbgProfileSettings_xavcClass,
+
+    -- ** XavcHdProfileSettings
+    xavcHdProfileSettings_bitrateClass,
+    xavcHdProfileSettings_flickerAdaptiveQuantization,
+    xavcHdProfileSettings_gopBReference,
+    xavcHdProfileSettings_gopClosedCadence,
+    xavcHdProfileSettings_hrdBufferSize,
+    xavcHdProfileSettings_interlaceMode,
+    xavcHdProfileSettings_qualityTuningLevel,
+    xavcHdProfileSettings_slices,
+    xavcHdProfileSettings_telecine,
+
+    -- ** XavcSettings
+    xavcSettings_adaptiveQuantization,
+    xavcSettings_entropyEncoding,
+    xavcSettings_framerateControl,
+    xavcSettings_framerateConversionAlgorithm,
+    xavcSettings_framerateDenominator,
+    xavcSettings_framerateNumerator,
+    xavcSettings_profile,
+    xavcSettings_slowPal,
+    xavcSettings_softness,
+    xavcSettings_spatialAdaptiveQuantization,
+    xavcSettings_temporalAdaptiveQuantization,
+    xavcSettings_xavc4kIntraCbgProfileSettings,
+    xavcSettings_xavc4kIntraVbrProfileSettings,
+    xavcSettings_xavc4kProfileSettings,
+    xavcSettings_xavcHdIntraCbgProfileSettings,
+    xavcSettings_xavcHdProfileSettings,
+  )
+where
+
+import Amazonka.MediaConvert.AssociateCertificate
+import Amazonka.MediaConvert.CancelJob
+import Amazonka.MediaConvert.CreateJob
+import Amazonka.MediaConvert.CreateJobTemplate
+import Amazonka.MediaConvert.CreatePreset
+import Amazonka.MediaConvert.CreateQueue
+import Amazonka.MediaConvert.DeleteJobTemplate
+import Amazonka.MediaConvert.DeletePolicy
+import Amazonka.MediaConvert.DeletePreset
+import Amazonka.MediaConvert.DeleteQueue
+import Amazonka.MediaConvert.DescribeEndpoints
+import Amazonka.MediaConvert.DisassociateCertificate
+import Amazonka.MediaConvert.GetJob
+import Amazonka.MediaConvert.GetJobTemplate
+import Amazonka.MediaConvert.GetPolicy
+import Amazonka.MediaConvert.GetPreset
+import Amazonka.MediaConvert.GetQueue
+import Amazonka.MediaConvert.ListJobTemplates
+import Amazonka.MediaConvert.ListJobs
+import Amazonka.MediaConvert.ListPresets
+import Amazonka.MediaConvert.ListQueues
+import Amazonka.MediaConvert.ListTagsForResource
+import Amazonka.MediaConvert.PutPolicy
+import Amazonka.MediaConvert.TagResource
+import Amazonka.MediaConvert.Types.AacSettings
+import Amazonka.MediaConvert.Types.Ac3Settings
+import Amazonka.MediaConvert.Types.AccelerationSettings
+import Amazonka.MediaConvert.Types.AiffSettings
+import Amazonka.MediaConvert.Types.AllowedRenditionSize
+import Amazonka.MediaConvert.Types.AncillarySourceSettings
+import Amazonka.MediaConvert.Types.AudioChannelTaggingSettings
+import Amazonka.MediaConvert.Types.AudioCodecSettings
+import Amazonka.MediaConvert.Types.AudioDescription
+import Amazonka.MediaConvert.Types.AudioNormalizationSettings
+import Amazonka.MediaConvert.Types.AudioSelector
+import Amazonka.MediaConvert.Types.AudioSelectorGroup
+import Amazonka.MediaConvert.Types.AutomatedAbrRule
+import Amazonka.MediaConvert.Types.AutomatedAbrSettings
+import Amazonka.MediaConvert.Types.AutomatedEncodingSettings
+import Amazonka.MediaConvert.Types.Av1QvbrSettings
+import Amazonka.MediaConvert.Types.Av1Settings
+import Amazonka.MediaConvert.Types.AvailBlanking
+import Amazonka.MediaConvert.Types.AvcIntraSettings
+import Amazonka.MediaConvert.Types.AvcIntraUhdSettings
+import Amazonka.MediaConvert.Types.BurninDestinationSettings
+import Amazonka.MediaConvert.Types.CaptionDescription
+import Amazonka.MediaConvert.Types.CaptionDescriptionPreset
+import Amazonka.MediaConvert.Types.CaptionDestinationSettings
+import Amazonka.MediaConvert.Types.CaptionSelector
+import Amazonka.MediaConvert.Types.CaptionSourceFramerate
+import Amazonka.MediaConvert.Types.CaptionSourceSettings
+import Amazonka.MediaConvert.Types.ChannelMapping
+import Amazonka.MediaConvert.Types.CmafAdditionalManifest
+import Amazonka.MediaConvert.Types.CmafEncryptionSettings
+import Amazonka.MediaConvert.Types.CmafGroupSettings
+import Amazonka.MediaConvert.Types.CmafImageBasedTrickPlaySettings
+import Amazonka.MediaConvert.Types.CmfcSettings
+import Amazonka.MediaConvert.Types.ColorCorrector
+import Amazonka.MediaConvert.Types.ContainerSettings
+import Amazonka.MediaConvert.Types.DashAdditionalManifest
+import Amazonka.MediaConvert.Types.DashIsoEncryptionSettings
+import Amazonka.MediaConvert.Types.DashIsoGroupSettings
+import Amazonka.MediaConvert.Types.DashIsoImageBasedTrickPlaySettings
+import Amazonka.MediaConvert.Types.Deinterlacer
+import Amazonka.MediaConvert.Types.DestinationSettings
+import Amazonka.MediaConvert.Types.DolbyVision
+import Amazonka.MediaConvert.Types.DolbyVisionLevel6Metadata
+import Amazonka.MediaConvert.Types.DvbNitSettings
+import Amazonka.MediaConvert.Types.DvbSdtSettings
+import Amazonka.MediaConvert.Types.DvbSubDestinationSettings
+import Amazonka.MediaConvert.Types.DvbSubSourceSettings
+import Amazonka.MediaConvert.Types.DvbTdtSettings
+import Amazonka.MediaConvert.Types.Eac3AtmosSettings
+import Amazonka.MediaConvert.Types.Eac3Settings
+import Amazonka.MediaConvert.Types.EmbeddedDestinationSettings
+import Amazonka.MediaConvert.Types.EmbeddedSourceSettings
+import Amazonka.MediaConvert.Types.Endpoint
+import Amazonka.MediaConvert.Types.EsamManifestConfirmConditionNotification
+import Amazonka.MediaConvert.Types.EsamSettings
+import Amazonka.MediaConvert.Types.EsamSignalProcessingNotification
+import Amazonka.MediaConvert.Types.ExtendedDataServices
+import Amazonka.MediaConvert.Types.F4vSettings
+import Amazonka.MediaConvert.Types.FileGroupSettings
+import Amazonka.MediaConvert.Types.FileSourceSettings
+import Amazonka.MediaConvert.Types.ForceIncludeRenditionSize
+import Amazonka.MediaConvert.Types.FrameCaptureSettings
+import Amazonka.MediaConvert.Types.H264QvbrSettings
+import Amazonka.MediaConvert.Types.H264Settings
+import Amazonka.MediaConvert.Types.H265QvbrSettings
+import Amazonka.MediaConvert.Types.H265Settings
+import Amazonka.MediaConvert.Types.Hdr10Metadata
+import Amazonka.MediaConvert.Types.Hdr10Plus
+import Amazonka.MediaConvert.Types.HlsAdditionalManifest
+import Amazonka.MediaConvert.Types.HlsCaptionLanguageMapping
+import Amazonka.MediaConvert.Types.HlsEncryptionSettings
+import Amazonka.MediaConvert.Types.HlsGroupSettings
+import Amazonka.MediaConvert.Types.HlsImageBasedTrickPlaySettings
+import Amazonka.MediaConvert.Types.HlsRenditionGroupSettings
+import Amazonka.MediaConvert.Types.HlsSettings
+import Amazonka.MediaConvert.Types.HopDestination
+import Amazonka.MediaConvert.Types.Id3Insertion
+import Amazonka.MediaConvert.Types.ImageInserter
+import Amazonka.MediaConvert.Types.ImscDestinationSettings
+import Amazonka.MediaConvert.Types.Input
+import Amazonka.MediaConvert.Types.InputClipping
+import Amazonka.MediaConvert.Types.InputDecryptionSettings
+import Amazonka.MediaConvert.Types.InputTemplate
+import Amazonka.MediaConvert.Types.InputVideoGenerator
+import Amazonka.MediaConvert.Types.InsertableImage
+import Amazonka.MediaConvert.Types.Job
+import Amazonka.MediaConvert.Types.JobMessages
+import Amazonka.MediaConvert.Types.JobSettings
+import Amazonka.MediaConvert.Types.JobTemplate
+import Amazonka.MediaConvert.Types.JobTemplateSettings
+import Amazonka.MediaConvert.Types.KantarWatermarkSettings
+import Amazonka.MediaConvert.Types.M2tsScte35Esam
+import Amazonka.MediaConvert.Types.M2tsSettings
+import Amazonka.MediaConvert.Types.M3u8Settings
+import Amazonka.MediaConvert.Types.MinBottomRenditionSize
+import Amazonka.MediaConvert.Types.MinTopRenditionSize
+import Amazonka.MediaConvert.Types.MotionImageInserter
+import Amazonka.MediaConvert.Types.MotionImageInsertionFramerate
+import Amazonka.MediaConvert.Types.MotionImageInsertionOffset
+import Amazonka.MediaConvert.Types.MovSettings
+import Amazonka.MediaConvert.Types.Mp2Settings
+import Amazonka.MediaConvert.Types.Mp3Settings
+import Amazonka.MediaConvert.Types.Mp4Settings
+import Amazonka.MediaConvert.Types.MpdSettings
+import Amazonka.MediaConvert.Types.Mpeg2Settings
+import Amazonka.MediaConvert.Types.MsSmoothAdditionalManifest
+import Amazonka.MediaConvert.Types.MsSmoothEncryptionSettings
+import Amazonka.MediaConvert.Types.MsSmoothGroupSettings
+import Amazonka.MediaConvert.Types.MxfSettings
+import Amazonka.MediaConvert.Types.MxfXavcProfileSettings
+import Amazonka.MediaConvert.Types.NexGuardFileMarkerSettings
+import Amazonka.MediaConvert.Types.NielsenConfiguration
+import Amazonka.MediaConvert.Types.NielsenNonLinearWatermarkSettings
+import Amazonka.MediaConvert.Types.NoiseReducer
+import Amazonka.MediaConvert.Types.NoiseReducerFilterSettings
+import Amazonka.MediaConvert.Types.NoiseReducerSpatialFilterSettings
+import Amazonka.MediaConvert.Types.NoiseReducerTemporalFilterSettings
+import Amazonka.MediaConvert.Types.OpusSettings
+import Amazonka.MediaConvert.Types.Output
+import Amazonka.MediaConvert.Types.OutputChannelMapping
+import Amazonka.MediaConvert.Types.OutputDetail
+import Amazonka.MediaConvert.Types.OutputGroup
+import Amazonka.MediaConvert.Types.OutputGroupDetail
+import Amazonka.MediaConvert.Types.OutputGroupSettings
+import Amazonka.MediaConvert.Types.OutputSettings
+import Amazonka.MediaConvert.Types.PartnerWatermarking
+import Amazonka.MediaConvert.Types.Policy
+import Amazonka.MediaConvert.Types.Preset
+import Amazonka.MediaConvert.Types.PresetSettings
+import Amazonka.MediaConvert.Types.ProresSettings
+import Amazonka.MediaConvert.Types.Queue
+import Amazonka.MediaConvert.Types.QueueTransition
+import Amazonka.MediaConvert.Types.Rectangle
+import Amazonka.MediaConvert.Types.RemixSettings
+import Amazonka.MediaConvert.Types.ReservationPlan
+import Amazonka.MediaConvert.Types.ReservationPlanSettings
+import Amazonka.MediaConvert.Types.ResourceTags
+import Amazonka.MediaConvert.Types.S3DestinationAccessControl
+import Amazonka.MediaConvert.Types.S3DestinationSettings
+import Amazonka.MediaConvert.Types.S3EncryptionSettings
+import Amazonka.MediaConvert.Types.SccDestinationSettings
+import Amazonka.MediaConvert.Types.SpekeKeyProvider
+import Amazonka.MediaConvert.Types.SpekeKeyProviderCmaf
+import Amazonka.MediaConvert.Types.SrtDestinationSettings
+import Amazonka.MediaConvert.Types.StaticKeyProvider
+import Amazonka.MediaConvert.Types.TeletextDestinationSettings
+import Amazonka.MediaConvert.Types.TeletextSourceSettings
+import Amazonka.MediaConvert.Types.TimecodeBurnin
+import Amazonka.MediaConvert.Types.TimecodeConfig
+import Amazonka.MediaConvert.Types.TimedMetadataInsertion
+import Amazonka.MediaConvert.Types.Timing
+import Amazonka.MediaConvert.Types.TrackSourceSettings
+import Amazonka.MediaConvert.Types.TtmlDestinationSettings
+import Amazonka.MediaConvert.Types.Vc3Settings
+import Amazonka.MediaConvert.Types.VideoCodecSettings
+import Amazonka.MediaConvert.Types.VideoDescription
+import Amazonka.MediaConvert.Types.VideoDetail
+import Amazonka.MediaConvert.Types.VideoPreprocessor
+import Amazonka.MediaConvert.Types.VideoSelector
+import Amazonka.MediaConvert.Types.VorbisSettings
+import Amazonka.MediaConvert.Types.Vp8Settings
+import Amazonka.MediaConvert.Types.Vp9Settings
+import Amazonka.MediaConvert.Types.WavSettings
+import Amazonka.MediaConvert.Types.WebvttDestinationSettings
+import Amazonka.MediaConvert.Types.WebvttHlsSourceSettings
+import Amazonka.MediaConvert.Types.Xavc4kIntraCbgProfileSettings
+import Amazonka.MediaConvert.Types.Xavc4kIntraVbrProfileSettings
+import Amazonka.MediaConvert.Types.Xavc4kProfileSettings
+import Amazonka.MediaConvert.Types.XavcHdIntraCbgProfileSettings
+import Amazonka.MediaConvert.Types.XavcHdProfileSettings
+import Amazonka.MediaConvert.Types.XavcSettings
+import Amazonka.MediaConvert.UntagResource
+import Amazonka.MediaConvert.UpdateJobTemplate
+import Amazonka.MediaConvert.UpdatePreset
+import Amazonka.MediaConvert.UpdateQueue
diff --git a/gen/Amazonka/MediaConvert/ListJobTemplates.hs b/gen/Amazonka/MediaConvert/ListJobTemplates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/ListJobTemplates.hs
@@ -0,0 +1,274 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.ListJobTemplates
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve a JSON array of up to twenty of your job templates. This will
+-- return the templates themselves, not just a list of them. To retrieve
+-- the next twenty templates, use the nextToken string returned with the
+-- array
+--
+-- This operation returns paginated results.
+module Amazonka.MediaConvert.ListJobTemplates
+  ( -- * Creating a Request
+    ListJobTemplates (..),
+    newListJobTemplates,
+
+    -- * Request Lenses
+    listJobTemplates_category,
+    listJobTemplates_listBy,
+    listJobTemplates_maxResults,
+    listJobTemplates_nextToken,
+    listJobTemplates_order,
+
+    -- * Destructuring the Response
+    ListJobTemplatesResponse (..),
+    newListJobTemplatesResponse,
+
+    -- * Response Lenses
+    listJobTemplatesResponse_jobTemplates,
+    listJobTemplatesResponse_nextToken,
+    listJobTemplatesResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListJobTemplates' smart constructor.
+data ListJobTemplates = ListJobTemplates'
+  { -- | Optionally, specify a job template category to limit responses to only
+    -- job templates from that category.
+    category :: Prelude.Maybe Prelude.Text,
+    -- | Optional. When you request a list of job templates, you can choose to
+    -- list them alphabetically by NAME or chronologically by CREATION_DATE. If
+    -- you don\'t specify, the service will list them by name.
+    listBy :: Prelude.Maybe JobTemplateListBy,
+    -- | Optional. Number of job templates, up to twenty, that will be returned
+    -- at one time.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Use this string, provided with the response to a previous request, to
+    -- request the next batch of job templates.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Optional. When you request lists of resources, you can specify whether
+    -- they are sorted in ASCENDING or DESCENDING order. Default varies by
+    -- resource.
+    order :: Prelude.Maybe Order
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListJobTemplates' 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:
+--
+-- 'category', 'listJobTemplates_category' - Optionally, specify a job template category to limit responses to only
+-- job templates from that category.
+--
+-- 'listBy', 'listJobTemplates_listBy' - Optional. When you request a list of job templates, you can choose to
+-- list them alphabetically by NAME or chronologically by CREATION_DATE. If
+-- you don\'t specify, the service will list them by name.
+--
+-- 'maxResults', 'listJobTemplates_maxResults' - Optional. Number of job templates, up to twenty, that will be returned
+-- at one time.
+--
+-- 'nextToken', 'listJobTemplates_nextToken' - Use this string, provided with the response to a previous request, to
+-- request the next batch of job templates.
+--
+-- 'order', 'listJobTemplates_order' - Optional. When you request lists of resources, you can specify whether
+-- they are sorted in ASCENDING or DESCENDING order. Default varies by
+-- resource.
+newListJobTemplates ::
+  ListJobTemplates
+newListJobTemplates =
+  ListJobTemplates'
+    { category = Prelude.Nothing,
+      listBy = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      order = Prelude.Nothing
+    }
+
+-- | Optionally, specify a job template category to limit responses to only
+-- job templates from that category.
+listJobTemplates_category :: Lens.Lens' ListJobTemplates (Prelude.Maybe Prelude.Text)
+listJobTemplates_category = Lens.lens (\ListJobTemplates' {category} -> category) (\s@ListJobTemplates' {} a -> s {category = a} :: ListJobTemplates)
+
+-- | Optional. When you request a list of job templates, you can choose to
+-- list them alphabetically by NAME or chronologically by CREATION_DATE. If
+-- you don\'t specify, the service will list them by name.
+listJobTemplates_listBy :: Lens.Lens' ListJobTemplates (Prelude.Maybe JobTemplateListBy)
+listJobTemplates_listBy = Lens.lens (\ListJobTemplates' {listBy} -> listBy) (\s@ListJobTemplates' {} a -> s {listBy = a} :: ListJobTemplates)
+
+-- | Optional. Number of job templates, up to twenty, that will be returned
+-- at one time.
+listJobTemplates_maxResults :: Lens.Lens' ListJobTemplates (Prelude.Maybe Prelude.Natural)
+listJobTemplates_maxResults = Lens.lens (\ListJobTemplates' {maxResults} -> maxResults) (\s@ListJobTemplates' {} a -> s {maxResults = a} :: ListJobTemplates)
+
+-- | Use this string, provided with the response to a previous request, to
+-- request the next batch of job templates.
+listJobTemplates_nextToken :: Lens.Lens' ListJobTemplates (Prelude.Maybe Prelude.Text)
+listJobTemplates_nextToken = Lens.lens (\ListJobTemplates' {nextToken} -> nextToken) (\s@ListJobTemplates' {} a -> s {nextToken = a} :: ListJobTemplates)
+
+-- | Optional. When you request lists of resources, you can specify whether
+-- they are sorted in ASCENDING or DESCENDING order. Default varies by
+-- resource.
+listJobTemplates_order :: Lens.Lens' ListJobTemplates (Prelude.Maybe Order)
+listJobTemplates_order = Lens.lens (\ListJobTemplates' {order} -> order) (\s@ListJobTemplates' {} a -> s {order = a} :: ListJobTemplates)
+
+instance Core.AWSPager ListJobTemplates where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listJobTemplatesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listJobTemplatesResponse_jobTemplates
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listJobTemplates_nextToken
+          Lens..~ rs
+          Lens.^? listJobTemplatesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListJobTemplates where
+  type
+    AWSResponse ListJobTemplates =
+      ListJobTemplatesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListJobTemplatesResponse'
+            Prelude.<$> (x Data..?> "jobTemplates" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListJobTemplates where
+  hashWithSalt _salt ListJobTemplates' {..} =
+    _salt
+      `Prelude.hashWithSalt` category
+      `Prelude.hashWithSalt` listBy
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` order
+
+instance Prelude.NFData ListJobTemplates where
+  rnf ListJobTemplates' {..} =
+    Prelude.rnf category
+      `Prelude.seq` Prelude.rnf listBy
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf order
+
+instance Data.ToHeaders ListJobTemplates where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListJobTemplates where
+  toPath = Prelude.const "/2017-08-29/jobTemplates"
+
+instance Data.ToQuery ListJobTemplates where
+  toQuery ListJobTemplates' {..} =
+    Prelude.mconcat
+      [ "category" Data.=: category,
+        "listBy" Data.=: listBy,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "order" Data.=: order
+      ]
+
+-- | /See:/ 'newListJobTemplatesResponse' smart constructor.
+data ListJobTemplatesResponse = ListJobTemplatesResponse'
+  { -- | List of Job templates.
+    jobTemplates :: Prelude.Maybe [JobTemplate],
+    -- | Use this string to request the next batch of job templates.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListJobTemplatesResponse' 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:
+--
+-- 'jobTemplates', 'listJobTemplatesResponse_jobTemplates' - List of Job templates.
+--
+-- 'nextToken', 'listJobTemplatesResponse_nextToken' - Use this string to request the next batch of job templates.
+--
+-- 'httpStatus', 'listJobTemplatesResponse_httpStatus' - The response's http status code.
+newListJobTemplatesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListJobTemplatesResponse
+newListJobTemplatesResponse pHttpStatus_ =
+  ListJobTemplatesResponse'
+    { jobTemplates =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | List of Job templates.
+listJobTemplatesResponse_jobTemplates :: Lens.Lens' ListJobTemplatesResponse (Prelude.Maybe [JobTemplate])
+listJobTemplatesResponse_jobTemplates = Lens.lens (\ListJobTemplatesResponse' {jobTemplates} -> jobTemplates) (\s@ListJobTemplatesResponse' {} a -> s {jobTemplates = a} :: ListJobTemplatesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use this string to request the next batch of job templates.
+listJobTemplatesResponse_nextToken :: Lens.Lens' ListJobTemplatesResponse (Prelude.Maybe Prelude.Text)
+listJobTemplatesResponse_nextToken = Lens.lens (\ListJobTemplatesResponse' {nextToken} -> nextToken) (\s@ListJobTemplatesResponse' {} a -> s {nextToken = a} :: ListJobTemplatesResponse)
+
+-- | The response's http status code.
+listJobTemplatesResponse_httpStatus :: Lens.Lens' ListJobTemplatesResponse Prelude.Int
+listJobTemplatesResponse_httpStatus = Lens.lens (\ListJobTemplatesResponse' {httpStatus} -> httpStatus) (\s@ListJobTemplatesResponse' {} a -> s {httpStatus = a} :: ListJobTemplatesResponse)
+
+instance Prelude.NFData ListJobTemplatesResponse where
+  rnf ListJobTemplatesResponse' {..} =
+    Prelude.rnf jobTemplates
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/ListJobs.hs b/gen/Amazonka/MediaConvert/ListJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/ListJobs.hs
@@ -0,0 +1,266 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.ListJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve a JSON array of up to twenty of your most recently created
+-- jobs. This array includes in-process, completed, and errored jobs. This
+-- will return the jobs themselves, not just a list of the jobs. To
+-- retrieve the twenty next most recent jobs, use the nextToken string
+-- returned with the array.
+--
+-- This operation returns paginated results.
+module Amazonka.MediaConvert.ListJobs
+  ( -- * Creating a Request
+    ListJobs (..),
+    newListJobs,
+
+    -- * Request Lenses
+    listJobs_maxResults,
+    listJobs_nextToken,
+    listJobs_order,
+    listJobs_queue,
+    listJobs_status,
+
+    -- * Destructuring the Response
+    ListJobsResponse (..),
+    newListJobsResponse,
+
+    -- * Response Lenses
+    listJobsResponse_jobs,
+    listJobsResponse_nextToken,
+    listJobsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListJobs' smart constructor.
+data ListJobs = ListJobs'
+  { -- | Optional. Number of jobs, up to twenty, that will be returned at one
+    -- time.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Use this string, provided with the response to a previous
+    -- request, to request the next batch of jobs.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Optional. When you request lists of resources, you can specify whether
+    -- they are sorted in ASCENDING or DESCENDING order. Default varies by
+    -- resource.
+    order :: Prelude.Maybe Order,
+    -- | Optional. Provide a queue name to get back only jobs from that queue.
+    queue :: Prelude.Maybe Prelude.Text,
+    -- | Optional. A job\'s status can be SUBMITTED, PROGRESSING, COMPLETE,
+    -- CANCELED, or ERROR.
+    status :: Prelude.Maybe JobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListJobs' 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:
+--
+-- 'maxResults', 'listJobs_maxResults' - Optional. Number of jobs, up to twenty, that will be returned at one
+-- time.
+--
+-- 'nextToken', 'listJobs_nextToken' - Optional. Use this string, provided with the response to a previous
+-- request, to request the next batch of jobs.
+--
+-- 'order', 'listJobs_order' - Optional. When you request lists of resources, you can specify whether
+-- they are sorted in ASCENDING or DESCENDING order. Default varies by
+-- resource.
+--
+-- 'queue', 'listJobs_queue' - Optional. Provide a queue name to get back only jobs from that queue.
+--
+-- 'status', 'listJobs_status' - Optional. A job\'s status can be SUBMITTED, PROGRESSING, COMPLETE,
+-- CANCELED, or ERROR.
+newListJobs ::
+  ListJobs
+newListJobs =
+  ListJobs'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      order = Prelude.Nothing,
+      queue = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | Optional. Number of jobs, up to twenty, that will be returned at one
+-- time.
+listJobs_maxResults :: Lens.Lens' ListJobs (Prelude.Maybe Prelude.Natural)
+listJobs_maxResults = Lens.lens (\ListJobs' {maxResults} -> maxResults) (\s@ListJobs' {} a -> s {maxResults = a} :: ListJobs)
+
+-- | Optional. Use this string, provided with the response to a previous
+-- request, to request the next batch of jobs.
+listJobs_nextToken :: Lens.Lens' ListJobs (Prelude.Maybe Prelude.Text)
+listJobs_nextToken = Lens.lens (\ListJobs' {nextToken} -> nextToken) (\s@ListJobs' {} a -> s {nextToken = a} :: ListJobs)
+
+-- | Optional. When you request lists of resources, you can specify whether
+-- they are sorted in ASCENDING or DESCENDING order. Default varies by
+-- resource.
+listJobs_order :: Lens.Lens' ListJobs (Prelude.Maybe Order)
+listJobs_order = Lens.lens (\ListJobs' {order} -> order) (\s@ListJobs' {} a -> s {order = a} :: ListJobs)
+
+-- | Optional. Provide a queue name to get back only jobs from that queue.
+listJobs_queue :: Lens.Lens' ListJobs (Prelude.Maybe Prelude.Text)
+listJobs_queue = Lens.lens (\ListJobs' {queue} -> queue) (\s@ListJobs' {} a -> s {queue = a} :: ListJobs)
+
+-- | Optional. A job\'s status can be SUBMITTED, PROGRESSING, COMPLETE,
+-- CANCELED, or ERROR.
+listJobs_status :: Lens.Lens' ListJobs (Prelude.Maybe JobStatus)
+listJobs_status = Lens.lens (\ListJobs' {status} -> status) (\s@ListJobs' {} a -> s {status = a} :: ListJobs)
+
+instance Core.AWSPager ListJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listJobsResponse_jobs
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listJobs_nextToken
+          Lens..~ rs
+          Lens.^? listJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListJobs where
+  type AWSResponse ListJobs = ListJobsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListJobsResponse'
+            Prelude.<$> (x Data..?> "jobs" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListJobs where
+  hashWithSalt _salt ListJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` order
+      `Prelude.hashWithSalt` queue
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ListJobs where
+  rnf ListJobs' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf order
+      `Prelude.seq` Prelude.rnf queue
+      `Prelude.seq` Prelude.rnf status
+
+instance Data.ToHeaders ListJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListJobs where
+  toPath = Prelude.const "/2017-08-29/jobs"
+
+instance Data.ToQuery ListJobs where
+  toQuery ListJobs' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "order" Data.=: order,
+        "queue" Data.=: queue,
+        "status" Data.=: status
+      ]
+
+-- | /See:/ 'newListJobsResponse' smart constructor.
+data ListJobsResponse = ListJobsResponse'
+  { -- | List of jobs
+    jobs :: Prelude.Maybe [Job],
+    -- | Use this string to request the next batch of jobs.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListJobsResponse' 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:
+--
+-- 'jobs', 'listJobsResponse_jobs' - List of jobs
+--
+-- 'nextToken', 'listJobsResponse_nextToken' - Use this string to request the next batch of jobs.
+--
+-- 'httpStatus', 'listJobsResponse_httpStatus' - The response's http status code.
+newListJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListJobsResponse
+newListJobsResponse pHttpStatus_ =
+  ListJobsResponse'
+    { jobs = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | List of jobs
+listJobsResponse_jobs :: Lens.Lens' ListJobsResponse (Prelude.Maybe [Job])
+listJobsResponse_jobs = Lens.lens (\ListJobsResponse' {jobs} -> jobs) (\s@ListJobsResponse' {} a -> s {jobs = a} :: ListJobsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use this string to request the next batch of jobs.
+listJobsResponse_nextToken :: Lens.Lens' ListJobsResponse (Prelude.Maybe Prelude.Text)
+listJobsResponse_nextToken = Lens.lens (\ListJobsResponse' {nextToken} -> nextToken) (\s@ListJobsResponse' {} a -> s {nextToken = a} :: ListJobsResponse)
+
+-- | The response's http status code.
+listJobsResponse_httpStatus :: Lens.Lens' ListJobsResponse Prelude.Int
+listJobsResponse_httpStatus = Lens.lens (\ListJobsResponse' {httpStatus} -> httpStatus) (\s@ListJobsResponse' {} a -> s {httpStatus = a} :: ListJobsResponse)
+
+instance Prelude.NFData ListJobsResponse where
+  rnf ListJobsResponse' {..} =
+    Prelude.rnf jobs
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/ListPresets.hs b/gen/Amazonka/MediaConvert/ListPresets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/ListPresets.hs
@@ -0,0 +1,270 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.ListPresets
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve a JSON array of up to twenty of your presets. This will return
+-- the presets themselves, not just a list of them. To retrieve the next
+-- twenty presets, use the nextToken string returned with the array.
+--
+-- This operation returns paginated results.
+module Amazonka.MediaConvert.ListPresets
+  ( -- * Creating a Request
+    ListPresets (..),
+    newListPresets,
+
+    -- * Request Lenses
+    listPresets_category,
+    listPresets_listBy,
+    listPresets_maxResults,
+    listPresets_nextToken,
+    listPresets_order,
+
+    -- * Destructuring the Response
+    ListPresetsResponse (..),
+    newListPresetsResponse,
+
+    -- * Response Lenses
+    listPresetsResponse_nextToken,
+    listPresetsResponse_presets,
+    listPresetsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListPresets' smart constructor.
+data ListPresets = ListPresets'
+  { -- | Optionally, specify a preset category to limit responses to only presets
+    -- from that category.
+    category :: Prelude.Maybe Prelude.Text,
+    -- | Optional. When you request a list of presets, you can choose to list
+    -- them alphabetically by NAME or chronologically by CREATION_DATE. If you
+    -- don\'t specify, the service will list them by name.
+    listBy :: Prelude.Maybe PresetListBy,
+    -- | Optional. Number of presets, up to twenty, that will be returned at one
+    -- time
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Use this string, provided with the response to a previous request, to
+    -- request the next batch of presets.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Optional. When you request lists of resources, you can specify whether
+    -- they are sorted in ASCENDING or DESCENDING order. Default varies by
+    -- resource.
+    order :: Prelude.Maybe Order
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPresets' 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:
+--
+-- 'category', 'listPresets_category' - Optionally, specify a preset category to limit responses to only presets
+-- from that category.
+--
+-- 'listBy', 'listPresets_listBy' - Optional. When you request a list of presets, you can choose to list
+-- them alphabetically by NAME or chronologically by CREATION_DATE. If you
+-- don\'t specify, the service will list them by name.
+--
+-- 'maxResults', 'listPresets_maxResults' - Optional. Number of presets, up to twenty, that will be returned at one
+-- time
+--
+-- 'nextToken', 'listPresets_nextToken' - Use this string, provided with the response to a previous request, to
+-- request the next batch of presets.
+--
+-- 'order', 'listPresets_order' - Optional. When you request lists of resources, you can specify whether
+-- they are sorted in ASCENDING or DESCENDING order. Default varies by
+-- resource.
+newListPresets ::
+  ListPresets
+newListPresets =
+  ListPresets'
+    { category = Prelude.Nothing,
+      listBy = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      order = Prelude.Nothing
+    }
+
+-- | Optionally, specify a preset category to limit responses to only presets
+-- from that category.
+listPresets_category :: Lens.Lens' ListPresets (Prelude.Maybe Prelude.Text)
+listPresets_category = Lens.lens (\ListPresets' {category} -> category) (\s@ListPresets' {} a -> s {category = a} :: ListPresets)
+
+-- | Optional. When you request a list of presets, you can choose to list
+-- them alphabetically by NAME or chronologically by CREATION_DATE. If you
+-- don\'t specify, the service will list them by name.
+listPresets_listBy :: Lens.Lens' ListPresets (Prelude.Maybe PresetListBy)
+listPresets_listBy = Lens.lens (\ListPresets' {listBy} -> listBy) (\s@ListPresets' {} a -> s {listBy = a} :: ListPresets)
+
+-- | Optional. Number of presets, up to twenty, that will be returned at one
+-- time
+listPresets_maxResults :: Lens.Lens' ListPresets (Prelude.Maybe Prelude.Natural)
+listPresets_maxResults = Lens.lens (\ListPresets' {maxResults} -> maxResults) (\s@ListPresets' {} a -> s {maxResults = a} :: ListPresets)
+
+-- | Use this string, provided with the response to a previous request, to
+-- request the next batch of presets.
+listPresets_nextToken :: Lens.Lens' ListPresets (Prelude.Maybe Prelude.Text)
+listPresets_nextToken = Lens.lens (\ListPresets' {nextToken} -> nextToken) (\s@ListPresets' {} a -> s {nextToken = a} :: ListPresets)
+
+-- | Optional. When you request lists of resources, you can specify whether
+-- they are sorted in ASCENDING or DESCENDING order. Default varies by
+-- resource.
+listPresets_order :: Lens.Lens' ListPresets (Prelude.Maybe Order)
+listPresets_order = Lens.lens (\ListPresets' {order} -> order) (\s@ListPresets' {} a -> s {order = a} :: ListPresets)
+
+instance Core.AWSPager ListPresets where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listPresetsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listPresetsResponse_presets
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listPresets_nextToken
+          Lens..~ rs
+          Lens.^? listPresetsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListPresets where
+  type AWSResponse ListPresets = ListPresetsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListPresetsResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (x Data..?> "presets" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListPresets where
+  hashWithSalt _salt ListPresets' {..} =
+    _salt
+      `Prelude.hashWithSalt` category
+      `Prelude.hashWithSalt` listBy
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` order
+
+instance Prelude.NFData ListPresets where
+  rnf ListPresets' {..} =
+    Prelude.rnf category
+      `Prelude.seq` Prelude.rnf listBy
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf order
+
+instance Data.ToHeaders ListPresets where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListPresets where
+  toPath = Prelude.const "/2017-08-29/presets"
+
+instance Data.ToQuery ListPresets where
+  toQuery ListPresets' {..} =
+    Prelude.mconcat
+      [ "category" Data.=: category,
+        "listBy" Data.=: listBy,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "order" Data.=: order
+      ]
+
+-- | /See:/ 'newListPresetsResponse' smart constructor.
+data ListPresetsResponse = ListPresetsResponse'
+  { -- | Use this string to request the next batch of presets.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | List of presets
+    presets :: Prelude.Maybe [Preset],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPresetsResponse' 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:
+--
+-- 'nextToken', 'listPresetsResponse_nextToken' - Use this string to request the next batch of presets.
+--
+-- 'presets', 'listPresetsResponse_presets' - List of presets
+--
+-- 'httpStatus', 'listPresetsResponse_httpStatus' - The response's http status code.
+newListPresetsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListPresetsResponse
+newListPresetsResponse pHttpStatus_ =
+  ListPresetsResponse'
+    { nextToken = Prelude.Nothing,
+      presets = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Use this string to request the next batch of presets.
+listPresetsResponse_nextToken :: Lens.Lens' ListPresetsResponse (Prelude.Maybe Prelude.Text)
+listPresetsResponse_nextToken = Lens.lens (\ListPresetsResponse' {nextToken} -> nextToken) (\s@ListPresetsResponse' {} a -> s {nextToken = a} :: ListPresetsResponse)
+
+-- | List of presets
+listPresetsResponse_presets :: Lens.Lens' ListPresetsResponse (Prelude.Maybe [Preset])
+listPresetsResponse_presets = Lens.lens (\ListPresetsResponse' {presets} -> presets) (\s@ListPresetsResponse' {} a -> s {presets = a} :: ListPresetsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listPresetsResponse_httpStatus :: Lens.Lens' ListPresetsResponse Prelude.Int
+listPresetsResponse_httpStatus = Lens.lens (\ListPresetsResponse' {httpStatus} -> httpStatus) (\s@ListPresetsResponse' {} a -> s {httpStatus = a} :: ListPresetsResponse)
+
+instance Prelude.NFData ListPresetsResponse where
+  rnf ListPresetsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf presets
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/ListQueues.hs b/gen/Amazonka/MediaConvert/ListQueues.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/ListQueues.hs
@@ -0,0 +1,254 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.ListQueues
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve a JSON array of up to twenty of your queues. This will return
+-- the queues themselves, not just a list of them. To retrieve the next
+-- twenty queues, use the nextToken string returned with the array.
+--
+-- This operation returns paginated results.
+module Amazonka.MediaConvert.ListQueues
+  ( -- * Creating a Request
+    ListQueues (..),
+    newListQueues,
+
+    -- * Request Lenses
+    listQueues_listBy,
+    listQueues_maxResults,
+    listQueues_nextToken,
+    listQueues_order,
+
+    -- * Destructuring the Response
+    ListQueuesResponse (..),
+    newListQueuesResponse,
+
+    -- * Response Lenses
+    listQueuesResponse_nextToken,
+    listQueuesResponse_queues,
+    listQueuesResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListQueues' smart constructor.
+data ListQueues = ListQueues'
+  { -- | Optional. When you request a list of queues, you can choose to list them
+    -- alphabetically by NAME or chronologically by CREATION_DATE. If you
+    -- don\'t specify, the service will list them by creation date.
+    listBy :: Prelude.Maybe QueueListBy,
+    -- | Optional. Number of queues, up to twenty, that will be returned at one
+    -- time.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Use this string, provided with the response to a previous request, to
+    -- request the next batch of queues.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Optional. When you request lists of resources, you can specify whether
+    -- they are sorted in ASCENDING or DESCENDING order. Default varies by
+    -- resource.
+    order :: Prelude.Maybe Order
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListQueues' 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:
+--
+-- 'listBy', 'listQueues_listBy' - Optional. When you request a list of queues, you can choose to list them
+-- alphabetically by NAME or chronologically by CREATION_DATE. If you
+-- don\'t specify, the service will list them by creation date.
+--
+-- 'maxResults', 'listQueues_maxResults' - Optional. Number of queues, up to twenty, that will be returned at one
+-- time.
+--
+-- 'nextToken', 'listQueues_nextToken' - Use this string, provided with the response to a previous request, to
+-- request the next batch of queues.
+--
+-- 'order', 'listQueues_order' - Optional. When you request lists of resources, you can specify whether
+-- they are sorted in ASCENDING or DESCENDING order. Default varies by
+-- resource.
+newListQueues ::
+  ListQueues
+newListQueues =
+  ListQueues'
+    { listBy = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      order = Prelude.Nothing
+    }
+
+-- | Optional. When you request a list of queues, you can choose to list them
+-- alphabetically by NAME or chronologically by CREATION_DATE. If you
+-- don\'t specify, the service will list them by creation date.
+listQueues_listBy :: Lens.Lens' ListQueues (Prelude.Maybe QueueListBy)
+listQueues_listBy = Lens.lens (\ListQueues' {listBy} -> listBy) (\s@ListQueues' {} a -> s {listBy = a} :: ListQueues)
+
+-- | Optional. Number of queues, up to twenty, that will be returned at one
+-- time.
+listQueues_maxResults :: Lens.Lens' ListQueues (Prelude.Maybe Prelude.Natural)
+listQueues_maxResults = Lens.lens (\ListQueues' {maxResults} -> maxResults) (\s@ListQueues' {} a -> s {maxResults = a} :: ListQueues)
+
+-- | Use this string, provided with the response to a previous request, to
+-- request the next batch of queues.
+listQueues_nextToken :: Lens.Lens' ListQueues (Prelude.Maybe Prelude.Text)
+listQueues_nextToken = Lens.lens (\ListQueues' {nextToken} -> nextToken) (\s@ListQueues' {} a -> s {nextToken = a} :: ListQueues)
+
+-- | Optional. When you request lists of resources, you can specify whether
+-- they are sorted in ASCENDING or DESCENDING order. Default varies by
+-- resource.
+listQueues_order :: Lens.Lens' ListQueues (Prelude.Maybe Order)
+listQueues_order = Lens.lens (\ListQueues' {order} -> order) (\s@ListQueues' {} a -> s {order = a} :: ListQueues)
+
+instance Core.AWSPager ListQueues where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listQueuesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listQueuesResponse_queues
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listQueues_nextToken
+          Lens..~ rs
+          Lens.^? listQueuesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListQueues where
+  type AWSResponse ListQueues = ListQueuesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListQueuesResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (x Data..?> "queues" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListQueues where
+  hashWithSalt _salt ListQueues' {..} =
+    _salt
+      `Prelude.hashWithSalt` listBy
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` order
+
+instance Prelude.NFData ListQueues where
+  rnf ListQueues' {..} =
+    Prelude.rnf listBy
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf order
+
+instance Data.ToHeaders ListQueues where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListQueues where
+  toPath = Prelude.const "/2017-08-29/queues"
+
+instance Data.ToQuery ListQueues where
+  toQuery ListQueues' {..} =
+    Prelude.mconcat
+      [ "listBy" Data.=: listBy,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "order" Data.=: order
+      ]
+
+-- | /See:/ 'newListQueuesResponse' smart constructor.
+data ListQueuesResponse = ListQueuesResponse'
+  { -- | Use this string to request the next batch of queues.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | List of queues.
+    queues :: Prelude.Maybe [Queue],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListQueuesResponse' 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:
+--
+-- 'nextToken', 'listQueuesResponse_nextToken' - Use this string to request the next batch of queues.
+--
+-- 'queues', 'listQueuesResponse_queues' - List of queues.
+--
+-- 'httpStatus', 'listQueuesResponse_httpStatus' - The response's http status code.
+newListQueuesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListQueuesResponse
+newListQueuesResponse pHttpStatus_ =
+  ListQueuesResponse'
+    { nextToken = Prelude.Nothing,
+      queues = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Use this string to request the next batch of queues.
+listQueuesResponse_nextToken :: Lens.Lens' ListQueuesResponse (Prelude.Maybe Prelude.Text)
+listQueuesResponse_nextToken = Lens.lens (\ListQueuesResponse' {nextToken} -> nextToken) (\s@ListQueuesResponse' {} a -> s {nextToken = a} :: ListQueuesResponse)
+
+-- | List of queues.
+listQueuesResponse_queues :: Lens.Lens' ListQueuesResponse (Prelude.Maybe [Queue])
+listQueuesResponse_queues = Lens.lens (\ListQueuesResponse' {queues} -> queues) (\s@ListQueuesResponse' {} a -> s {queues = a} :: ListQueuesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listQueuesResponse_httpStatus :: Lens.Lens' ListQueuesResponse Prelude.Int
+listQueuesResponse_httpStatus = Lens.lens (\ListQueuesResponse' {httpStatus} -> httpStatus) (\s@ListQueuesResponse' {} a -> s {httpStatus = a} :: ListQueuesResponse)
+
+instance Prelude.NFData ListQueuesResponse where
+  rnf ListQueuesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf queues
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/ListTagsForResource.hs b/gen/Amazonka/MediaConvert/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/ListTagsForResource.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.ListTagsForResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve the tags for a MediaConvert resource.
+module Amazonka.MediaConvert.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_arn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_resourceTags,
+    listTagsForResourceResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) of the resource that you want to list
+    -- tags for. To get the ARN, send a GET request with the resource name.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' 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:
+--
+-- 'arn', 'listTagsForResource_arn' - The Amazon Resource Name (ARN) of the resource that you want to list
+-- tags for. To get the ARN, send a GET request with the resource name.
+newListTagsForResource ::
+  -- | 'arn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pArn_ =
+  ListTagsForResource' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the resource that you want to list
+-- tags for. To get the ARN, send a GET request with the resource name.
+listTagsForResource_arn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_arn = Lens.lens (\ListTagsForResource' {arn} -> arn) (\s@ListTagsForResource' {} a -> s {arn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "resourceTags")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat
+      ["/2017-08-29/tags/", Data.toBS arn]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | The Amazon Resource Name (ARN) and tags for an AWS Elemental
+    -- MediaConvert resource.
+    resourceTags :: Prelude.Maybe ResourceTags,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' 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:
+--
+-- 'resourceTags', 'listTagsForResourceResponse_resourceTags' - The Amazon Resource Name (ARN) and tags for an AWS Elemental
+-- MediaConvert resource.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { resourceTags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) and tags for an AWS Elemental
+-- MediaConvert resource.
+listTagsForResourceResponse_resourceTags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe ResourceTags)
+listTagsForResourceResponse_resourceTags = Lens.lens (\ListTagsForResourceResponse' {resourceTags} -> resourceTags) (\s@ListTagsForResourceResponse' {} a -> s {resourceTags = a} :: ListTagsForResourceResponse)
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf resourceTags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/PutPolicy.hs b/gen/Amazonka/MediaConvert/PutPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/PutPolicy.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.PutPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create or change your policy. For more information about policies, see
+-- the user guide at
+-- http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+module Amazonka.MediaConvert.PutPolicy
+  ( -- * Creating a Request
+    PutPolicy (..),
+    newPutPolicy,
+
+    -- * Request Lenses
+    putPolicy_policy,
+
+    -- * Destructuring the Response
+    PutPolicyResponse (..),
+    newPutPolicyResponse,
+
+    -- * Response Lenses
+    putPolicyResponse_policy,
+    putPolicyResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutPolicy' smart constructor.
+data PutPolicy = PutPolicy'
+  { -- | A policy configures behavior that you allow or disallow for your
+    -- account. For information about MediaConvert policies, see the user guide
+    -- at http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+    policy :: Policy
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutPolicy' 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:
+--
+-- 'policy', 'putPolicy_policy' - A policy configures behavior that you allow or disallow for your
+-- account. For information about MediaConvert policies, see the user guide
+-- at http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+newPutPolicy ::
+  -- | 'policy'
+  Policy ->
+  PutPolicy
+newPutPolicy pPolicy_ = PutPolicy' {policy = pPolicy_}
+
+-- | A policy configures behavior that you allow or disallow for your
+-- account. For information about MediaConvert policies, see the user guide
+-- at http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+putPolicy_policy :: Lens.Lens' PutPolicy Policy
+putPolicy_policy = Lens.lens (\PutPolicy' {policy} -> policy) (\s@PutPolicy' {} a -> s {policy = a} :: PutPolicy)
+
+instance Core.AWSRequest PutPolicy where
+  type AWSResponse PutPolicy = PutPolicyResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutPolicyResponse'
+            Prelude.<$> (x Data..?> "policy")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable PutPolicy where
+  hashWithSalt _salt PutPolicy' {..} =
+    _salt `Prelude.hashWithSalt` policy
+
+instance Prelude.NFData PutPolicy where
+  rnf PutPolicy' {..} = Prelude.rnf policy
+
+instance Data.ToHeaders PutPolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON PutPolicy where
+  toJSON PutPolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("policy" Data..= policy)]
+      )
+
+instance Data.ToPath PutPolicy where
+  toPath = Prelude.const "/2017-08-29/policy"
+
+instance Data.ToQuery PutPolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutPolicyResponse' smart constructor.
+data PutPolicyResponse = PutPolicyResponse'
+  { -- | A policy configures behavior that you allow or disallow for your
+    -- account. For information about MediaConvert policies, see the user guide
+    -- at http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+    policy :: Prelude.Maybe Policy,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutPolicyResponse' 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:
+--
+-- 'policy', 'putPolicyResponse_policy' - A policy configures behavior that you allow or disallow for your
+-- account. For information about MediaConvert policies, see the user guide
+-- at http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+--
+-- 'httpStatus', 'putPolicyResponse_httpStatus' - The response's http status code.
+newPutPolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutPolicyResponse
+newPutPolicyResponse pHttpStatus_ =
+  PutPolicyResponse'
+    { policy = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A policy configures behavior that you allow or disallow for your
+-- account. For information about MediaConvert policies, see the user guide
+-- at http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+putPolicyResponse_policy :: Lens.Lens' PutPolicyResponse (Prelude.Maybe Policy)
+putPolicyResponse_policy = Lens.lens (\PutPolicyResponse' {policy} -> policy) (\s@PutPolicyResponse' {} a -> s {policy = a} :: PutPolicyResponse)
+
+-- | The response's http status code.
+putPolicyResponse_httpStatus :: Lens.Lens' PutPolicyResponse Prelude.Int
+putPolicyResponse_httpStatus = Lens.lens (\PutPolicyResponse' {httpStatus} -> httpStatus) (\s@PutPolicyResponse' {} a -> s {httpStatus = a} :: PutPolicyResponse)
+
+instance Prelude.NFData PutPolicyResponse where
+  rnf PutPolicyResponse' {..} =
+    Prelude.rnf policy
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/TagResource.hs b/gen/Amazonka/MediaConvert/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/TagResource.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.TagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add tags to a MediaConvert queue, preset, or job template. For
+-- information about tagging, see the User Guide at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/tagging-resources.html
+module Amazonka.MediaConvert.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_arn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource that you want to tag. To
+    -- get the ARN, send a GET request with the resource name.
+    arn :: Prelude.Text,
+    -- | The tags that you want to add to the resource. You can tag resources
+    -- with a key-value pair or with only a key.
+    tags :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' 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:
+--
+-- 'arn', 'tagResource_arn' - The Amazon Resource Name (ARN) of the resource that you want to tag. To
+-- get the ARN, send a GET request with the resource name.
+--
+-- 'tags', 'tagResource_tags' - The tags that you want to add to the resource. You can tag resources
+-- with a key-value pair or with only a key.
+newTagResource ::
+  -- | 'arn'
+  Prelude.Text ->
+  TagResource
+newTagResource pArn_ =
+  TagResource' {arn = pArn_, tags = Prelude.mempty}
+
+-- | The Amazon Resource Name (ARN) of the resource that you want to tag. To
+-- get the ARN, send a GET request with the resource name.
+tagResource_arn :: Lens.Lens' TagResource Prelude.Text
+tagResource_arn = Lens.lens (\TagResource' {arn} -> arn) (\s@TagResource' {} a -> s {arn = a} :: TagResource)
+
+-- | The tags that you want to add to the resource. You can tag resources
+-- with a key-value pair or with only a key.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf arn `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("arn" Data..= arn),
+            Prelude.Just ("tags" Data..= tags)
+          ]
+      )
+
+instance Data.ToPath TagResource where
+  toPath = Prelude.const "/2017-08-29/tags"
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' 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:
+--
+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/Types.hs b/gen/Amazonka/MediaConvert/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types.hs
@@ -0,0 +1,3726 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types
+-- 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
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _BadRequestException,
+    _ConflictException,
+    _ForbiddenException,
+    _InternalServerErrorException,
+    _NotFoundException,
+    _TooManyRequestsException,
+
+    -- * AacAudioDescriptionBroadcasterMix
+    AacAudioDescriptionBroadcasterMix (..),
+
+    -- * AacCodecProfile
+    AacCodecProfile (..),
+
+    -- * AacCodingMode
+    AacCodingMode (..),
+
+    -- * AacRateControlMode
+    AacRateControlMode (..),
+
+    -- * AacRawFormat
+    AacRawFormat (..),
+
+    -- * AacSpecification
+    AacSpecification (..),
+
+    -- * AacVbrQuality
+    AacVbrQuality (..),
+
+    -- * Ac3BitstreamMode
+    Ac3BitstreamMode (..),
+
+    -- * Ac3CodingMode
+    Ac3CodingMode (..),
+
+    -- * Ac3DynamicRangeCompressionLine
+    Ac3DynamicRangeCompressionLine (..),
+
+    -- * Ac3DynamicRangeCompressionProfile
+    Ac3DynamicRangeCompressionProfile (..),
+
+    -- * Ac3DynamicRangeCompressionRf
+    Ac3DynamicRangeCompressionRf (..),
+
+    -- * Ac3LfeFilter
+    Ac3LfeFilter (..),
+
+    -- * Ac3MetadataControl
+    Ac3MetadataControl (..),
+
+    -- * AccelerationMode
+    AccelerationMode (..),
+
+    -- * AccelerationStatus
+    AccelerationStatus (..),
+
+    -- * AfdSignaling
+    AfdSignaling (..),
+
+    -- * AlphaBehavior
+    AlphaBehavior (..),
+
+    -- * AncillaryConvert608To708
+    AncillaryConvert608To708 (..),
+
+    -- * AncillaryTerminateCaptions
+    AncillaryTerminateCaptions (..),
+
+    -- * AntiAlias
+    AntiAlias (..),
+
+    -- * AudioChannelTag
+    AudioChannelTag (..),
+
+    -- * AudioCodec
+    AudioCodec (..),
+
+    -- * AudioDefaultSelection
+    AudioDefaultSelection (..),
+
+    -- * AudioDurationCorrection
+    AudioDurationCorrection (..),
+
+    -- * AudioLanguageCodeControl
+    AudioLanguageCodeControl (..),
+
+    -- * AudioNormalizationAlgorithm
+    AudioNormalizationAlgorithm (..),
+
+    -- * AudioNormalizationAlgorithmControl
+    AudioNormalizationAlgorithmControl (..),
+
+    -- * AudioNormalizationLoudnessLogging
+    AudioNormalizationLoudnessLogging (..),
+
+    -- * AudioNormalizationPeakCalculation
+    AudioNormalizationPeakCalculation (..),
+
+    -- * AudioSelectorType
+    AudioSelectorType (..),
+
+    -- * AudioTypeControl
+    AudioTypeControl (..),
+
+    -- * Av1AdaptiveQuantization
+    Av1AdaptiveQuantization (..),
+
+    -- * Av1BitDepth
+    Av1BitDepth (..),
+
+    -- * Av1FramerateControl
+    Av1FramerateControl (..),
+
+    -- * Av1FramerateConversionAlgorithm
+    Av1FramerateConversionAlgorithm (..),
+
+    -- * Av1RateControlMode
+    Av1RateControlMode (..),
+
+    -- * Av1SpatialAdaptiveQuantization
+    Av1SpatialAdaptiveQuantization (..),
+
+    -- * AvcIntraClass
+    AvcIntraClass (..),
+
+    -- * AvcIntraFramerateControl
+    AvcIntraFramerateControl (..),
+
+    -- * AvcIntraFramerateConversionAlgorithm
+    AvcIntraFramerateConversionAlgorithm (..),
+
+    -- * AvcIntraInterlaceMode
+    AvcIntraInterlaceMode (..),
+
+    -- * AvcIntraScanTypeConversionMode
+    AvcIntraScanTypeConversionMode (..),
+
+    -- * AvcIntraSlowPal
+    AvcIntraSlowPal (..),
+
+    -- * AvcIntraTelecine
+    AvcIntraTelecine (..),
+
+    -- * AvcIntraUhdQualityTuningLevel
+    AvcIntraUhdQualityTuningLevel (..),
+
+    -- * BillingTagsSource
+    BillingTagsSource (..),
+
+    -- * BurnInSubtitleStylePassthrough
+    BurnInSubtitleStylePassthrough (..),
+
+    -- * BurninSubtitleAlignment
+    BurninSubtitleAlignment (..),
+
+    -- * BurninSubtitleApplyFontColor
+    BurninSubtitleApplyFontColor (..),
+
+    -- * BurninSubtitleBackgroundColor
+    BurninSubtitleBackgroundColor (..),
+
+    -- * BurninSubtitleFallbackFont
+    BurninSubtitleFallbackFont (..),
+
+    -- * BurninSubtitleFontColor
+    BurninSubtitleFontColor (..),
+
+    -- * BurninSubtitleOutlineColor
+    BurninSubtitleOutlineColor (..),
+
+    -- * BurninSubtitleShadowColor
+    BurninSubtitleShadowColor (..),
+
+    -- * BurninSubtitleTeletextSpacing
+    BurninSubtitleTeletextSpacing (..),
+
+    -- * CaptionDestinationType
+    CaptionDestinationType (..),
+
+    -- * CaptionSourceType
+    CaptionSourceType (..),
+
+    -- * CmafClientCache
+    CmafClientCache (..),
+
+    -- * CmafCodecSpecification
+    CmafCodecSpecification (..),
+
+    -- * CmafEncryptionType
+    CmafEncryptionType (..),
+
+    -- * CmafImageBasedTrickPlay
+    CmafImageBasedTrickPlay (..),
+
+    -- * CmafInitializationVectorInManifest
+    CmafInitializationVectorInManifest (..),
+
+    -- * CmafIntervalCadence
+    CmafIntervalCadence (..),
+
+    -- * CmafKeyProviderType
+    CmafKeyProviderType (..),
+
+    -- * CmafManifestCompression
+    CmafManifestCompression (..),
+
+    -- * CmafManifestDurationFormat
+    CmafManifestDurationFormat (..),
+
+    -- * CmafMpdManifestBandwidthType
+    CmafMpdManifestBandwidthType (..),
+
+    -- * CmafMpdProfile
+    CmafMpdProfile (..),
+
+    -- * CmafPtsOffsetHandlingForBFrames
+    CmafPtsOffsetHandlingForBFrames (..),
+
+    -- * CmafSegmentControl
+    CmafSegmentControl (..),
+
+    -- * CmafSegmentLengthControl
+    CmafSegmentLengthControl (..),
+
+    -- * CmafStreamInfResolution
+    CmafStreamInfResolution (..),
+
+    -- * CmafTargetDurationCompatibilityMode
+    CmafTargetDurationCompatibilityMode (..),
+
+    -- * CmafVideoCompositionOffsets
+    CmafVideoCompositionOffsets (..),
+
+    -- * CmafWriteDASHManifest
+    CmafWriteDASHManifest (..),
+
+    -- * CmafWriteHLSManifest
+    CmafWriteHLSManifest (..),
+
+    -- * CmafWriteSegmentTimelineInRepresentation
+    CmafWriteSegmentTimelineInRepresentation (..),
+
+    -- * CmfcAudioDuration
+    CmfcAudioDuration (..),
+
+    -- * CmfcAudioTrackType
+    CmfcAudioTrackType (..),
+
+    -- * CmfcDescriptiveVideoServiceFlag
+    CmfcDescriptiveVideoServiceFlag (..),
+
+    -- * CmfcIFrameOnlyManifest
+    CmfcIFrameOnlyManifest (..),
+
+    -- * CmfcKlvMetadata
+    CmfcKlvMetadata (..),
+
+    -- * CmfcManifestMetadataSignaling
+    CmfcManifestMetadataSignaling (..),
+
+    -- * CmfcScte35Esam
+    CmfcScte35Esam (..),
+
+    -- * CmfcScte35Source
+    CmfcScte35Source (..),
+
+    -- * CmfcTimedMetadata
+    CmfcTimedMetadata (..),
+
+    -- * CmfcTimedMetadataBoxVersion
+    CmfcTimedMetadataBoxVersion (..),
+
+    -- * ColorMetadata
+    ColorMetadata (..),
+
+    -- * ColorSpace
+    ColorSpace (..),
+
+    -- * ColorSpaceConversion
+    ColorSpaceConversion (..),
+
+    -- * ColorSpaceUsage
+    ColorSpaceUsage (..),
+
+    -- * Commitment
+    Commitment (..),
+
+    -- * ContainerType
+    ContainerType (..),
+
+    -- * CopyProtectionAction
+    CopyProtectionAction (..),
+
+    -- * DashIsoGroupAudioChannelConfigSchemeIdUri
+    DashIsoGroupAudioChannelConfigSchemeIdUri (..),
+
+    -- * DashIsoHbbtvCompliance
+    DashIsoHbbtvCompliance (..),
+
+    -- * DashIsoImageBasedTrickPlay
+    DashIsoImageBasedTrickPlay (..),
+
+    -- * DashIsoIntervalCadence
+    DashIsoIntervalCadence (..),
+
+    -- * DashIsoMpdManifestBandwidthType
+    DashIsoMpdManifestBandwidthType (..),
+
+    -- * DashIsoMpdProfile
+    DashIsoMpdProfile (..),
+
+    -- * DashIsoPlaybackDeviceCompatibility
+    DashIsoPlaybackDeviceCompatibility (..),
+
+    -- * DashIsoPtsOffsetHandlingForBFrames
+    DashIsoPtsOffsetHandlingForBFrames (..),
+
+    -- * DashIsoSegmentControl
+    DashIsoSegmentControl (..),
+
+    -- * DashIsoSegmentLengthControl
+    DashIsoSegmentLengthControl (..),
+
+    -- * DashIsoVideoCompositionOffsets
+    DashIsoVideoCompositionOffsets (..),
+
+    -- * DashIsoWriteSegmentTimelineInRepresentation
+    DashIsoWriteSegmentTimelineInRepresentation (..),
+
+    -- * DecryptionMode
+    DecryptionMode (..),
+
+    -- * DeinterlaceAlgorithm
+    DeinterlaceAlgorithm (..),
+
+    -- * DeinterlacerControl
+    DeinterlacerControl (..),
+
+    -- * DeinterlacerMode
+    DeinterlacerMode (..),
+
+    -- * DescribeEndpointsMode
+    DescribeEndpointsMode (..),
+
+    -- * DolbyVisionLevel6Mode
+    DolbyVisionLevel6Mode (..),
+
+    -- * DolbyVisionMapping
+    DolbyVisionMapping (..),
+
+    -- * DolbyVisionProfile
+    DolbyVisionProfile (..),
+
+    -- * DropFrameTimecode
+    DropFrameTimecode (..),
+
+    -- * DvbSubSubtitleFallbackFont
+    DvbSubSubtitleFallbackFont (..),
+
+    -- * DvbSubtitleAlignment
+    DvbSubtitleAlignment (..),
+
+    -- * DvbSubtitleApplyFontColor
+    DvbSubtitleApplyFontColor (..),
+
+    -- * DvbSubtitleBackgroundColor
+    DvbSubtitleBackgroundColor (..),
+
+    -- * DvbSubtitleFontColor
+    DvbSubtitleFontColor (..),
+
+    -- * DvbSubtitleOutlineColor
+    DvbSubtitleOutlineColor (..),
+
+    -- * DvbSubtitleShadowColor
+    DvbSubtitleShadowColor (..),
+
+    -- * DvbSubtitleStylePassthrough
+    DvbSubtitleStylePassthrough (..),
+
+    -- * DvbSubtitleTeletextSpacing
+    DvbSubtitleTeletextSpacing (..),
+
+    -- * DvbSubtitlingType
+    DvbSubtitlingType (..),
+
+    -- * DvbddsHandling
+    DvbddsHandling (..),
+
+    -- * Eac3AtmosBitstreamMode
+    Eac3AtmosBitstreamMode (..),
+
+    -- * Eac3AtmosCodingMode
+    Eac3AtmosCodingMode (..),
+
+    -- * Eac3AtmosDialogueIntelligence
+    Eac3AtmosDialogueIntelligence (..),
+
+    -- * Eac3AtmosDownmixControl
+    Eac3AtmosDownmixControl (..),
+
+    -- * Eac3AtmosDynamicRangeCompressionLine
+    Eac3AtmosDynamicRangeCompressionLine (..),
+
+    -- * Eac3AtmosDynamicRangeCompressionRf
+    Eac3AtmosDynamicRangeCompressionRf (..),
+
+    -- * Eac3AtmosDynamicRangeControl
+    Eac3AtmosDynamicRangeControl (..),
+
+    -- * Eac3AtmosMeteringMode
+    Eac3AtmosMeteringMode (..),
+
+    -- * Eac3AtmosStereoDownmix
+    Eac3AtmosStereoDownmix (..),
+
+    -- * Eac3AtmosSurroundExMode
+    Eac3AtmosSurroundExMode (..),
+
+    -- * Eac3AttenuationControl
+    Eac3AttenuationControl (..),
+
+    -- * Eac3BitstreamMode
+    Eac3BitstreamMode (..),
+
+    -- * Eac3CodingMode
+    Eac3CodingMode (..),
+
+    -- * Eac3DcFilter
+    Eac3DcFilter (..),
+
+    -- * Eac3DynamicRangeCompressionLine
+    Eac3DynamicRangeCompressionLine (..),
+
+    -- * Eac3DynamicRangeCompressionRf
+    Eac3DynamicRangeCompressionRf (..),
+
+    -- * Eac3LfeControl
+    Eac3LfeControl (..),
+
+    -- * Eac3LfeFilter
+    Eac3LfeFilter (..),
+
+    -- * Eac3MetadataControl
+    Eac3MetadataControl (..),
+
+    -- * Eac3PassthroughControl
+    Eac3PassthroughControl (..),
+
+    -- * Eac3PhaseControl
+    Eac3PhaseControl (..),
+
+    -- * Eac3StereoDownmix
+    Eac3StereoDownmix (..),
+
+    -- * Eac3SurroundExMode
+    Eac3SurroundExMode (..),
+
+    -- * Eac3SurroundMode
+    Eac3SurroundMode (..),
+
+    -- * EmbeddedConvert608To708
+    EmbeddedConvert608To708 (..),
+
+    -- * EmbeddedTerminateCaptions
+    EmbeddedTerminateCaptions (..),
+
+    -- * EmbeddedTimecodeOverride
+    EmbeddedTimecodeOverride (..),
+
+    -- * F4vMoovPlacement
+    F4vMoovPlacement (..),
+
+    -- * FileSourceConvert608To708
+    FileSourceConvert608To708 (..),
+
+    -- * FileSourceTimeDeltaUnits
+    FileSourceTimeDeltaUnits (..),
+
+    -- * FontScript
+    FontScript (..),
+
+    -- * H264AdaptiveQuantization
+    H264AdaptiveQuantization (..),
+
+    -- * H264CodecLevel
+    H264CodecLevel (..),
+
+    -- * H264CodecProfile
+    H264CodecProfile (..),
+
+    -- * H264DynamicSubGop
+    H264DynamicSubGop (..),
+
+    -- * H264EntropyEncoding
+    H264EntropyEncoding (..),
+
+    -- * H264FieldEncoding
+    H264FieldEncoding (..),
+
+    -- * H264FlickerAdaptiveQuantization
+    H264FlickerAdaptiveQuantization (..),
+
+    -- * H264FramerateControl
+    H264FramerateControl (..),
+
+    -- * H264FramerateConversionAlgorithm
+    H264FramerateConversionAlgorithm (..),
+
+    -- * H264GopBReference
+    H264GopBReference (..),
+
+    -- * H264GopSizeUnits
+    H264GopSizeUnits (..),
+
+    -- * H264InterlaceMode
+    H264InterlaceMode (..),
+
+    -- * H264ParControl
+    H264ParControl (..),
+
+    -- * H264QualityTuningLevel
+    H264QualityTuningLevel (..),
+
+    -- * H264RateControlMode
+    H264RateControlMode (..),
+
+    -- * H264RepeatPps
+    H264RepeatPps (..),
+
+    -- * H264ScanTypeConversionMode
+    H264ScanTypeConversionMode (..),
+
+    -- * H264SceneChangeDetect
+    H264SceneChangeDetect (..),
+
+    -- * H264SlowPal
+    H264SlowPal (..),
+
+    -- * H264SpatialAdaptiveQuantization
+    H264SpatialAdaptiveQuantization (..),
+
+    -- * H264Syntax
+    H264Syntax (..),
+
+    -- * H264Telecine
+    H264Telecine (..),
+
+    -- * H264TemporalAdaptiveQuantization
+    H264TemporalAdaptiveQuantization (..),
+
+    -- * H264UnregisteredSeiTimecode
+    H264UnregisteredSeiTimecode (..),
+
+    -- * H265AdaptiveQuantization
+    H265AdaptiveQuantization (..),
+
+    -- * H265AlternateTransferFunctionSei
+    H265AlternateTransferFunctionSei (..),
+
+    -- * H265CodecLevel
+    H265CodecLevel (..),
+
+    -- * H265CodecProfile
+    H265CodecProfile (..),
+
+    -- * H265DynamicSubGop
+    H265DynamicSubGop (..),
+
+    -- * H265FlickerAdaptiveQuantization
+    H265FlickerAdaptiveQuantization (..),
+
+    -- * H265FramerateControl
+    H265FramerateControl (..),
+
+    -- * H265FramerateConversionAlgorithm
+    H265FramerateConversionAlgorithm (..),
+
+    -- * H265GopBReference
+    H265GopBReference (..),
+
+    -- * H265GopSizeUnits
+    H265GopSizeUnits (..),
+
+    -- * H265InterlaceMode
+    H265InterlaceMode (..),
+
+    -- * H265ParControl
+    H265ParControl (..),
+
+    -- * H265QualityTuningLevel
+    H265QualityTuningLevel (..),
+
+    -- * H265RateControlMode
+    H265RateControlMode (..),
+
+    -- * H265SampleAdaptiveOffsetFilterMode
+    H265SampleAdaptiveOffsetFilterMode (..),
+
+    -- * H265ScanTypeConversionMode
+    H265ScanTypeConversionMode (..),
+
+    -- * H265SceneChangeDetect
+    H265SceneChangeDetect (..),
+
+    -- * H265SlowPal
+    H265SlowPal (..),
+
+    -- * H265SpatialAdaptiveQuantization
+    H265SpatialAdaptiveQuantization (..),
+
+    -- * H265Telecine
+    H265Telecine (..),
+
+    -- * H265TemporalAdaptiveQuantization
+    H265TemporalAdaptiveQuantization (..),
+
+    -- * H265TemporalIds
+    H265TemporalIds (..),
+
+    -- * H265Tiles
+    H265Tiles (..),
+
+    -- * H265UnregisteredSeiTimecode
+    H265UnregisteredSeiTimecode (..),
+
+    -- * H265WriteMp4PackagingType
+    H265WriteMp4PackagingType (..),
+
+    -- * HlsAdMarkers
+    HlsAdMarkers (..),
+
+    -- * HlsAudioOnlyContainer
+    HlsAudioOnlyContainer (..),
+
+    -- * HlsAudioOnlyHeader
+    HlsAudioOnlyHeader (..),
+
+    -- * HlsAudioTrackType
+    HlsAudioTrackType (..),
+
+    -- * HlsCaptionLanguageSetting
+    HlsCaptionLanguageSetting (..),
+
+    -- * HlsCaptionSegmentLengthControl
+    HlsCaptionSegmentLengthControl (..),
+
+    -- * HlsClientCache
+    HlsClientCache (..),
+
+    -- * HlsCodecSpecification
+    HlsCodecSpecification (..),
+
+    -- * HlsDescriptiveVideoServiceFlag
+    HlsDescriptiveVideoServiceFlag (..),
+
+    -- * HlsDirectoryStructure
+    HlsDirectoryStructure (..),
+
+    -- * HlsEncryptionType
+    HlsEncryptionType (..),
+
+    -- * HlsIFrameOnlyManifest
+    HlsIFrameOnlyManifest (..),
+
+    -- * HlsImageBasedTrickPlay
+    HlsImageBasedTrickPlay (..),
+
+    -- * HlsInitializationVectorInManifest
+    HlsInitializationVectorInManifest (..),
+
+    -- * HlsIntervalCadence
+    HlsIntervalCadence (..),
+
+    -- * HlsKeyProviderType
+    HlsKeyProviderType (..),
+
+    -- * HlsManifestCompression
+    HlsManifestCompression (..),
+
+    -- * HlsManifestDurationFormat
+    HlsManifestDurationFormat (..),
+
+    -- * HlsOfflineEncrypted
+    HlsOfflineEncrypted (..),
+
+    -- * HlsOutputSelection
+    HlsOutputSelection (..),
+
+    -- * HlsProgramDateTime
+    HlsProgramDateTime (..),
+
+    -- * HlsSegmentControl
+    HlsSegmentControl (..),
+
+    -- * HlsSegmentLengthControl
+    HlsSegmentLengthControl (..),
+
+    -- * HlsStreamInfResolution
+    HlsStreamInfResolution (..),
+
+    -- * HlsTargetDurationCompatibilityMode
+    HlsTargetDurationCompatibilityMode (..),
+
+    -- * HlsTimedMetadataId3Frame
+    HlsTimedMetadataId3Frame (..),
+
+    -- * ImscAccessibilitySubs
+    ImscAccessibilitySubs (..),
+
+    -- * ImscStylePassthrough
+    ImscStylePassthrough (..),
+
+    -- * InputDeblockFilter
+    InputDeblockFilter (..),
+
+    -- * InputDenoiseFilter
+    InputDenoiseFilter (..),
+
+    -- * InputFilterEnable
+    InputFilterEnable (..),
+
+    -- * InputPolicy
+    InputPolicy (..),
+
+    -- * InputPsiControl
+    InputPsiControl (..),
+
+    -- * InputRotate
+    InputRotate (..),
+
+    -- * InputSampleRange
+    InputSampleRange (..),
+
+    -- * InputScanType
+    InputScanType (..),
+
+    -- * InputTimecodeSource
+    InputTimecodeSource (..),
+
+    -- * JobPhase
+    JobPhase (..),
+
+    -- * JobStatus
+    JobStatus (..),
+
+    -- * JobTemplateListBy
+    JobTemplateListBy (..),
+
+    -- * LanguageCode
+    LanguageCode (..),
+
+    -- * M2tsAudioBufferModel
+    M2tsAudioBufferModel (..),
+
+    -- * M2tsAudioDuration
+    M2tsAudioDuration (..),
+
+    -- * M2tsBufferModel
+    M2tsBufferModel (..),
+
+    -- * M2tsDataPtsControl
+    M2tsDataPtsControl (..),
+
+    -- * M2tsEbpAudioInterval
+    M2tsEbpAudioInterval (..),
+
+    -- * M2tsEbpPlacement
+    M2tsEbpPlacement (..),
+
+    -- * M2tsEsRateInPes
+    M2tsEsRateInPes (..),
+
+    -- * M2tsForceTsVideoEbpOrder
+    M2tsForceTsVideoEbpOrder (..),
+
+    -- * M2tsKlvMetadata
+    M2tsKlvMetadata (..),
+
+    -- * M2tsNielsenId3
+    M2tsNielsenId3 (..),
+
+    -- * M2tsPcrControl
+    M2tsPcrControl (..),
+
+    -- * M2tsRateMode
+    M2tsRateMode (..),
+
+    -- * M2tsScte35Source
+    M2tsScte35Source (..),
+
+    -- * M2tsSegmentationMarkers
+    M2tsSegmentationMarkers (..),
+
+    -- * M2tsSegmentationStyle
+    M2tsSegmentationStyle (..),
+
+    -- * M3u8AudioDuration
+    M3u8AudioDuration (..),
+
+    -- * M3u8DataPtsControl
+    M3u8DataPtsControl (..),
+
+    -- * M3u8NielsenId3
+    M3u8NielsenId3 (..),
+
+    -- * M3u8PcrControl
+    M3u8PcrControl (..),
+
+    -- * M3u8Scte35Source
+    M3u8Scte35Source (..),
+
+    -- * MotionImageInsertionMode
+    MotionImageInsertionMode (..),
+
+    -- * MotionImagePlayback
+    MotionImagePlayback (..),
+
+    -- * MovClapAtom
+    MovClapAtom (..),
+
+    -- * MovCslgAtom
+    MovCslgAtom (..),
+
+    -- * MovMpeg2FourCCControl
+    MovMpeg2FourCCControl (..),
+
+    -- * MovPaddingControl
+    MovPaddingControl (..),
+
+    -- * MovReference
+    MovReference (..),
+
+    -- * Mp3RateControlMode
+    Mp3RateControlMode (..),
+
+    -- * Mp4CslgAtom
+    Mp4CslgAtom (..),
+
+    -- * Mp4FreeSpaceBox
+    Mp4FreeSpaceBox (..),
+
+    -- * Mp4MoovPlacement
+    Mp4MoovPlacement (..),
+
+    -- * MpdAccessibilityCaptionHints
+    MpdAccessibilityCaptionHints (..),
+
+    -- * MpdAudioDuration
+    MpdAudioDuration (..),
+
+    -- * MpdCaptionContainerType
+    MpdCaptionContainerType (..),
+
+    -- * MpdKlvMetadata
+    MpdKlvMetadata (..),
+
+    -- * MpdManifestMetadataSignaling
+    MpdManifestMetadataSignaling (..),
+
+    -- * MpdScte35Esam
+    MpdScte35Esam (..),
+
+    -- * MpdScte35Source
+    MpdScte35Source (..),
+
+    -- * MpdTimedMetadata
+    MpdTimedMetadata (..),
+
+    -- * MpdTimedMetadataBoxVersion
+    MpdTimedMetadataBoxVersion (..),
+
+    -- * Mpeg2AdaptiveQuantization
+    Mpeg2AdaptiveQuantization (..),
+
+    -- * Mpeg2CodecLevel
+    Mpeg2CodecLevel (..),
+
+    -- * Mpeg2CodecProfile
+    Mpeg2CodecProfile (..),
+
+    -- * Mpeg2DynamicSubGop
+    Mpeg2DynamicSubGop (..),
+
+    -- * Mpeg2FramerateControl
+    Mpeg2FramerateControl (..),
+
+    -- * Mpeg2FramerateConversionAlgorithm
+    Mpeg2FramerateConversionAlgorithm (..),
+
+    -- * Mpeg2GopSizeUnits
+    Mpeg2GopSizeUnits (..),
+
+    -- * Mpeg2InterlaceMode
+    Mpeg2InterlaceMode (..),
+
+    -- * Mpeg2IntraDcPrecision
+    Mpeg2IntraDcPrecision (..),
+
+    -- * Mpeg2ParControl
+    Mpeg2ParControl (..),
+
+    -- * Mpeg2QualityTuningLevel
+    Mpeg2QualityTuningLevel (..),
+
+    -- * Mpeg2RateControlMode
+    Mpeg2RateControlMode (..),
+
+    -- * Mpeg2ScanTypeConversionMode
+    Mpeg2ScanTypeConversionMode (..),
+
+    -- * Mpeg2SceneChangeDetect
+    Mpeg2SceneChangeDetect (..),
+
+    -- * Mpeg2SlowPal
+    Mpeg2SlowPal (..),
+
+    -- * Mpeg2SpatialAdaptiveQuantization
+    Mpeg2SpatialAdaptiveQuantization (..),
+
+    -- * Mpeg2Syntax
+    Mpeg2Syntax (..),
+
+    -- * Mpeg2Telecine
+    Mpeg2Telecine (..),
+
+    -- * Mpeg2TemporalAdaptiveQuantization
+    Mpeg2TemporalAdaptiveQuantization (..),
+
+    -- * MsSmoothAudioDeduplication
+    MsSmoothAudioDeduplication (..),
+
+    -- * MsSmoothFragmentLengthControl
+    MsSmoothFragmentLengthControl (..),
+
+    -- * MsSmoothManifestEncoding
+    MsSmoothManifestEncoding (..),
+
+    -- * MxfAfdSignaling
+    MxfAfdSignaling (..),
+
+    -- * MxfProfile
+    MxfProfile (..),
+
+    -- * MxfXavcDurationMode
+    MxfXavcDurationMode (..),
+
+    -- * NielsenActiveWatermarkProcessType
+    NielsenActiveWatermarkProcessType (..),
+
+    -- * NielsenSourceWatermarkStatusType
+    NielsenSourceWatermarkStatusType (..),
+
+    -- * NielsenUniqueTicPerAudioTrackType
+    NielsenUniqueTicPerAudioTrackType (..),
+
+    -- * NoiseFilterPostTemporalSharpening
+    NoiseFilterPostTemporalSharpening (..),
+
+    -- * NoiseFilterPostTemporalSharpeningStrength
+    NoiseFilterPostTemporalSharpeningStrength (..),
+
+    -- * NoiseReducerFilter
+    NoiseReducerFilter (..),
+
+    -- * Order
+    Order (..),
+
+    -- * OutputGroupType
+    OutputGroupType (..),
+
+    -- * OutputSdt
+    OutputSdt (..),
+
+    -- * PadVideo
+    PadVideo (..),
+
+    -- * PresetListBy
+    PresetListBy (..),
+
+    -- * PricingPlan
+    PricingPlan (..),
+
+    -- * ProresChromaSampling
+    ProresChromaSampling (..),
+
+    -- * ProresCodecProfile
+    ProresCodecProfile (..),
+
+    -- * ProresFramerateControl
+    ProresFramerateControl (..),
+
+    -- * ProresFramerateConversionAlgorithm
+    ProresFramerateConversionAlgorithm (..),
+
+    -- * ProresInterlaceMode
+    ProresInterlaceMode (..),
+
+    -- * ProresParControl
+    ProresParControl (..),
+
+    -- * ProresScanTypeConversionMode
+    ProresScanTypeConversionMode (..),
+
+    -- * ProresSlowPal
+    ProresSlowPal (..),
+
+    -- * ProresTelecine
+    ProresTelecine (..),
+
+    -- * QueueListBy
+    QueueListBy (..),
+
+    -- * QueueStatus
+    QueueStatus (..),
+
+    -- * RenewalType
+    RenewalType (..),
+
+    -- * RequiredFlag
+    RequiredFlag (..),
+
+    -- * ReservationPlanStatus
+    ReservationPlanStatus (..),
+
+    -- * RespondToAfd
+    RespondToAfd (..),
+
+    -- * RuleType
+    RuleType (..),
+
+    -- * S3ObjectCannedAcl
+    S3ObjectCannedAcl (..),
+
+    -- * S3ServerSideEncryptionType
+    S3ServerSideEncryptionType (..),
+
+    -- * SampleRangeConversion
+    SampleRangeConversion (..),
+
+    -- * ScalingBehavior
+    ScalingBehavior (..),
+
+    -- * SccDestinationFramerate
+    SccDestinationFramerate (..),
+
+    -- * SimulateReservedQueue
+    SimulateReservedQueue (..),
+
+    -- * SrtStylePassthrough
+    SrtStylePassthrough (..),
+
+    -- * StatusUpdateInterval
+    StatusUpdateInterval (..),
+
+    -- * TeletextPageType
+    TeletextPageType (..),
+
+    -- * TimecodeBurninPosition
+    TimecodeBurninPosition (..),
+
+    -- * TimecodeSource
+    TimecodeSource (..),
+
+    -- * TimedMetadata
+    TimedMetadata (..),
+
+    -- * TtmlStylePassthrough
+    TtmlStylePassthrough (..),
+
+    -- * Type
+    Type (..),
+
+    -- * Vc3Class
+    Vc3Class (..),
+
+    -- * Vc3FramerateControl
+    Vc3FramerateControl (..),
+
+    -- * Vc3FramerateConversionAlgorithm
+    Vc3FramerateConversionAlgorithm (..),
+
+    -- * Vc3InterlaceMode
+    Vc3InterlaceMode (..),
+
+    -- * Vc3ScanTypeConversionMode
+    Vc3ScanTypeConversionMode (..),
+
+    -- * Vc3SlowPal
+    Vc3SlowPal (..),
+
+    -- * Vc3Telecine
+    Vc3Telecine (..),
+
+    -- * VchipAction
+    VchipAction (..),
+
+    -- * VideoCodec
+    VideoCodec (..),
+
+    -- * VideoTimecodeInsertion
+    VideoTimecodeInsertion (..),
+
+    -- * Vp8FramerateControl
+    Vp8FramerateControl (..),
+
+    -- * Vp8FramerateConversionAlgorithm
+    Vp8FramerateConversionAlgorithm (..),
+
+    -- * Vp8ParControl
+    Vp8ParControl (..),
+
+    -- * Vp8QualityTuningLevel
+    Vp8QualityTuningLevel (..),
+
+    -- * Vp8RateControlMode
+    Vp8RateControlMode (..),
+
+    -- * Vp9FramerateControl
+    Vp9FramerateControl (..),
+
+    -- * Vp9FramerateConversionAlgorithm
+    Vp9FramerateConversionAlgorithm (..),
+
+    -- * Vp9ParControl
+    Vp9ParControl (..),
+
+    -- * Vp9QualityTuningLevel
+    Vp9QualityTuningLevel (..),
+
+    -- * Vp9RateControlMode
+    Vp9RateControlMode (..),
+
+    -- * WatermarkingStrength
+    WatermarkingStrength (..),
+
+    -- * WavFormat
+    WavFormat (..),
+
+    -- * WebvttAccessibilitySubs
+    WebvttAccessibilitySubs (..),
+
+    -- * WebvttStylePassthrough
+    WebvttStylePassthrough (..),
+
+    -- * Xavc4kIntraCbgProfileClass
+    Xavc4kIntraCbgProfileClass (..),
+
+    -- * Xavc4kIntraVbrProfileClass
+    Xavc4kIntraVbrProfileClass (..),
+
+    -- * Xavc4kProfileBitrateClass
+    Xavc4kProfileBitrateClass (..),
+
+    -- * Xavc4kProfileCodecProfile
+    Xavc4kProfileCodecProfile (..),
+
+    -- * Xavc4kProfileQualityTuningLevel
+    Xavc4kProfileQualityTuningLevel (..),
+
+    -- * XavcAdaptiveQuantization
+    XavcAdaptiveQuantization (..),
+
+    -- * XavcEntropyEncoding
+    XavcEntropyEncoding (..),
+
+    -- * XavcFlickerAdaptiveQuantization
+    XavcFlickerAdaptiveQuantization (..),
+
+    -- * XavcFramerateControl
+    XavcFramerateControl (..),
+
+    -- * XavcFramerateConversionAlgorithm
+    XavcFramerateConversionAlgorithm (..),
+
+    -- * XavcGopBReference
+    XavcGopBReference (..),
+
+    -- * XavcHdIntraCbgProfileClass
+    XavcHdIntraCbgProfileClass (..),
+
+    -- * XavcHdProfileBitrateClass
+    XavcHdProfileBitrateClass (..),
+
+    -- * XavcHdProfileQualityTuningLevel
+    XavcHdProfileQualityTuningLevel (..),
+
+    -- * XavcHdProfileTelecine
+    XavcHdProfileTelecine (..),
+
+    -- * XavcInterlaceMode
+    XavcInterlaceMode (..),
+
+    -- * XavcProfile
+    XavcProfile (..),
+
+    -- * XavcSlowPal
+    XavcSlowPal (..),
+
+    -- * XavcSpatialAdaptiveQuantization
+    XavcSpatialAdaptiveQuantization (..),
+
+    -- * XavcTemporalAdaptiveQuantization
+    XavcTemporalAdaptiveQuantization (..),
+
+    -- * AacSettings
+    AacSettings (..),
+    newAacSettings,
+    aacSettings_audioDescriptionBroadcasterMix,
+    aacSettings_bitrate,
+    aacSettings_codecProfile,
+    aacSettings_codingMode,
+    aacSettings_rateControlMode,
+    aacSettings_rawFormat,
+    aacSettings_sampleRate,
+    aacSettings_specification,
+    aacSettings_vbrQuality,
+
+    -- * Ac3Settings
+    Ac3Settings (..),
+    newAc3Settings,
+    ac3Settings_bitrate,
+    ac3Settings_bitstreamMode,
+    ac3Settings_codingMode,
+    ac3Settings_dialnorm,
+    ac3Settings_dynamicRangeCompressionLine,
+    ac3Settings_dynamicRangeCompressionProfile,
+    ac3Settings_dynamicRangeCompressionRf,
+    ac3Settings_lfeFilter,
+    ac3Settings_metadataControl,
+    ac3Settings_sampleRate,
+
+    -- * AccelerationSettings
+    AccelerationSettings (..),
+    newAccelerationSettings,
+    accelerationSettings_mode,
+
+    -- * AiffSettings
+    AiffSettings (..),
+    newAiffSettings,
+    aiffSettings_bitDepth,
+    aiffSettings_channels,
+    aiffSettings_sampleRate,
+
+    -- * AllowedRenditionSize
+    AllowedRenditionSize (..),
+    newAllowedRenditionSize,
+    allowedRenditionSize_height,
+    allowedRenditionSize_required,
+    allowedRenditionSize_width,
+
+    -- * AncillarySourceSettings
+    AncillarySourceSettings (..),
+    newAncillarySourceSettings,
+    ancillarySourceSettings_convert608To708,
+    ancillarySourceSettings_sourceAncillaryChannelNumber,
+    ancillarySourceSettings_terminateCaptions,
+
+    -- * AudioChannelTaggingSettings
+    AudioChannelTaggingSettings (..),
+    newAudioChannelTaggingSettings,
+    audioChannelTaggingSettings_channelTag,
+
+    -- * AudioCodecSettings
+    AudioCodecSettings (..),
+    newAudioCodecSettings,
+    audioCodecSettings_aacSettings,
+    audioCodecSettings_ac3Settings,
+    audioCodecSettings_aiffSettings,
+    audioCodecSettings_codec,
+    audioCodecSettings_eac3AtmosSettings,
+    audioCodecSettings_eac3Settings,
+    audioCodecSettings_mp2Settings,
+    audioCodecSettings_mp3Settings,
+    audioCodecSettings_opusSettings,
+    audioCodecSettings_vorbisSettings,
+    audioCodecSettings_wavSettings,
+
+    -- * AudioDescription
+    AudioDescription (..),
+    newAudioDescription,
+    audioDescription_audioChannelTaggingSettings,
+    audioDescription_audioNormalizationSettings,
+    audioDescription_audioSourceName,
+    audioDescription_audioType,
+    audioDescription_audioTypeControl,
+    audioDescription_codecSettings,
+    audioDescription_customLanguageCode,
+    audioDescription_languageCode,
+    audioDescription_languageCodeControl,
+    audioDescription_remixSettings,
+    audioDescription_streamName,
+
+    -- * AudioNormalizationSettings
+    AudioNormalizationSettings (..),
+    newAudioNormalizationSettings,
+    audioNormalizationSettings_algorithm,
+    audioNormalizationSettings_algorithmControl,
+    audioNormalizationSettings_correctionGateLevel,
+    audioNormalizationSettings_loudnessLogging,
+    audioNormalizationSettings_peakCalculation,
+    audioNormalizationSettings_targetLkfs,
+
+    -- * AudioSelector
+    AudioSelector (..),
+    newAudioSelector,
+    audioSelector_audioDurationCorrection,
+    audioSelector_customLanguageCode,
+    audioSelector_defaultSelection,
+    audioSelector_externalAudioFileInput,
+    audioSelector_hlsRenditionGroupSettings,
+    audioSelector_languageCode,
+    audioSelector_offset,
+    audioSelector_pids,
+    audioSelector_programSelection,
+    audioSelector_remixSettings,
+    audioSelector_selectorType,
+    audioSelector_tracks,
+
+    -- * AudioSelectorGroup
+    AudioSelectorGroup (..),
+    newAudioSelectorGroup,
+    audioSelectorGroup_audioSelectorNames,
+
+    -- * AutomatedAbrRule
+    AutomatedAbrRule (..),
+    newAutomatedAbrRule,
+    automatedAbrRule_allowedRenditions,
+    automatedAbrRule_forceIncludeRenditions,
+    automatedAbrRule_minBottomRenditionSize,
+    automatedAbrRule_minTopRenditionSize,
+    automatedAbrRule_type,
+
+    -- * AutomatedAbrSettings
+    AutomatedAbrSettings (..),
+    newAutomatedAbrSettings,
+    automatedAbrSettings_maxAbrBitrate,
+    automatedAbrSettings_maxRenditions,
+    automatedAbrSettings_minAbrBitrate,
+    automatedAbrSettings_rules,
+
+    -- * AutomatedEncodingSettings
+    AutomatedEncodingSettings (..),
+    newAutomatedEncodingSettings,
+    automatedEncodingSettings_abrSettings,
+
+    -- * Av1QvbrSettings
+    Av1QvbrSettings (..),
+    newAv1QvbrSettings,
+    av1QvbrSettings_qvbrQualityLevel,
+    av1QvbrSettings_qvbrQualityLevelFineTune,
+
+    -- * Av1Settings
+    Av1Settings (..),
+    newAv1Settings,
+    av1Settings_adaptiveQuantization,
+    av1Settings_bitDepth,
+    av1Settings_framerateControl,
+    av1Settings_framerateConversionAlgorithm,
+    av1Settings_framerateDenominator,
+    av1Settings_framerateNumerator,
+    av1Settings_gopSize,
+    av1Settings_maxBitrate,
+    av1Settings_numberBFramesBetweenReferenceFrames,
+    av1Settings_qvbrSettings,
+    av1Settings_rateControlMode,
+    av1Settings_slices,
+    av1Settings_spatialAdaptiveQuantization,
+
+    -- * AvailBlanking
+    AvailBlanking (..),
+    newAvailBlanking,
+    availBlanking_availBlankingImage,
+
+    -- * AvcIntraSettings
+    AvcIntraSettings (..),
+    newAvcIntraSettings,
+    avcIntraSettings_avcIntraClass,
+    avcIntraSettings_avcIntraUhdSettings,
+    avcIntraSettings_framerateControl,
+    avcIntraSettings_framerateConversionAlgorithm,
+    avcIntraSettings_framerateDenominator,
+    avcIntraSettings_framerateNumerator,
+    avcIntraSettings_interlaceMode,
+    avcIntraSettings_scanTypeConversionMode,
+    avcIntraSettings_slowPal,
+    avcIntraSettings_telecine,
+
+    -- * AvcIntraUhdSettings
+    AvcIntraUhdSettings (..),
+    newAvcIntraUhdSettings,
+    avcIntraUhdSettings_qualityTuningLevel,
+
+    -- * BurninDestinationSettings
+    BurninDestinationSettings (..),
+    newBurninDestinationSettings,
+    burninDestinationSettings_alignment,
+    burninDestinationSettings_applyFontColor,
+    burninDestinationSettings_backgroundColor,
+    burninDestinationSettings_backgroundOpacity,
+    burninDestinationSettings_fallbackFont,
+    burninDestinationSettings_fontColor,
+    burninDestinationSettings_fontOpacity,
+    burninDestinationSettings_fontResolution,
+    burninDestinationSettings_fontScript,
+    burninDestinationSettings_fontSize,
+    burninDestinationSettings_hexFontColor,
+    burninDestinationSettings_outlineColor,
+    burninDestinationSettings_outlineSize,
+    burninDestinationSettings_shadowColor,
+    burninDestinationSettings_shadowOpacity,
+    burninDestinationSettings_shadowXOffset,
+    burninDestinationSettings_shadowYOffset,
+    burninDestinationSettings_stylePassthrough,
+    burninDestinationSettings_teletextSpacing,
+    burninDestinationSettings_xPosition,
+    burninDestinationSettings_yPosition,
+
+    -- * CaptionDescription
+    CaptionDescription (..),
+    newCaptionDescription,
+    captionDescription_captionSelectorName,
+    captionDescription_customLanguageCode,
+    captionDescription_destinationSettings,
+    captionDescription_languageCode,
+    captionDescription_languageDescription,
+
+    -- * CaptionDescriptionPreset
+    CaptionDescriptionPreset (..),
+    newCaptionDescriptionPreset,
+    captionDescriptionPreset_customLanguageCode,
+    captionDescriptionPreset_destinationSettings,
+    captionDescriptionPreset_languageCode,
+    captionDescriptionPreset_languageDescription,
+
+    -- * CaptionDestinationSettings
+    CaptionDestinationSettings (..),
+    newCaptionDestinationSettings,
+    captionDestinationSettings_burninDestinationSettings,
+    captionDestinationSettings_destinationType,
+    captionDestinationSettings_dvbSubDestinationSettings,
+    captionDestinationSettings_embeddedDestinationSettings,
+    captionDestinationSettings_imscDestinationSettings,
+    captionDestinationSettings_sccDestinationSettings,
+    captionDestinationSettings_srtDestinationSettings,
+    captionDestinationSettings_teletextDestinationSettings,
+    captionDestinationSettings_ttmlDestinationSettings,
+    captionDestinationSettings_webvttDestinationSettings,
+
+    -- * CaptionSelector
+    CaptionSelector (..),
+    newCaptionSelector,
+    captionSelector_customLanguageCode,
+    captionSelector_languageCode,
+    captionSelector_sourceSettings,
+
+    -- * CaptionSourceFramerate
+    CaptionSourceFramerate (..),
+    newCaptionSourceFramerate,
+    captionSourceFramerate_framerateDenominator,
+    captionSourceFramerate_framerateNumerator,
+
+    -- * CaptionSourceSettings
+    CaptionSourceSettings (..),
+    newCaptionSourceSettings,
+    captionSourceSettings_ancillarySourceSettings,
+    captionSourceSettings_dvbSubSourceSettings,
+    captionSourceSettings_embeddedSourceSettings,
+    captionSourceSettings_fileSourceSettings,
+    captionSourceSettings_sourceType,
+    captionSourceSettings_teletextSourceSettings,
+    captionSourceSettings_trackSourceSettings,
+    captionSourceSettings_webvttHlsSourceSettings,
+
+    -- * ChannelMapping
+    ChannelMapping (..),
+    newChannelMapping,
+    channelMapping_outputChannels,
+
+    -- * CmafAdditionalManifest
+    CmafAdditionalManifest (..),
+    newCmafAdditionalManifest,
+    cmafAdditionalManifest_manifestNameModifier,
+    cmafAdditionalManifest_selectedOutputs,
+
+    -- * CmafEncryptionSettings
+    CmafEncryptionSettings (..),
+    newCmafEncryptionSettings,
+    cmafEncryptionSettings_constantInitializationVector,
+    cmafEncryptionSettings_encryptionMethod,
+    cmafEncryptionSettings_initializationVectorInManifest,
+    cmafEncryptionSettings_spekeKeyProvider,
+    cmafEncryptionSettings_staticKeyProvider,
+    cmafEncryptionSettings_type,
+
+    -- * CmafGroupSettings
+    CmafGroupSettings (..),
+    newCmafGroupSettings,
+    cmafGroupSettings_additionalManifests,
+    cmafGroupSettings_baseUrl,
+    cmafGroupSettings_clientCache,
+    cmafGroupSettings_codecSpecification,
+    cmafGroupSettings_destination,
+    cmafGroupSettings_destinationSettings,
+    cmafGroupSettings_encryption,
+    cmafGroupSettings_fragmentLength,
+    cmafGroupSettings_imageBasedTrickPlay,
+    cmafGroupSettings_imageBasedTrickPlaySettings,
+    cmafGroupSettings_manifestCompression,
+    cmafGroupSettings_manifestDurationFormat,
+    cmafGroupSettings_minBufferTime,
+    cmafGroupSettings_minFinalSegmentLength,
+    cmafGroupSettings_mpdManifestBandwidthType,
+    cmafGroupSettings_mpdProfile,
+    cmafGroupSettings_ptsOffsetHandlingForBFrames,
+    cmafGroupSettings_segmentControl,
+    cmafGroupSettings_segmentLength,
+    cmafGroupSettings_segmentLengthControl,
+    cmafGroupSettings_streamInfResolution,
+    cmafGroupSettings_targetDurationCompatibilityMode,
+    cmafGroupSettings_videoCompositionOffsets,
+    cmafGroupSettings_writeDashManifest,
+    cmafGroupSettings_writeHlsManifest,
+    cmafGroupSettings_writeSegmentTimelineInRepresentation,
+
+    -- * CmafImageBasedTrickPlaySettings
+    CmafImageBasedTrickPlaySettings (..),
+    newCmafImageBasedTrickPlaySettings,
+    cmafImageBasedTrickPlaySettings_intervalCadence,
+    cmafImageBasedTrickPlaySettings_thumbnailHeight,
+    cmafImageBasedTrickPlaySettings_thumbnailInterval,
+    cmafImageBasedTrickPlaySettings_thumbnailWidth,
+    cmafImageBasedTrickPlaySettings_tileHeight,
+    cmafImageBasedTrickPlaySettings_tileWidth,
+
+    -- * CmfcSettings
+    CmfcSettings (..),
+    newCmfcSettings,
+    cmfcSettings_audioDuration,
+    cmfcSettings_audioGroupId,
+    cmfcSettings_audioRenditionSets,
+    cmfcSettings_audioTrackType,
+    cmfcSettings_descriptiveVideoServiceFlag,
+    cmfcSettings_iFrameOnlyManifest,
+    cmfcSettings_klvMetadata,
+    cmfcSettings_manifestMetadataSignaling,
+    cmfcSettings_scte35Esam,
+    cmfcSettings_scte35Source,
+    cmfcSettings_timedMetadata,
+    cmfcSettings_timedMetadataBoxVersion,
+    cmfcSettings_timedMetadataSchemeIdUri,
+    cmfcSettings_timedMetadataValue,
+
+    -- * ColorCorrector
+    ColorCorrector (..),
+    newColorCorrector,
+    colorCorrector_brightness,
+    colorCorrector_colorSpaceConversion,
+    colorCorrector_contrast,
+    colorCorrector_hdr10Metadata,
+    colorCorrector_hue,
+    colorCorrector_sampleRangeConversion,
+    colorCorrector_saturation,
+    colorCorrector_sdrReferenceWhiteLevel,
+
+    -- * ContainerSettings
+    ContainerSettings (..),
+    newContainerSettings,
+    containerSettings_cmfcSettings,
+    containerSettings_container,
+    containerSettings_f4vSettings,
+    containerSettings_m2tsSettings,
+    containerSettings_m3u8Settings,
+    containerSettings_movSettings,
+    containerSettings_mp4Settings,
+    containerSettings_mpdSettings,
+    containerSettings_mxfSettings,
+
+    -- * DashAdditionalManifest
+    DashAdditionalManifest (..),
+    newDashAdditionalManifest,
+    dashAdditionalManifest_manifestNameModifier,
+    dashAdditionalManifest_selectedOutputs,
+
+    -- * DashIsoEncryptionSettings
+    DashIsoEncryptionSettings (..),
+    newDashIsoEncryptionSettings,
+    dashIsoEncryptionSettings_playbackDeviceCompatibility,
+    dashIsoEncryptionSettings_spekeKeyProvider,
+
+    -- * DashIsoGroupSettings
+    DashIsoGroupSettings (..),
+    newDashIsoGroupSettings,
+    dashIsoGroupSettings_additionalManifests,
+    dashIsoGroupSettings_audioChannelConfigSchemeIdUri,
+    dashIsoGroupSettings_baseUrl,
+    dashIsoGroupSettings_destination,
+    dashIsoGroupSettings_destinationSettings,
+    dashIsoGroupSettings_encryption,
+    dashIsoGroupSettings_fragmentLength,
+    dashIsoGroupSettings_hbbtvCompliance,
+    dashIsoGroupSettings_imageBasedTrickPlay,
+    dashIsoGroupSettings_imageBasedTrickPlaySettings,
+    dashIsoGroupSettings_minBufferTime,
+    dashIsoGroupSettings_minFinalSegmentLength,
+    dashIsoGroupSettings_mpdManifestBandwidthType,
+    dashIsoGroupSettings_mpdProfile,
+    dashIsoGroupSettings_ptsOffsetHandlingForBFrames,
+    dashIsoGroupSettings_segmentControl,
+    dashIsoGroupSettings_segmentLength,
+    dashIsoGroupSettings_segmentLengthControl,
+    dashIsoGroupSettings_videoCompositionOffsets,
+    dashIsoGroupSettings_writeSegmentTimelineInRepresentation,
+
+    -- * DashIsoImageBasedTrickPlaySettings
+    DashIsoImageBasedTrickPlaySettings (..),
+    newDashIsoImageBasedTrickPlaySettings,
+    dashIsoImageBasedTrickPlaySettings_intervalCadence,
+    dashIsoImageBasedTrickPlaySettings_thumbnailHeight,
+    dashIsoImageBasedTrickPlaySettings_thumbnailInterval,
+    dashIsoImageBasedTrickPlaySettings_thumbnailWidth,
+    dashIsoImageBasedTrickPlaySettings_tileHeight,
+    dashIsoImageBasedTrickPlaySettings_tileWidth,
+
+    -- * Deinterlacer
+    Deinterlacer (..),
+    newDeinterlacer,
+    deinterlacer_algorithm,
+    deinterlacer_control,
+    deinterlacer_mode,
+
+    -- * DestinationSettings
+    DestinationSettings (..),
+    newDestinationSettings,
+    destinationSettings_s3Settings,
+
+    -- * DolbyVision
+    DolbyVision (..),
+    newDolbyVision,
+    dolbyVision_l6Metadata,
+    dolbyVision_l6Mode,
+    dolbyVision_mapping,
+    dolbyVision_profile,
+
+    -- * DolbyVisionLevel6Metadata
+    DolbyVisionLevel6Metadata (..),
+    newDolbyVisionLevel6Metadata,
+    dolbyVisionLevel6Metadata_maxCll,
+    dolbyVisionLevel6Metadata_maxFall,
+
+    -- * DvbNitSettings
+    DvbNitSettings (..),
+    newDvbNitSettings,
+    dvbNitSettings_networkId,
+    dvbNitSettings_networkName,
+    dvbNitSettings_nitInterval,
+
+    -- * DvbSdtSettings
+    DvbSdtSettings (..),
+    newDvbSdtSettings,
+    dvbSdtSettings_outputSdt,
+    dvbSdtSettings_sdtInterval,
+    dvbSdtSettings_serviceName,
+    dvbSdtSettings_serviceProviderName,
+
+    -- * DvbSubDestinationSettings
+    DvbSubDestinationSettings (..),
+    newDvbSubDestinationSettings,
+    dvbSubDestinationSettings_alignment,
+    dvbSubDestinationSettings_applyFontColor,
+    dvbSubDestinationSettings_backgroundColor,
+    dvbSubDestinationSettings_backgroundOpacity,
+    dvbSubDestinationSettings_ddsHandling,
+    dvbSubDestinationSettings_ddsXCoordinate,
+    dvbSubDestinationSettings_ddsYCoordinate,
+    dvbSubDestinationSettings_fallbackFont,
+    dvbSubDestinationSettings_fontColor,
+    dvbSubDestinationSettings_fontOpacity,
+    dvbSubDestinationSettings_fontResolution,
+    dvbSubDestinationSettings_fontScript,
+    dvbSubDestinationSettings_fontSize,
+    dvbSubDestinationSettings_height,
+    dvbSubDestinationSettings_hexFontColor,
+    dvbSubDestinationSettings_outlineColor,
+    dvbSubDestinationSettings_outlineSize,
+    dvbSubDestinationSettings_shadowColor,
+    dvbSubDestinationSettings_shadowOpacity,
+    dvbSubDestinationSettings_shadowXOffset,
+    dvbSubDestinationSettings_shadowYOffset,
+    dvbSubDestinationSettings_stylePassthrough,
+    dvbSubDestinationSettings_subtitlingType,
+    dvbSubDestinationSettings_teletextSpacing,
+    dvbSubDestinationSettings_width,
+    dvbSubDestinationSettings_xPosition,
+    dvbSubDestinationSettings_yPosition,
+
+    -- * DvbSubSourceSettings
+    DvbSubSourceSettings (..),
+    newDvbSubSourceSettings,
+    dvbSubSourceSettings_pid,
+
+    -- * DvbTdtSettings
+    DvbTdtSettings (..),
+    newDvbTdtSettings,
+    dvbTdtSettings_tdtInterval,
+
+    -- * Eac3AtmosSettings
+    Eac3AtmosSettings (..),
+    newEac3AtmosSettings,
+    eac3AtmosSettings_bitrate,
+    eac3AtmosSettings_bitstreamMode,
+    eac3AtmosSettings_codingMode,
+    eac3AtmosSettings_dialogueIntelligence,
+    eac3AtmosSettings_downmixControl,
+    eac3AtmosSettings_dynamicRangeCompressionLine,
+    eac3AtmosSettings_dynamicRangeCompressionRf,
+    eac3AtmosSettings_dynamicRangeControl,
+    eac3AtmosSettings_loRoCenterMixLevel,
+    eac3AtmosSettings_loRoSurroundMixLevel,
+    eac3AtmosSettings_ltRtCenterMixLevel,
+    eac3AtmosSettings_ltRtSurroundMixLevel,
+    eac3AtmosSettings_meteringMode,
+    eac3AtmosSettings_sampleRate,
+    eac3AtmosSettings_speechThreshold,
+    eac3AtmosSettings_stereoDownmix,
+    eac3AtmosSettings_surroundExMode,
+
+    -- * Eac3Settings
+    Eac3Settings (..),
+    newEac3Settings,
+    eac3Settings_attenuationControl,
+    eac3Settings_bitrate,
+    eac3Settings_bitstreamMode,
+    eac3Settings_codingMode,
+    eac3Settings_dcFilter,
+    eac3Settings_dialnorm,
+    eac3Settings_dynamicRangeCompressionLine,
+    eac3Settings_dynamicRangeCompressionRf,
+    eac3Settings_lfeControl,
+    eac3Settings_lfeFilter,
+    eac3Settings_loRoCenterMixLevel,
+    eac3Settings_loRoSurroundMixLevel,
+    eac3Settings_ltRtCenterMixLevel,
+    eac3Settings_ltRtSurroundMixLevel,
+    eac3Settings_metadataControl,
+    eac3Settings_passthroughControl,
+    eac3Settings_phaseControl,
+    eac3Settings_sampleRate,
+    eac3Settings_stereoDownmix,
+    eac3Settings_surroundExMode,
+    eac3Settings_surroundMode,
+
+    -- * EmbeddedDestinationSettings
+    EmbeddedDestinationSettings (..),
+    newEmbeddedDestinationSettings,
+    embeddedDestinationSettings_destination608ChannelNumber,
+    embeddedDestinationSettings_destination708ServiceNumber,
+
+    -- * EmbeddedSourceSettings
+    EmbeddedSourceSettings (..),
+    newEmbeddedSourceSettings,
+    embeddedSourceSettings_convert608To708,
+    embeddedSourceSettings_source608ChannelNumber,
+    embeddedSourceSettings_source608TrackNumber,
+    embeddedSourceSettings_terminateCaptions,
+
+    -- * Endpoint
+    Endpoint (..),
+    newEndpoint,
+    endpoint_url,
+
+    -- * EsamManifestConfirmConditionNotification
+    EsamManifestConfirmConditionNotification (..),
+    newEsamManifestConfirmConditionNotification,
+    esamManifestConfirmConditionNotification_mccXml,
+
+    -- * EsamSettings
+    EsamSettings (..),
+    newEsamSettings,
+    esamSettings_manifestConfirmConditionNotification,
+    esamSettings_responseSignalPreroll,
+    esamSettings_signalProcessingNotification,
+
+    -- * EsamSignalProcessingNotification
+    EsamSignalProcessingNotification (..),
+    newEsamSignalProcessingNotification,
+    esamSignalProcessingNotification_sccXml,
+
+    -- * ExtendedDataServices
+    ExtendedDataServices (..),
+    newExtendedDataServices,
+    extendedDataServices_copyProtectionAction,
+    extendedDataServices_vchipAction,
+
+    -- * F4vSettings
+    F4vSettings (..),
+    newF4vSettings,
+    f4vSettings_moovPlacement,
+
+    -- * FileGroupSettings
+    FileGroupSettings (..),
+    newFileGroupSettings,
+    fileGroupSettings_destination,
+    fileGroupSettings_destinationSettings,
+
+    -- * FileSourceSettings
+    FileSourceSettings (..),
+    newFileSourceSettings,
+    fileSourceSettings_convert608To708,
+    fileSourceSettings_framerate,
+    fileSourceSettings_sourceFile,
+    fileSourceSettings_timeDelta,
+    fileSourceSettings_timeDeltaUnits,
+
+    -- * ForceIncludeRenditionSize
+    ForceIncludeRenditionSize (..),
+    newForceIncludeRenditionSize,
+    forceIncludeRenditionSize_height,
+    forceIncludeRenditionSize_width,
+
+    -- * FrameCaptureSettings
+    FrameCaptureSettings (..),
+    newFrameCaptureSettings,
+    frameCaptureSettings_framerateDenominator,
+    frameCaptureSettings_framerateNumerator,
+    frameCaptureSettings_maxCaptures,
+    frameCaptureSettings_quality,
+
+    -- * H264QvbrSettings
+    H264QvbrSettings (..),
+    newH264QvbrSettings,
+    h264QvbrSettings_maxAverageBitrate,
+    h264QvbrSettings_qvbrQualityLevel,
+    h264QvbrSettings_qvbrQualityLevelFineTune,
+
+    -- * H264Settings
+    H264Settings (..),
+    newH264Settings,
+    h264Settings_adaptiveQuantization,
+    h264Settings_bitrate,
+    h264Settings_codecLevel,
+    h264Settings_codecProfile,
+    h264Settings_dynamicSubGop,
+    h264Settings_entropyEncoding,
+    h264Settings_fieldEncoding,
+    h264Settings_flickerAdaptiveQuantization,
+    h264Settings_framerateControl,
+    h264Settings_framerateConversionAlgorithm,
+    h264Settings_framerateDenominator,
+    h264Settings_framerateNumerator,
+    h264Settings_gopBReference,
+    h264Settings_gopClosedCadence,
+    h264Settings_gopSize,
+    h264Settings_gopSizeUnits,
+    h264Settings_hrdBufferFinalFillPercentage,
+    h264Settings_hrdBufferInitialFillPercentage,
+    h264Settings_hrdBufferSize,
+    h264Settings_interlaceMode,
+    h264Settings_maxBitrate,
+    h264Settings_minIInterval,
+    h264Settings_numberBFramesBetweenReferenceFrames,
+    h264Settings_numberReferenceFrames,
+    h264Settings_parControl,
+    h264Settings_parDenominator,
+    h264Settings_parNumerator,
+    h264Settings_qualityTuningLevel,
+    h264Settings_qvbrSettings,
+    h264Settings_rateControlMode,
+    h264Settings_repeatPps,
+    h264Settings_scanTypeConversionMode,
+    h264Settings_sceneChangeDetect,
+    h264Settings_slices,
+    h264Settings_slowPal,
+    h264Settings_softness,
+    h264Settings_spatialAdaptiveQuantization,
+    h264Settings_syntax,
+    h264Settings_telecine,
+    h264Settings_temporalAdaptiveQuantization,
+    h264Settings_unregisteredSeiTimecode,
+
+    -- * H265QvbrSettings
+    H265QvbrSettings (..),
+    newH265QvbrSettings,
+    h265QvbrSettings_maxAverageBitrate,
+    h265QvbrSettings_qvbrQualityLevel,
+    h265QvbrSettings_qvbrQualityLevelFineTune,
+
+    -- * H265Settings
+    H265Settings (..),
+    newH265Settings,
+    h265Settings_adaptiveQuantization,
+    h265Settings_alternateTransferFunctionSei,
+    h265Settings_bitrate,
+    h265Settings_codecLevel,
+    h265Settings_codecProfile,
+    h265Settings_dynamicSubGop,
+    h265Settings_flickerAdaptiveQuantization,
+    h265Settings_framerateControl,
+    h265Settings_framerateConversionAlgorithm,
+    h265Settings_framerateDenominator,
+    h265Settings_framerateNumerator,
+    h265Settings_gopBReference,
+    h265Settings_gopClosedCadence,
+    h265Settings_gopSize,
+    h265Settings_gopSizeUnits,
+    h265Settings_hrdBufferFinalFillPercentage,
+    h265Settings_hrdBufferInitialFillPercentage,
+    h265Settings_hrdBufferSize,
+    h265Settings_interlaceMode,
+    h265Settings_maxBitrate,
+    h265Settings_minIInterval,
+    h265Settings_numberBFramesBetweenReferenceFrames,
+    h265Settings_numberReferenceFrames,
+    h265Settings_parControl,
+    h265Settings_parDenominator,
+    h265Settings_parNumerator,
+    h265Settings_qualityTuningLevel,
+    h265Settings_qvbrSettings,
+    h265Settings_rateControlMode,
+    h265Settings_sampleAdaptiveOffsetFilterMode,
+    h265Settings_scanTypeConversionMode,
+    h265Settings_sceneChangeDetect,
+    h265Settings_slices,
+    h265Settings_slowPal,
+    h265Settings_spatialAdaptiveQuantization,
+    h265Settings_telecine,
+    h265Settings_temporalAdaptiveQuantization,
+    h265Settings_temporalIds,
+    h265Settings_tiles,
+    h265Settings_unregisteredSeiTimecode,
+    h265Settings_writeMp4PackagingType,
+
+    -- * Hdr10Metadata
+    Hdr10Metadata (..),
+    newHdr10Metadata,
+    hdr10Metadata_bluePrimaryX,
+    hdr10Metadata_bluePrimaryY,
+    hdr10Metadata_greenPrimaryX,
+    hdr10Metadata_greenPrimaryY,
+    hdr10Metadata_maxContentLightLevel,
+    hdr10Metadata_maxFrameAverageLightLevel,
+    hdr10Metadata_maxLuminance,
+    hdr10Metadata_minLuminance,
+    hdr10Metadata_redPrimaryX,
+    hdr10Metadata_redPrimaryY,
+    hdr10Metadata_whitePointX,
+    hdr10Metadata_whitePointY,
+
+    -- * Hdr10Plus
+    Hdr10Plus (..),
+    newHdr10Plus,
+    hdr10Plus_masteringMonitorNits,
+    hdr10Plus_targetMonitorNits,
+
+    -- * HlsAdditionalManifest
+    HlsAdditionalManifest (..),
+    newHlsAdditionalManifest,
+    hlsAdditionalManifest_manifestNameModifier,
+    hlsAdditionalManifest_selectedOutputs,
+
+    -- * HlsCaptionLanguageMapping
+    HlsCaptionLanguageMapping (..),
+    newHlsCaptionLanguageMapping,
+    hlsCaptionLanguageMapping_captionChannel,
+    hlsCaptionLanguageMapping_customLanguageCode,
+    hlsCaptionLanguageMapping_languageCode,
+    hlsCaptionLanguageMapping_languageDescription,
+
+    -- * HlsEncryptionSettings
+    HlsEncryptionSettings (..),
+    newHlsEncryptionSettings,
+    hlsEncryptionSettings_constantInitializationVector,
+    hlsEncryptionSettings_encryptionMethod,
+    hlsEncryptionSettings_initializationVectorInManifest,
+    hlsEncryptionSettings_offlineEncrypted,
+    hlsEncryptionSettings_spekeKeyProvider,
+    hlsEncryptionSettings_staticKeyProvider,
+    hlsEncryptionSettings_type,
+
+    -- * HlsGroupSettings
+    HlsGroupSettings (..),
+    newHlsGroupSettings,
+    hlsGroupSettings_adMarkers,
+    hlsGroupSettings_additionalManifests,
+    hlsGroupSettings_audioOnlyHeader,
+    hlsGroupSettings_baseUrl,
+    hlsGroupSettings_captionLanguageMappings,
+    hlsGroupSettings_captionLanguageSetting,
+    hlsGroupSettings_captionSegmentLengthControl,
+    hlsGroupSettings_clientCache,
+    hlsGroupSettings_codecSpecification,
+    hlsGroupSettings_destination,
+    hlsGroupSettings_destinationSettings,
+    hlsGroupSettings_directoryStructure,
+    hlsGroupSettings_encryption,
+    hlsGroupSettings_imageBasedTrickPlay,
+    hlsGroupSettings_imageBasedTrickPlaySettings,
+    hlsGroupSettings_manifestCompression,
+    hlsGroupSettings_manifestDurationFormat,
+    hlsGroupSettings_minFinalSegmentLength,
+    hlsGroupSettings_minSegmentLength,
+    hlsGroupSettings_outputSelection,
+    hlsGroupSettings_programDateTime,
+    hlsGroupSettings_programDateTimePeriod,
+    hlsGroupSettings_segmentControl,
+    hlsGroupSettings_segmentLength,
+    hlsGroupSettings_segmentLengthControl,
+    hlsGroupSettings_segmentsPerSubdirectory,
+    hlsGroupSettings_streamInfResolution,
+    hlsGroupSettings_targetDurationCompatibilityMode,
+    hlsGroupSettings_timedMetadataId3Frame,
+    hlsGroupSettings_timedMetadataId3Period,
+    hlsGroupSettings_timestampDeltaMilliseconds,
+
+    -- * HlsImageBasedTrickPlaySettings
+    HlsImageBasedTrickPlaySettings (..),
+    newHlsImageBasedTrickPlaySettings,
+    hlsImageBasedTrickPlaySettings_intervalCadence,
+    hlsImageBasedTrickPlaySettings_thumbnailHeight,
+    hlsImageBasedTrickPlaySettings_thumbnailInterval,
+    hlsImageBasedTrickPlaySettings_thumbnailWidth,
+    hlsImageBasedTrickPlaySettings_tileHeight,
+    hlsImageBasedTrickPlaySettings_tileWidth,
+
+    -- * HlsRenditionGroupSettings
+    HlsRenditionGroupSettings (..),
+    newHlsRenditionGroupSettings,
+    hlsRenditionGroupSettings_renditionGroupId,
+    hlsRenditionGroupSettings_renditionLanguageCode,
+    hlsRenditionGroupSettings_renditionName,
+
+    -- * HlsSettings
+    HlsSettings (..),
+    newHlsSettings,
+    hlsSettings_audioGroupId,
+    hlsSettings_audioOnlyContainer,
+    hlsSettings_audioRenditionSets,
+    hlsSettings_audioTrackType,
+    hlsSettings_descriptiveVideoServiceFlag,
+    hlsSettings_iFrameOnlyManifest,
+    hlsSettings_segmentModifier,
+
+    -- * HopDestination
+    HopDestination (..),
+    newHopDestination,
+    hopDestination_priority,
+    hopDestination_queue,
+    hopDestination_waitMinutes,
+
+    -- * Id3Insertion
+    Id3Insertion (..),
+    newId3Insertion,
+    id3Insertion_id3,
+    id3Insertion_timecode,
+
+    -- * ImageInserter
+    ImageInserter (..),
+    newImageInserter,
+    imageInserter_insertableImages,
+    imageInserter_sdrReferenceWhiteLevel,
+
+    -- * ImscDestinationSettings
+    ImscDestinationSettings (..),
+    newImscDestinationSettings,
+    imscDestinationSettings_accessibility,
+    imscDestinationSettings_stylePassthrough,
+
+    -- * Input
+    Input (..),
+    newInput,
+    input_audioSelectorGroups,
+    input_audioSelectors,
+    input_captionSelectors,
+    input_crop,
+    input_deblockFilter,
+    input_decryptionSettings,
+    input_denoiseFilter,
+    input_dolbyVisionMetadataXml,
+    input_fileInput,
+    input_filterEnable,
+    input_filterStrength,
+    input_imageInserter,
+    input_inputClippings,
+    input_inputScanType,
+    input_position,
+    input_programNumber,
+    input_psiControl,
+    input_supplementalImps,
+    input_timecodeSource,
+    input_timecodeStart,
+    input_videoGenerator,
+    input_videoSelector,
+
+    -- * InputClipping
+    InputClipping (..),
+    newInputClipping,
+    inputClipping_endTimecode,
+    inputClipping_startTimecode,
+
+    -- * InputDecryptionSettings
+    InputDecryptionSettings (..),
+    newInputDecryptionSettings,
+    inputDecryptionSettings_decryptionMode,
+    inputDecryptionSettings_encryptedDecryptionKey,
+    inputDecryptionSettings_initializationVector,
+    inputDecryptionSettings_kmsKeyRegion,
+
+    -- * InputTemplate
+    InputTemplate (..),
+    newInputTemplate,
+    inputTemplate_audioSelectorGroups,
+    inputTemplate_audioSelectors,
+    inputTemplate_captionSelectors,
+    inputTemplate_crop,
+    inputTemplate_deblockFilter,
+    inputTemplate_denoiseFilter,
+    inputTemplate_dolbyVisionMetadataXml,
+    inputTemplate_filterEnable,
+    inputTemplate_filterStrength,
+    inputTemplate_imageInserter,
+    inputTemplate_inputClippings,
+    inputTemplate_inputScanType,
+    inputTemplate_position,
+    inputTemplate_programNumber,
+    inputTemplate_psiControl,
+    inputTemplate_timecodeSource,
+    inputTemplate_timecodeStart,
+    inputTemplate_videoSelector,
+
+    -- * InputVideoGenerator
+    InputVideoGenerator (..),
+    newInputVideoGenerator,
+    inputVideoGenerator_duration,
+
+    -- * InsertableImage
+    InsertableImage (..),
+    newInsertableImage,
+    insertableImage_duration,
+    insertableImage_fadeIn,
+    insertableImage_fadeOut,
+    insertableImage_height,
+    insertableImage_imageInserterInput,
+    insertableImage_imageX,
+    insertableImage_imageY,
+    insertableImage_layer,
+    insertableImage_opacity,
+    insertableImage_startTime,
+    insertableImage_width,
+
+    -- * Job
+    Job (..),
+    newJob,
+    job_accelerationSettings,
+    job_accelerationStatus,
+    job_arn,
+    job_billingTagsSource,
+    job_createdAt,
+    job_currentPhase,
+    job_errorCode,
+    job_errorMessage,
+    job_hopDestinations,
+    job_id,
+    job_jobPercentComplete,
+    job_jobTemplate,
+    job_messages,
+    job_outputGroupDetails,
+    job_priority,
+    job_queue,
+    job_queueTransitions,
+    job_retryCount,
+    job_simulateReservedQueue,
+    job_status,
+    job_statusUpdateInterval,
+    job_timing,
+    job_userMetadata,
+    job_role,
+    job_settings,
+
+    -- * JobMessages
+    JobMessages (..),
+    newJobMessages,
+    jobMessages_info,
+    jobMessages_warning,
+
+    -- * JobSettings
+    JobSettings (..),
+    newJobSettings,
+    jobSettings_adAvailOffset,
+    jobSettings_availBlanking,
+    jobSettings_esam,
+    jobSettings_extendedDataServices,
+    jobSettings_inputs,
+    jobSettings_kantarWatermark,
+    jobSettings_motionImageInserter,
+    jobSettings_nielsenConfiguration,
+    jobSettings_nielsenNonLinearWatermark,
+    jobSettings_outputGroups,
+    jobSettings_timecodeConfig,
+    jobSettings_timedMetadataInsertion,
+
+    -- * JobTemplate
+    JobTemplate (..),
+    newJobTemplate,
+    jobTemplate_accelerationSettings,
+    jobTemplate_arn,
+    jobTemplate_category,
+    jobTemplate_createdAt,
+    jobTemplate_description,
+    jobTemplate_hopDestinations,
+    jobTemplate_lastUpdated,
+    jobTemplate_priority,
+    jobTemplate_queue,
+    jobTemplate_statusUpdateInterval,
+    jobTemplate_type,
+    jobTemplate_settings,
+    jobTemplate_name,
+
+    -- * JobTemplateSettings
+    JobTemplateSettings (..),
+    newJobTemplateSettings,
+    jobTemplateSettings_adAvailOffset,
+    jobTemplateSettings_availBlanking,
+    jobTemplateSettings_esam,
+    jobTemplateSettings_extendedDataServices,
+    jobTemplateSettings_inputs,
+    jobTemplateSettings_kantarWatermark,
+    jobTemplateSettings_motionImageInserter,
+    jobTemplateSettings_nielsenConfiguration,
+    jobTemplateSettings_nielsenNonLinearWatermark,
+    jobTemplateSettings_outputGroups,
+    jobTemplateSettings_timecodeConfig,
+    jobTemplateSettings_timedMetadataInsertion,
+
+    -- * KantarWatermarkSettings
+    KantarWatermarkSettings (..),
+    newKantarWatermarkSettings,
+    kantarWatermarkSettings_channelName,
+    kantarWatermarkSettings_contentReference,
+    kantarWatermarkSettings_credentialsSecretName,
+    kantarWatermarkSettings_fileOffset,
+    kantarWatermarkSettings_kantarLicenseId,
+    kantarWatermarkSettings_kantarServerUrl,
+    kantarWatermarkSettings_logDestination,
+    kantarWatermarkSettings_metadata3,
+    kantarWatermarkSettings_metadata4,
+    kantarWatermarkSettings_metadata5,
+    kantarWatermarkSettings_metadata6,
+    kantarWatermarkSettings_metadata7,
+    kantarWatermarkSettings_metadata8,
+
+    -- * M2tsScte35Esam
+    M2tsScte35Esam (..),
+    newM2tsScte35Esam,
+    m2tsScte35Esam_scte35EsamPid,
+
+    -- * M2tsSettings
+    M2tsSettings (..),
+    newM2tsSettings,
+    m2tsSettings_audioBufferModel,
+    m2tsSettings_audioDuration,
+    m2tsSettings_audioFramesPerPes,
+    m2tsSettings_audioPids,
+    m2tsSettings_bitrate,
+    m2tsSettings_bufferModel,
+    m2tsSettings_dataPTSControl,
+    m2tsSettings_dvbNitSettings,
+    m2tsSettings_dvbSdtSettings,
+    m2tsSettings_dvbSubPids,
+    m2tsSettings_dvbTdtSettings,
+    m2tsSettings_dvbTeletextPid,
+    m2tsSettings_ebpAudioInterval,
+    m2tsSettings_ebpPlacement,
+    m2tsSettings_esRateInPes,
+    m2tsSettings_forceTsVideoEbpOrder,
+    m2tsSettings_fragmentTime,
+    m2tsSettings_klvMetadata,
+    m2tsSettings_maxPcrInterval,
+    m2tsSettings_minEbpInterval,
+    m2tsSettings_nielsenId3,
+    m2tsSettings_nullPacketBitrate,
+    m2tsSettings_patInterval,
+    m2tsSettings_pcrControl,
+    m2tsSettings_pcrPid,
+    m2tsSettings_pmtInterval,
+    m2tsSettings_pmtPid,
+    m2tsSettings_privateMetadataPid,
+    m2tsSettings_programNumber,
+    m2tsSettings_rateMode,
+    m2tsSettings_scte35Esam,
+    m2tsSettings_scte35Pid,
+    m2tsSettings_scte35Source,
+    m2tsSettings_segmentationMarkers,
+    m2tsSettings_segmentationStyle,
+    m2tsSettings_segmentationTime,
+    m2tsSettings_timedMetadataPid,
+    m2tsSettings_transportStreamId,
+    m2tsSettings_videoPid,
+
+    -- * M3u8Settings
+    M3u8Settings (..),
+    newM3u8Settings,
+    m3u8Settings_audioDuration,
+    m3u8Settings_audioFramesPerPes,
+    m3u8Settings_audioPids,
+    m3u8Settings_dataPTSControl,
+    m3u8Settings_maxPcrInterval,
+    m3u8Settings_nielsenId3,
+    m3u8Settings_patInterval,
+    m3u8Settings_pcrControl,
+    m3u8Settings_pcrPid,
+    m3u8Settings_pmtInterval,
+    m3u8Settings_pmtPid,
+    m3u8Settings_privateMetadataPid,
+    m3u8Settings_programNumber,
+    m3u8Settings_scte35Pid,
+    m3u8Settings_scte35Source,
+    m3u8Settings_timedMetadata,
+    m3u8Settings_timedMetadataPid,
+    m3u8Settings_transportStreamId,
+    m3u8Settings_videoPid,
+
+    -- * MinBottomRenditionSize
+    MinBottomRenditionSize (..),
+    newMinBottomRenditionSize,
+    minBottomRenditionSize_height,
+    minBottomRenditionSize_width,
+
+    -- * MinTopRenditionSize
+    MinTopRenditionSize (..),
+    newMinTopRenditionSize,
+    minTopRenditionSize_height,
+    minTopRenditionSize_width,
+
+    -- * MotionImageInserter
+    MotionImageInserter (..),
+    newMotionImageInserter,
+    motionImageInserter_framerate,
+    motionImageInserter_input,
+    motionImageInserter_insertionMode,
+    motionImageInserter_offset,
+    motionImageInserter_playback,
+    motionImageInserter_startTime,
+
+    -- * MotionImageInsertionFramerate
+    MotionImageInsertionFramerate (..),
+    newMotionImageInsertionFramerate,
+    motionImageInsertionFramerate_framerateDenominator,
+    motionImageInsertionFramerate_framerateNumerator,
+
+    -- * MotionImageInsertionOffset
+    MotionImageInsertionOffset (..),
+    newMotionImageInsertionOffset,
+    motionImageInsertionOffset_imageX,
+    motionImageInsertionOffset_imageY,
+
+    -- * MovSettings
+    MovSettings (..),
+    newMovSettings,
+    movSettings_clapAtom,
+    movSettings_cslgAtom,
+    movSettings_mpeg2FourCCControl,
+    movSettings_paddingControl,
+    movSettings_reference,
+
+    -- * Mp2Settings
+    Mp2Settings (..),
+    newMp2Settings,
+    mp2Settings_bitrate,
+    mp2Settings_channels,
+    mp2Settings_sampleRate,
+
+    -- * Mp3Settings
+    Mp3Settings (..),
+    newMp3Settings,
+    mp3Settings_bitrate,
+    mp3Settings_channels,
+    mp3Settings_rateControlMode,
+    mp3Settings_sampleRate,
+    mp3Settings_vbrQuality,
+
+    -- * Mp4Settings
+    Mp4Settings (..),
+    newMp4Settings,
+    mp4Settings_audioDuration,
+    mp4Settings_cslgAtom,
+    mp4Settings_cttsVersion,
+    mp4Settings_freeSpaceBox,
+    mp4Settings_moovPlacement,
+    mp4Settings_mp4MajorBrand,
+
+    -- * MpdSettings
+    MpdSettings (..),
+    newMpdSettings,
+    mpdSettings_accessibilityCaptionHints,
+    mpdSettings_audioDuration,
+    mpdSettings_captionContainerType,
+    mpdSettings_klvMetadata,
+    mpdSettings_manifestMetadataSignaling,
+    mpdSettings_scte35Esam,
+    mpdSettings_scte35Source,
+    mpdSettings_timedMetadata,
+    mpdSettings_timedMetadataBoxVersion,
+    mpdSettings_timedMetadataSchemeIdUri,
+    mpdSettings_timedMetadataValue,
+
+    -- * Mpeg2Settings
+    Mpeg2Settings (..),
+    newMpeg2Settings,
+    mpeg2Settings_adaptiveQuantization,
+    mpeg2Settings_bitrate,
+    mpeg2Settings_codecLevel,
+    mpeg2Settings_codecProfile,
+    mpeg2Settings_dynamicSubGop,
+    mpeg2Settings_framerateControl,
+    mpeg2Settings_framerateConversionAlgorithm,
+    mpeg2Settings_framerateDenominator,
+    mpeg2Settings_framerateNumerator,
+    mpeg2Settings_gopClosedCadence,
+    mpeg2Settings_gopSize,
+    mpeg2Settings_gopSizeUnits,
+    mpeg2Settings_hrdBufferFinalFillPercentage,
+    mpeg2Settings_hrdBufferInitialFillPercentage,
+    mpeg2Settings_hrdBufferSize,
+    mpeg2Settings_interlaceMode,
+    mpeg2Settings_intraDcPrecision,
+    mpeg2Settings_maxBitrate,
+    mpeg2Settings_minIInterval,
+    mpeg2Settings_numberBFramesBetweenReferenceFrames,
+    mpeg2Settings_parControl,
+    mpeg2Settings_parDenominator,
+    mpeg2Settings_parNumerator,
+    mpeg2Settings_qualityTuningLevel,
+    mpeg2Settings_rateControlMode,
+    mpeg2Settings_scanTypeConversionMode,
+    mpeg2Settings_sceneChangeDetect,
+    mpeg2Settings_slowPal,
+    mpeg2Settings_softness,
+    mpeg2Settings_spatialAdaptiveQuantization,
+    mpeg2Settings_syntax,
+    mpeg2Settings_telecine,
+    mpeg2Settings_temporalAdaptiveQuantization,
+
+    -- * MsSmoothAdditionalManifest
+    MsSmoothAdditionalManifest (..),
+    newMsSmoothAdditionalManifest,
+    msSmoothAdditionalManifest_manifestNameModifier,
+    msSmoothAdditionalManifest_selectedOutputs,
+
+    -- * MsSmoothEncryptionSettings
+    MsSmoothEncryptionSettings (..),
+    newMsSmoothEncryptionSettings,
+    msSmoothEncryptionSettings_spekeKeyProvider,
+
+    -- * MsSmoothGroupSettings
+    MsSmoothGroupSettings (..),
+    newMsSmoothGroupSettings,
+    msSmoothGroupSettings_additionalManifests,
+    msSmoothGroupSettings_audioDeduplication,
+    msSmoothGroupSettings_destination,
+    msSmoothGroupSettings_destinationSettings,
+    msSmoothGroupSettings_encryption,
+    msSmoothGroupSettings_fragmentLength,
+    msSmoothGroupSettings_fragmentLengthControl,
+    msSmoothGroupSettings_manifestEncoding,
+
+    -- * MxfSettings
+    MxfSettings (..),
+    newMxfSettings,
+    mxfSettings_afdSignaling,
+    mxfSettings_profile,
+    mxfSettings_xavcProfileSettings,
+
+    -- * MxfXavcProfileSettings
+    MxfXavcProfileSettings (..),
+    newMxfXavcProfileSettings,
+    mxfXavcProfileSettings_durationMode,
+    mxfXavcProfileSettings_maxAncDataSize,
+
+    -- * NexGuardFileMarkerSettings
+    NexGuardFileMarkerSettings (..),
+    newNexGuardFileMarkerSettings,
+    nexGuardFileMarkerSettings_license,
+    nexGuardFileMarkerSettings_payload,
+    nexGuardFileMarkerSettings_preset,
+    nexGuardFileMarkerSettings_strength,
+
+    -- * NielsenConfiguration
+    NielsenConfiguration (..),
+    newNielsenConfiguration,
+    nielsenConfiguration_breakoutCode,
+    nielsenConfiguration_distributorId,
+
+    -- * NielsenNonLinearWatermarkSettings
+    NielsenNonLinearWatermarkSettings (..),
+    newNielsenNonLinearWatermarkSettings,
+    nielsenNonLinearWatermarkSettings_activeWatermarkProcess,
+    nielsenNonLinearWatermarkSettings_adiFilename,
+    nielsenNonLinearWatermarkSettings_assetId,
+    nielsenNonLinearWatermarkSettings_assetName,
+    nielsenNonLinearWatermarkSettings_cbetSourceId,
+    nielsenNonLinearWatermarkSettings_episodeId,
+    nielsenNonLinearWatermarkSettings_metadataDestination,
+    nielsenNonLinearWatermarkSettings_sourceId,
+    nielsenNonLinearWatermarkSettings_sourceWatermarkStatus,
+    nielsenNonLinearWatermarkSettings_ticServerUrl,
+    nielsenNonLinearWatermarkSettings_uniqueTicPerAudioTrack,
+
+    -- * NoiseReducer
+    NoiseReducer (..),
+    newNoiseReducer,
+    noiseReducer_filter,
+    noiseReducer_filterSettings,
+    noiseReducer_spatialFilterSettings,
+    noiseReducer_temporalFilterSettings,
+
+    -- * NoiseReducerFilterSettings
+    NoiseReducerFilterSettings (..),
+    newNoiseReducerFilterSettings,
+    noiseReducerFilterSettings_strength,
+
+    -- * NoiseReducerSpatialFilterSettings
+    NoiseReducerSpatialFilterSettings (..),
+    newNoiseReducerSpatialFilterSettings,
+    noiseReducerSpatialFilterSettings_postFilterSharpenStrength,
+    noiseReducerSpatialFilterSettings_speed,
+    noiseReducerSpatialFilterSettings_strength,
+
+    -- * NoiseReducerTemporalFilterSettings
+    NoiseReducerTemporalFilterSettings (..),
+    newNoiseReducerTemporalFilterSettings,
+    noiseReducerTemporalFilterSettings_aggressiveMode,
+    noiseReducerTemporalFilterSettings_postTemporalSharpening,
+    noiseReducerTemporalFilterSettings_postTemporalSharpeningStrength,
+    noiseReducerTemporalFilterSettings_speed,
+    noiseReducerTemporalFilterSettings_strength,
+
+    -- * OpusSettings
+    OpusSettings (..),
+    newOpusSettings,
+    opusSettings_bitrate,
+    opusSettings_channels,
+    opusSettings_sampleRate,
+
+    -- * Output
+    Output (..),
+    newOutput,
+    output_audioDescriptions,
+    output_captionDescriptions,
+    output_containerSettings,
+    output_extension,
+    output_nameModifier,
+    output_outputSettings,
+    output_preset,
+    output_videoDescription,
+
+    -- * OutputChannelMapping
+    OutputChannelMapping (..),
+    newOutputChannelMapping,
+    outputChannelMapping_inputChannels,
+    outputChannelMapping_inputChannelsFineTune,
+
+    -- * OutputDetail
+    OutputDetail (..),
+    newOutputDetail,
+    outputDetail_durationInMs,
+    outputDetail_videoDetails,
+
+    -- * OutputGroup
+    OutputGroup (..),
+    newOutputGroup,
+    outputGroup_automatedEncodingSettings,
+    outputGroup_customName,
+    outputGroup_name,
+    outputGroup_outputGroupSettings,
+    outputGroup_outputs,
+
+    -- * OutputGroupDetail
+    OutputGroupDetail (..),
+    newOutputGroupDetail,
+    outputGroupDetail_outputDetails,
+
+    -- * OutputGroupSettings
+    OutputGroupSettings (..),
+    newOutputGroupSettings,
+    outputGroupSettings_cmafGroupSettings,
+    outputGroupSettings_dashIsoGroupSettings,
+    outputGroupSettings_fileGroupSettings,
+    outputGroupSettings_hlsGroupSettings,
+    outputGroupSettings_msSmoothGroupSettings,
+    outputGroupSettings_type,
+
+    -- * OutputSettings
+    OutputSettings (..),
+    newOutputSettings,
+    outputSettings_hlsSettings,
+
+    -- * PartnerWatermarking
+    PartnerWatermarking (..),
+    newPartnerWatermarking,
+    partnerWatermarking_nexguardFileMarkerSettings,
+
+    -- * Policy
+    Policy (..),
+    newPolicy,
+    policy_httpInputs,
+    policy_httpsInputs,
+    policy_s3Inputs,
+
+    -- * Preset
+    Preset (..),
+    newPreset,
+    preset_arn,
+    preset_category,
+    preset_createdAt,
+    preset_description,
+    preset_lastUpdated,
+    preset_type,
+    preset_settings,
+    preset_name,
+
+    -- * PresetSettings
+    PresetSettings (..),
+    newPresetSettings,
+    presetSettings_audioDescriptions,
+    presetSettings_captionDescriptions,
+    presetSettings_containerSettings,
+    presetSettings_videoDescription,
+
+    -- * ProresSettings
+    ProresSettings (..),
+    newProresSettings,
+    proresSettings_chromaSampling,
+    proresSettings_codecProfile,
+    proresSettings_framerateControl,
+    proresSettings_framerateConversionAlgorithm,
+    proresSettings_framerateDenominator,
+    proresSettings_framerateNumerator,
+    proresSettings_interlaceMode,
+    proresSettings_parControl,
+    proresSettings_parDenominator,
+    proresSettings_parNumerator,
+    proresSettings_scanTypeConversionMode,
+    proresSettings_slowPal,
+    proresSettings_telecine,
+
+    -- * Queue
+    Queue (..),
+    newQueue,
+    queue_arn,
+    queue_createdAt,
+    queue_description,
+    queue_lastUpdated,
+    queue_pricingPlan,
+    queue_progressingJobsCount,
+    queue_reservationPlan,
+    queue_status,
+    queue_submittedJobsCount,
+    queue_type,
+    queue_name,
+
+    -- * QueueTransition
+    QueueTransition (..),
+    newQueueTransition,
+    queueTransition_destinationQueue,
+    queueTransition_sourceQueue,
+    queueTransition_timestamp,
+
+    -- * Rectangle
+    Rectangle (..),
+    newRectangle,
+    rectangle_height,
+    rectangle_width,
+    rectangle_x,
+    rectangle_y,
+
+    -- * RemixSettings
+    RemixSettings (..),
+    newRemixSettings,
+    remixSettings_channelMapping,
+    remixSettings_channelsIn,
+    remixSettings_channelsOut,
+
+    -- * ReservationPlan
+    ReservationPlan (..),
+    newReservationPlan,
+    reservationPlan_commitment,
+    reservationPlan_expiresAt,
+    reservationPlan_purchasedAt,
+    reservationPlan_renewalType,
+    reservationPlan_reservedSlots,
+    reservationPlan_status,
+
+    -- * ReservationPlanSettings
+    ReservationPlanSettings (..),
+    newReservationPlanSettings,
+    reservationPlanSettings_commitment,
+    reservationPlanSettings_reservedSlots,
+    reservationPlanSettings_renewalType,
+
+    -- * ResourceTags
+    ResourceTags (..),
+    newResourceTags,
+    resourceTags_arn,
+    resourceTags_tags,
+
+    -- * S3DestinationAccessControl
+    S3DestinationAccessControl (..),
+    newS3DestinationAccessControl,
+    s3DestinationAccessControl_cannedAcl,
+
+    -- * S3DestinationSettings
+    S3DestinationSettings (..),
+    newS3DestinationSettings,
+    s3DestinationSettings_accessControl,
+    s3DestinationSettings_encryption,
+
+    -- * S3EncryptionSettings
+    S3EncryptionSettings (..),
+    newS3EncryptionSettings,
+    s3EncryptionSettings_encryptionType,
+    s3EncryptionSettings_kmsEncryptionContext,
+    s3EncryptionSettings_kmsKeyArn,
+
+    -- * SccDestinationSettings
+    SccDestinationSettings (..),
+    newSccDestinationSettings,
+    sccDestinationSettings_framerate,
+
+    -- * SpekeKeyProvider
+    SpekeKeyProvider (..),
+    newSpekeKeyProvider,
+    spekeKeyProvider_certificateArn,
+    spekeKeyProvider_resourceId,
+    spekeKeyProvider_systemIds,
+    spekeKeyProvider_url,
+
+    -- * SpekeKeyProviderCmaf
+    SpekeKeyProviderCmaf (..),
+    newSpekeKeyProviderCmaf,
+    spekeKeyProviderCmaf_certificateArn,
+    spekeKeyProviderCmaf_dashSignaledSystemIds,
+    spekeKeyProviderCmaf_hlsSignaledSystemIds,
+    spekeKeyProviderCmaf_resourceId,
+    spekeKeyProviderCmaf_url,
+
+    -- * SrtDestinationSettings
+    SrtDestinationSettings (..),
+    newSrtDestinationSettings,
+    srtDestinationSettings_stylePassthrough,
+
+    -- * StaticKeyProvider
+    StaticKeyProvider (..),
+    newStaticKeyProvider,
+    staticKeyProvider_keyFormat,
+    staticKeyProvider_keyFormatVersions,
+    staticKeyProvider_staticKeyValue,
+    staticKeyProvider_url,
+
+    -- * TeletextDestinationSettings
+    TeletextDestinationSettings (..),
+    newTeletextDestinationSettings,
+    teletextDestinationSettings_pageNumber,
+    teletextDestinationSettings_pageTypes,
+
+    -- * TeletextSourceSettings
+    TeletextSourceSettings (..),
+    newTeletextSourceSettings,
+    teletextSourceSettings_pageNumber,
+
+    -- * TimecodeBurnin
+    TimecodeBurnin (..),
+    newTimecodeBurnin,
+    timecodeBurnin_fontSize,
+    timecodeBurnin_position,
+    timecodeBurnin_prefix,
+
+    -- * TimecodeConfig
+    TimecodeConfig (..),
+    newTimecodeConfig,
+    timecodeConfig_anchor,
+    timecodeConfig_source,
+    timecodeConfig_start,
+    timecodeConfig_timestampOffset,
+
+    -- * TimedMetadataInsertion
+    TimedMetadataInsertion (..),
+    newTimedMetadataInsertion,
+    timedMetadataInsertion_id3Insertions,
+
+    -- * Timing
+    Timing (..),
+    newTiming,
+    timing_finishTime,
+    timing_startTime,
+    timing_submitTime,
+
+    -- * TrackSourceSettings
+    TrackSourceSettings (..),
+    newTrackSourceSettings,
+    trackSourceSettings_trackNumber,
+
+    -- * TtmlDestinationSettings
+    TtmlDestinationSettings (..),
+    newTtmlDestinationSettings,
+    ttmlDestinationSettings_stylePassthrough,
+
+    -- * Vc3Settings
+    Vc3Settings (..),
+    newVc3Settings,
+    vc3Settings_framerateControl,
+    vc3Settings_framerateConversionAlgorithm,
+    vc3Settings_framerateDenominator,
+    vc3Settings_framerateNumerator,
+    vc3Settings_interlaceMode,
+    vc3Settings_scanTypeConversionMode,
+    vc3Settings_slowPal,
+    vc3Settings_telecine,
+    vc3Settings_vc3Class,
+
+    -- * VideoCodecSettings
+    VideoCodecSettings (..),
+    newVideoCodecSettings,
+    videoCodecSettings_av1Settings,
+    videoCodecSettings_avcIntraSettings,
+    videoCodecSettings_codec,
+    videoCodecSettings_frameCaptureSettings,
+    videoCodecSettings_h264Settings,
+    videoCodecSettings_h265Settings,
+    videoCodecSettings_mpeg2Settings,
+    videoCodecSettings_proresSettings,
+    videoCodecSettings_vc3Settings,
+    videoCodecSettings_vp8Settings,
+    videoCodecSettings_vp9Settings,
+    videoCodecSettings_xavcSettings,
+
+    -- * VideoDescription
+    VideoDescription (..),
+    newVideoDescription,
+    videoDescription_afdSignaling,
+    videoDescription_antiAlias,
+    videoDescription_codecSettings,
+    videoDescription_colorMetadata,
+    videoDescription_crop,
+    videoDescription_dropFrameTimecode,
+    videoDescription_fixedAfd,
+    videoDescription_height,
+    videoDescription_position,
+    videoDescription_respondToAfd,
+    videoDescription_scalingBehavior,
+    videoDescription_sharpness,
+    videoDescription_timecodeInsertion,
+    videoDescription_videoPreprocessors,
+    videoDescription_width,
+
+    -- * VideoDetail
+    VideoDetail (..),
+    newVideoDetail,
+    videoDetail_heightInPx,
+    videoDetail_widthInPx,
+
+    -- * VideoPreprocessor
+    VideoPreprocessor (..),
+    newVideoPreprocessor,
+    videoPreprocessor_colorCorrector,
+    videoPreprocessor_deinterlacer,
+    videoPreprocessor_dolbyVision,
+    videoPreprocessor_hdr10Plus,
+    videoPreprocessor_imageInserter,
+    videoPreprocessor_noiseReducer,
+    videoPreprocessor_partnerWatermarking,
+    videoPreprocessor_timecodeBurnin,
+
+    -- * VideoSelector
+    VideoSelector (..),
+    newVideoSelector,
+    videoSelector_alphaBehavior,
+    videoSelector_colorSpace,
+    videoSelector_colorSpaceUsage,
+    videoSelector_embeddedTimecodeOverride,
+    videoSelector_hdr10Metadata,
+    videoSelector_padVideo,
+    videoSelector_pid,
+    videoSelector_programNumber,
+    videoSelector_rotate,
+    videoSelector_sampleRange,
+
+    -- * VorbisSettings
+    VorbisSettings (..),
+    newVorbisSettings,
+    vorbisSettings_channels,
+    vorbisSettings_sampleRate,
+    vorbisSettings_vbrQuality,
+
+    -- * Vp8Settings
+    Vp8Settings (..),
+    newVp8Settings,
+    vp8Settings_bitrate,
+    vp8Settings_framerateControl,
+    vp8Settings_framerateConversionAlgorithm,
+    vp8Settings_framerateDenominator,
+    vp8Settings_framerateNumerator,
+    vp8Settings_gopSize,
+    vp8Settings_hrdBufferSize,
+    vp8Settings_maxBitrate,
+    vp8Settings_parControl,
+    vp8Settings_parDenominator,
+    vp8Settings_parNumerator,
+    vp8Settings_qualityTuningLevel,
+    vp8Settings_rateControlMode,
+
+    -- * Vp9Settings
+    Vp9Settings (..),
+    newVp9Settings,
+    vp9Settings_bitrate,
+    vp9Settings_framerateControl,
+    vp9Settings_framerateConversionAlgorithm,
+    vp9Settings_framerateDenominator,
+    vp9Settings_framerateNumerator,
+    vp9Settings_gopSize,
+    vp9Settings_hrdBufferSize,
+    vp9Settings_maxBitrate,
+    vp9Settings_parControl,
+    vp9Settings_parDenominator,
+    vp9Settings_parNumerator,
+    vp9Settings_qualityTuningLevel,
+    vp9Settings_rateControlMode,
+
+    -- * WavSettings
+    WavSettings (..),
+    newWavSettings,
+    wavSettings_bitDepth,
+    wavSettings_channels,
+    wavSettings_format,
+    wavSettings_sampleRate,
+
+    -- * WebvttDestinationSettings
+    WebvttDestinationSettings (..),
+    newWebvttDestinationSettings,
+    webvttDestinationSettings_accessibility,
+    webvttDestinationSettings_stylePassthrough,
+
+    -- * WebvttHlsSourceSettings
+    WebvttHlsSourceSettings (..),
+    newWebvttHlsSourceSettings,
+    webvttHlsSourceSettings_renditionGroupId,
+    webvttHlsSourceSettings_renditionLanguageCode,
+    webvttHlsSourceSettings_renditionName,
+
+    -- * Xavc4kIntraCbgProfileSettings
+    Xavc4kIntraCbgProfileSettings (..),
+    newXavc4kIntraCbgProfileSettings,
+    xavc4kIntraCbgProfileSettings_xavcClass,
+
+    -- * Xavc4kIntraVbrProfileSettings
+    Xavc4kIntraVbrProfileSettings (..),
+    newXavc4kIntraVbrProfileSettings,
+    xavc4kIntraVbrProfileSettings_xavcClass,
+
+    -- * Xavc4kProfileSettings
+    Xavc4kProfileSettings (..),
+    newXavc4kProfileSettings,
+    xavc4kProfileSettings_bitrateClass,
+    xavc4kProfileSettings_codecProfile,
+    xavc4kProfileSettings_flickerAdaptiveQuantization,
+    xavc4kProfileSettings_gopBReference,
+    xavc4kProfileSettings_gopClosedCadence,
+    xavc4kProfileSettings_hrdBufferSize,
+    xavc4kProfileSettings_qualityTuningLevel,
+    xavc4kProfileSettings_slices,
+
+    -- * XavcHdIntraCbgProfileSettings
+    XavcHdIntraCbgProfileSettings (..),
+    newXavcHdIntraCbgProfileSettings,
+    xavcHdIntraCbgProfileSettings_xavcClass,
+
+    -- * XavcHdProfileSettings
+    XavcHdProfileSettings (..),
+    newXavcHdProfileSettings,
+    xavcHdProfileSettings_bitrateClass,
+    xavcHdProfileSettings_flickerAdaptiveQuantization,
+    xavcHdProfileSettings_gopBReference,
+    xavcHdProfileSettings_gopClosedCadence,
+    xavcHdProfileSettings_hrdBufferSize,
+    xavcHdProfileSettings_interlaceMode,
+    xavcHdProfileSettings_qualityTuningLevel,
+    xavcHdProfileSettings_slices,
+    xavcHdProfileSettings_telecine,
+
+    -- * XavcSettings
+    XavcSettings (..),
+    newXavcSettings,
+    xavcSettings_adaptiveQuantization,
+    xavcSettings_entropyEncoding,
+    xavcSettings_framerateControl,
+    xavcSettings_framerateConversionAlgorithm,
+    xavcSettings_framerateDenominator,
+    xavcSettings_framerateNumerator,
+    xavcSettings_profile,
+    xavcSettings_slowPal,
+    xavcSettings_softness,
+    xavcSettings_spatialAdaptiveQuantization,
+    xavcSettings_temporalAdaptiveQuantization,
+    xavcSettings_xavc4kIntraCbgProfileSettings,
+    xavcSettings_xavc4kIntraVbrProfileSettings,
+    xavcSettings_xavc4kProfileSettings,
+    xavcSettings_xavcHdIntraCbgProfileSettings,
+    xavcSettings_xavcHdProfileSettings,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.MediaConvert.Types.AacAudioDescriptionBroadcasterMix
+import Amazonka.MediaConvert.Types.AacCodecProfile
+import Amazonka.MediaConvert.Types.AacCodingMode
+import Amazonka.MediaConvert.Types.AacRateControlMode
+import Amazonka.MediaConvert.Types.AacRawFormat
+import Amazonka.MediaConvert.Types.AacSettings
+import Amazonka.MediaConvert.Types.AacSpecification
+import Amazonka.MediaConvert.Types.AacVbrQuality
+import Amazonka.MediaConvert.Types.Ac3BitstreamMode
+import Amazonka.MediaConvert.Types.Ac3CodingMode
+import Amazonka.MediaConvert.Types.Ac3DynamicRangeCompressionLine
+import Amazonka.MediaConvert.Types.Ac3DynamicRangeCompressionProfile
+import Amazonka.MediaConvert.Types.Ac3DynamicRangeCompressionRf
+import Amazonka.MediaConvert.Types.Ac3LfeFilter
+import Amazonka.MediaConvert.Types.Ac3MetadataControl
+import Amazonka.MediaConvert.Types.Ac3Settings
+import Amazonka.MediaConvert.Types.AccelerationMode
+import Amazonka.MediaConvert.Types.AccelerationSettings
+import Amazonka.MediaConvert.Types.AccelerationStatus
+import Amazonka.MediaConvert.Types.AfdSignaling
+import Amazonka.MediaConvert.Types.AiffSettings
+import Amazonka.MediaConvert.Types.AllowedRenditionSize
+import Amazonka.MediaConvert.Types.AlphaBehavior
+import Amazonka.MediaConvert.Types.AncillaryConvert608To708
+import Amazonka.MediaConvert.Types.AncillarySourceSettings
+import Amazonka.MediaConvert.Types.AncillaryTerminateCaptions
+import Amazonka.MediaConvert.Types.AntiAlias
+import Amazonka.MediaConvert.Types.AudioChannelTag
+import Amazonka.MediaConvert.Types.AudioChannelTaggingSettings
+import Amazonka.MediaConvert.Types.AudioCodec
+import Amazonka.MediaConvert.Types.AudioCodecSettings
+import Amazonka.MediaConvert.Types.AudioDefaultSelection
+import Amazonka.MediaConvert.Types.AudioDescription
+import Amazonka.MediaConvert.Types.AudioDurationCorrection
+import Amazonka.MediaConvert.Types.AudioLanguageCodeControl
+import Amazonka.MediaConvert.Types.AudioNormalizationAlgorithm
+import Amazonka.MediaConvert.Types.AudioNormalizationAlgorithmControl
+import Amazonka.MediaConvert.Types.AudioNormalizationLoudnessLogging
+import Amazonka.MediaConvert.Types.AudioNormalizationPeakCalculation
+import Amazonka.MediaConvert.Types.AudioNormalizationSettings
+import Amazonka.MediaConvert.Types.AudioSelector
+import Amazonka.MediaConvert.Types.AudioSelectorGroup
+import Amazonka.MediaConvert.Types.AudioSelectorType
+import Amazonka.MediaConvert.Types.AudioTypeControl
+import Amazonka.MediaConvert.Types.AutomatedAbrRule
+import Amazonka.MediaConvert.Types.AutomatedAbrSettings
+import Amazonka.MediaConvert.Types.AutomatedEncodingSettings
+import Amazonka.MediaConvert.Types.Av1AdaptiveQuantization
+import Amazonka.MediaConvert.Types.Av1BitDepth
+import Amazonka.MediaConvert.Types.Av1FramerateControl
+import Amazonka.MediaConvert.Types.Av1FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.Av1QvbrSettings
+import Amazonka.MediaConvert.Types.Av1RateControlMode
+import Amazonka.MediaConvert.Types.Av1Settings
+import Amazonka.MediaConvert.Types.Av1SpatialAdaptiveQuantization
+import Amazonka.MediaConvert.Types.AvailBlanking
+import Amazonka.MediaConvert.Types.AvcIntraClass
+import Amazonka.MediaConvert.Types.AvcIntraFramerateControl
+import Amazonka.MediaConvert.Types.AvcIntraFramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.AvcIntraInterlaceMode
+import Amazonka.MediaConvert.Types.AvcIntraScanTypeConversionMode
+import Amazonka.MediaConvert.Types.AvcIntraSettings
+import Amazonka.MediaConvert.Types.AvcIntraSlowPal
+import Amazonka.MediaConvert.Types.AvcIntraTelecine
+import Amazonka.MediaConvert.Types.AvcIntraUhdQualityTuningLevel
+import Amazonka.MediaConvert.Types.AvcIntraUhdSettings
+import Amazonka.MediaConvert.Types.BillingTagsSource
+import Amazonka.MediaConvert.Types.BurnInSubtitleStylePassthrough
+import Amazonka.MediaConvert.Types.BurninDestinationSettings
+import Amazonka.MediaConvert.Types.BurninSubtitleAlignment
+import Amazonka.MediaConvert.Types.BurninSubtitleApplyFontColor
+import Amazonka.MediaConvert.Types.BurninSubtitleBackgroundColor
+import Amazonka.MediaConvert.Types.BurninSubtitleFallbackFont
+import Amazonka.MediaConvert.Types.BurninSubtitleFontColor
+import Amazonka.MediaConvert.Types.BurninSubtitleOutlineColor
+import Amazonka.MediaConvert.Types.BurninSubtitleShadowColor
+import Amazonka.MediaConvert.Types.BurninSubtitleTeletextSpacing
+import Amazonka.MediaConvert.Types.CaptionDescription
+import Amazonka.MediaConvert.Types.CaptionDescriptionPreset
+import Amazonka.MediaConvert.Types.CaptionDestinationSettings
+import Amazonka.MediaConvert.Types.CaptionDestinationType
+import Amazonka.MediaConvert.Types.CaptionSelector
+import Amazonka.MediaConvert.Types.CaptionSourceFramerate
+import Amazonka.MediaConvert.Types.CaptionSourceSettings
+import Amazonka.MediaConvert.Types.CaptionSourceType
+import Amazonka.MediaConvert.Types.ChannelMapping
+import Amazonka.MediaConvert.Types.CmafAdditionalManifest
+import Amazonka.MediaConvert.Types.CmafClientCache
+import Amazonka.MediaConvert.Types.CmafCodecSpecification
+import Amazonka.MediaConvert.Types.CmafEncryptionSettings
+import Amazonka.MediaConvert.Types.CmafEncryptionType
+import Amazonka.MediaConvert.Types.CmafGroupSettings
+import Amazonka.MediaConvert.Types.CmafImageBasedTrickPlay
+import Amazonka.MediaConvert.Types.CmafImageBasedTrickPlaySettings
+import Amazonka.MediaConvert.Types.CmafInitializationVectorInManifest
+import Amazonka.MediaConvert.Types.CmafIntervalCadence
+import Amazonka.MediaConvert.Types.CmafKeyProviderType
+import Amazonka.MediaConvert.Types.CmafManifestCompression
+import Amazonka.MediaConvert.Types.CmafManifestDurationFormat
+import Amazonka.MediaConvert.Types.CmafMpdManifestBandwidthType
+import Amazonka.MediaConvert.Types.CmafMpdProfile
+import Amazonka.MediaConvert.Types.CmafPtsOffsetHandlingForBFrames
+import Amazonka.MediaConvert.Types.CmafSegmentControl
+import Amazonka.MediaConvert.Types.CmafSegmentLengthControl
+import Amazonka.MediaConvert.Types.CmafStreamInfResolution
+import Amazonka.MediaConvert.Types.CmafTargetDurationCompatibilityMode
+import Amazonka.MediaConvert.Types.CmafVideoCompositionOffsets
+import Amazonka.MediaConvert.Types.CmafWriteDASHManifest
+import Amazonka.MediaConvert.Types.CmafWriteHLSManifest
+import Amazonka.MediaConvert.Types.CmafWriteSegmentTimelineInRepresentation
+import Amazonka.MediaConvert.Types.CmfcAudioDuration
+import Amazonka.MediaConvert.Types.CmfcAudioTrackType
+import Amazonka.MediaConvert.Types.CmfcDescriptiveVideoServiceFlag
+import Amazonka.MediaConvert.Types.CmfcIFrameOnlyManifest
+import Amazonka.MediaConvert.Types.CmfcKlvMetadata
+import Amazonka.MediaConvert.Types.CmfcManifestMetadataSignaling
+import Amazonka.MediaConvert.Types.CmfcScte35Esam
+import Amazonka.MediaConvert.Types.CmfcScte35Source
+import Amazonka.MediaConvert.Types.CmfcSettings
+import Amazonka.MediaConvert.Types.CmfcTimedMetadata
+import Amazonka.MediaConvert.Types.CmfcTimedMetadataBoxVersion
+import Amazonka.MediaConvert.Types.ColorCorrector
+import Amazonka.MediaConvert.Types.ColorMetadata
+import Amazonka.MediaConvert.Types.ColorSpace
+import Amazonka.MediaConvert.Types.ColorSpaceConversion
+import Amazonka.MediaConvert.Types.ColorSpaceUsage
+import Amazonka.MediaConvert.Types.Commitment
+import Amazonka.MediaConvert.Types.ContainerSettings
+import Amazonka.MediaConvert.Types.ContainerType
+import Amazonka.MediaConvert.Types.CopyProtectionAction
+import Amazonka.MediaConvert.Types.DashAdditionalManifest
+import Amazonka.MediaConvert.Types.DashIsoEncryptionSettings
+import Amazonka.MediaConvert.Types.DashIsoGroupAudioChannelConfigSchemeIdUri
+import Amazonka.MediaConvert.Types.DashIsoGroupSettings
+import Amazonka.MediaConvert.Types.DashIsoHbbtvCompliance
+import Amazonka.MediaConvert.Types.DashIsoImageBasedTrickPlay
+import Amazonka.MediaConvert.Types.DashIsoImageBasedTrickPlaySettings
+import Amazonka.MediaConvert.Types.DashIsoIntervalCadence
+import Amazonka.MediaConvert.Types.DashIsoMpdManifestBandwidthType
+import Amazonka.MediaConvert.Types.DashIsoMpdProfile
+import Amazonka.MediaConvert.Types.DashIsoPlaybackDeviceCompatibility
+import Amazonka.MediaConvert.Types.DashIsoPtsOffsetHandlingForBFrames
+import Amazonka.MediaConvert.Types.DashIsoSegmentControl
+import Amazonka.MediaConvert.Types.DashIsoSegmentLengthControl
+import Amazonka.MediaConvert.Types.DashIsoVideoCompositionOffsets
+import Amazonka.MediaConvert.Types.DashIsoWriteSegmentTimelineInRepresentation
+import Amazonka.MediaConvert.Types.DecryptionMode
+import Amazonka.MediaConvert.Types.DeinterlaceAlgorithm
+import Amazonka.MediaConvert.Types.Deinterlacer
+import Amazonka.MediaConvert.Types.DeinterlacerControl
+import Amazonka.MediaConvert.Types.DeinterlacerMode
+import Amazonka.MediaConvert.Types.DescribeEndpointsMode
+import Amazonka.MediaConvert.Types.DestinationSettings
+import Amazonka.MediaConvert.Types.DolbyVision
+import Amazonka.MediaConvert.Types.DolbyVisionLevel6Metadata
+import Amazonka.MediaConvert.Types.DolbyVisionLevel6Mode
+import Amazonka.MediaConvert.Types.DolbyVisionMapping
+import Amazonka.MediaConvert.Types.DolbyVisionProfile
+import Amazonka.MediaConvert.Types.DropFrameTimecode
+import Amazonka.MediaConvert.Types.DvbNitSettings
+import Amazonka.MediaConvert.Types.DvbSdtSettings
+import Amazonka.MediaConvert.Types.DvbSubDestinationSettings
+import Amazonka.MediaConvert.Types.DvbSubSourceSettings
+import Amazonka.MediaConvert.Types.DvbSubSubtitleFallbackFont
+import Amazonka.MediaConvert.Types.DvbSubtitleAlignment
+import Amazonka.MediaConvert.Types.DvbSubtitleApplyFontColor
+import Amazonka.MediaConvert.Types.DvbSubtitleBackgroundColor
+import Amazonka.MediaConvert.Types.DvbSubtitleFontColor
+import Amazonka.MediaConvert.Types.DvbSubtitleOutlineColor
+import Amazonka.MediaConvert.Types.DvbSubtitleShadowColor
+import Amazonka.MediaConvert.Types.DvbSubtitleStylePassthrough
+import Amazonka.MediaConvert.Types.DvbSubtitleTeletextSpacing
+import Amazonka.MediaConvert.Types.DvbSubtitlingType
+import Amazonka.MediaConvert.Types.DvbTdtSettings
+import Amazonka.MediaConvert.Types.DvbddsHandling
+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.Eac3AtmosSettings
+import Amazonka.MediaConvert.Types.Eac3AtmosStereoDownmix
+import Amazonka.MediaConvert.Types.Eac3AtmosSurroundExMode
+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.Eac3Settings
+import Amazonka.MediaConvert.Types.Eac3StereoDownmix
+import Amazonka.MediaConvert.Types.Eac3SurroundExMode
+import Amazonka.MediaConvert.Types.Eac3SurroundMode
+import Amazonka.MediaConvert.Types.EmbeddedConvert608To708
+import Amazonka.MediaConvert.Types.EmbeddedDestinationSettings
+import Amazonka.MediaConvert.Types.EmbeddedSourceSettings
+import Amazonka.MediaConvert.Types.EmbeddedTerminateCaptions
+import Amazonka.MediaConvert.Types.EmbeddedTimecodeOverride
+import Amazonka.MediaConvert.Types.Endpoint
+import Amazonka.MediaConvert.Types.EsamManifestConfirmConditionNotification
+import Amazonka.MediaConvert.Types.EsamSettings
+import Amazonka.MediaConvert.Types.EsamSignalProcessingNotification
+import Amazonka.MediaConvert.Types.ExtendedDataServices
+import Amazonka.MediaConvert.Types.F4vMoovPlacement
+import Amazonka.MediaConvert.Types.F4vSettings
+import Amazonka.MediaConvert.Types.FileGroupSettings
+import Amazonka.MediaConvert.Types.FileSourceConvert608To708
+import Amazonka.MediaConvert.Types.FileSourceSettings
+import Amazonka.MediaConvert.Types.FileSourceTimeDeltaUnits
+import Amazonka.MediaConvert.Types.FontScript
+import Amazonka.MediaConvert.Types.ForceIncludeRenditionSize
+import Amazonka.MediaConvert.Types.FrameCaptureSettings
+import Amazonka.MediaConvert.Types.H264AdaptiveQuantization
+import Amazonka.MediaConvert.Types.H264CodecLevel
+import Amazonka.MediaConvert.Types.H264CodecProfile
+import Amazonka.MediaConvert.Types.H264DynamicSubGop
+import Amazonka.MediaConvert.Types.H264EntropyEncoding
+import Amazonka.MediaConvert.Types.H264FieldEncoding
+import Amazonka.MediaConvert.Types.H264FlickerAdaptiveQuantization
+import Amazonka.MediaConvert.Types.H264FramerateControl
+import Amazonka.MediaConvert.Types.H264FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.H264GopBReference
+import Amazonka.MediaConvert.Types.H264GopSizeUnits
+import Amazonka.MediaConvert.Types.H264InterlaceMode
+import Amazonka.MediaConvert.Types.H264ParControl
+import Amazonka.MediaConvert.Types.H264QualityTuningLevel
+import Amazonka.MediaConvert.Types.H264QvbrSettings
+import Amazonka.MediaConvert.Types.H264RateControlMode
+import Amazonka.MediaConvert.Types.H264RepeatPps
+import Amazonka.MediaConvert.Types.H264ScanTypeConversionMode
+import Amazonka.MediaConvert.Types.H264SceneChangeDetect
+import Amazonka.MediaConvert.Types.H264Settings
+import Amazonka.MediaConvert.Types.H264SlowPal
+import Amazonka.MediaConvert.Types.H264SpatialAdaptiveQuantization
+import Amazonka.MediaConvert.Types.H264Syntax
+import Amazonka.MediaConvert.Types.H264Telecine
+import Amazonka.MediaConvert.Types.H264TemporalAdaptiveQuantization
+import Amazonka.MediaConvert.Types.H264UnregisteredSeiTimecode
+import Amazonka.MediaConvert.Types.H265AdaptiveQuantization
+import Amazonka.MediaConvert.Types.H265AlternateTransferFunctionSei
+import Amazonka.MediaConvert.Types.H265CodecLevel
+import Amazonka.MediaConvert.Types.H265CodecProfile
+import Amazonka.MediaConvert.Types.H265DynamicSubGop
+import Amazonka.MediaConvert.Types.H265FlickerAdaptiveQuantization
+import Amazonka.MediaConvert.Types.H265FramerateControl
+import Amazonka.MediaConvert.Types.H265FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.H265GopBReference
+import Amazonka.MediaConvert.Types.H265GopSizeUnits
+import Amazonka.MediaConvert.Types.H265InterlaceMode
+import Amazonka.MediaConvert.Types.H265ParControl
+import Amazonka.MediaConvert.Types.H265QualityTuningLevel
+import Amazonka.MediaConvert.Types.H265QvbrSettings
+import Amazonka.MediaConvert.Types.H265RateControlMode
+import Amazonka.MediaConvert.Types.H265SampleAdaptiveOffsetFilterMode
+import Amazonka.MediaConvert.Types.H265ScanTypeConversionMode
+import Amazonka.MediaConvert.Types.H265SceneChangeDetect
+import Amazonka.MediaConvert.Types.H265Settings
+import Amazonka.MediaConvert.Types.H265SlowPal
+import Amazonka.MediaConvert.Types.H265SpatialAdaptiveQuantization
+import Amazonka.MediaConvert.Types.H265Telecine
+import Amazonka.MediaConvert.Types.H265TemporalAdaptiveQuantization
+import Amazonka.MediaConvert.Types.H265TemporalIds
+import Amazonka.MediaConvert.Types.H265Tiles
+import Amazonka.MediaConvert.Types.H265UnregisteredSeiTimecode
+import Amazonka.MediaConvert.Types.H265WriteMp4PackagingType
+import Amazonka.MediaConvert.Types.Hdr10Metadata
+import Amazonka.MediaConvert.Types.Hdr10Plus
+import Amazonka.MediaConvert.Types.HlsAdMarkers
+import Amazonka.MediaConvert.Types.HlsAdditionalManifest
+import Amazonka.MediaConvert.Types.HlsAudioOnlyContainer
+import Amazonka.MediaConvert.Types.HlsAudioOnlyHeader
+import Amazonka.MediaConvert.Types.HlsAudioTrackType
+import Amazonka.MediaConvert.Types.HlsCaptionLanguageMapping
+import Amazonka.MediaConvert.Types.HlsCaptionLanguageSetting
+import Amazonka.MediaConvert.Types.HlsCaptionSegmentLengthControl
+import Amazonka.MediaConvert.Types.HlsClientCache
+import Amazonka.MediaConvert.Types.HlsCodecSpecification
+import Amazonka.MediaConvert.Types.HlsDescriptiveVideoServiceFlag
+import Amazonka.MediaConvert.Types.HlsDirectoryStructure
+import Amazonka.MediaConvert.Types.HlsEncryptionSettings
+import Amazonka.MediaConvert.Types.HlsEncryptionType
+import Amazonka.MediaConvert.Types.HlsGroupSettings
+import Amazonka.MediaConvert.Types.HlsIFrameOnlyManifest
+import Amazonka.MediaConvert.Types.HlsImageBasedTrickPlay
+import Amazonka.MediaConvert.Types.HlsImageBasedTrickPlaySettings
+import Amazonka.MediaConvert.Types.HlsInitializationVectorInManifest
+import Amazonka.MediaConvert.Types.HlsIntervalCadence
+import Amazonka.MediaConvert.Types.HlsKeyProviderType
+import Amazonka.MediaConvert.Types.HlsManifestCompression
+import Amazonka.MediaConvert.Types.HlsManifestDurationFormat
+import Amazonka.MediaConvert.Types.HlsOfflineEncrypted
+import Amazonka.MediaConvert.Types.HlsOutputSelection
+import Amazonka.MediaConvert.Types.HlsProgramDateTime
+import Amazonka.MediaConvert.Types.HlsRenditionGroupSettings
+import Amazonka.MediaConvert.Types.HlsSegmentControl
+import Amazonka.MediaConvert.Types.HlsSegmentLengthControl
+import Amazonka.MediaConvert.Types.HlsSettings
+import Amazonka.MediaConvert.Types.HlsStreamInfResolution
+import Amazonka.MediaConvert.Types.HlsTargetDurationCompatibilityMode
+import Amazonka.MediaConvert.Types.HlsTimedMetadataId3Frame
+import Amazonka.MediaConvert.Types.HopDestination
+import Amazonka.MediaConvert.Types.Id3Insertion
+import Amazonka.MediaConvert.Types.ImageInserter
+import Amazonka.MediaConvert.Types.ImscAccessibilitySubs
+import Amazonka.MediaConvert.Types.ImscDestinationSettings
+import Amazonka.MediaConvert.Types.ImscStylePassthrough
+import Amazonka.MediaConvert.Types.Input
+import Amazonka.MediaConvert.Types.InputClipping
+import Amazonka.MediaConvert.Types.InputDeblockFilter
+import Amazonka.MediaConvert.Types.InputDecryptionSettings
+import Amazonka.MediaConvert.Types.InputDenoiseFilter
+import Amazonka.MediaConvert.Types.InputFilterEnable
+import Amazonka.MediaConvert.Types.InputPolicy
+import Amazonka.MediaConvert.Types.InputPsiControl
+import Amazonka.MediaConvert.Types.InputRotate
+import Amazonka.MediaConvert.Types.InputSampleRange
+import Amazonka.MediaConvert.Types.InputScanType
+import Amazonka.MediaConvert.Types.InputTemplate
+import Amazonka.MediaConvert.Types.InputTimecodeSource
+import Amazonka.MediaConvert.Types.InputVideoGenerator
+import Amazonka.MediaConvert.Types.InsertableImage
+import Amazonka.MediaConvert.Types.Job
+import Amazonka.MediaConvert.Types.JobMessages
+import Amazonka.MediaConvert.Types.JobPhase
+import Amazonka.MediaConvert.Types.JobSettings
+import Amazonka.MediaConvert.Types.JobStatus
+import Amazonka.MediaConvert.Types.JobTemplate
+import Amazonka.MediaConvert.Types.JobTemplateListBy
+import Amazonka.MediaConvert.Types.JobTemplateSettings
+import Amazonka.MediaConvert.Types.KantarWatermarkSettings
+import Amazonka.MediaConvert.Types.LanguageCode
+import Amazonka.MediaConvert.Types.M2tsAudioBufferModel
+import Amazonka.MediaConvert.Types.M2tsAudioDuration
+import Amazonka.MediaConvert.Types.M2tsBufferModel
+import Amazonka.MediaConvert.Types.M2tsDataPtsControl
+import Amazonka.MediaConvert.Types.M2tsEbpAudioInterval
+import Amazonka.MediaConvert.Types.M2tsEbpPlacement
+import Amazonka.MediaConvert.Types.M2tsEsRateInPes
+import Amazonka.MediaConvert.Types.M2tsForceTsVideoEbpOrder
+import Amazonka.MediaConvert.Types.M2tsKlvMetadata
+import Amazonka.MediaConvert.Types.M2tsNielsenId3
+import Amazonka.MediaConvert.Types.M2tsPcrControl
+import Amazonka.MediaConvert.Types.M2tsRateMode
+import Amazonka.MediaConvert.Types.M2tsScte35Esam
+import Amazonka.MediaConvert.Types.M2tsScte35Source
+import Amazonka.MediaConvert.Types.M2tsSegmentationMarkers
+import Amazonka.MediaConvert.Types.M2tsSegmentationStyle
+import Amazonka.MediaConvert.Types.M2tsSettings
+import Amazonka.MediaConvert.Types.M3u8AudioDuration
+import Amazonka.MediaConvert.Types.M3u8DataPtsControl
+import Amazonka.MediaConvert.Types.M3u8NielsenId3
+import Amazonka.MediaConvert.Types.M3u8PcrControl
+import Amazonka.MediaConvert.Types.M3u8Scte35Source
+import Amazonka.MediaConvert.Types.M3u8Settings
+import Amazonka.MediaConvert.Types.MinBottomRenditionSize
+import Amazonka.MediaConvert.Types.MinTopRenditionSize
+import Amazonka.MediaConvert.Types.MotionImageInserter
+import Amazonka.MediaConvert.Types.MotionImageInsertionFramerate
+import Amazonka.MediaConvert.Types.MotionImageInsertionMode
+import Amazonka.MediaConvert.Types.MotionImageInsertionOffset
+import Amazonka.MediaConvert.Types.MotionImagePlayback
+import Amazonka.MediaConvert.Types.MovClapAtom
+import Amazonka.MediaConvert.Types.MovCslgAtom
+import Amazonka.MediaConvert.Types.MovMpeg2FourCCControl
+import Amazonka.MediaConvert.Types.MovPaddingControl
+import Amazonka.MediaConvert.Types.MovReference
+import Amazonka.MediaConvert.Types.MovSettings
+import Amazonka.MediaConvert.Types.Mp2Settings
+import Amazonka.MediaConvert.Types.Mp3RateControlMode
+import Amazonka.MediaConvert.Types.Mp3Settings
+import Amazonka.MediaConvert.Types.Mp4CslgAtom
+import Amazonka.MediaConvert.Types.Mp4FreeSpaceBox
+import Amazonka.MediaConvert.Types.Mp4MoovPlacement
+import Amazonka.MediaConvert.Types.Mp4Settings
+import Amazonka.MediaConvert.Types.MpdAccessibilityCaptionHints
+import Amazonka.MediaConvert.Types.MpdAudioDuration
+import Amazonka.MediaConvert.Types.MpdCaptionContainerType
+import Amazonka.MediaConvert.Types.MpdKlvMetadata
+import Amazonka.MediaConvert.Types.MpdManifestMetadataSignaling
+import Amazonka.MediaConvert.Types.MpdScte35Esam
+import Amazonka.MediaConvert.Types.MpdScte35Source
+import Amazonka.MediaConvert.Types.MpdSettings
+import Amazonka.MediaConvert.Types.MpdTimedMetadata
+import Amazonka.MediaConvert.Types.MpdTimedMetadataBoxVersion
+import Amazonka.MediaConvert.Types.Mpeg2AdaptiveQuantization
+import Amazonka.MediaConvert.Types.Mpeg2CodecLevel
+import Amazonka.MediaConvert.Types.Mpeg2CodecProfile
+import Amazonka.MediaConvert.Types.Mpeg2DynamicSubGop
+import Amazonka.MediaConvert.Types.Mpeg2FramerateControl
+import Amazonka.MediaConvert.Types.Mpeg2FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.Mpeg2GopSizeUnits
+import Amazonka.MediaConvert.Types.Mpeg2InterlaceMode
+import Amazonka.MediaConvert.Types.Mpeg2IntraDcPrecision
+import Amazonka.MediaConvert.Types.Mpeg2ParControl
+import Amazonka.MediaConvert.Types.Mpeg2QualityTuningLevel
+import Amazonka.MediaConvert.Types.Mpeg2RateControlMode
+import Amazonka.MediaConvert.Types.Mpeg2ScanTypeConversionMode
+import Amazonka.MediaConvert.Types.Mpeg2SceneChangeDetect
+import Amazonka.MediaConvert.Types.Mpeg2Settings
+import Amazonka.MediaConvert.Types.Mpeg2SlowPal
+import Amazonka.MediaConvert.Types.Mpeg2SpatialAdaptiveQuantization
+import Amazonka.MediaConvert.Types.Mpeg2Syntax
+import Amazonka.MediaConvert.Types.Mpeg2Telecine
+import Amazonka.MediaConvert.Types.Mpeg2TemporalAdaptiveQuantization
+import Amazonka.MediaConvert.Types.MsSmoothAdditionalManifest
+import Amazonka.MediaConvert.Types.MsSmoothAudioDeduplication
+import Amazonka.MediaConvert.Types.MsSmoothEncryptionSettings
+import Amazonka.MediaConvert.Types.MsSmoothFragmentLengthControl
+import Amazonka.MediaConvert.Types.MsSmoothGroupSettings
+import Amazonka.MediaConvert.Types.MsSmoothManifestEncoding
+import Amazonka.MediaConvert.Types.MxfAfdSignaling
+import Amazonka.MediaConvert.Types.MxfProfile
+import Amazonka.MediaConvert.Types.MxfSettings
+import Amazonka.MediaConvert.Types.MxfXavcDurationMode
+import Amazonka.MediaConvert.Types.MxfXavcProfileSettings
+import Amazonka.MediaConvert.Types.NexGuardFileMarkerSettings
+import Amazonka.MediaConvert.Types.NielsenActiveWatermarkProcessType
+import Amazonka.MediaConvert.Types.NielsenConfiguration
+import Amazonka.MediaConvert.Types.NielsenNonLinearWatermarkSettings
+import Amazonka.MediaConvert.Types.NielsenSourceWatermarkStatusType
+import Amazonka.MediaConvert.Types.NielsenUniqueTicPerAudioTrackType
+import Amazonka.MediaConvert.Types.NoiseFilterPostTemporalSharpening
+import Amazonka.MediaConvert.Types.NoiseFilterPostTemporalSharpeningStrength
+import Amazonka.MediaConvert.Types.NoiseReducer
+import Amazonka.MediaConvert.Types.NoiseReducerFilter
+import Amazonka.MediaConvert.Types.NoiseReducerFilterSettings
+import Amazonka.MediaConvert.Types.NoiseReducerSpatialFilterSettings
+import Amazonka.MediaConvert.Types.NoiseReducerTemporalFilterSettings
+import Amazonka.MediaConvert.Types.OpusSettings
+import Amazonka.MediaConvert.Types.Order
+import Amazonka.MediaConvert.Types.Output
+import Amazonka.MediaConvert.Types.OutputChannelMapping
+import Amazonka.MediaConvert.Types.OutputDetail
+import Amazonka.MediaConvert.Types.OutputGroup
+import Amazonka.MediaConvert.Types.OutputGroupDetail
+import Amazonka.MediaConvert.Types.OutputGroupSettings
+import Amazonka.MediaConvert.Types.OutputGroupType
+import Amazonka.MediaConvert.Types.OutputSdt
+import Amazonka.MediaConvert.Types.OutputSettings
+import Amazonka.MediaConvert.Types.PadVideo
+import Amazonka.MediaConvert.Types.PartnerWatermarking
+import Amazonka.MediaConvert.Types.Policy
+import Amazonka.MediaConvert.Types.Preset
+import Amazonka.MediaConvert.Types.PresetListBy
+import Amazonka.MediaConvert.Types.PresetSettings
+import Amazonka.MediaConvert.Types.PricingPlan
+import Amazonka.MediaConvert.Types.ProresChromaSampling
+import Amazonka.MediaConvert.Types.ProresCodecProfile
+import Amazonka.MediaConvert.Types.ProresFramerateControl
+import Amazonka.MediaConvert.Types.ProresFramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.ProresInterlaceMode
+import Amazonka.MediaConvert.Types.ProresParControl
+import Amazonka.MediaConvert.Types.ProresScanTypeConversionMode
+import Amazonka.MediaConvert.Types.ProresSettings
+import Amazonka.MediaConvert.Types.ProresSlowPal
+import Amazonka.MediaConvert.Types.ProresTelecine
+import Amazonka.MediaConvert.Types.Queue
+import Amazonka.MediaConvert.Types.QueueListBy
+import Amazonka.MediaConvert.Types.QueueStatus
+import Amazonka.MediaConvert.Types.QueueTransition
+import Amazonka.MediaConvert.Types.Rectangle
+import Amazonka.MediaConvert.Types.RemixSettings
+import Amazonka.MediaConvert.Types.RenewalType
+import Amazonka.MediaConvert.Types.RequiredFlag
+import Amazonka.MediaConvert.Types.ReservationPlan
+import Amazonka.MediaConvert.Types.ReservationPlanSettings
+import Amazonka.MediaConvert.Types.ReservationPlanStatus
+import Amazonka.MediaConvert.Types.ResourceTags
+import Amazonka.MediaConvert.Types.RespondToAfd
+import Amazonka.MediaConvert.Types.RuleType
+import Amazonka.MediaConvert.Types.S3DestinationAccessControl
+import Amazonka.MediaConvert.Types.S3DestinationSettings
+import Amazonka.MediaConvert.Types.S3EncryptionSettings
+import Amazonka.MediaConvert.Types.S3ObjectCannedAcl
+import Amazonka.MediaConvert.Types.S3ServerSideEncryptionType
+import Amazonka.MediaConvert.Types.SampleRangeConversion
+import Amazonka.MediaConvert.Types.ScalingBehavior
+import Amazonka.MediaConvert.Types.SccDestinationFramerate
+import Amazonka.MediaConvert.Types.SccDestinationSettings
+import Amazonka.MediaConvert.Types.SimulateReservedQueue
+import Amazonka.MediaConvert.Types.SpekeKeyProvider
+import Amazonka.MediaConvert.Types.SpekeKeyProviderCmaf
+import Amazonka.MediaConvert.Types.SrtDestinationSettings
+import Amazonka.MediaConvert.Types.SrtStylePassthrough
+import Amazonka.MediaConvert.Types.StaticKeyProvider
+import Amazonka.MediaConvert.Types.StatusUpdateInterval
+import Amazonka.MediaConvert.Types.TeletextDestinationSettings
+import Amazonka.MediaConvert.Types.TeletextPageType
+import Amazonka.MediaConvert.Types.TeletextSourceSettings
+import Amazonka.MediaConvert.Types.TimecodeBurnin
+import Amazonka.MediaConvert.Types.TimecodeBurninPosition
+import Amazonka.MediaConvert.Types.TimecodeConfig
+import Amazonka.MediaConvert.Types.TimecodeSource
+import Amazonka.MediaConvert.Types.TimedMetadata
+import Amazonka.MediaConvert.Types.TimedMetadataInsertion
+import Amazonka.MediaConvert.Types.Timing
+import Amazonka.MediaConvert.Types.TrackSourceSettings
+import Amazonka.MediaConvert.Types.TtmlDestinationSettings
+import Amazonka.MediaConvert.Types.TtmlStylePassthrough
+import Amazonka.MediaConvert.Types.Type
+import Amazonka.MediaConvert.Types.Vc3Class
+import Amazonka.MediaConvert.Types.Vc3FramerateControl
+import Amazonka.MediaConvert.Types.Vc3FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.Vc3InterlaceMode
+import Amazonka.MediaConvert.Types.Vc3ScanTypeConversionMode
+import Amazonka.MediaConvert.Types.Vc3Settings
+import Amazonka.MediaConvert.Types.Vc3SlowPal
+import Amazonka.MediaConvert.Types.Vc3Telecine
+import Amazonka.MediaConvert.Types.VchipAction
+import Amazonka.MediaConvert.Types.VideoCodec
+import Amazonka.MediaConvert.Types.VideoCodecSettings
+import Amazonka.MediaConvert.Types.VideoDescription
+import Amazonka.MediaConvert.Types.VideoDetail
+import Amazonka.MediaConvert.Types.VideoPreprocessor
+import Amazonka.MediaConvert.Types.VideoSelector
+import Amazonka.MediaConvert.Types.VideoTimecodeInsertion
+import Amazonka.MediaConvert.Types.VorbisSettings
+import Amazonka.MediaConvert.Types.Vp8FramerateControl
+import Amazonka.MediaConvert.Types.Vp8FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.Vp8ParControl
+import Amazonka.MediaConvert.Types.Vp8QualityTuningLevel
+import Amazonka.MediaConvert.Types.Vp8RateControlMode
+import Amazonka.MediaConvert.Types.Vp8Settings
+import Amazonka.MediaConvert.Types.Vp9FramerateControl
+import Amazonka.MediaConvert.Types.Vp9FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.Vp9ParControl
+import Amazonka.MediaConvert.Types.Vp9QualityTuningLevel
+import Amazonka.MediaConvert.Types.Vp9RateControlMode
+import Amazonka.MediaConvert.Types.Vp9Settings
+import Amazonka.MediaConvert.Types.WatermarkingStrength
+import Amazonka.MediaConvert.Types.WavFormat
+import Amazonka.MediaConvert.Types.WavSettings
+import Amazonka.MediaConvert.Types.WebvttAccessibilitySubs
+import Amazonka.MediaConvert.Types.WebvttDestinationSettings
+import Amazonka.MediaConvert.Types.WebvttHlsSourceSettings
+import Amazonka.MediaConvert.Types.WebvttStylePassthrough
+import Amazonka.MediaConvert.Types.Xavc4kIntraCbgProfileClass
+import Amazonka.MediaConvert.Types.Xavc4kIntraCbgProfileSettings
+import Amazonka.MediaConvert.Types.Xavc4kIntraVbrProfileClass
+import Amazonka.MediaConvert.Types.Xavc4kIntraVbrProfileSettings
+import Amazonka.MediaConvert.Types.Xavc4kProfileBitrateClass
+import Amazonka.MediaConvert.Types.Xavc4kProfileCodecProfile
+import Amazonka.MediaConvert.Types.Xavc4kProfileQualityTuningLevel
+import Amazonka.MediaConvert.Types.Xavc4kProfileSettings
+import Amazonka.MediaConvert.Types.XavcAdaptiveQuantization
+import Amazonka.MediaConvert.Types.XavcEntropyEncoding
+import Amazonka.MediaConvert.Types.XavcFlickerAdaptiveQuantization
+import Amazonka.MediaConvert.Types.XavcFramerateControl
+import Amazonka.MediaConvert.Types.XavcFramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.XavcGopBReference
+import Amazonka.MediaConvert.Types.XavcHdIntraCbgProfileClass
+import Amazonka.MediaConvert.Types.XavcHdIntraCbgProfileSettings
+import Amazonka.MediaConvert.Types.XavcHdProfileBitrateClass
+import Amazonka.MediaConvert.Types.XavcHdProfileQualityTuningLevel
+import Amazonka.MediaConvert.Types.XavcHdProfileSettings
+import Amazonka.MediaConvert.Types.XavcHdProfileTelecine
+import Amazonka.MediaConvert.Types.XavcInterlaceMode
+import Amazonka.MediaConvert.Types.XavcProfile
+import Amazonka.MediaConvert.Types.XavcSettings
+import Amazonka.MediaConvert.Types.XavcSlowPal
+import Amazonka.MediaConvert.Types.XavcSpatialAdaptiveQuantization
+import Amazonka.MediaConvert.Types.XavcTemporalAdaptiveQuantization
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2017-08-29@ of the Amazon Elemental MediaConvert SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "MediaConvert",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "mediaconvert",
+      Core.signingName = "mediaconvert",
+      Core.version = "2017-08-29",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "MediaConvert",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | The service can\'t process your request because of a problem in the
+-- request. Please check your request form and syntax.
+_BadRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_BadRequestException =
+  Core._MatchServiceError
+    defaultService
+    "BadRequestException"
+    Prelude.. Core.hasStatus 400
+
+-- | The service couldn\'t complete your request because there is a conflict
+-- with the current state of the resource.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | You don\'t have permissions for this action with the credentials you
+-- sent.
+_ForbiddenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ForbiddenException =
+  Core._MatchServiceError
+    defaultService
+    "ForbiddenException"
+    Prelude.. Core.hasStatus 403
+
+-- | The service encountered an unexpected condition and can\'t fulfill your
+-- request.
+_InternalServerErrorException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerErrorException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerErrorException"
+    Prelude.. Core.hasStatus 500
+
+-- | The resource you requested doesn\'t exist.
+_NotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "NotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | Too many requests have been sent in too short of a time. The service
+-- limits the rate at which it will accept requests.
+_TooManyRequestsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TooManyRequestsException =
+  Core._MatchServiceError
+    defaultService
+    "TooManyRequestsException"
+    Prelude.. Core.hasStatus 429
diff --git a/gen/Amazonka/MediaConvert/Types/AacAudioDescriptionBroadcasterMix.hs b/gen/Amazonka/MediaConvert/Types/AacAudioDescriptionBroadcasterMix.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AacAudioDescriptionBroadcasterMix.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AacAudioDescriptionBroadcasterMix
+-- 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.AacAudioDescriptionBroadcasterMix
+  ( AacAudioDescriptionBroadcasterMix
+      ( ..,
+        AacAudioDescriptionBroadcasterMix_BROADCASTER_MIXED_AD,
+        AacAudioDescriptionBroadcasterMix_NORMAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose BROADCASTER_MIXED_AD when the input contains pre-mixed main audio
+-- + audio description (AD) as a stereo pair. The value for AudioType will
+-- be set to 3, which signals to downstream systems that this stream
+-- contains \"broadcaster mixed AD\". Note that the input received by the
+-- encoder must contain pre-mixed audio; the encoder does not perform the
+-- mixing. When you choose BROADCASTER_MIXED_AD, the encoder ignores any
+-- values you provide in AudioType and FollowInputAudioType. Choose NORMAL
+-- when the input does not contain pre-mixed audio + audio description
+-- (AD). In this case, the encoder will use any values you provide for
+-- AudioType and FollowInputAudioType.
+newtype AacAudioDescriptionBroadcasterMix = AacAudioDescriptionBroadcasterMix'
+  { fromAacAudioDescriptionBroadcasterMix ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AacAudioDescriptionBroadcasterMix_BROADCASTER_MIXED_AD :: AacAudioDescriptionBroadcasterMix
+pattern AacAudioDescriptionBroadcasterMix_BROADCASTER_MIXED_AD = AacAudioDescriptionBroadcasterMix' "BROADCASTER_MIXED_AD"
+
+pattern AacAudioDescriptionBroadcasterMix_NORMAL :: AacAudioDescriptionBroadcasterMix
+pattern AacAudioDescriptionBroadcasterMix_NORMAL = AacAudioDescriptionBroadcasterMix' "NORMAL"
+
+{-# COMPLETE
+  AacAudioDescriptionBroadcasterMix_BROADCASTER_MIXED_AD,
+  AacAudioDescriptionBroadcasterMix_NORMAL,
+  AacAudioDescriptionBroadcasterMix'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AacCodecProfile.hs b/gen/Amazonka/MediaConvert/Types/AacCodecProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AacCodecProfile.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AacCodecProfile
+-- 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.AacCodecProfile
+  ( AacCodecProfile
+      ( ..,
+        AacCodecProfile_HEV1,
+        AacCodecProfile_HEV2,
+        AacCodecProfile_LC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | AAC Profile.
+newtype AacCodecProfile = AacCodecProfile'
+  { fromAacCodecProfile ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AacCodecProfile_HEV1 :: AacCodecProfile
+pattern AacCodecProfile_HEV1 = AacCodecProfile' "HEV1"
+
+pattern AacCodecProfile_HEV2 :: AacCodecProfile
+pattern AacCodecProfile_HEV2 = AacCodecProfile' "HEV2"
+
+pattern AacCodecProfile_LC :: AacCodecProfile
+pattern AacCodecProfile_LC = AacCodecProfile' "LC"
+
+{-# COMPLETE
+  AacCodecProfile_HEV1,
+  AacCodecProfile_HEV2,
+  AacCodecProfile_LC,
+  AacCodecProfile'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AacCodingMode.hs b/gen/Amazonka/MediaConvert/Types/AacCodingMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AacCodingMode.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AacCodingMode
+-- 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.AacCodingMode
+  ( AacCodingMode
+      ( ..,
+        AacCodingMode_AD_RECEIVER_MIX,
+        AacCodingMode_CODING_MODE_1_0,
+        AacCodingMode_CODING_MODE_1_1,
+        AacCodingMode_CODING_MODE_2_0,
+        AacCodingMode_CODING_MODE_5_1
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Coding mode that you specify determines the number of audio channels
+-- and the audio channel layout metadata in your AAC output. Valid coding
+-- modes depend on the Rate control mode and Profile that you select. The
+-- following list shows the number of audio channels and channel layout for
+-- each coding mode. * 1.0 Audio Description (Receiver Mix): One channel,
+-- C. Includes audio description data from your stereo input. For more
+-- information see ETSI TS 101 154 Annex E. * 1.0 Mono: One channel, C. *
+-- 2.0 Stereo: Two channels, L, R. * 5.1 Surround: Five channels, C, L, R,
+-- Ls, Rs, LFE.
+newtype AacCodingMode = AacCodingMode'
+  { fromAacCodingMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AacCodingMode_AD_RECEIVER_MIX :: AacCodingMode
+pattern AacCodingMode_AD_RECEIVER_MIX = AacCodingMode' "AD_RECEIVER_MIX"
+
+pattern AacCodingMode_CODING_MODE_1_0 :: AacCodingMode
+pattern AacCodingMode_CODING_MODE_1_0 = AacCodingMode' "CODING_MODE_1_0"
+
+pattern AacCodingMode_CODING_MODE_1_1 :: AacCodingMode
+pattern AacCodingMode_CODING_MODE_1_1 = AacCodingMode' "CODING_MODE_1_1"
+
+pattern AacCodingMode_CODING_MODE_2_0 :: AacCodingMode
+pattern AacCodingMode_CODING_MODE_2_0 = AacCodingMode' "CODING_MODE_2_0"
+
+pattern AacCodingMode_CODING_MODE_5_1 :: AacCodingMode
+pattern AacCodingMode_CODING_MODE_5_1 = AacCodingMode' "CODING_MODE_5_1"
+
+{-# COMPLETE
+  AacCodingMode_AD_RECEIVER_MIX,
+  AacCodingMode_CODING_MODE_1_0,
+  AacCodingMode_CODING_MODE_1_1,
+  AacCodingMode_CODING_MODE_2_0,
+  AacCodingMode_CODING_MODE_5_1,
+  AacCodingMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AacRateControlMode.hs b/gen/Amazonka/MediaConvert/Types/AacRateControlMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AacRateControlMode.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AacRateControlMode
+-- 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.AacRateControlMode
+  ( AacRateControlMode
+      ( ..,
+        AacRateControlMode_CBR,
+        AacRateControlMode_VBR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Rate Control Mode.
+newtype AacRateControlMode = AacRateControlMode'
+  { fromAacRateControlMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AacRateControlMode_CBR :: AacRateControlMode
+pattern AacRateControlMode_CBR = AacRateControlMode' "CBR"
+
+pattern AacRateControlMode_VBR :: AacRateControlMode
+pattern AacRateControlMode_VBR = AacRateControlMode' "VBR"
+
+{-# COMPLETE
+  AacRateControlMode_CBR,
+  AacRateControlMode_VBR,
+  AacRateControlMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AacRawFormat.hs b/gen/Amazonka/MediaConvert/Types/AacRawFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AacRawFormat.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AacRawFormat
+-- 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.AacRawFormat
+  ( AacRawFormat
+      ( ..,
+        AacRawFormat_LATM_LOAS,
+        AacRawFormat_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enables LATM\/LOAS AAC output. Note that if you use LATM\/LOAS AAC in an
+-- output, you must choose \"No container\" for the output container.
+newtype AacRawFormat = AacRawFormat'
+  { fromAacRawFormat ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AacRawFormat_LATM_LOAS :: AacRawFormat
+pattern AacRawFormat_LATM_LOAS = AacRawFormat' "LATM_LOAS"
+
+pattern AacRawFormat_NONE :: AacRawFormat
+pattern AacRawFormat_NONE = AacRawFormat' "NONE"
+
+{-# COMPLETE
+  AacRawFormat_LATM_LOAS,
+  AacRawFormat_NONE,
+  AacRawFormat'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AacSettings.hs b/gen/Amazonka/MediaConvert/Types/AacSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AacSettings.hs
@@ -0,0 +1,302 @@
+{-# 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.AacSettings
+-- 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.AacSettings 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.AacAudioDescriptionBroadcasterMix
+import Amazonka.MediaConvert.Types.AacCodecProfile
+import Amazonka.MediaConvert.Types.AacCodingMode
+import Amazonka.MediaConvert.Types.AacRateControlMode
+import Amazonka.MediaConvert.Types.AacRawFormat
+import Amazonka.MediaConvert.Types.AacSpecification
+import Amazonka.MediaConvert.Types.AacVbrQuality
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value AAC. The service accepts one of two mutually exclusive
+-- groups of AAC settings--VBR and CBR. To select one of these modes, set
+-- the value of Bitrate control mode (rateControlMode) to \"VBR\" or
+-- \"CBR\". In VBR mode, you control the audio quality with the setting VBR
+-- quality (vbrQuality). In CBR mode, you use the setting Bitrate
+-- (bitrate). Defaults and valid values depend on the rate control mode.
+--
+-- /See:/ 'newAacSettings' smart constructor.
+data AacSettings = AacSettings'
+  { -- | Choose BROADCASTER_MIXED_AD when the input contains pre-mixed main audio
+    -- + audio description (AD) as a stereo pair. The value for AudioType will
+    -- be set to 3, which signals to downstream systems that this stream
+    -- contains \"broadcaster mixed AD\". Note that the input received by the
+    -- encoder must contain pre-mixed audio; the encoder does not perform the
+    -- mixing. When you choose BROADCASTER_MIXED_AD, the encoder ignores any
+    -- values you provide in AudioType and FollowInputAudioType. Choose NORMAL
+    -- when the input does not contain pre-mixed audio + audio description
+    -- (AD). In this case, the encoder will use any values you provide for
+    -- AudioType and FollowInputAudioType.
+    audioDescriptionBroadcasterMix :: Prelude.Maybe AacAudioDescriptionBroadcasterMix,
+    -- | Specify the average bitrate in bits per second. The set of valid values
+    -- for this setting is: 6000, 8000, 10000, 12000, 14000, 16000, 20000,
+    -- 24000, 28000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000,
+    -- 128000, 160000, 192000, 224000, 256000, 288000, 320000, 384000, 448000,
+    -- 512000, 576000, 640000, 768000, 896000, 1024000. The value you set is
+    -- also constrained by the values that you choose for Profile
+    -- (codecProfile), Bitrate control mode (codingMode), and Sample rate
+    -- (sampleRate). Default values depend on Bitrate control mode and Profile.
+    bitrate :: Prelude.Maybe Prelude.Natural,
+    -- | AAC Profile.
+    codecProfile :: Prelude.Maybe AacCodecProfile,
+    -- | The Coding mode that you specify determines the number of audio channels
+    -- and the audio channel layout metadata in your AAC output. Valid coding
+    -- modes depend on the Rate control mode and Profile that you select. The
+    -- following list shows the number of audio channels and channel layout for
+    -- each coding mode. * 1.0 Audio Description (Receiver Mix): One channel,
+    -- C. Includes audio description data from your stereo input. For more
+    -- information see ETSI TS 101 154 Annex E. * 1.0 Mono: One channel, C. *
+    -- 2.0 Stereo: Two channels, L, R. * 5.1 Surround: Five channels, C, L, R,
+    -- Ls, Rs, LFE.
+    codingMode :: Prelude.Maybe AacCodingMode,
+    -- | Rate Control Mode.
+    rateControlMode :: Prelude.Maybe AacRateControlMode,
+    -- | Enables LATM\/LOAS AAC output. Note that if you use LATM\/LOAS AAC in an
+    -- output, you must choose \"No container\" for the output container.
+    rawFormat :: Prelude.Maybe AacRawFormat,
+    -- | Specify the Sample rate in Hz. Valid sample rates depend on the Profile
+    -- and Coding mode that you select. The following list shows valid sample
+    -- rates for each Profile and Coding mode. * LC Profile, Coding mode 1.0,
+    -- 2.0, and Receiver Mix: 8000, 12000, 16000, 22050, 24000, 32000, 44100,
+    -- 48000, 88200, 96000. * LC Profile, Coding mode 5.1: 32000, 44100, 48000,
+    -- 96000. * HEV1 Profile, Coding mode 1.0 and Receiver Mix: 22050, 24000,
+    -- 32000, 44100, 48000. * HEV1 Profile, Coding mode 2.0 and 5.1: 32000,
+    -- 44100, 48000, 96000. * HEV2 Profile, Coding mode 2.0: 22050, 24000,
+    -- 32000, 44100, 48000.
+    sampleRate :: Prelude.Maybe Prelude.Natural,
+    -- | Use MPEG-2 AAC instead of MPEG-4 AAC audio for raw or MPEG-2 Transport
+    -- Stream containers.
+    specification :: Prelude.Maybe AacSpecification,
+    -- | VBR Quality Level - Only used if rate_control_mode is VBR.
+    vbrQuality :: Prelude.Maybe AacVbrQuality
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AacSettings' 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:
+--
+-- 'audioDescriptionBroadcasterMix', 'aacSettings_audioDescriptionBroadcasterMix' - Choose BROADCASTER_MIXED_AD when the input contains pre-mixed main audio
+-- + audio description (AD) as a stereo pair. The value for AudioType will
+-- be set to 3, which signals to downstream systems that this stream
+-- contains \"broadcaster mixed AD\". Note that the input received by the
+-- encoder must contain pre-mixed audio; the encoder does not perform the
+-- mixing. When you choose BROADCASTER_MIXED_AD, the encoder ignores any
+-- values you provide in AudioType and FollowInputAudioType. Choose NORMAL
+-- when the input does not contain pre-mixed audio + audio description
+-- (AD). In this case, the encoder will use any values you provide for
+-- AudioType and FollowInputAudioType.
+--
+-- 'bitrate', 'aacSettings_bitrate' - Specify the average bitrate in bits per second. The set of valid values
+-- for this setting is: 6000, 8000, 10000, 12000, 14000, 16000, 20000,
+-- 24000, 28000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000,
+-- 128000, 160000, 192000, 224000, 256000, 288000, 320000, 384000, 448000,
+-- 512000, 576000, 640000, 768000, 896000, 1024000. The value you set is
+-- also constrained by the values that you choose for Profile
+-- (codecProfile), Bitrate control mode (codingMode), and Sample rate
+-- (sampleRate). Default values depend on Bitrate control mode and Profile.
+--
+-- 'codecProfile', 'aacSettings_codecProfile' - AAC Profile.
+--
+-- 'codingMode', 'aacSettings_codingMode' - The Coding mode that you specify determines the number of audio channels
+-- and the audio channel layout metadata in your AAC output. Valid coding
+-- modes depend on the Rate control mode and Profile that you select. The
+-- following list shows the number of audio channels and channel layout for
+-- each coding mode. * 1.0 Audio Description (Receiver Mix): One channel,
+-- C. Includes audio description data from your stereo input. For more
+-- information see ETSI TS 101 154 Annex E. * 1.0 Mono: One channel, C. *
+-- 2.0 Stereo: Two channels, L, R. * 5.1 Surround: Five channels, C, L, R,
+-- Ls, Rs, LFE.
+--
+-- 'rateControlMode', 'aacSettings_rateControlMode' - Rate Control Mode.
+--
+-- 'rawFormat', 'aacSettings_rawFormat' - Enables LATM\/LOAS AAC output. Note that if you use LATM\/LOAS AAC in an
+-- output, you must choose \"No container\" for the output container.
+--
+-- 'sampleRate', 'aacSettings_sampleRate' - Specify the Sample rate in Hz. Valid sample rates depend on the Profile
+-- and Coding mode that you select. The following list shows valid sample
+-- rates for each Profile and Coding mode. * LC Profile, Coding mode 1.0,
+-- 2.0, and Receiver Mix: 8000, 12000, 16000, 22050, 24000, 32000, 44100,
+-- 48000, 88200, 96000. * LC Profile, Coding mode 5.1: 32000, 44100, 48000,
+-- 96000. * HEV1 Profile, Coding mode 1.0 and Receiver Mix: 22050, 24000,
+-- 32000, 44100, 48000. * HEV1 Profile, Coding mode 2.0 and 5.1: 32000,
+-- 44100, 48000, 96000. * HEV2 Profile, Coding mode 2.0: 22050, 24000,
+-- 32000, 44100, 48000.
+--
+-- 'specification', 'aacSettings_specification' - Use MPEG-2 AAC instead of MPEG-4 AAC audio for raw or MPEG-2 Transport
+-- Stream containers.
+--
+-- 'vbrQuality', 'aacSettings_vbrQuality' - VBR Quality Level - Only used if rate_control_mode is VBR.
+newAacSettings ::
+  AacSettings
+newAacSettings =
+  AacSettings'
+    { audioDescriptionBroadcasterMix =
+        Prelude.Nothing,
+      bitrate = Prelude.Nothing,
+      codecProfile = Prelude.Nothing,
+      codingMode = Prelude.Nothing,
+      rateControlMode = Prelude.Nothing,
+      rawFormat = Prelude.Nothing,
+      sampleRate = Prelude.Nothing,
+      specification = Prelude.Nothing,
+      vbrQuality = Prelude.Nothing
+    }
+
+-- | Choose BROADCASTER_MIXED_AD when the input contains pre-mixed main audio
+-- + audio description (AD) as a stereo pair. The value for AudioType will
+-- be set to 3, which signals to downstream systems that this stream
+-- contains \"broadcaster mixed AD\". Note that the input received by the
+-- encoder must contain pre-mixed audio; the encoder does not perform the
+-- mixing. When you choose BROADCASTER_MIXED_AD, the encoder ignores any
+-- values you provide in AudioType and FollowInputAudioType. Choose NORMAL
+-- when the input does not contain pre-mixed audio + audio description
+-- (AD). In this case, the encoder will use any values you provide for
+-- AudioType and FollowInputAudioType.
+aacSettings_audioDescriptionBroadcasterMix :: Lens.Lens' AacSettings (Prelude.Maybe AacAudioDescriptionBroadcasterMix)
+aacSettings_audioDescriptionBroadcasterMix = Lens.lens (\AacSettings' {audioDescriptionBroadcasterMix} -> audioDescriptionBroadcasterMix) (\s@AacSettings' {} a -> s {audioDescriptionBroadcasterMix = a} :: AacSettings)
+
+-- | Specify the average bitrate in bits per second. The set of valid values
+-- for this setting is: 6000, 8000, 10000, 12000, 14000, 16000, 20000,
+-- 24000, 28000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000,
+-- 128000, 160000, 192000, 224000, 256000, 288000, 320000, 384000, 448000,
+-- 512000, 576000, 640000, 768000, 896000, 1024000. The value you set is
+-- also constrained by the values that you choose for Profile
+-- (codecProfile), Bitrate control mode (codingMode), and Sample rate
+-- (sampleRate). Default values depend on Bitrate control mode and Profile.
+aacSettings_bitrate :: Lens.Lens' AacSettings (Prelude.Maybe Prelude.Natural)
+aacSettings_bitrate = Lens.lens (\AacSettings' {bitrate} -> bitrate) (\s@AacSettings' {} a -> s {bitrate = a} :: AacSettings)
+
+-- | AAC Profile.
+aacSettings_codecProfile :: Lens.Lens' AacSettings (Prelude.Maybe AacCodecProfile)
+aacSettings_codecProfile = Lens.lens (\AacSettings' {codecProfile} -> codecProfile) (\s@AacSettings' {} a -> s {codecProfile = a} :: AacSettings)
+
+-- | The Coding mode that you specify determines the number of audio channels
+-- and the audio channel layout metadata in your AAC output. Valid coding
+-- modes depend on the Rate control mode and Profile that you select. The
+-- following list shows the number of audio channels and channel layout for
+-- each coding mode. * 1.0 Audio Description (Receiver Mix): One channel,
+-- C. Includes audio description data from your stereo input. For more
+-- information see ETSI TS 101 154 Annex E. * 1.0 Mono: One channel, C. *
+-- 2.0 Stereo: Two channels, L, R. * 5.1 Surround: Five channels, C, L, R,
+-- Ls, Rs, LFE.
+aacSettings_codingMode :: Lens.Lens' AacSettings (Prelude.Maybe AacCodingMode)
+aacSettings_codingMode = Lens.lens (\AacSettings' {codingMode} -> codingMode) (\s@AacSettings' {} a -> s {codingMode = a} :: AacSettings)
+
+-- | Rate Control Mode.
+aacSettings_rateControlMode :: Lens.Lens' AacSettings (Prelude.Maybe AacRateControlMode)
+aacSettings_rateControlMode = Lens.lens (\AacSettings' {rateControlMode} -> rateControlMode) (\s@AacSettings' {} a -> s {rateControlMode = a} :: AacSettings)
+
+-- | Enables LATM\/LOAS AAC output. Note that if you use LATM\/LOAS AAC in an
+-- output, you must choose \"No container\" for the output container.
+aacSettings_rawFormat :: Lens.Lens' AacSettings (Prelude.Maybe AacRawFormat)
+aacSettings_rawFormat = Lens.lens (\AacSettings' {rawFormat} -> rawFormat) (\s@AacSettings' {} a -> s {rawFormat = a} :: AacSettings)
+
+-- | Specify the Sample rate in Hz. Valid sample rates depend on the Profile
+-- and Coding mode that you select. The following list shows valid sample
+-- rates for each Profile and Coding mode. * LC Profile, Coding mode 1.0,
+-- 2.0, and Receiver Mix: 8000, 12000, 16000, 22050, 24000, 32000, 44100,
+-- 48000, 88200, 96000. * LC Profile, Coding mode 5.1: 32000, 44100, 48000,
+-- 96000. * HEV1 Profile, Coding mode 1.0 and Receiver Mix: 22050, 24000,
+-- 32000, 44100, 48000. * HEV1 Profile, Coding mode 2.0 and 5.1: 32000,
+-- 44100, 48000, 96000. * HEV2 Profile, Coding mode 2.0: 22050, 24000,
+-- 32000, 44100, 48000.
+aacSettings_sampleRate :: Lens.Lens' AacSettings (Prelude.Maybe Prelude.Natural)
+aacSettings_sampleRate = Lens.lens (\AacSettings' {sampleRate} -> sampleRate) (\s@AacSettings' {} a -> s {sampleRate = a} :: AacSettings)
+
+-- | Use MPEG-2 AAC instead of MPEG-4 AAC audio for raw or MPEG-2 Transport
+-- Stream containers.
+aacSettings_specification :: Lens.Lens' AacSettings (Prelude.Maybe AacSpecification)
+aacSettings_specification = Lens.lens (\AacSettings' {specification} -> specification) (\s@AacSettings' {} a -> s {specification = a} :: AacSettings)
+
+-- | VBR Quality Level - Only used if rate_control_mode is VBR.
+aacSettings_vbrQuality :: Lens.Lens' AacSettings (Prelude.Maybe AacVbrQuality)
+aacSettings_vbrQuality = Lens.lens (\AacSettings' {vbrQuality} -> vbrQuality) (\s@AacSettings' {} a -> s {vbrQuality = a} :: AacSettings)
+
+instance Data.FromJSON AacSettings where
+  parseJSON =
+    Data.withObject
+      "AacSettings"
+      ( \x ->
+          AacSettings'
+            Prelude.<$> (x Data..:? "audioDescriptionBroadcasterMix")
+            Prelude.<*> (x Data..:? "bitrate")
+            Prelude.<*> (x Data..:? "codecProfile")
+            Prelude.<*> (x Data..:? "codingMode")
+            Prelude.<*> (x Data..:? "rateControlMode")
+            Prelude.<*> (x Data..:? "rawFormat")
+            Prelude.<*> (x Data..:? "sampleRate")
+            Prelude.<*> (x Data..:? "specification")
+            Prelude.<*> (x Data..:? "vbrQuality")
+      )
+
+instance Prelude.Hashable AacSettings where
+  hashWithSalt _salt AacSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` audioDescriptionBroadcasterMix
+      `Prelude.hashWithSalt` bitrate
+      `Prelude.hashWithSalt` codecProfile
+      `Prelude.hashWithSalt` codingMode
+      `Prelude.hashWithSalt` rateControlMode
+      `Prelude.hashWithSalt` rawFormat
+      `Prelude.hashWithSalt` sampleRate
+      `Prelude.hashWithSalt` specification
+      `Prelude.hashWithSalt` vbrQuality
+
+instance Prelude.NFData AacSettings where
+  rnf AacSettings' {..} =
+    Prelude.rnf audioDescriptionBroadcasterMix
+      `Prelude.seq` Prelude.rnf bitrate
+      `Prelude.seq` Prelude.rnf codecProfile
+      `Prelude.seq` Prelude.rnf codingMode
+      `Prelude.seq` Prelude.rnf rateControlMode
+      `Prelude.seq` Prelude.rnf rawFormat
+      `Prelude.seq` Prelude.rnf sampleRate
+      `Prelude.seq` Prelude.rnf specification
+      `Prelude.seq` Prelude.rnf vbrQuality
+
+instance Data.ToJSON AacSettings where
+  toJSON AacSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("audioDescriptionBroadcasterMix" Data..=)
+              Prelude.<$> audioDescriptionBroadcasterMix,
+            ("bitrate" Data..=) Prelude.<$> bitrate,
+            ("codecProfile" Data..=) Prelude.<$> codecProfile,
+            ("codingMode" Data..=) Prelude.<$> codingMode,
+            ("rateControlMode" Data..=)
+              Prelude.<$> rateControlMode,
+            ("rawFormat" Data..=) Prelude.<$> rawFormat,
+            ("sampleRate" Data..=) Prelude.<$> sampleRate,
+            ("specification" Data..=) Prelude.<$> specification,
+            ("vbrQuality" Data..=) Prelude.<$> vbrQuality
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AacSpecification.hs b/gen/Amazonka/MediaConvert/Types/AacSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AacSpecification.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AacSpecification
+-- 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.AacSpecification
+  ( AacSpecification
+      ( ..,
+        AacSpecification_MPEG2,
+        AacSpecification_MPEG4
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use MPEG-2 AAC instead of MPEG-4 AAC audio for raw or MPEG-2 Transport
+-- Stream containers.
+newtype AacSpecification = AacSpecification'
+  { fromAacSpecification ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AacSpecification_MPEG2 :: AacSpecification
+pattern AacSpecification_MPEG2 = AacSpecification' "MPEG2"
+
+pattern AacSpecification_MPEG4 :: AacSpecification
+pattern AacSpecification_MPEG4 = AacSpecification' "MPEG4"
+
+{-# COMPLETE
+  AacSpecification_MPEG2,
+  AacSpecification_MPEG4,
+  AacSpecification'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AacVbrQuality.hs b/gen/Amazonka/MediaConvert/Types/AacVbrQuality.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AacVbrQuality.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AacVbrQuality
+-- 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.AacVbrQuality
+  ( AacVbrQuality
+      ( ..,
+        AacVbrQuality_HIGH,
+        AacVbrQuality_LOW,
+        AacVbrQuality_MEDIUM_HIGH,
+        AacVbrQuality_MEDIUM_LOW
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | VBR Quality Level - Only used if rate_control_mode is VBR.
+newtype AacVbrQuality = AacVbrQuality'
+  { fromAacVbrQuality ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AacVbrQuality_HIGH :: AacVbrQuality
+pattern AacVbrQuality_HIGH = AacVbrQuality' "HIGH"
+
+pattern AacVbrQuality_LOW :: AacVbrQuality
+pattern AacVbrQuality_LOW = AacVbrQuality' "LOW"
+
+pattern AacVbrQuality_MEDIUM_HIGH :: AacVbrQuality
+pattern AacVbrQuality_MEDIUM_HIGH = AacVbrQuality' "MEDIUM_HIGH"
+
+pattern AacVbrQuality_MEDIUM_LOW :: AacVbrQuality
+pattern AacVbrQuality_MEDIUM_LOW = AacVbrQuality' "MEDIUM_LOW"
+
+{-# COMPLETE
+  AacVbrQuality_HIGH,
+  AacVbrQuality_LOW,
+  AacVbrQuality_MEDIUM_HIGH,
+  AacVbrQuality_MEDIUM_LOW,
+  AacVbrQuality'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Ac3BitstreamMode.hs b/gen/Amazonka/MediaConvert/Types/Ac3BitstreamMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Ac3BitstreamMode.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Ac3BitstreamMode
+-- 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.Ac3BitstreamMode
+  ( Ac3BitstreamMode
+      ( ..,
+        Ac3BitstreamMode_COMMENTARY,
+        Ac3BitstreamMode_COMPLETE_MAIN,
+        Ac3BitstreamMode_DIALOGUE,
+        Ac3BitstreamMode_EMERGENCY,
+        Ac3BitstreamMode_HEARING_IMPAIRED,
+        Ac3BitstreamMode_MUSIC_AND_EFFECTS,
+        Ac3BitstreamMode_VISUALLY_IMPAIRED,
+        Ac3BitstreamMode_VOICE_OVER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the bitstream mode for the AC-3 stream that the encoder emits.
+-- For more information about the AC3 bitstream mode, see ATSC A\/52-2012
+-- (Annex E).
+newtype Ac3BitstreamMode = Ac3BitstreamMode'
+  { fromAc3BitstreamMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Ac3BitstreamMode_COMMENTARY :: Ac3BitstreamMode
+pattern Ac3BitstreamMode_COMMENTARY = Ac3BitstreamMode' "COMMENTARY"
+
+pattern Ac3BitstreamMode_COMPLETE_MAIN :: Ac3BitstreamMode
+pattern Ac3BitstreamMode_COMPLETE_MAIN = Ac3BitstreamMode' "COMPLETE_MAIN"
+
+pattern Ac3BitstreamMode_DIALOGUE :: Ac3BitstreamMode
+pattern Ac3BitstreamMode_DIALOGUE = Ac3BitstreamMode' "DIALOGUE"
+
+pattern Ac3BitstreamMode_EMERGENCY :: Ac3BitstreamMode
+pattern Ac3BitstreamMode_EMERGENCY = Ac3BitstreamMode' "EMERGENCY"
+
+pattern Ac3BitstreamMode_HEARING_IMPAIRED :: Ac3BitstreamMode
+pattern Ac3BitstreamMode_HEARING_IMPAIRED = Ac3BitstreamMode' "HEARING_IMPAIRED"
+
+pattern Ac3BitstreamMode_MUSIC_AND_EFFECTS :: Ac3BitstreamMode
+pattern Ac3BitstreamMode_MUSIC_AND_EFFECTS = Ac3BitstreamMode' "MUSIC_AND_EFFECTS"
+
+pattern Ac3BitstreamMode_VISUALLY_IMPAIRED :: Ac3BitstreamMode
+pattern Ac3BitstreamMode_VISUALLY_IMPAIRED = Ac3BitstreamMode' "VISUALLY_IMPAIRED"
+
+pattern Ac3BitstreamMode_VOICE_OVER :: Ac3BitstreamMode
+pattern Ac3BitstreamMode_VOICE_OVER = Ac3BitstreamMode' "VOICE_OVER"
+
+{-# COMPLETE
+  Ac3BitstreamMode_COMMENTARY,
+  Ac3BitstreamMode_COMPLETE_MAIN,
+  Ac3BitstreamMode_DIALOGUE,
+  Ac3BitstreamMode_EMERGENCY,
+  Ac3BitstreamMode_HEARING_IMPAIRED,
+  Ac3BitstreamMode_MUSIC_AND_EFFECTS,
+  Ac3BitstreamMode_VISUALLY_IMPAIRED,
+  Ac3BitstreamMode_VOICE_OVER,
+  Ac3BitstreamMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Ac3CodingMode.hs b/gen/Amazonka/MediaConvert/Types/Ac3CodingMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Ac3CodingMode.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Ac3CodingMode
+-- 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.Ac3CodingMode
+  ( Ac3CodingMode
+      ( ..,
+        Ac3CodingMode_CODING_MODE_1_0,
+        Ac3CodingMode_CODING_MODE_1_1,
+        Ac3CodingMode_CODING_MODE_2_0,
+        Ac3CodingMode_CODING_MODE_3_2_LFE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Dolby Digital coding mode. Determines number of channels.
+newtype Ac3CodingMode = Ac3CodingMode'
+  { fromAc3CodingMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Ac3CodingMode_CODING_MODE_1_0 :: Ac3CodingMode
+pattern Ac3CodingMode_CODING_MODE_1_0 = Ac3CodingMode' "CODING_MODE_1_0"
+
+pattern Ac3CodingMode_CODING_MODE_1_1 :: Ac3CodingMode
+pattern Ac3CodingMode_CODING_MODE_1_1 = Ac3CodingMode' "CODING_MODE_1_1"
+
+pattern Ac3CodingMode_CODING_MODE_2_0 :: Ac3CodingMode
+pattern Ac3CodingMode_CODING_MODE_2_0 = Ac3CodingMode' "CODING_MODE_2_0"
+
+pattern Ac3CodingMode_CODING_MODE_3_2_LFE :: Ac3CodingMode
+pattern Ac3CodingMode_CODING_MODE_3_2_LFE = Ac3CodingMode' "CODING_MODE_3_2_LFE"
+
+{-# COMPLETE
+  Ac3CodingMode_CODING_MODE_1_0,
+  Ac3CodingMode_CODING_MODE_1_1,
+  Ac3CodingMode_CODING_MODE_2_0,
+  Ac3CodingMode_CODING_MODE_3_2_LFE,
+  Ac3CodingMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Ac3DynamicRangeCompressionLine.hs b/gen/Amazonka/MediaConvert/Types/Ac3DynamicRangeCompressionLine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Ac3DynamicRangeCompressionLine.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Ac3DynamicRangeCompressionLine
+-- 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.Ac3DynamicRangeCompressionLine
+  ( Ac3DynamicRangeCompressionLine
+      ( ..,
+        Ac3DynamicRangeCompressionLine_FILM_LIGHT,
+        Ac3DynamicRangeCompressionLine_FILM_STANDARD,
+        Ac3DynamicRangeCompressionLine_MUSIC_LIGHT,
+        Ac3DynamicRangeCompressionLine_MUSIC_STANDARD,
+        Ac3DynamicRangeCompressionLine_NONE,
+        Ac3DynamicRangeCompressionLine_SPEECH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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.
+newtype Ac3DynamicRangeCompressionLine = Ac3DynamicRangeCompressionLine'
+  { fromAc3DynamicRangeCompressionLine ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Ac3DynamicRangeCompressionLine_FILM_LIGHT :: Ac3DynamicRangeCompressionLine
+pattern Ac3DynamicRangeCompressionLine_FILM_LIGHT = Ac3DynamicRangeCompressionLine' "FILM_LIGHT"
+
+pattern Ac3DynamicRangeCompressionLine_FILM_STANDARD :: Ac3DynamicRangeCompressionLine
+pattern Ac3DynamicRangeCompressionLine_FILM_STANDARD = Ac3DynamicRangeCompressionLine' "FILM_STANDARD"
+
+pattern Ac3DynamicRangeCompressionLine_MUSIC_LIGHT :: Ac3DynamicRangeCompressionLine
+pattern Ac3DynamicRangeCompressionLine_MUSIC_LIGHT = Ac3DynamicRangeCompressionLine' "MUSIC_LIGHT"
+
+pattern Ac3DynamicRangeCompressionLine_MUSIC_STANDARD :: Ac3DynamicRangeCompressionLine
+pattern Ac3DynamicRangeCompressionLine_MUSIC_STANDARD = Ac3DynamicRangeCompressionLine' "MUSIC_STANDARD"
+
+pattern Ac3DynamicRangeCompressionLine_NONE :: Ac3DynamicRangeCompressionLine
+pattern Ac3DynamicRangeCompressionLine_NONE = Ac3DynamicRangeCompressionLine' "NONE"
+
+pattern Ac3DynamicRangeCompressionLine_SPEECH :: Ac3DynamicRangeCompressionLine
+pattern Ac3DynamicRangeCompressionLine_SPEECH = Ac3DynamicRangeCompressionLine' "SPEECH"
+
+{-# COMPLETE
+  Ac3DynamicRangeCompressionLine_FILM_LIGHT,
+  Ac3DynamicRangeCompressionLine_FILM_STANDARD,
+  Ac3DynamicRangeCompressionLine_MUSIC_LIGHT,
+  Ac3DynamicRangeCompressionLine_MUSIC_STANDARD,
+  Ac3DynamicRangeCompressionLine_NONE,
+  Ac3DynamicRangeCompressionLine_SPEECH,
+  Ac3DynamicRangeCompressionLine'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Ac3DynamicRangeCompressionProfile.hs b/gen/Amazonka/MediaConvert/Types/Ac3DynamicRangeCompressionProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Ac3DynamicRangeCompressionProfile.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Ac3DynamicRangeCompressionProfile
+-- 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.Ac3DynamicRangeCompressionProfile
+  ( Ac3DynamicRangeCompressionProfile
+      ( ..,
+        Ac3DynamicRangeCompressionProfile_FILM_STANDARD,
+        Ac3DynamicRangeCompressionProfile_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you want to add Dolby dynamic range compression (DRC) signaling to
+-- your output stream, we recommend that you use the mode-specific settings
+-- instead of Dynamic range compression profile
+-- (DynamicRangeCompressionProfile). The mode-specific settings are Dynamic
+-- range compression profile, line mode (dynamicRangeCompressionLine) and
+-- Dynamic range compression profile, RF mode (dynamicRangeCompressionRf).
+-- Note that when you specify values for all three settings, MediaConvert
+-- ignores the value of this setting in favor of the mode-specific
+-- settings. If you do use this setting instead of the mode-specific
+-- settings, choose None (NONE) to leave out DRC signaling. Keep the
+-- default Film standard (FILM_STANDARD) to set the profile to Dolby\'s
+-- film standard profile for all operating modes.
+newtype Ac3DynamicRangeCompressionProfile = Ac3DynamicRangeCompressionProfile'
+  { fromAc3DynamicRangeCompressionProfile ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Ac3DynamicRangeCompressionProfile_FILM_STANDARD :: Ac3DynamicRangeCompressionProfile
+pattern Ac3DynamicRangeCompressionProfile_FILM_STANDARD = Ac3DynamicRangeCompressionProfile' "FILM_STANDARD"
+
+pattern Ac3DynamicRangeCompressionProfile_NONE :: Ac3DynamicRangeCompressionProfile
+pattern Ac3DynamicRangeCompressionProfile_NONE = Ac3DynamicRangeCompressionProfile' "NONE"
+
+{-# COMPLETE
+  Ac3DynamicRangeCompressionProfile_FILM_STANDARD,
+  Ac3DynamicRangeCompressionProfile_NONE,
+  Ac3DynamicRangeCompressionProfile'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Ac3DynamicRangeCompressionRf.hs b/gen/Amazonka/MediaConvert/Types/Ac3DynamicRangeCompressionRf.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Ac3DynamicRangeCompressionRf.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Ac3DynamicRangeCompressionRf
+-- 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.Ac3DynamicRangeCompressionRf
+  ( Ac3DynamicRangeCompressionRf
+      ( ..,
+        Ac3DynamicRangeCompressionRf_FILM_LIGHT,
+        Ac3DynamicRangeCompressionRf_FILM_STANDARD,
+        Ac3DynamicRangeCompressionRf_MUSIC_LIGHT,
+        Ac3DynamicRangeCompressionRf_MUSIC_STANDARD,
+        Ac3DynamicRangeCompressionRf_NONE,
+        Ac3DynamicRangeCompressionRf_SPEECH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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.
+newtype Ac3DynamicRangeCompressionRf = Ac3DynamicRangeCompressionRf'
+  { fromAc3DynamicRangeCompressionRf ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Ac3DynamicRangeCompressionRf_FILM_LIGHT :: Ac3DynamicRangeCompressionRf
+pattern Ac3DynamicRangeCompressionRf_FILM_LIGHT = Ac3DynamicRangeCompressionRf' "FILM_LIGHT"
+
+pattern Ac3DynamicRangeCompressionRf_FILM_STANDARD :: Ac3DynamicRangeCompressionRf
+pattern Ac3DynamicRangeCompressionRf_FILM_STANDARD = Ac3DynamicRangeCompressionRf' "FILM_STANDARD"
+
+pattern Ac3DynamicRangeCompressionRf_MUSIC_LIGHT :: Ac3DynamicRangeCompressionRf
+pattern Ac3DynamicRangeCompressionRf_MUSIC_LIGHT = Ac3DynamicRangeCompressionRf' "MUSIC_LIGHT"
+
+pattern Ac3DynamicRangeCompressionRf_MUSIC_STANDARD :: Ac3DynamicRangeCompressionRf
+pattern Ac3DynamicRangeCompressionRf_MUSIC_STANDARD = Ac3DynamicRangeCompressionRf' "MUSIC_STANDARD"
+
+pattern Ac3DynamicRangeCompressionRf_NONE :: Ac3DynamicRangeCompressionRf
+pattern Ac3DynamicRangeCompressionRf_NONE = Ac3DynamicRangeCompressionRf' "NONE"
+
+pattern Ac3DynamicRangeCompressionRf_SPEECH :: Ac3DynamicRangeCompressionRf
+pattern Ac3DynamicRangeCompressionRf_SPEECH = Ac3DynamicRangeCompressionRf' "SPEECH"
+
+{-# COMPLETE
+  Ac3DynamicRangeCompressionRf_FILM_LIGHT,
+  Ac3DynamicRangeCompressionRf_FILM_STANDARD,
+  Ac3DynamicRangeCompressionRf_MUSIC_LIGHT,
+  Ac3DynamicRangeCompressionRf_MUSIC_STANDARD,
+  Ac3DynamicRangeCompressionRf_NONE,
+  Ac3DynamicRangeCompressionRf_SPEECH,
+  Ac3DynamicRangeCompressionRf'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Ac3LfeFilter.hs b/gen/Amazonka/MediaConvert/Types/Ac3LfeFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Ac3LfeFilter.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Ac3LfeFilter
+-- 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.Ac3LfeFilter
+  ( Ac3LfeFilter
+      ( ..,
+        Ac3LfeFilter_DISABLED,
+        Ac3LfeFilter_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Applies a 120Hz lowpass filter to the LFE channel prior to encoding.
+-- Only valid with 3_2_LFE coding mode.
+newtype Ac3LfeFilter = Ac3LfeFilter'
+  { fromAc3LfeFilter ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Ac3LfeFilter_DISABLED :: Ac3LfeFilter
+pattern Ac3LfeFilter_DISABLED = Ac3LfeFilter' "DISABLED"
+
+pattern Ac3LfeFilter_ENABLED :: Ac3LfeFilter
+pattern Ac3LfeFilter_ENABLED = Ac3LfeFilter' "ENABLED"
+
+{-# COMPLETE
+  Ac3LfeFilter_DISABLED,
+  Ac3LfeFilter_ENABLED,
+  Ac3LfeFilter'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Ac3MetadataControl.hs b/gen/Amazonka/MediaConvert/Types/Ac3MetadataControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Ac3MetadataControl.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Ac3MetadataControl
+-- 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.Ac3MetadataControl
+  ( Ac3MetadataControl
+      ( ..,
+        Ac3MetadataControl_FOLLOW_INPUT,
+        Ac3MetadataControl_USE_CONFIGURED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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.
+newtype Ac3MetadataControl = Ac3MetadataControl'
+  { fromAc3MetadataControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Ac3MetadataControl_FOLLOW_INPUT :: Ac3MetadataControl
+pattern Ac3MetadataControl_FOLLOW_INPUT = Ac3MetadataControl' "FOLLOW_INPUT"
+
+pattern Ac3MetadataControl_USE_CONFIGURED :: Ac3MetadataControl
+pattern Ac3MetadataControl_USE_CONFIGURED = Ac3MetadataControl' "USE_CONFIGURED"
+
+{-# COMPLETE
+  Ac3MetadataControl_FOLLOW_INPUT,
+  Ac3MetadataControl_USE_CONFIGURED,
+  Ac3MetadataControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Ac3Settings.hs b/gen/Amazonka/MediaConvert/Types/Ac3Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Ac3Settings.hs
@@ -0,0 +1,329 @@
+{-# 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.Ac3Settings
+-- 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.Ac3Settings 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.Ac3BitstreamMode
+import Amazonka.MediaConvert.Types.Ac3CodingMode
+import Amazonka.MediaConvert.Types.Ac3DynamicRangeCompressionLine
+import Amazonka.MediaConvert.Types.Ac3DynamicRangeCompressionProfile
+import Amazonka.MediaConvert.Types.Ac3DynamicRangeCompressionRf
+import Amazonka.MediaConvert.Types.Ac3LfeFilter
+import Amazonka.MediaConvert.Types.Ac3MetadataControl
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value AC3.
+--
+-- /See:/ 'newAc3Settings' smart constructor.
+data Ac3Settings = Ac3Settings'
+  { -- | 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: 64000. Maximum: 128000. Valid
+    -- bitrates for coding mode 1\/1: Default: 192000. Minimum: 128000.
+    -- Maximum: 384000. Valid bitrates for coding mode 2\/0: Default: 192000.
+    -- Minimum: 128000. Maximum: 384000. Valid bitrates for coding mode 3\/2
+    -- with FLE: Default: 384000. Minimum: 384000. Maximum: 640000.
+    bitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the bitstream mode for the AC-3 stream that the encoder emits.
+    -- For more information about the AC3 bitstream mode, see ATSC A\/52-2012
+    -- (Annex E).
+    bitstreamMode :: Prelude.Maybe Ac3BitstreamMode,
+    -- | Dolby Digital coding mode. Determines number of channels.
+    codingMode :: Prelude.Maybe Ac3CodingMode,
+    -- | Sets the dialnorm for the output. If blank and input audio is Dolby
+    -- Digital, dialnorm will be passed through.
+    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.
+    dynamicRangeCompressionLine :: Prelude.Maybe Ac3DynamicRangeCompressionLine,
+    -- | When you want to add Dolby dynamic range compression (DRC) signaling to
+    -- your output stream, we recommend that you use the mode-specific settings
+    -- instead of Dynamic range compression profile
+    -- (DynamicRangeCompressionProfile). The mode-specific settings are Dynamic
+    -- range compression profile, line mode (dynamicRangeCompressionLine) and
+    -- Dynamic range compression profile, RF mode (dynamicRangeCompressionRf).
+    -- Note that when you specify values for all three settings, MediaConvert
+    -- ignores the value of this setting in favor of the mode-specific
+    -- settings. If you do use this setting instead of the mode-specific
+    -- settings, choose None (NONE) to leave out DRC signaling. Keep the
+    -- default Film standard (FILM_STANDARD) to set the profile to Dolby\'s
+    -- film standard profile for all operating modes.
+    dynamicRangeCompressionProfile :: Prelude.Maybe Ac3DynamicRangeCompressionProfile,
+    -- | 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.
+    dynamicRangeCompressionRf :: Prelude.Maybe Ac3DynamicRangeCompressionRf,
+    -- | Applies a 120Hz lowpass filter to the LFE channel prior to encoding.
+    -- Only valid with 3_2_LFE coding mode.
+    lfeFilter :: Prelude.Maybe Ac3LfeFilter,
+    -- | 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.
+    metadataControl :: Prelude.Maybe Ac3MetadataControl,
+    -- | This value is always 48000. It represents the sample rate in Hz.
+    sampleRate :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Ac3Settings' 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:
+--
+-- 'bitrate', 'ac3Settings_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: 64000. Maximum: 128000. Valid
+-- bitrates for coding mode 1\/1: Default: 192000. Minimum: 128000.
+-- Maximum: 384000. Valid bitrates for coding mode 2\/0: Default: 192000.
+-- Minimum: 128000. Maximum: 384000. Valid bitrates for coding mode 3\/2
+-- with FLE: Default: 384000. Minimum: 384000. Maximum: 640000.
+--
+-- 'bitstreamMode', 'ac3Settings_bitstreamMode' - Specify the bitstream mode for the AC-3 stream that the encoder emits.
+-- For more information about the AC3 bitstream mode, see ATSC A\/52-2012
+-- (Annex E).
+--
+-- 'codingMode', 'ac3Settings_codingMode' - Dolby Digital coding mode. Determines number of channels.
+--
+-- 'dialnorm', 'ac3Settings_dialnorm' - Sets the dialnorm for the output. If blank and input audio is Dolby
+-- Digital, dialnorm will be passed through.
+--
+-- 'dynamicRangeCompressionLine', 'ac3Settings_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.
+--
+-- 'dynamicRangeCompressionProfile', 'ac3Settings_dynamicRangeCompressionProfile' - When you want to add Dolby dynamic range compression (DRC) signaling to
+-- your output stream, we recommend that you use the mode-specific settings
+-- instead of Dynamic range compression profile
+-- (DynamicRangeCompressionProfile). The mode-specific settings are Dynamic
+-- range compression profile, line mode (dynamicRangeCompressionLine) and
+-- Dynamic range compression profile, RF mode (dynamicRangeCompressionRf).
+-- Note that when you specify values for all three settings, MediaConvert
+-- ignores the value of this setting in favor of the mode-specific
+-- settings. If you do use this setting instead of the mode-specific
+-- settings, choose None (NONE) to leave out DRC signaling. Keep the
+-- default Film standard (FILM_STANDARD) to set the profile to Dolby\'s
+-- film standard profile for all operating modes.
+--
+-- 'dynamicRangeCompressionRf', 'ac3Settings_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.
+--
+-- 'lfeFilter', 'ac3Settings_lfeFilter' - Applies a 120Hz lowpass filter to the LFE channel prior to encoding.
+-- Only valid with 3_2_LFE coding mode.
+--
+-- 'metadataControl', 'ac3Settings_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.
+--
+-- 'sampleRate', 'ac3Settings_sampleRate' - This value is always 48000. It represents the sample rate in Hz.
+newAc3Settings ::
+  Ac3Settings
+newAc3Settings =
+  Ac3Settings'
+    { bitrate = Prelude.Nothing,
+      bitstreamMode = Prelude.Nothing,
+      codingMode = Prelude.Nothing,
+      dialnorm = Prelude.Nothing,
+      dynamicRangeCompressionLine = Prelude.Nothing,
+      dynamicRangeCompressionProfile = Prelude.Nothing,
+      dynamicRangeCompressionRf = Prelude.Nothing,
+      lfeFilter = Prelude.Nothing,
+      metadataControl = Prelude.Nothing,
+      sampleRate = Prelude.Nothing
+    }
+
+-- | 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: 64000. Maximum: 128000. Valid
+-- bitrates for coding mode 1\/1: Default: 192000. Minimum: 128000.
+-- Maximum: 384000. Valid bitrates for coding mode 2\/0: Default: 192000.
+-- Minimum: 128000. Maximum: 384000. Valid bitrates for coding mode 3\/2
+-- with FLE: Default: 384000. Minimum: 384000. Maximum: 640000.
+ac3Settings_bitrate :: Lens.Lens' Ac3Settings (Prelude.Maybe Prelude.Natural)
+ac3Settings_bitrate = Lens.lens (\Ac3Settings' {bitrate} -> bitrate) (\s@Ac3Settings' {} a -> s {bitrate = a} :: Ac3Settings)
+
+-- | Specify the bitstream mode for the AC-3 stream that the encoder emits.
+-- For more information about the AC3 bitstream mode, see ATSC A\/52-2012
+-- (Annex E).
+ac3Settings_bitstreamMode :: Lens.Lens' Ac3Settings (Prelude.Maybe Ac3BitstreamMode)
+ac3Settings_bitstreamMode = Lens.lens (\Ac3Settings' {bitstreamMode} -> bitstreamMode) (\s@Ac3Settings' {} a -> s {bitstreamMode = a} :: Ac3Settings)
+
+-- | Dolby Digital coding mode. Determines number of channels.
+ac3Settings_codingMode :: Lens.Lens' Ac3Settings (Prelude.Maybe Ac3CodingMode)
+ac3Settings_codingMode = Lens.lens (\Ac3Settings' {codingMode} -> codingMode) (\s@Ac3Settings' {} a -> s {codingMode = a} :: Ac3Settings)
+
+-- | Sets the dialnorm for the output. If blank and input audio is Dolby
+-- Digital, dialnorm will be passed through.
+ac3Settings_dialnorm :: Lens.Lens' Ac3Settings (Prelude.Maybe Prelude.Natural)
+ac3Settings_dialnorm = Lens.lens (\Ac3Settings' {dialnorm} -> dialnorm) (\s@Ac3Settings' {} a -> s {dialnorm = a} :: Ac3Settings)
+
+-- | 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.
+ac3Settings_dynamicRangeCompressionLine :: Lens.Lens' Ac3Settings (Prelude.Maybe Ac3DynamicRangeCompressionLine)
+ac3Settings_dynamicRangeCompressionLine = Lens.lens (\Ac3Settings' {dynamicRangeCompressionLine} -> dynamicRangeCompressionLine) (\s@Ac3Settings' {} a -> s {dynamicRangeCompressionLine = a} :: Ac3Settings)
+
+-- | When you want to add Dolby dynamic range compression (DRC) signaling to
+-- your output stream, we recommend that you use the mode-specific settings
+-- instead of Dynamic range compression profile
+-- (DynamicRangeCompressionProfile). The mode-specific settings are Dynamic
+-- range compression profile, line mode (dynamicRangeCompressionLine) and
+-- Dynamic range compression profile, RF mode (dynamicRangeCompressionRf).
+-- Note that when you specify values for all three settings, MediaConvert
+-- ignores the value of this setting in favor of the mode-specific
+-- settings. If you do use this setting instead of the mode-specific
+-- settings, choose None (NONE) to leave out DRC signaling. Keep the
+-- default Film standard (FILM_STANDARD) to set the profile to Dolby\'s
+-- film standard profile for all operating modes.
+ac3Settings_dynamicRangeCompressionProfile :: Lens.Lens' Ac3Settings (Prelude.Maybe Ac3DynamicRangeCompressionProfile)
+ac3Settings_dynamicRangeCompressionProfile = Lens.lens (\Ac3Settings' {dynamicRangeCompressionProfile} -> dynamicRangeCompressionProfile) (\s@Ac3Settings' {} a -> s {dynamicRangeCompressionProfile = a} :: Ac3Settings)
+
+-- | 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.
+ac3Settings_dynamicRangeCompressionRf :: Lens.Lens' Ac3Settings (Prelude.Maybe Ac3DynamicRangeCompressionRf)
+ac3Settings_dynamicRangeCompressionRf = Lens.lens (\Ac3Settings' {dynamicRangeCompressionRf} -> dynamicRangeCompressionRf) (\s@Ac3Settings' {} a -> s {dynamicRangeCompressionRf = a} :: Ac3Settings)
+
+-- | Applies a 120Hz lowpass filter to the LFE channel prior to encoding.
+-- Only valid with 3_2_LFE coding mode.
+ac3Settings_lfeFilter :: Lens.Lens' Ac3Settings (Prelude.Maybe Ac3LfeFilter)
+ac3Settings_lfeFilter = Lens.lens (\Ac3Settings' {lfeFilter} -> lfeFilter) (\s@Ac3Settings' {} a -> s {lfeFilter = a} :: Ac3Settings)
+
+-- | 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.
+ac3Settings_metadataControl :: Lens.Lens' Ac3Settings (Prelude.Maybe Ac3MetadataControl)
+ac3Settings_metadataControl = Lens.lens (\Ac3Settings' {metadataControl} -> metadataControl) (\s@Ac3Settings' {} a -> s {metadataControl = a} :: Ac3Settings)
+
+-- | This value is always 48000. It represents the sample rate in Hz.
+ac3Settings_sampleRate :: Lens.Lens' Ac3Settings (Prelude.Maybe Prelude.Natural)
+ac3Settings_sampleRate = Lens.lens (\Ac3Settings' {sampleRate} -> sampleRate) (\s@Ac3Settings' {} a -> s {sampleRate = a} :: Ac3Settings)
+
+instance Data.FromJSON Ac3Settings where
+  parseJSON =
+    Data.withObject
+      "Ac3Settings"
+      ( \x ->
+          Ac3Settings'
+            Prelude.<$> (x Data..:? "bitrate")
+            Prelude.<*> (x Data..:? "bitstreamMode")
+            Prelude.<*> (x Data..:? "codingMode")
+            Prelude.<*> (x Data..:? "dialnorm")
+            Prelude.<*> (x Data..:? "dynamicRangeCompressionLine")
+            Prelude.<*> (x Data..:? "dynamicRangeCompressionProfile")
+            Prelude.<*> (x Data..:? "dynamicRangeCompressionRf")
+            Prelude.<*> (x Data..:? "lfeFilter")
+            Prelude.<*> (x Data..:? "metadataControl")
+            Prelude.<*> (x Data..:? "sampleRate")
+      )
+
+instance Prelude.Hashable Ac3Settings where
+  hashWithSalt _salt Ac3Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` bitrate
+      `Prelude.hashWithSalt` bitstreamMode
+      `Prelude.hashWithSalt` codingMode
+      `Prelude.hashWithSalt` dialnorm
+      `Prelude.hashWithSalt` dynamicRangeCompressionLine
+      `Prelude.hashWithSalt` dynamicRangeCompressionProfile
+      `Prelude.hashWithSalt` dynamicRangeCompressionRf
+      `Prelude.hashWithSalt` lfeFilter
+      `Prelude.hashWithSalt` metadataControl
+      `Prelude.hashWithSalt` sampleRate
+
+instance Prelude.NFData Ac3Settings where
+  rnf Ac3Settings' {..} =
+    Prelude.rnf bitrate
+      `Prelude.seq` Prelude.rnf bitstreamMode
+      `Prelude.seq` Prelude.rnf codingMode
+      `Prelude.seq` Prelude.rnf dialnorm
+      `Prelude.seq` Prelude.rnf dynamicRangeCompressionLine
+      `Prelude.seq` Prelude.rnf dynamicRangeCompressionProfile
+      `Prelude.seq` Prelude.rnf dynamicRangeCompressionRf
+      `Prelude.seq` Prelude.rnf lfeFilter
+      `Prelude.seq` Prelude.rnf metadataControl
+      `Prelude.seq` Prelude.rnf sampleRate
+
+instance Data.ToJSON Ac3Settings where
+  toJSON Ac3Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bitrate" Data..=) Prelude.<$> bitrate,
+            ("bitstreamMode" Data..=) Prelude.<$> bitstreamMode,
+            ("codingMode" Data..=) Prelude.<$> codingMode,
+            ("dialnorm" Data..=) Prelude.<$> dialnorm,
+            ("dynamicRangeCompressionLine" Data..=)
+              Prelude.<$> dynamicRangeCompressionLine,
+            ("dynamicRangeCompressionProfile" Data..=)
+              Prelude.<$> dynamicRangeCompressionProfile,
+            ("dynamicRangeCompressionRf" Data..=)
+              Prelude.<$> dynamicRangeCompressionRf,
+            ("lfeFilter" Data..=) Prelude.<$> lfeFilter,
+            ("metadataControl" Data..=)
+              Prelude.<$> metadataControl,
+            ("sampleRate" Data..=) Prelude.<$> sampleRate
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AccelerationMode.hs b/gen/Amazonka/MediaConvert/Types/AccelerationMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AccelerationMode.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AccelerationMode
+-- 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.AccelerationMode
+  ( AccelerationMode
+      ( ..,
+        AccelerationMode_DISABLED,
+        AccelerationMode_ENABLED,
+        AccelerationMode_PREFERRED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether the service runs your job with accelerated transcoding.
+-- Choose DISABLED if you don\'t want accelerated transcoding. Choose
+-- ENABLED if you want your job to run with accelerated transcoding and to
+-- fail if your input files or your job settings aren\'t compatible with
+-- accelerated transcoding. Choose PREFERRED if you want your job to run
+-- with accelerated transcoding if the job is compatible with the feature
+-- and to run at standard speed if it\'s not.
+newtype AccelerationMode = AccelerationMode'
+  { fromAccelerationMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AccelerationMode_DISABLED :: AccelerationMode
+pattern AccelerationMode_DISABLED = AccelerationMode' "DISABLED"
+
+pattern AccelerationMode_ENABLED :: AccelerationMode
+pattern AccelerationMode_ENABLED = AccelerationMode' "ENABLED"
+
+pattern AccelerationMode_PREFERRED :: AccelerationMode
+pattern AccelerationMode_PREFERRED = AccelerationMode' "PREFERRED"
+
+{-# COMPLETE
+  AccelerationMode_DISABLED,
+  AccelerationMode_ENABLED,
+  AccelerationMode_PREFERRED,
+  AccelerationMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AccelerationSettings.hs b/gen/Amazonka/MediaConvert/Types/AccelerationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AccelerationSettings.hs
@@ -0,0 +1,81 @@
+{-# 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.AccelerationSettings
+-- 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.AccelerationSettings 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.AccelerationMode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Accelerated transcoding can significantly speed up jobs with long,
+-- visually complex content.
+--
+-- /See:/ 'newAccelerationSettings' smart constructor.
+data AccelerationSettings = AccelerationSettings'
+  { -- | Specify the conditions when the service will run your job with
+    -- accelerated transcoding.
+    mode :: AccelerationMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AccelerationSettings' 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:
+--
+-- 'mode', 'accelerationSettings_mode' - Specify the conditions when the service will run your job with
+-- accelerated transcoding.
+newAccelerationSettings ::
+  -- | 'mode'
+  AccelerationMode ->
+  AccelerationSettings
+newAccelerationSettings pMode_ =
+  AccelerationSettings' {mode = pMode_}
+
+-- | Specify the conditions when the service will run your job with
+-- accelerated transcoding.
+accelerationSettings_mode :: Lens.Lens' AccelerationSettings AccelerationMode
+accelerationSettings_mode = Lens.lens (\AccelerationSettings' {mode} -> mode) (\s@AccelerationSettings' {} a -> s {mode = a} :: AccelerationSettings)
+
+instance Data.FromJSON AccelerationSettings where
+  parseJSON =
+    Data.withObject
+      "AccelerationSettings"
+      ( \x ->
+          AccelerationSettings' Prelude.<$> (x Data..: "mode")
+      )
+
+instance Prelude.Hashable AccelerationSettings where
+  hashWithSalt _salt AccelerationSettings' {..} =
+    _salt `Prelude.hashWithSalt` mode
+
+instance Prelude.NFData AccelerationSettings where
+  rnf AccelerationSettings' {..} = Prelude.rnf mode
+
+instance Data.ToJSON AccelerationSettings where
+  toJSON AccelerationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("mode" Data..= mode)]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AccelerationStatus.hs b/gen/Amazonka/MediaConvert/Types/AccelerationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AccelerationStatus.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AccelerationStatus
+-- 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.AccelerationStatus
+  ( AccelerationStatus
+      ( ..,
+        AccelerationStatus_ACCELERATED,
+        AccelerationStatus_IN_PROGRESS,
+        AccelerationStatus_NOT_ACCELERATED,
+        AccelerationStatus_NOT_APPLICABLE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes whether the current job is running with accelerated
+-- transcoding. For jobs that have Acceleration (AccelerationMode) set to
+-- DISABLED, AccelerationStatus is always NOT_APPLICABLE. For jobs that
+-- have Acceleration (AccelerationMode) set to ENABLED or PREFERRED,
+-- AccelerationStatus is one of the other states. AccelerationStatus is
+-- IN_PROGRESS initially, while the service determines whether the input
+-- files and job settings are compatible with accelerated transcoding. If
+-- they are, AcclerationStatus is ACCELERATED. If your input files and job
+-- settings aren\'t compatible with accelerated transcoding, the service
+-- either fails your job or runs it without accelerated transcoding,
+-- depending on how you set Acceleration (AccelerationMode). When the
+-- service runs your job without accelerated transcoding,
+-- AccelerationStatus is NOT_ACCELERATED.
+newtype AccelerationStatus = AccelerationStatus'
+  { fromAccelerationStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AccelerationStatus_ACCELERATED :: AccelerationStatus
+pattern AccelerationStatus_ACCELERATED = AccelerationStatus' "ACCELERATED"
+
+pattern AccelerationStatus_IN_PROGRESS :: AccelerationStatus
+pattern AccelerationStatus_IN_PROGRESS = AccelerationStatus' "IN_PROGRESS"
+
+pattern AccelerationStatus_NOT_ACCELERATED :: AccelerationStatus
+pattern AccelerationStatus_NOT_ACCELERATED = AccelerationStatus' "NOT_ACCELERATED"
+
+pattern AccelerationStatus_NOT_APPLICABLE :: AccelerationStatus
+pattern AccelerationStatus_NOT_APPLICABLE = AccelerationStatus' "NOT_APPLICABLE"
+
+{-# COMPLETE
+  AccelerationStatus_ACCELERATED,
+  AccelerationStatus_IN_PROGRESS,
+  AccelerationStatus_NOT_ACCELERATED,
+  AccelerationStatus_NOT_APPLICABLE,
+  AccelerationStatus'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AfdSignaling.hs b/gen/Amazonka/MediaConvert/Types/AfdSignaling.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AfdSignaling.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AfdSignaling
+-- 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.AfdSignaling
+  ( AfdSignaling
+      ( ..,
+        AfdSignaling_AUTO,
+        AfdSignaling_FIXED,
+        AfdSignaling_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | This setting only applies to H.264, H.265, and MPEG2 outputs. Use Insert
+-- AFD signaling (AfdSignaling) to specify whether the service includes AFD
+-- values in the output video data and what those values are. * Choose None
+-- to remove all AFD values from this output. * Choose Fixed to ignore
+-- input AFD values and instead encode the value specified in the job. *
+-- Choose Auto to calculate output AFD values based on the input AFD scaler
+-- data.
+newtype AfdSignaling = AfdSignaling'
+  { fromAfdSignaling ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AfdSignaling_AUTO :: AfdSignaling
+pattern AfdSignaling_AUTO = AfdSignaling' "AUTO"
+
+pattern AfdSignaling_FIXED :: AfdSignaling
+pattern AfdSignaling_FIXED = AfdSignaling' "FIXED"
+
+pattern AfdSignaling_NONE :: AfdSignaling
+pattern AfdSignaling_NONE = AfdSignaling' "NONE"
+
+{-# COMPLETE
+  AfdSignaling_AUTO,
+  AfdSignaling_FIXED,
+  AfdSignaling_NONE,
+  AfdSignaling'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AiffSettings.hs b/gen/Amazonka/MediaConvert/Types/AiffSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AiffSettings.hs
@@ -0,0 +1,116 @@
+{-# 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.AiffSettings
+-- 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.AiffSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value AIFF.
+--
+-- /See:/ 'newAiffSettings' smart constructor.
+data AiffSettings = AiffSettings'
+  { -- | Specify Bit depth (BitDepth), in bits per sample, to choose the encoding
+    -- quality for this audio track.
+    bitDepth :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the number of channels in this output audio track. Valid values
+    -- are 1 and even numbers up to 64. For example, 1, 2, 4, 6, and so on, up
+    -- to 64.
+    channels :: Prelude.Maybe Prelude.Natural,
+    -- | Sample rate in hz.
+    sampleRate :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AiffSettings' 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:
+--
+-- 'bitDepth', 'aiffSettings_bitDepth' - Specify Bit depth (BitDepth), in bits per sample, to choose the encoding
+-- quality for this audio track.
+--
+-- 'channels', 'aiffSettings_channels' - Specify the number of channels in this output audio track. Valid values
+-- are 1 and even numbers up to 64. For example, 1, 2, 4, 6, and so on, up
+-- to 64.
+--
+-- 'sampleRate', 'aiffSettings_sampleRate' - Sample rate in hz.
+newAiffSettings ::
+  AiffSettings
+newAiffSettings =
+  AiffSettings'
+    { bitDepth = Prelude.Nothing,
+      channels = Prelude.Nothing,
+      sampleRate = Prelude.Nothing
+    }
+
+-- | Specify Bit depth (BitDepth), in bits per sample, to choose the encoding
+-- quality for this audio track.
+aiffSettings_bitDepth :: Lens.Lens' AiffSettings (Prelude.Maybe Prelude.Natural)
+aiffSettings_bitDepth = Lens.lens (\AiffSettings' {bitDepth} -> bitDepth) (\s@AiffSettings' {} a -> s {bitDepth = a} :: AiffSettings)
+
+-- | Specify the number of channels in this output audio track. Valid values
+-- are 1 and even numbers up to 64. For example, 1, 2, 4, 6, and so on, up
+-- to 64.
+aiffSettings_channels :: Lens.Lens' AiffSettings (Prelude.Maybe Prelude.Natural)
+aiffSettings_channels = Lens.lens (\AiffSettings' {channels} -> channels) (\s@AiffSettings' {} a -> s {channels = a} :: AiffSettings)
+
+-- | Sample rate in hz.
+aiffSettings_sampleRate :: Lens.Lens' AiffSettings (Prelude.Maybe Prelude.Natural)
+aiffSettings_sampleRate = Lens.lens (\AiffSettings' {sampleRate} -> sampleRate) (\s@AiffSettings' {} a -> s {sampleRate = a} :: AiffSettings)
+
+instance Data.FromJSON AiffSettings where
+  parseJSON =
+    Data.withObject
+      "AiffSettings"
+      ( \x ->
+          AiffSettings'
+            Prelude.<$> (x Data..:? "bitDepth")
+            Prelude.<*> (x Data..:? "channels")
+            Prelude.<*> (x Data..:? "sampleRate")
+      )
+
+instance Prelude.Hashable AiffSettings where
+  hashWithSalt _salt AiffSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` bitDepth
+      `Prelude.hashWithSalt` channels
+      `Prelude.hashWithSalt` sampleRate
+
+instance Prelude.NFData AiffSettings where
+  rnf AiffSettings' {..} =
+    Prelude.rnf bitDepth
+      `Prelude.seq` Prelude.rnf channels
+      `Prelude.seq` Prelude.rnf sampleRate
+
+instance Data.ToJSON AiffSettings where
+  toJSON AiffSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bitDepth" Data..=) Prelude.<$> bitDepth,
+            ("channels" Data..=) Prelude.<$> channels,
+            ("sampleRate" Data..=) Prelude.<$> sampleRate
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AllowedRenditionSize.hs b/gen/Amazonka/MediaConvert/Types/AllowedRenditionSize.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AllowedRenditionSize.hs
@@ -0,0 +1,121 @@
+{-# 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.AllowedRenditionSize
+-- 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.AllowedRenditionSize 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.RequiredFlag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Allowed renditions to specify a list of possible resolutions in your
+-- ABR stack. * MediaConvert will create an ABR stack exclusively from the
+-- list of resolutions that you specify. * Some resolutions in the Allowed
+-- renditions list may not be included, however you can force a resolution
+-- to be included by setting Required to ENABLED. * You must specify at
+-- least one resolution that is greater than or equal to any resolutions
+-- that you specify in Min top rendition size or Min bottom rendition size.
+-- * If you specify Allowed renditions, you must not specify a separate
+-- rule for Force include renditions.
+--
+-- /See:/ 'newAllowedRenditionSize' smart constructor.
+data AllowedRenditionSize = AllowedRenditionSize'
+  { -- | Use Height to define the video resolution height, in pixels, for this
+    -- rule.
+    height :: Prelude.Maybe Prelude.Natural,
+    -- | Set to ENABLED to force a rendition to be included.
+    required :: Prelude.Maybe RequiredFlag,
+    -- | Use Width to define the video resolution width, in pixels, for this
+    -- rule.
+    width :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AllowedRenditionSize' 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:
+--
+-- 'height', 'allowedRenditionSize_height' - Use Height to define the video resolution height, in pixels, for this
+-- rule.
+--
+-- 'required', 'allowedRenditionSize_required' - Set to ENABLED to force a rendition to be included.
+--
+-- 'width', 'allowedRenditionSize_width' - Use Width to define the video resolution width, in pixels, for this
+-- rule.
+newAllowedRenditionSize ::
+  AllowedRenditionSize
+newAllowedRenditionSize =
+  AllowedRenditionSize'
+    { height = Prelude.Nothing,
+      required = Prelude.Nothing,
+      width = Prelude.Nothing
+    }
+
+-- | Use Height to define the video resolution height, in pixels, for this
+-- rule.
+allowedRenditionSize_height :: Lens.Lens' AllowedRenditionSize (Prelude.Maybe Prelude.Natural)
+allowedRenditionSize_height = Lens.lens (\AllowedRenditionSize' {height} -> height) (\s@AllowedRenditionSize' {} a -> s {height = a} :: AllowedRenditionSize)
+
+-- | Set to ENABLED to force a rendition to be included.
+allowedRenditionSize_required :: Lens.Lens' AllowedRenditionSize (Prelude.Maybe RequiredFlag)
+allowedRenditionSize_required = Lens.lens (\AllowedRenditionSize' {required} -> required) (\s@AllowedRenditionSize' {} a -> s {required = a} :: AllowedRenditionSize)
+
+-- | Use Width to define the video resolution width, in pixels, for this
+-- rule.
+allowedRenditionSize_width :: Lens.Lens' AllowedRenditionSize (Prelude.Maybe Prelude.Natural)
+allowedRenditionSize_width = Lens.lens (\AllowedRenditionSize' {width} -> width) (\s@AllowedRenditionSize' {} a -> s {width = a} :: AllowedRenditionSize)
+
+instance Data.FromJSON AllowedRenditionSize where
+  parseJSON =
+    Data.withObject
+      "AllowedRenditionSize"
+      ( \x ->
+          AllowedRenditionSize'
+            Prelude.<$> (x Data..:? "height")
+            Prelude.<*> (x Data..:? "required")
+            Prelude.<*> (x Data..:? "width")
+      )
+
+instance Prelude.Hashable AllowedRenditionSize where
+  hashWithSalt _salt AllowedRenditionSize' {..} =
+    _salt
+      `Prelude.hashWithSalt` height
+      `Prelude.hashWithSalt` required
+      `Prelude.hashWithSalt` width
+
+instance Prelude.NFData AllowedRenditionSize where
+  rnf AllowedRenditionSize' {..} =
+    Prelude.rnf height
+      `Prelude.seq` Prelude.rnf required
+      `Prelude.seq` Prelude.rnf width
+
+instance Data.ToJSON AllowedRenditionSize where
+  toJSON AllowedRenditionSize' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("height" Data..=) Prelude.<$> height,
+            ("required" Data..=) Prelude.<$> required,
+            ("width" Data..=) Prelude.<$> width
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AlphaBehavior.hs b/gen/Amazonka/MediaConvert/Types/AlphaBehavior.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AlphaBehavior.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AlphaBehavior
+-- 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.AlphaBehavior
+  ( AlphaBehavior
+      ( ..,
+        AlphaBehavior_DISCARD,
+        AlphaBehavior_REMAP_TO_LUMA
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless this input is a QuickTime animation with an
+-- alpha channel. Use this setting to create separate Key and Fill outputs.
+-- In each output, specify which part of the input MediaConvert uses. Leave
+-- this setting at the default value DISCARD to delete the alpha channel
+-- and preserve the video. Set it to REMAP_TO_LUMA to delete the video and
+-- map the alpha channel to the luma channel of your outputs.
+newtype AlphaBehavior = AlphaBehavior'
+  { fromAlphaBehavior ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AlphaBehavior_DISCARD :: AlphaBehavior
+pattern AlphaBehavior_DISCARD = AlphaBehavior' "DISCARD"
+
+pattern AlphaBehavior_REMAP_TO_LUMA :: AlphaBehavior
+pattern AlphaBehavior_REMAP_TO_LUMA = AlphaBehavior' "REMAP_TO_LUMA"
+
+{-# COMPLETE
+  AlphaBehavior_DISCARD,
+  AlphaBehavior_REMAP_TO_LUMA,
+  AlphaBehavior'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AncillaryConvert608To708.hs b/gen/Amazonka/MediaConvert/Types/AncillaryConvert608To708.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AncillaryConvert608To708.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AncillaryConvert608To708
+-- 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.AncillaryConvert608To708
+  ( AncillaryConvert608To708
+      ( ..,
+        AncillaryConvert608To708_DISABLED,
+        AncillaryConvert608To708_UPCONVERT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether this set of input captions appears in your outputs in
+-- both 608 and 708 format. If you choose Upconvert (UPCONVERT),
+-- MediaConvert includes the captions data in two ways: it passes the 608
+-- data through using the 608 compatibility bytes fields of the 708
+-- wrapper, and it also translates the 608 data into 708.
+newtype AncillaryConvert608To708 = AncillaryConvert608To708'
+  { fromAncillaryConvert608To708 ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AncillaryConvert608To708_DISABLED :: AncillaryConvert608To708
+pattern AncillaryConvert608To708_DISABLED = AncillaryConvert608To708' "DISABLED"
+
+pattern AncillaryConvert608To708_UPCONVERT :: AncillaryConvert608To708
+pattern AncillaryConvert608To708_UPCONVERT = AncillaryConvert608To708' "UPCONVERT"
+
+{-# COMPLETE
+  AncillaryConvert608To708_DISABLED,
+  AncillaryConvert608To708_UPCONVERT,
+  AncillaryConvert608To708'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AncillarySourceSettings.hs b/gen/Amazonka/MediaConvert/Types/AncillarySourceSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AncillarySourceSettings.hs
@@ -0,0 +1,133 @@
+{-# 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.AncillarySourceSettings
+-- 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.AncillarySourceSettings 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.AncillaryConvert608To708
+import Amazonka.MediaConvert.Types.AncillaryTerminateCaptions
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for ancillary captions source.
+--
+-- /See:/ 'newAncillarySourceSettings' smart constructor.
+data AncillarySourceSettings = AncillarySourceSettings'
+  { -- | Specify whether this set of input captions appears in your outputs in
+    -- both 608 and 708 format. If you choose Upconvert (UPCONVERT),
+    -- MediaConvert includes the captions data in two ways: it passes the 608
+    -- data through using the 608 compatibility bytes fields of the 708
+    -- wrapper, and it also translates the 608 data into 708.
+    convert608To708 :: Prelude.Maybe AncillaryConvert608To708,
+    -- | Specifies the 608 channel number in the ancillary data track from which
+    -- to extract captions. Unused for passthrough.
+    sourceAncillaryChannelNumber :: Prelude.Maybe Prelude.Natural,
+    -- | By default, the service terminates any unterminated captions at the end
+    -- of each input. If you want the caption to continue onto your next input,
+    -- disable this setting.
+    terminateCaptions :: Prelude.Maybe AncillaryTerminateCaptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AncillarySourceSettings' 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:
+--
+-- 'convert608To708', 'ancillarySourceSettings_convert608To708' - Specify whether this set of input captions appears in your outputs in
+-- both 608 and 708 format. If you choose Upconvert (UPCONVERT),
+-- MediaConvert includes the captions data in two ways: it passes the 608
+-- data through using the 608 compatibility bytes fields of the 708
+-- wrapper, and it also translates the 608 data into 708.
+--
+-- 'sourceAncillaryChannelNumber', 'ancillarySourceSettings_sourceAncillaryChannelNumber' - Specifies the 608 channel number in the ancillary data track from which
+-- to extract captions. Unused for passthrough.
+--
+-- 'terminateCaptions', 'ancillarySourceSettings_terminateCaptions' - By default, the service terminates any unterminated captions at the end
+-- of each input. If you want the caption to continue onto your next input,
+-- disable this setting.
+newAncillarySourceSettings ::
+  AncillarySourceSettings
+newAncillarySourceSettings =
+  AncillarySourceSettings'
+    { convert608To708 =
+        Prelude.Nothing,
+      sourceAncillaryChannelNumber = Prelude.Nothing,
+      terminateCaptions = Prelude.Nothing
+    }
+
+-- | Specify whether this set of input captions appears in your outputs in
+-- both 608 and 708 format. If you choose Upconvert (UPCONVERT),
+-- MediaConvert includes the captions data in two ways: it passes the 608
+-- data through using the 608 compatibility bytes fields of the 708
+-- wrapper, and it also translates the 608 data into 708.
+ancillarySourceSettings_convert608To708 :: Lens.Lens' AncillarySourceSettings (Prelude.Maybe AncillaryConvert608To708)
+ancillarySourceSettings_convert608To708 = Lens.lens (\AncillarySourceSettings' {convert608To708} -> convert608To708) (\s@AncillarySourceSettings' {} a -> s {convert608To708 = a} :: AncillarySourceSettings)
+
+-- | Specifies the 608 channel number in the ancillary data track from which
+-- to extract captions. Unused for passthrough.
+ancillarySourceSettings_sourceAncillaryChannelNumber :: Lens.Lens' AncillarySourceSettings (Prelude.Maybe Prelude.Natural)
+ancillarySourceSettings_sourceAncillaryChannelNumber = Lens.lens (\AncillarySourceSettings' {sourceAncillaryChannelNumber} -> sourceAncillaryChannelNumber) (\s@AncillarySourceSettings' {} a -> s {sourceAncillaryChannelNumber = a} :: AncillarySourceSettings)
+
+-- | By default, the service terminates any unterminated captions at the end
+-- of each input. If you want the caption to continue onto your next input,
+-- disable this setting.
+ancillarySourceSettings_terminateCaptions :: Lens.Lens' AncillarySourceSettings (Prelude.Maybe AncillaryTerminateCaptions)
+ancillarySourceSettings_terminateCaptions = Lens.lens (\AncillarySourceSettings' {terminateCaptions} -> terminateCaptions) (\s@AncillarySourceSettings' {} a -> s {terminateCaptions = a} :: AncillarySourceSettings)
+
+instance Data.FromJSON AncillarySourceSettings where
+  parseJSON =
+    Data.withObject
+      "AncillarySourceSettings"
+      ( \x ->
+          AncillarySourceSettings'
+            Prelude.<$> (x Data..:? "convert608To708")
+            Prelude.<*> (x Data..:? "sourceAncillaryChannelNumber")
+            Prelude.<*> (x Data..:? "terminateCaptions")
+      )
+
+instance Prelude.Hashable AncillarySourceSettings where
+  hashWithSalt _salt AncillarySourceSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` convert608To708
+      `Prelude.hashWithSalt` sourceAncillaryChannelNumber
+      `Prelude.hashWithSalt` terminateCaptions
+
+instance Prelude.NFData AncillarySourceSettings where
+  rnf AncillarySourceSettings' {..} =
+    Prelude.rnf convert608To708
+      `Prelude.seq` Prelude.rnf sourceAncillaryChannelNumber
+      `Prelude.seq` Prelude.rnf terminateCaptions
+
+instance Data.ToJSON AncillarySourceSettings where
+  toJSON AncillarySourceSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("convert608To708" Data..=)
+              Prelude.<$> convert608To708,
+            ("sourceAncillaryChannelNumber" Data..=)
+              Prelude.<$> sourceAncillaryChannelNumber,
+            ("terminateCaptions" Data..=)
+              Prelude.<$> terminateCaptions
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AncillaryTerminateCaptions.hs b/gen/Amazonka/MediaConvert/Types/AncillaryTerminateCaptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AncillaryTerminateCaptions.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AncillaryTerminateCaptions
+-- 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.AncillaryTerminateCaptions
+  ( AncillaryTerminateCaptions
+      ( ..,
+        AncillaryTerminateCaptions_DISABLED,
+        AncillaryTerminateCaptions_END_OF_INPUT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | By default, the service terminates any unterminated captions at the end
+-- of each input. If you want the caption to continue onto your next input,
+-- disable this setting.
+newtype AncillaryTerminateCaptions = AncillaryTerminateCaptions'
+  { fromAncillaryTerminateCaptions ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AncillaryTerminateCaptions_DISABLED :: AncillaryTerminateCaptions
+pattern AncillaryTerminateCaptions_DISABLED = AncillaryTerminateCaptions' "DISABLED"
+
+pattern AncillaryTerminateCaptions_END_OF_INPUT :: AncillaryTerminateCaptions
+pattern AncillaryTerminateCaptions_END_OF_INPUT = AncillaryTerminateCaptions' "END_OF_INPUT"
+
+{-# COMPLETE
+  AncillaryTerminateCaptions_DISABLED,
+  AncillaryTerminateCaptions_END_OF_INPUT,
+  AncillaryTerminateCaptions'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AntiAlias.hs b/gen/Amazonka/MediaConvert/Types/AntiAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AntiAlias.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AntiAlias
+-- 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.AntiAlias
+  ( AntiAlias
+      ( ..,
+        AntiAlias_DISABLED,
+        AntiAlias_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The anti-alias filter is automatically applied to all outputs. The
+-- service no longer accepts the value DISABLED for AntiAlias. If you
+-- specify that in your job, the service will ignore the setting.
+newtype AntiAlias = AntiAlias'
+  { fromAntiAlias ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AntiAlias_DISABLED :: AntiAlias
+pattern AntiAlias_DISABLED = AntiAlias' "DISABLED"
+
+pattern AntiAlias_ENABLED :: AntiAlias
+pattern AntiAlias_ENABLED = AntiAlias' "ENABLED"
+
+{-# COMPLETE
+  AntiAlias_DISABLED,
+  AntiAlias_ENABLED,
+  AntiAlias'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AudioChannelTag.hs b/gen/Amazonka/MediaConvert/Types/AudioChannelTag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioChannelTag.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AudioChannelTag
+-- 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.AudioChannelTag
+  ( AudioChannelTag
+      ( ..,
+        AudioChannelTag_C,
+        AudioChannelTag_CS,
+        AudioChannelTag_L,
+        AudioChannelTag_LC,
+        AudioChannelTag_LFE,
+        AudioChannelTag_LS,
+        AudioChannelTag_LSD,
+        AudioChannelTag_R,
+        AudioChannelTag_RC,
+        AudioChannelTag_RS,
+        AudioChannelTag_RSD,
+        AudioChannelTag_TCS,
+        AudioChannelTag_VHC,
+        AudioChannelTag_VHL,
+        AudioChannelTag_VHR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | You can add a tag for this mono-channel audio track to mimic its
+-- placement in a multi-channel layout. For example, if this track is the
+-- left surround channel, choose Left surround (LS).
+newtype AudioChannelTag = AudioChannelTag'
+  { fromAudioChannelTag ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AudioChannelTag_C :: AudioChannelTag
+pattern AudioChannelTag_C = AudioChannelTag' "C"
+
+pattern AudioChannelTag_CS :: AudioChannelTag
+pattern AudioChannelTag_CS = AudioChannelTag' "CS"
+
+pattern AudioChannelTag_L :: AudioChannelTag
+pattern AudioChannelTag_L = AudioChannelTag' "L"
+
+pattern AudioChannelTag_LC :: AudioChannelTag
+pattern AudioChannelTag_LC = AudioChannelTag' "LC"
+
+pattern AudioChannelTag_LFE :: AudioChannelTag
+pattern AudioChannelTag_LFE = AudioChannelTag' "LFE"
+
+pattern AudioChannelTag_LS :: AudioChannelTag
+pattern AudioChannelTag_LS = AudioChannelTag' "LS"
+
+pattern AudioChannelTag_LSD :: AudioChannelTag
+pattern AudioChannelTag_LSD = AudioChannelTag' "LSD"
+
+pattern AudioChannelTag_R :: AudioChannelTag
+pattern AudioChannelTag_R = AudioChannelTag' "R"
+
+pattern AudioChannelTag_RC :: AudioChannelTag
+pattern AudioChannelTag_RC = AudioChannelTag' "RC"
+
+pattern AudioChannelTag_RS :: AudioChannelTag
+pattern AudioChannelTag_RS = AudioChannelTag' "RS"
+
+pattern AudioChannelTag_RSD :: AudioChannelTag
+pattern AudioChannelTag_RSD = AudioChannelTag' "RSD"
+
+pattern AudioChannelTag_TCS :: AudioChannelTag
+pattern AudioChannelTag_TCS = AudioChannelTag' "TCS"
+
+pattern AudioChannelTag_VHC :: AudioChannelTag
+pattern AudioChannelTag_VHC = AudioChannelTag' "VHC"
+
+pattern AudioChannelTag_VHL :: AudioChannelTag
+pattern AudioChannelTag_VHL = AudioChannelTag' "VHL"
+
+pattern AudioChannelTag_VHR :: AudioChannelTag
+pattern AudioChannelTag_VHR = AudioChannelTag' "VHR"
+
+{-# COMPLETE
+  AudioChannelTag_C,
+  AudioChannelTag_CS,
+  AudioChannelTag_L,
+  AudioChannelTag_LC,
+  AudioChannelTag_LFE,
+  AudioChannelTag_LS,
+  AudioChannelTag_LSD,
+  AudioChannelTag_R,
+  AudioChannelTag_RC,
+  AudioChannelTag_RS,
+  AudioChannelTag_RSD,
+  AudioChannelTag_TCS,
+  AudioChannelTag_VHC,
+  AudioChannelTag_VHL,
+  AudioChannelTag_VHR,
+  AudioChannelTag'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AudioChannelTaggingSettings.hs b/gen/Amazonka/MediaConvert/Types/AudioChannelTaggingSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioChannelTaggingSettings.hs
@@ -0,0 +1,93 @@
+{-# 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.AudioChannelTaggingSettings
+-- 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.AudioChannelTaggingSettings 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.AudioChannelTag
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you mimic a multi-channel audio layout with multiple mono-channel
+-- tracks, you can tag each channel layout manually. For example, you would
+-- tag the tracks that contain your left, right, and center audio with Left
+-- (L), Right (R), and Center (C), respectively. When you don\'t specify a
+-- value, MediaConvert labels your track as Center (C) by default. To use
+-- audio layout tagging, your output must be in a QuickTime (.mov)
+-- container; your audio codec must be AAC, WAV, or AIFF; and you must set
+-- up your audio track to have only one channel.
+--
+-- /See:/ 'newAudioChannelTaggingSettings' smart constructor.
+data AudioChannelTaggingSettings = AudioChannelTaggingSettings'
+  { -- | You can add a tag for this mono-channel audio track to mimic its
+    -- placement in a multi-channel layout. For example, if this track is the
+    -- left surround channel, choose Left surround (LS).
+    channelTag :: Prelude.Maybe AudioChannelTag
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AudioChannelTaggingSettings' 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:
+--
+-- 'channelTag', 'audioChannelTaggingSettings_channelTag' - You can add a tag for this mono-channel audio track to mimic its
+-- placement in a multi-channel layout. For example, if this track is the
+-- left surround channel, choose Left surround (LS).
+newAudioChannelTaggingSettings ::
+  AudioChannelTaggingSettings
+newAudioChannelTaggingSettings =
+  AudioChannelTaggingSettings'
+    { channelTag =
+        Prelude.Nothing
+    }
+
+-- | You can add a tag for this mono-channel audio track to mimic its
+-- placement in a multi-channel layout. For example, if this track is the
+-- left surround channel, choose Left surround (LS).
+audioChannelTaggingSettings_channelTag :: Lens.Lens' AudioChannelTaggingSettings (Prelude.Maybe AudioChannelTag)
+audioChannelTaggingSettings_channelTag = Lens.lens (\AudioChannelTaggingSettings' {channelTag} -> channelTag) (\s@AudioChannelTaggingSettings' {} a -> s {channelTag = a} :: AudioChannelTaggingSettings)
+
+instance Data.FromJSON AudioChannelTaggingSettings where
+  parseJSON =
+    Data.withObject
+      "AudioChannelTaggingSettings"
+      ( \x ->
+          AudioChannelTaggingSettings'
+            Prelude.<$> (x Data..:? "channelTag")
+      )
+
+instance Prelude.Hashable AudioChannelTaggingSettings where
+  hashWithSalt _salt AudioChannelTaggingSettings' {..} =
+    _salt `Prelude.hashWithSalt` channelTag
+
+instance Prelude.NFData AudioChannelTaggingSettings where
+  rnf AudioChannelTaggingSettings' {..} =
+    Prelude.rnf channelTag
+
+instance Data.ToJSON AudioChannelTaggingSettings where
+  toJSON AudioChannelTaggingSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("channelTag" Data..=) Prelude.<$> channelTag]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AudioCodec.hs b/gen/Amazonka/MediaConvert/Types/AudioCodec.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioCodec.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AudioCodec
+-- 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.AudioCodec
+  ( AudioCodec
+      ( ..,
+        AudioCodec_AAC,
+        AudioCodec_AC3,
+        AudioCodec_AIFF,
+        AudioCodec_EAC3,
+        AudioCodec_EAC3_ATMOS,
+        AudioCodec_MP2,
+        AudioCodec_MP3,
+        AudioCodec_OPUS,
+        AudioCodec_PASSTHROUGH,
+        AudioCodec_VORBIS,
+        AudioCodec_WAV
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the audio codec for this output. Note that the option Dolby
+-- Digital passthrough (PASSTHROUGH) applies only to Dolby Digital and
+-- Dolby Digital Plus audio inputs. Make sure that you choose a codec
+-- that\'s supported with your output container:
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers.html#reference-codecs-containers-output-audio
+-- For audio-only outputs, make sure that both your input audio codec and
+-- your output audio codec are supported for audio-only workflows. For more
+-- information, see:
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers-input.html#reference-codecs-containers-input-audio-only
+-- and
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers.html#audio-only-output
+newtype AudioCodec = AudioCodec'
+  { fromAudioCodec ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AudioCodec_AAC :: AudioCodec
+pattern AudioCodec_AAC = AudioCodec' "AAC"
+
+pattern AudioCodec_AC3 :: AudioCodec
+pattern AudioCodec_AC3 = AudioCodec' "AC3"
+
+pattern AudioCodec_AIFF :: AudioCodec
+pattern AudioCodec_AIFF = AudioCodec' "AIFF"
+
+pattern AudioCodec_EAC3 :: AudioCodec
+pattern AudioCodec_EAC3 = AudioCodec' "EAC3"
+
+pattern AudioCodec_EAC3_ATMOS :: AudioCodec
+pattern AudioCodec_EAC3_ATMOS = AudioCodec' "EAC3_ATMOS"
+
+pattern AudioCodec_MP2 :: AudioCodec
+pattern AudioCodec_MP2 = AudioCodec' "MP2"
+
+pattern AudioCodec_MP3 :: AudioCodec
+pattern AudioCodec_MP3 = AudioCodec' "MP3"
+
+pattern AudioCodec_OPUS :: AudioCodec
+pattern AudioCodec_OPUS = AudioCodec' "OPUS"
+
+pattern AudioCodec_PASSTHROUGH :: AudioCodec
+pattern AudioCodec_PASSTHROUGH = AudioCodec' "PASSTHROUGH"
+
+pattern AudioCodec_VORBIS :: AudioCodec
+pattern AudioCodec_VORBIS = AudioCodec' "VORBIS"
+
+pattern AudioCodec_WAV :: AudioCodec
+pattern AudioCodec_WAV = AudioCodec' "WAV"
+
+{-# COMPLETE
+  AudioCodec_AAC,
+  AudioCodec_AC3,
+  AudioCodec_AIFF,
+  AudioCodec_EAC3,
+  AudioCodec_EAC3_ATMOS,
+  AudioCodec_MP2,
+  AudioCodec_MP3,
+  AudioCodec_OPUS,
+  AudioCodec_PASSTHROUGH,
+  AudioCodec_VORBIS,
+  AudioCodec_WAV,
+  AudioCodec'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AudioCodecSettings.hs b/gen/Amazonka/MediaConvert/Types/AudioCodecSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioCodecSettings.hs
@@ -0,0 +1,299 @@
+{-# 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.AudioCodecSettings
+-- 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.AudioCodecSettings 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.AacSettings
+import Amazonka.MediaConvert.Types.Ac3Settings
+import Amazonka.MediaConvert.Types.AiffSettings
+import Amazonka.MediaConvert.Types.AudioCodec
+import Amazonka.MediaConvert.Types.Eac3AtmosSettings
+import Amazonka.MediaConvert.Types.Eac3Settings
+import Amazonka.MediaConvert.Types.Mp2Settings
+import Amazonka.MediaConvert.Types.Mp3Settings
+import Amazonka.MediaConvert.Types.OpusSettings
+import Amazonka.MediaConvert.Types.VorbisSettings
+import Amazonka.MediaConvert.Types.WavSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to audio encoding. The settings in this group vary
+-- depending on the value that you choose for your audio codec.
+--
+-- /See:/ 'newAudioCodecSettings' smart constructor.
+data AudioCodecSettings = AudioCodecSettings'
+  { -- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+    -- to the value AAC. The service accepts one of two mutually exclusive
+    -- groups of AAC settings--VBR and CBR. To select one of these modes, set
+    -- the value of Bitrate control mode (rateControlMode) to \"VBR\" or
+    -- \"CBR\". In VBR mode, you control the audio quality with the setting VBR
+    -- quality (vbrQuality). In CBR mode, you use the setting Bitrate
+    -- (bitrate). Defaults and valid values depend on the rate control mode.
+    aacSettings :: Prelude.Maybe AacSettings,
+    -- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+    -- to the value AC3.
+    ac3Settings :: Prelude.Maybe Ac3Settings,
+    -- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+    -- to the value AIFF.
+    aiffSettings :: Prelude.Maybe AiffSettings,
+    -- | Choose the audio codec for this output. Note that the option Dolby
+    -- Digital passthrough (PASSTHROUGH) applies only to Dolby Digital and
+    -- Dolby Digital Plus audio inputs. Make sure that you choose a codec
+    -- that\'s supported with your output container:
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers.html#reference-codecs-containers-output-audio
+    -- For audio-only outputs, make sure that both your input audio codec and
+    -- your output audio codec are supported for audio-only workflows. For more
+    -- information, see:
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers-input.html#reference-codecs-containers-input-audio-only
+    -- and
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers.html#audio-only-output
+    codec :: Prelude.Maybe AudioCodec,
+    -- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+    -- to the value EAC3_ATMOS.
+    eac3AtmosSettings :: Prelude.Maybe Eac3AtmosSettings,
+    -- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+    -- to the value EAC3.
+    eac3Settings :: Prelude.Maybe Eac3Settings,
+    -- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+    -- to the value MP2.
+    mp2Settings :: Prelude.Maybe Mp2Settings,
+    -- | Required when you set Codec, under AudioDescriptions>CodecSettings, to
+    -- the value MP3.
+    mp3Settings :: Prelude.Maybe Mp3Settings,
+    -- | Required when you set Codec, under AudioDescriptions>CodecSettings, to
+    -- the value OPUS.
+    opusSettings :: Prelude.Maybe OpusSettings,
+    -- | Required when you set Codec, under AudioDescriptions>CodecSettings, to
+    -- the value Vorbis.
+    vorbisSettings :: Prelude.Maybe VorbisSettings,
+    -- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+    -- to the value WAV.
+    wavSettings :: Prelude.Maybe WavSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AudioCodecSettings' 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:
+--
+-- 'aacSettings', 'audioCodecSettings_aacSettings' - Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value AAC. The service accepts one of two mutually exclusive
+-- groups of AAC settings--VBR and CBR. To select one of these modes, set
+-- the value of Bitrate control mode (rateControlMode) to \"VBR\" or
+-- \"CBR\". In VBR mode, you control the audio quality with the setting VBR
+-- quality (vbrQuality). In CBR mode, you use the setting Bitrate
+-- (bitrate). Defaults and valid values depend on the rate control mode.
+--
+-- 'ac3Settings', 'audioCodecSettings_ac3Settings' - Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value AC3.
+--
+-- 'aiffSettings', 'audioCodecSettings_aiffSettings' - Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value AIFF.
+--
+-- 'codec', 'audioCodecSettings_codec' - Choose the audio codec for this output. Note that the option Dolby
+-- Digital passthrough (PASSTHROUGH) applies only to Dolby Digital and
+-- Dolby Digital Plus audio inputs. Make sure that you choose a codec
+-- that\'s supported with your output container:
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers.html#reference-codecs-containers-output-audio
+-- For audio-only outputs, make sure that both your input audio codec and
+-- your output audio codec are supported for audio-only workflows. For more
+-- information, see:
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers-input.html#reference-codecs-containers-input-audio-only
+-- and
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers.html#audio-only-output
+--
+-- 'eac3AtmosSettings', 'audioCodecSettings_eac3AtmosSettings' - Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value EAC3_ATMOS.
+--
+-- 'eac3Settings', 'audioCodecSettings_eac3Settings' - Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value EAC3.
+--
+-- 'mp2Settings', 'audioCodecSettings_mp2Settings' - Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value MP2.
+--
+-- 'mp3Settings', 'audioCodecSettings_mp3Settings' - Required when you set Codec, under AudioDescriptions>CodecSettings, to
+-- the value MP3.
+--
+-- 'opusSettings', 'audioCodecSettings_opusSettings' - Required when you set Codec, under AudioDescriptions>CodecSettings, to
+-- the value OPUS.
+--
+-- 'vorbisSettings', 'audioCodecSettings_vorbisSettings' - Required when you set Codec, under AudioDescriptions>CodecSettings, to
+-- the value Vorbis.
+--
+-- 'wavSettings', 'audioCodecSettings_wavSettings' - Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value WAV.
+newAudioCodecSettings ::
+  AudioCodecSettings
+newAudioCodecSettings =
+  AudioCodecSettings'
+    { aacSettings = Prelude.Nothing,
+      ac3Settings = Prelude.Nothing,
+      aiffSettings = Prelude.Nothing,
+      codec = Prelude.Nothing,
+      eac3AtmosSettings = Prelude.Nothing,
+      eac3Settings = Prelude.Nothing,
+      mp2Settings = Prelude.Nothing,
+      mp3Settings = Prelude.Nothing,
+      opusSettings = Prelude.Nothing,
+      vorbisSettings = Prelude.Nothing,
+      wavSettings = Prelude.Nothing
+    }
+
+-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value AAC. The service accepts one of two mutually exclusive
+-- groups of AAC settings--VBR and CBR. To select one of these modes, set
+-- the value of Bitrate control mode (rateControlMode) to \"VBR\" or
+-- \"CBR\". In VBR mode, you control the audio quality with the setting VBR
+-- quality (vbrQuality). In CBR mode, you use the setting Bitrate
+-- (bitrate). Defaults and valid values depend on the rate control mode.
+audioCodecSettings_aacSettings :: Lens.Lens' AudioCodecSettings (Prelude.Maybe AacSettings)
+audioCodecSettings_aacSettings = Lens.lens (\AudioCodecSettings' {aacSettings} -> aacSettings) (\s@AudioCodecSettings' {} a -> s {aacSettings = a} :: AudioCodecSettings)
+
+-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value AC3.
+audioCodecSettings_ac3Settings :: Lens.Lens' AudioCodecSettings (Prelude.Maybe Ac3Settings)
+audioCodecSettings_ac3Settings = Lens.lens (\AudioCodecSettings' {ac3Settings} -> ac3Settings) (\s@AudioCodecSettings' {} a -> s {ac3Settings = a} :: AudioCodecSettings)
+
+-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value AIFF.
+audioCodecSettings_aiffSettings :: Lens.Lens' AudioCodecSettings (Prelude.Maybe AiffSettings)
+audioCodecSettings_aiffSettings = Lens.lens (\AudioCodecSettings' {aiffSettings} -> aiffSettings) (\s@AudioCodecSettings' {} a -> s {aiffSettings = a} :: AudioCodecSettings)
+
+-- | Choose the audio codec for this output. Note that the option Dolby
+-- Digital passthrough (PASSTHROUGH) applies only to Dolby Digital and
+-- Dolby Digital Plus audio inputs. Make sure that you choose a codec
+-- that\'s supported with your output container:
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers.html#reference-codecs-containers-output-audio
+-- For audio-only outputs, make sure that both your input audio codec and
+-- your output audio codec are supported for audio-only workflows. For more
+-- information, see:
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers-input.html#reference-codecs-containers-input-audio-only
+-- and
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers.html#audio-only-output
+audioCodecSettings_codec :: Lens.Lens' AudioCodecSettings (Prelude.Maybe AudioCodec)
+audioCodecSettings_codec = Lens.lens (\AudioCodecSettings' {codec} -> codec) (\s@AudioCodecSettings' {} a -> s {codec = a} :: AudioCodecSettings)
+
+-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value EAC3_ATMOS.
+audioCodecSettings_eac3AtmosSettings :: Lens.Lens' AudioCodecSettings (Prelude.Maybe Eac3AtmosSettings)
+audioCodecSettings_eac3AtmosSettings = Lens.lens (\AudioCodecSettings' {eac3AtmosSettings} -> eac3AtmosSettings) (\s@AudioCodecSettings' {} a -> s {eac3AtmosSettings = a} :: AudioCodecSettings)
+
+-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value EAC3.
+audioCodecSettings_eac3Settings :: Lens.Lens' AudioCodecSettings (Prelude.Maybe Eac3Settings)
+audioCodecSettings_eac3Settings = Lens.lens (\AudioCodecSettings' {eac3Settings} -> eac3Settings) (\s@AudioCodecSettings' {} a -> s {eac3Settings = a} :: AudioCodecSettings)
+
+-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value MP2.
+audioCodecSettings_mp2Settings :: Lens.Lens' AudioCodecSettings (Prelude.Maybe Mp2Settings)
+audioCodecSettings_mp2Settings = Lens.lens (\AudioCodecSettings' {mp2Settings} -> mp2Settings) (\s@AudioCodecSettings' {} a -> s {mp2Settings = a} :: AudioCodecSettings)
+
+-- | Required when you set Codec, under AudioDescriptions>CodecSettings, to
+-- the value MP3.
+audioCodecSettings_mp3Settings :: Lens.Lens' AudioCodecSettings (Prelude.Maybe Mp3Settings)
+audioCodecSettings_mp3Settings = Lens.lens (\AudioCodecSettings' {mp3Settings} -> mp3Settings) (\s@AudioCodecSettings' {} a -> s {mp3Settings = a} :: AudioCodecSettings)
+
+-- | Required when you set Codec, under AudioDescriptions>CodecSettings, to
+-- the value OPUS.
+audioCodecSettings_opusSettings :: Lens.Lens' AudioCodecSettings (Prelude.Maybe OpusSettings)
+audioCodecSettings_opusSettings = Lens.lens (\AudioCodecSettings' {opusSettings} -> opusSettings) (\s@AudioCodecSettings' {} a -> s {opusSettings = a} :: AudioCodecSettings)
+
+-- | Required when you set Codec, under AudioDescriptions>CodecSettings, to
+-- the value Vorbis.
+audioCodecSettings_vorbisSettings :: Lens.Lens' AudioCodecSettings (Prelude.Maybe VorbisSettings)
+audioCodecSettings_vorbisSettings = Lens.lens (\AudioCodecSettings' {vorbisSettings} -> vorbisSettings) (\s@AudioCodecSettings' {} a -> s {vorbisSettings = a} :: AudioCodecSettings)
+
+-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value WAV.
+audioCodecSettings_wavSettings :: Lens.Lens' AudioCodecSettings (Prelude.Maybe WavSettings)
+audioCodecSettings_wavSettings = Lens.lens (\AudioCodecSettings' {wavSettings} -> wavSettings) (\s@AudioCodecSettings' {} a -> s {wavSettings = a} :: AudioCodecSettings)
+
+instance Data.FromJSON AudioCodecSettings where
+  parseJSON =
+    Data.withObject
+      "AudioCodecSettings"
+      ( \x ->
+          AudioCodecSettings'
+            Prelude.<$> (x Data..:? "aacSettings")
+            Prelude.<*> (x Data..:? "ac3Settings")
+            Prelude.<*> (x Data..:? "aiffSettings")
+            Prelude.<*> (x Data..:? "codec")
+            Prelude.<*> (x Data..:? "eac3AtmosSettings")
+            Prelude.<*> (x Data..:? "eac3Settings")
+            Prelude.<*> (x Data..:? "mp2Settings")
+            Prelude.<*> (x Data..:? "mp3Settings")
+            Prelude.<*> (x Data..:? "opusSettings")
+            Prelude.<*> (x Data..:? "vorbisSettings")
+            Prelude.<*> (x Data..:? "wavSettings")
+      )
+
+instance Prelude.Hashable AudioCodecSettings where
+  hashWithSalt _salt AudioCodecSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` aacSettings
+      `Prelude.hashWithSalt` ac3Settings
+      `Prelude.hashWithSalt` aiffSettings
+      `Prelude.hashWithSalt` codec
+      `Prelude.hashWithSalt` eac3AtmosSettings
+      `Prelude.hashWithSalt` eac3Settings
+      `Prelude.hashWithSalt` mp2Settings
+      `Prelude.hashWithSalt` mp3Settings
+      `Prelude.hashWithSalt` opusSettings
+      `Prelude.hashWithSalt` vorbisSettings
+      `Prelude.hashWithSalt` wavSettings
+
+instance Prelude.NFData AudioCodecSettings where
+  rnf AudioCodecSettings' {..} =
+    Prelude.rnf aacSettings
+      `Prelude.seq` Prelude.rnf ac3Settings
+      `Prelude.seq` Prelude.rnf aiffSettings
+      `Prelude.seq` Prelude.rnf codec
+      `Prelude.seq` Prelude.rnf eac3AtmosSettings
+      `Prelude.seq` Prelude.rnf eac3Settings
+      `Prelude.seq` Prelude.rnf mp2Settings
+      `Prelude.seq` Prelude.rnf mp3Settings
+      `Prelude.seq` Prelude.rnf opusSettings
+      `Prelude.seq` Prelude.rnf vorbisSettings
+      `Prelude.seq` Prelude.rnf wavSettings
+
+instance Data.ToJSON AudioCodecSettings where
+  toJSON AudioCodecSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("aacSettings" Data..=) Prelude.<$> aacSettings,
+            ("ac3Settings" Data..=) Prelude.<$> ac3Settings,
+            ("aiffSettings" Data..=) Prelude.<$> aiffSettings,
+            ("codec" Data..=) Prelude.<$> codec,
+            ("eac3AtmosSettings" Data..=)
+              Prelude.<$> eac3AtmosSettings,
+            ("eac3Settings" Data..=) Prelude.<$> eac3Settings,
+            ("mp2Settings" Data..=) Prelude.<$> mp2Settings,
+            ("mp3Settings" Data..=) Prelude.<$> mp3Settings,
+            ("opusSettings" Data..=) Prelude.<$> opusSettings,
+            ("vorbisSettings" Data..=)
+              Prelude.<$> vorbisSettings,
+            ("wavSettings" Data..=) Prelude.<$> wavSettings
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AudioDefaultSelection.hs b/gen/Amazonka/MediaConvert/Types/AudioDefaultSelection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioDefaultSelection.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AudioDefaultSelection
+-- 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.AudioDefaultSelection
+  ( AudioDefaultSelection
+      ( ..,
+        AudioDefaultSelection_DEFAULT,
+        AudioDefaultSelection_NOT_DEFAULT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enable this setting on one audio selector to set it as the default for
+-- the job. The service uses this default for outputs where it can\'t find
+-- the specified input audio. If you don\'t set a default, those outputs
+-- have no audio.
+newtype AudioDefaultSelection = AudioDefaultSelection'
+  { fromAudioDefaultSelection ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AudioDefaultSelection_DEFAULT :: AudioDefaultSelection
+pattern AudioDefaultSelection_DEFAULT = AudioDefaultSelection' "DEFAULT"
+
+pattern AudioDefaultSelection_NOT_DEFAULT :: AudioDefaultSelection
+pattern AudioDefaultSelection_NOT_DEFAULT = AudioDefaultSelection' "NOT_DEFAULT"
+
+{-# COMPLETE
+  AudioDefaultSelection_DEFAULT,
+  AudioDefaultSelection_NOT_DEFAULT,
+  AudioDefaultSelection'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AudioDescription.hs b/gen/Amazonka/MediaConvert/Types/AudioDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioDescription.hs
@@ -0,0 +1,382 @@
+{-# 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.AudioDescription
+-- 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.AudioDescription 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.AudioChannelTaggingSettings
+import Amazonka.MediaConvert.Types.AudioCodecSettings
+import Amazonka.MediaConvert.Types.AudioLanguageCodeControl
+import Amazonka.MediaConvert.Types.AudioNormalizationSettings
+import Amazonka.MediaConvert.Types.AudioTypeControl
+import Amazonka.MediaConvert.Types.LanguageCode
+import Amazonka.MediaConvert.Types.RemixSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to one audio tab on the MediaConvert console. In your
+-- job JSON, an instance of AudioDescription is equivalent to one audio tab
+-- in the console. Usually, one audio tab corresponds to one output audio
+-- track. Depending on how you set up your input audio selectors and
+-- whether you use audio selector groups, one audio tab can correspond to a
+-- group of output audio tracks.
+--
+-- /See:/ 'newAudioDescription' smart constructor.
+data AudioDescription = AudioDescription'
+  { -- | When you mimic a multi-channel audio layout with multiple mono-channel
+    -- tracks, you can tag each channel layout manually. For example, you would
+    -- tag the tracks that contain your left, right, and center audio with Left
+    -- (L), Right (R), and Center (C), respectively. When you don\'t specify a
+    -- value, MediaConvert labels your track as Center (C) by default. To use
+    -- audio layout tagging, your output must be in a QuickTime (.mov)
+    -- container; your audio codec must be AAC, WAV, or AIFF; and you must set
+    -- up your audio track to have only one channel.
+    audioChannelTaggingSettings :: Prelude.Maybe AudioChannelTaggingSettings,
+    -- | Advanced audio normalization settings. Ignore these settings unless you
+    -- need to comply with a loudness standard.
+    audioNormalizationSettings :: Prelude.Maybe AudioNormalizationSettings,
+    -- | Specifies which audio data to use from each input. In the simplest case,
+    -- specify an \"Audio Selector\":#inputs-audio_selector by name based on
+    -- its order within each input. For example if you specify \"Audio Selector
+    -- 3\", then the third audio selector will be used from each input. If an
+    -- input does not have an \"Audio Selector 3\", then the audio selector
+    -- marked as \"default\" in that input will be used. If there is no audio
+    -- selector marked as \"default\", silence will be inserted for the
+    -- duration of that input. Alternatively, an \"Audio Selector
+    -- Group\":#inputs-audio_selector_group name may be specified, with similar
+    -- default\/silence behavior. If no audio_source_name is specified, then
+    -- \"Audio Selector 1\" will be chosen automatically.
+    audioSourceName :: Prelude.Maybe Prelude.Text,
+    -- | Applies only if Follow Input Audio Type is unchecked (false). A number
+    -- between 0 and 255. The following are defined in ISO-IEC 13818-1: 0 =
+    -- Undefined, 1 = Clean Effects, 2 = Hearing Impaired, 3 = Visually
+    -- Impaired Commentary, 4-255 = Reserved.
+    audioType :: Prelude.Maybe Prelude.Natural,
+    -- | When set to FOLLOW_INPUT, if the input contains an ISO 639 audio_type,
+    -- then that value is passed through to the output. If the input contains
+    -- no ISO 639 audio_type, the value in Audio Type is included in the
+    -- output. Otherwise the value in Audio Type is included in the output.
+    -- Note that this field and audioType are both ignored if
+    -- audioDescriptionBroadcasterMix is set to BROADCASTER_MIXED_AD.
+    audioTypeControl :: Prelude.Maybe AudioTypeControl,
+    -- | Settings related to audio encoding. The settings in this group vary
+    -- depending on the value that you choose for your audio codec.
+    codecSettings :: Prelude.Maybe AudioCodecSettings,
+    -- | Specify the language for this audio output track. The service puts this
+    -- language code into your output audio track when you set Language code
+    -- control (AudioLanguageCodeControl) to Use configured (USE_CONFIGURED).
+    -- The service also uses your specified custom language code when you set
+    -- Language code control (AudioLanguageCodeControl) to Follow input
+    -- (FOLLOW_INPUT), but your input file doesn\'t specify a language code.
+    -- For all outputs, you can use an ISO 639-2 or ISO 639-3 code. For
+    -- streaming outputs, you can also use any other code in the full RFC-5646
+    -- specification. Streaming outputs are those that are in one of the
+    -- following output groups: CMAF, DASH ISO, Apple HLS, or Microsoft Smooth
+    -- Streaming.
+    customLanguageCode :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the language of the audio output track. The ISO 639 language
+    -- specified in the \'Language Code\' drop down will be used when \'Follow
+    -- Input Language Code\' is not selected or when \'Follow Input Language
+    -- Code\' is selected but there is no ISO 639 language code specified by
+    -- the input.
+    languageCode :: Prelude.Maybe LanguageCode,
+    -- | Specify which source for language code takes precedence for this audio
+    -- track. When you choose Follow input (FOLLOW_INPUT), the service uses the
+    -- language code from the input track if it\'s present. If there\'s no
+    -- languge code on the input track, the service uses the code that you
+    -- specify in the setting Language code (languageCode or
+    -- customLanguageCode). When you choose Use configured (USE_CONFIGURED),
+    -- the service uses the language code that you specify.
+    languageCodeControl :: Prelude.Maybe AudioLanguageCodeControl,
+    -- | Advanced audio remixing settings.
+    remixSettings :: Prelude.Maybe RemixSettings,
+    -- | Specify a label for this output audio stream. For example, \"English\",
+    -- \"Director commentary\", or \"track_2\". For streaming outputs,
+    -- MediaConvert passes this information into destination manifests for
+    -- display on the end-viewer\'s player device. For outputs in other output
+    -- groups, the service ignores this setting.
+    streamName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AudioDescription' 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:
+--
+-- 'audioChannelTaggingSettings', 'audioDescription_audioChannelTaggingSettings' - When you mimic a multi-channel audio layout with multiple mono-channel
+-- tracks, you can tag each channel layout manually. For example, you would
+-- tag the tracks that contain your left, right, and center audio with Left
+-- (L), Right (R), and Center (C), respectively. When you don\'t specify a
+-- value, MediaConvert labels your track as Center (C) by default. To use
+-- audio layout tagging, your output must be in a QuickTime (.mov)
+-- container; your audio codec must be AAC, WAV, or AIFF; and you must set
+-- up your audio track to have only one channel.
+--
+-- 'audioNormalizationSettings', 'audioDescription_audioNormalizationSettings' - Advanced audio normalization settings. Ignore these settings unless you
+-- need to comply with a loudness standard.
+--
+-- 'audioSourceName', 'audioDescription_audioSourceName' - Specifies which audio data to use from each input. In the simplest case,
+-- specify an \"Audio Selector\":#inputs-audio_selector by name based on
+-- its order within each input. For example if you specify \"Audio Selector
+-- 3\", then the third audio selector will be used from each input. If an
+-- input does not have an \"Audio Selector 3\", then the audio selector
+-- marked as \"default\" in that input will be used. If there is no audio
+-- selector marked as \"default\", silence will be inserted for the
+-- duration of that input. Alternatively, an \"Audio Selector
+-- Group\":#inputs-audio_selector_group name may be specified, with similar
+-- default\/silence behavior. If no audio_source_name is specified, then
+-- \"Audio Selector 1\" will be chosen automatically.
+--
+-- 'audioType', 'audioDescription_audioType' - Applies only if Follow Input Audio Type is unchecked (false). A number
+-- between 0 and 255. The following are defined in ISO-IEC 13818-1: 0 =
+-- Undefined, 1 = Clean Effects, 2 = Hearing Impaired, 3 = Visually
+-- Impaired Commentary, 4-255 = Reserved.
+--
+-- 'audioTypeControl', 'audioDescription_audioTypeControl' - When set to FOLLOW_INPUT, if the input contains an ISO 639 audio_type,
+-- then that value is passed through to the output. If the input contains
+-- no ISO 639 audio_type, the value in Audio Type is included in the
+-- output. Otherwise the value in Audio Type is included in the output.
+-- Note that this field and audioType are both ignored if
+-- audioDescriptionBroadcasterMix is set to BROADCASTER_MIXED_AD.
+--
+-- 'codecSettings', 'audioDescription_codecSettings' - Settings related to audio encoding. The settings in this group vary
+-- depending on the value that you choose for your audio codec.
+--
+-- 'customLanguageCode', 'audioDescription_customLanguageCode' - Specify the language for this audio output track. The service puts this
+-- language code into your output audio track when you set Language code
+-- control (AudioLanguageCodeControl) to Use configured (USE_CONFIGURED).
+-- The service also uses your specified custom language code when you set
+-- Language code control (AudioLanguageCodeControl) to Follow input
+-- (FOLLOW_INPUT), but your input file doesn\'t specify a language code.
+-- For all outputs, you can use an ISO 639-2 or ISO 639-3 code. For
+-- streaming outputs, you can also use any other code in the full RFC-5646
+-- specification. Streaming outputs are those that are in one of the
+-- following output groups: CMAF, DASH ISO, Apple HLS, or Microsoft Smooth
+-- Streaming.
+--
+-- 'languageCode', 'audioDescription_languageCode' - Indicates the language of the audio output track. The ISO 639 language
+-- specified in the \'Language Code\' drop down will be used when \'Follow
+-- Input Language Code\' is not selected or when \'Follow Input Language
+-- Code\' is selected but there is no ISO 639 language code specified by
+-- the input.
+--
+-- 'languageCodeControl', 'audioDescription_languageCodeControl' - Specify which source for language code takes precedence for this audio
+-- track. When you choose Follow input (FOLLOW_INPUT), the service uses the
+-- language code from the input track if it\'s present. If there\'s no
+-- languge code on the input track, the service uses the code that you
+-- specify in the setting Language code (languageCode or
+-- customLanguageCode). When you choose Use configured (USE_CONFIGURED),
+-- the service uses the language code that you specify.
+--
+-- 'remixSettings', 'audioDescription_remixSettings' - Advanced audio remixing settings.
+--
+-- 'streamName', 'audioDescription_streamName' - Specify a label for this output audio stream. For example, \"English\",
+-- \"Director commentary\", or \"track_2\". For streaming outputs,
+-- MediaConvert passes this information into destination manifests for
+-- display on the end-viewer\'s player device. For outputs in other output
+-- groups, the service ignores this setting.
+newAudioDescription ::
+  AudioDescription
+newAudioDescription =
+  AudioDescription'
+    { audioChannelTaggingSettings =
+        Prelude.Nothing,
+      audioNormalizationSettings = Prelude.Nothing,
+      audioSourceName = Prelude.Nothing,
+      audioType = Prelude.Nothing,
+      audioTypeControl = Prelude.Nothing,
+      codecSettings = Prelude.Nothing,
+      customLanguageCode = Prelude.Nothing,
+      languageCode = Prelude.Nothing,
+      languageCodeControl = Prelude.Nothing,
+      remixSettings = Prelude.Nothing,
+      streamName = Prelude.Nothing
+    }
+
+-- | When you mimic a multi-channel audio layout with multiple mono-channel
+-- tracks, you can tag each channel layout manually. For example, you would
+-- tag the tracks that contain your left, right, and center audio with Left
+-- (L), Right (R), and Center (C), respectively. When you don\'t specify a
+-- value, MediaConvert labels your track as Center (C) by default. To use
+-- audio layout tagging, your output must be in a QuickTime (.mov)
+-- container; your audio codec must be AAC, WAV, or AIFF; and you must set
+-- up your audio track to have only one channel.
+audioDescription_audioChannelTaggingSettings :: Lens.Lens' AudioDescription (Prelude.Maybe AudioChannelTaggingSettings)
+audioDescription_audioChannelTaggingSettings = Lens.lens (\AudioDescription' {audioChannelTaggingSettings} -> audioChannelTaggingSettings) (\s@AudioDescription' {} a -> s {audioChannelTaggingSettings = a} :: AudioDescription)
+
+-- | Advanced audio normalization settings. Ignore these settings unless you
+-- need to comply with a loudness standard.
+audioDescription_audioNormalizationSettings :: Lens.Lens' AudioDescription (Prelude.Maybe AudioNormalizationSettings)
+audioDescription_audioNormalizationSettings = Lens.lens (\AudioDescription' {audioNormalizationSettings} -> audioNormalizationSettings) (\s@AudioDescription' {} a -> s {audioNormalizationSettings = a} :: AudioDescription)
+
+-- | Specifies which audio data to use from each input. In the simplest case,
+-- specify an \"Audio Selector\":#inputs-audio_selector by name based on
+-- its order within each input. For example if you specify \"Audio Selector
+-- 3\", then the third audio selector will be used from each input. If an
+-- input does not have an \"Audio Selector 3\", then the audio selector
+-- marked as \"default\" in that input will be used. If there is no audio
+-- selector marked as \"default\", silence will be inserted for the
+-- duration of that input. Alternatively, an \"Audio Selector
+-- Group\":#inputs-audio_selector_group name may be specified, with similar
+-- default\/silence behavior. If no audio_source_name is specified, then
+-- \"Audio Selector 1\" will be chosen automatically.
+audioDescription_audioSourceName :: Lens.Lens' AudioDescription (Prelude.Maybe Prelude.Text)
+audioDescription_audioSourceName = Lens.lens (\AudioDescription' {audioSourceName} -> audioSourceName) (\s@AudioDescription' {} a -> s {audioSourceName = a} :: AudioDescription)
+
+-- | Applies only if Follow Input Audio Type is unchecked (false). A number
+-- between 0 and 255. The following are defined in ISO-IEC 13818-1: 0 =
+-- Undefined, 1 = Clean Effects, 2 = Hearing Impaired, 3 = Visually
+-- Impaired Commentary, 4-255 = Reserved.
+audioDescription_audioType :: Lens.Lens' AudioDescription (Prelude.Maybe Prelude.Natural)
+audioDescription_audioType = Lens.lens (\AudioDescription' {audioType} -> audioType) (\s@AudioDescription' {} a -> s {audioType = a} :: AudioDescription)
+
+-- | When set to FOLLOW_INPUT, if the input contains an ISO 639 audio_type,
+-- then that value is passed through to the output. If the input contains
+-- no ISO 639 audio_type, the value in Audio Type is included in the
+-- output. Otherwise the value in Audio Type is included in the output.
+-- Note that this field and audioType are both ignored if
+-- audioDescriptionBroadcasterMix is set to BROADCASTER_MIXED_AD.
+audioDescription_audioTypeControl :: Lens.Lens' AudioDescription (Prelude.Maybe AudioTypeControl)
+audioDescription_audioTypeControl = Lens.lens (\AudioDescription' {audioTypeControl} -> audioTypeControl) (\s@AudioDescription' {} a -> s {audioTypeControl = a} :: AudioDescription)
+
+-- | Settings related to audio encoding. The settings in this group vary
+-- depending on the value that you choose for your audio codec.
+audioDescription_codecSettings :: Lens.Lens' AudioDescription (Prelude.Maybe AudioCodecSettings)
+audioDescription_codecSettings = Lens.lens (\AudioDescription' {codecSettings} -> codecSettings) (\s@AudioDescription' {} a -> s {codecSettings = a} :: AudioDescription)
+
+-- | Specify the language for this audio output track. The service puts this
+-- language code into your output audio track when you set Language code
+-- control (AudioLanguageCodeControl) to Use configured (USE_CONFIGURED).
+-- The service also uses your specified custom language code when you set
+-- Language code control (AudioLanguageCodeControl) to Follow input
+-- (FOLLOW_INPUT), but your input file doesn\'t specify a language code.
+-- For all outputs, you can use an ISO 639-2 or ISO 639-3 code. For
+-- streaming outputs, you can also use any other code in the full RFC-5646
+-- specification. Streaming outputs are those that are in one of the
+-- following output groups: CMAF, DASH ISO, Apple HLS, or Microsoft Smooth
+-- Streaming.
+audioDescription_customLanguageCode :: Lens.Lens' AudioDescription (Prelude.Maybe Prelude.Text)
+audioDescription_customLanguageCode = Lens.lens (\AudioDescription' {customLanguageCode} -> customLanguageCode) (\s@AudioDescription' {} a -> s {customLanguageCode = a} :: AudioDescription)
+
+-- | Indicates the language of the audio output track. The ISO 639 language
+-- specified in the \'Language Code\' drop down will be used when \'Follow
+-- Input Language Code\' is not selected or when \'Follow Input Language
+-- Code\' is selected but there is no ISO 639 language code specified by
+-- the input.
+audioDescription_languageCode :: Lens.Lens' AudioDescription (Prelude.Maybe LanguageCode)
+audioDescription_languageCode = Lens.lens (\AudioDescription' {languageCode} -> languageCode) (\s@AudioDescription' {} a -> s {languageCode = a} :: AudioDescription)
+
+-- | Specify which source for language code takes precedence for this audio
+-- track. When you choose Follow input (FOLLOW_INPUT), the service uses the
+-- language code from the input track if it\'s present. If there\'s no
+-- languge code on the input track, the service uses the code that you
+-- specify in the setting Language code (languageCode or
+-- customLanguageCode). When you choose Use configured (USE_CONFIGURED),
+-- the service uses the language code that you specify.
+audioDescription_languageCodeControl :: Lens.Lens' AudioDescription (Prelude.Maybe AudioLanguageCodeControl)
+audioDescription_languageCodeControl = Lens.lens (\AudioDescription' {languageCodeControl} -> languageCodeControl) (\s@AudioDescription' {} a -> s {languageCodeControl = a} :: AudioDescription)
+
+-- | Advanced audio remixing settings.
+audioDescription_remixSettings :: Lens.Lens' AudioDescription (Prelude.Maybe RemixSettings)
+audioDescription_remixSettings = Lens.lens (\AudioDescription' {remixSettings} -> remixSettings) (\s@AudioDescription' {} a -> s {remixSettings = a} :: AudioDescription)
+
+-- | Specify a label for this output audio stream. For example, \"English\",
+-- \"Director commentary\", or \"track_2\". For streaming outputs,
+-- MediaConvert passes this information into destination manifests for
+-- display on the end-viewer\'s player device. For outputs in other output
+-- groups, the service ignores this setting.
+audioDescription_streamName :: Lens.Lens' AudioDescription (Prelude.Maybe Prelude.Text)
+audioDescription_streamName = Lens.lens (\AudioDescription' {streamName} -> streamName) (\s@AudioDescription' {} a -> s {streamName = a} :: AudioDescription)
+
+instance Data.FromJSON AudioDescription where
+  parseJSON =
+    Data.withObject
+      "AudioDescription"
+      ( \x ->
+          AudioDescription'
+            Prelude.<$> (x Data..:? "audioChannelTaggingSettings")
+            Prelude.<*> (x Data..:? "audioNormalizationSettings")
+            Prelude.<*> (x Data..:? "audioSourceName")
+            Prelude.<*> (x Data..:? "audioType")
+            Prelude.<*> (x Data..:? "audioTypeControl")
+            Prelude.<*> (x Data..:? "codecSettings")
+            Prelude.<*> (x Data..:? "customLanguageCode")
+            Prelude.<*> (x Data..:? "languageCode")
+            Prelude.<*> (x Data..:? "languageCodeControl")
+            Prelude.<*> (x Data..:? "remixSettings")
+            Prelude.<*> (x Data..:? "streamName")
+      )
+
+instance Prelude.Hashable AudioDescription where
+  hashWithSalt _salt AudioDescription' {..} =
+    _salt
+      `Prelude.hashWithSalt` audioChannelTaggingSettings
+      `Prelude.hashWithSalt` audioNormalizationSettings
+      `Prelude.hashWithSalt` audioSourceName
+      `Prelude.hashWithSalt` audioType
+      `Prelude.hashWithSalt` audioTypeControl
+      `Prelude.hashWithSalt` codecSettings
+      `Prelude.hashWithSalt` customLanguageCode
+      `Prelude.hashWithSalt` languageCode
+      `Prelude.hashWithSalt` languageCodeControl
+      `Prelude.hashWithSalt` remixSettings
+      `Prelude.hashWithSalt` streamName
+
+instance Prelude.NFData AudioDescription where
+  rnf AudioDescription' {..} =
+    Prelude.rnf audioChannelTaggingSettings
+      `Prelude.seq` Prelude.rnf audioNormalizationSettings
+      `Prelude.seq` Prelude.rnf audioSourceName
+      `Prelude.seq` Prelude.rnf audioType
+      `Prelude.seq` Prelude.rnf audioTypeControl
+      `Prelude.seq` Prelude.rnf codecSettings
+      `Prelude.seq` Prelude.rnf customLanguageCode
+      `Prelude.seq` Prelude.rnf languageCode
+      `Prelude.seq` Prelude.rnf languageCodeControl
+      `Prelude.seq` Prelude.rnf remixSettings
+      `Prelude.seq` Prelude.rnf streamName
+
+instance Data.ToJSON AudioDescription where
+  toJSON AudioDescription' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("audioChannelTaggingSettings" Data..=)
+              Prelude.<$> audioChannelTaggingSettings,
+            ("audioNormalizationSettings" Data..=)
+              Prelude.<$> audioNormalizationSettings,
+            ("audioSourceName" Data..=)
+              Prelude.<$> audioSourceName,
+            ("audioType" Data..=) Prelude.<$> audioType,
+            ("audioTypeControl" Data..=)
+              Prelude.<$> audioTypeControl,
+            ("codecSettings" Data..=) Prelude.<$> codecSettings,
+            ("customLanguageCode" Data..=)
+              Prelude.<$> customLanguageCode,
+            ("languageCode" Data..=) Prelude.<$> languageCode,
+            ("languageCodeControl" Data..=)
+              Prelude.<$> languageCodeControl,
+            ("remixSettings" Data..=) Prelude.<$> remixSettings,
+            ("streamName" Data..=) Prelude.<$> streamName
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AudioDurationCorrection.hs b/gen/Amazonka/MediaConvert/Types/AudioDurationCorrection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioDurationCorrection.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AudioDurationCorrection
+-- 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.AudioDurationCorrection
+  ( AudioDurationCorrection
+      ( ..,
+        AudioDurationCorrection_AUTO,
+        AudioDurationCorrection_DISABLED,
+        AudioDurationCorrection_FRAME,
+        AudioDurationCorrection_TRACK
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Apply audio timing corrections to help synchronize audio and video in
+-- your output. To apply timing corrections, your input must meet the
+-- following requirements: * Container: MP4, or MOV, with an accurate
+-- time-to-sample (STTS) table. * Audio track: AAC. Choose from the
+-- following audio timing correction settings: * Disabled (Default): Apply
+-- no correction. * Auto: Recommended for most inputs. MediaConvert
+-- analyzes the audio timing in your input and determines which correction
+-- setting to use, if needed. * Track: Adjust the duration of each audio
+-- frame by a constant amount to align the audio track length with STTS
+-- duration. Track-level correction does not affect pitch, and is
+-- recommended for tonal audio content such as music. * Frame: Adjust the
+-- duration of each audio frame by a variable amount to align audio frames
+-- with STTS timestamps. No corrections are made to already-aligned frames.
+-- Frame-level correction may affect the pitch of corrected frames, and is
+-- recommended for atonal audio content such as speech or percussion.
+newtype AudioDurationCorrection = AudioDurationCorrection'
+  { fromAudioDurationCorrection ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AudioDurationCorrection_AUTO :: AudioDurationCorrection
+pattern AudioDurationCorrection_AUTO = AudioDurationCorrection' "AUTO"
+
+pattern AudioDurationCorrection_DISABLED :: AudioDurationCorrection
+pattern AudioDurationCorrection_DISABLED = AudioDurationCorrection' "DISABLED"
+
+pattern AudioDurationCorrection_FRAME :: AudioDurationCorrection
+pattern AudioDurationCorrection_FRAME = AudioDurationCorrection' "FRAME"
+
+pattern AudioDurationCorrection_TRACK :: AudioDurationCorrection
+pattern AudioDurationCorrection_TRACK = AudioDurationCorrection' "TRACK"
+
+{-# COMPLETE
+  AudioDurationCorrection_AUTO,
+  AudioDurationCorrection_DISABLED,
+  AudioDurationCorrection_FRAME,
+  AudioDurationCorrection_TRACK,
+  AudioDurationCorrection'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AudioLanguageCodeControl.hs b/gen/Amazonka/MediaConvert/Types/AudioLanguageCodeControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioLanguageCodeControl.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AudioLanguageCodeControl
+-- 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.AudioLanguageCodeControl
+  ( AudioLanguageCodeControl
+      ( ..,
+        AudioLanguageCodeControl_FOLLOW_INPUT,
+        AudioLanguageCodeControl_USE_CONFIGURED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify which source for language code takes precedence for this audio
+-- track. When you choose Follow input (FOLLOW_INPUT), the service uses the
+-- language code from the input track if it\'s present. If there\'s no
+-- languge code on the input track, the service uses the code that you
+-- specify in the setting Language code (languageCode or
+-- customLanguageCode). When you choose Use configured (USE_CONFIGURED),
+-- the service uses the language code that you specify.
+newtype AudioLanguageCodeControl = AudioLanguageCodeControl'
+  { fromAudioLanguageCodeControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AudioLanguageCodeControl_FOLLOW_INPUT :: AudioLanguageCodeControl
+pattern AudioLanguageCodeControl_FOLLOW_INPUT = AudioLanguageCodeControl' "FOLLOW_INPUT"
+
+pattern AudioLanguageCodeControl_USE_CONFIGURED :: AudioLanguageCodeControl
+pattern AudioLanguageCodeControl_USE_CONFIGURED = AudioLanguageCodeControl' "USE_CONFIGURED"
+
+{-# COMPLETE
+  AudioLanguageCodeControl_FOLLOW_INPUT,
+  AudioLanguageCodeControl_USE_CONFIGURED,
+  AudioLanguageCodeControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AudioNormalizationAlgorithm.hs b/gen/Amazonka/MediaConvert/Types/AudioNormalizationAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioNormalizationAlgorithm.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AudioNormalizationAlgorithm
+-- 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.AudioNormalizationAlgorithm
+  ( AudioNormalizationAlgorithm
+      ( ..,
+        AudioNormalizationAlgorithm_ITU_BS_1770_1,
+        AudioNormalizationAlgorithm_ITU_BS_1770_2,
+        AudioNormalizationAlgorithm_ITU_BS_1770_3,
+        AudioNormalizationAlgorithm_ITU_BS_1770_4
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose one of the following audio normalization algorithms: ITU-R
+-- BS.1770-1: Ungated loudness. A measurement of ungated average loudness
+-- for an entire piece of content, suitable for measurement of short-form
+-- content under ATSC recommendation A\/85. Supports up to 5.1 audio
+-- channels. ITU-R BS.1770-2: Gated loudness. A measurement of gated
+-- average loudness compliant with the requirements of EBU-R128. Supports
+-- up to 5.1 audio channels. ITU-R BS.1770-3: Modified peak. The same
+-- loudness measurement algorithm as 1770-2, with an updated true peak
+-- measurement. ITU-R BS.1770-4: Higher channel count. Allows for more
+-- audio channels than the other algorithms, including configurations such
+-- as 7.1.
+newtype AudioNormalizationAlgorithm = AudioNormalizationAlgorithm'
+  { fromAudioNormalizationAlgorithm ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AudioNormalizationAlgorithm_ITU_BS_1770_1 :: AudioNormalizationAlgorithm
+pattern AudioNormalizationAlgorithm_ITU_BS_1770_1 = AudioNormalizationAlgorithm' "ITU_BS_1770_1"
+
+pattern AudioNormalizationAlgorithm_ITU_BS_1770_2 :: AudioNormalizationAlgorithm
+pattern AudioNormalizationAlgorithm_ITU_BS_1770_2 = AudioNormalizationAlgorithm' "ITU_BS_1770_2"
+
+pattern AudioNormalizationAlgorithm_ITU_BS_1770_3 :: AudioNormalizationAlgorithm
+pattern AudioNormalizationAlgorithm_ITU_BS_1770_3 = AudioNormalizationAlgorithm' "ITU_BS_1770_3"
+
+pattern AudioNormalizationAlgorithm_ITU_BS_1770_4 :: AudioNormalizationAlgorithm
+pattern AudioNormalizationAlgorithm_ITU_BS_1770_4 = AudioNormalizationAlgorithm' "ITU_BS_1770_4"
+
+{-# COMPLETE
+  AudioNormalizationAlgorithm_ITU_BS_1770_1,
+  AudioNormalizationAlgorithm_ITU_BS_1770_2,
+  AudioNormalizationAlgorithm_ITU_BS_1770_3,
+  AudioNormalizationAlgorithm_ITU_BS_1770_4,
+  AudioNormalizationAlgorithm'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AudioNormalizationAlgorithmControl.hs b/gen/Amazonka/MediaConvert/Types/AudioNormalizationAlgorithmControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioNormalizationAlgorithmControl.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AudioNormalizationAlgorithmControl
+-- 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.AudioNormalizationAlgorithmControl
+  ( AudioNormalizationAlgorithmControl
+      ( ..,
+        AudioNormalizationAlgorithmControl_CORRECT_AUDIO,
+        AudioNormalizationAlgorithmControl_MEASURE_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When enabled the output audio is corrected using the chosen algorithm.
+-- If disabled, the audio will be measured but not adjusted.
+newtype AudioNormalizationAlgorithmControl = AudioNormalizationAlgorithmControl'
+  { fromAudioNormalizationAlgorithmControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AudioNormalizationAlgorithmControl_CORRECT_AUDIO :: AudioNormalizationAlgorithmControl
+pattern AudioNormalizationAlgorithmControl_CORRECT_AUDIO = AudioNormalizationAlgorithmControl' "CORRECT_AUDIO"
+
+pattern AudioNormalizationAlgorithmControl_MEASURE_ONLY :: AudioNormalizationAlgorithmControl
+pattern AudioNormalizationAlgorithmControl_MEASURE_ONLY = AudioNormalizationAlgorithmControl' "MEASURE_ONLY"
+
+{-# COMPLETE
+  AudioNormalizationAlgorithmControl_CORRECT_AUDIO,
+  AudioNormalizationAlgorithmControl_MEASURE_ONLY,
+  AudioNormalizationAlgorithmControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AudioNormalizationLoudnessLogging.hs b/gen/Amazonka/MediaConvert/Types/AudioNormalizationLoudnessLogging.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioNormalizationLoudnessLogging.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AudioNormalizationLoudnessLogging
+-- 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.AudioNormalizationLoudnessLogging
+  ( AudioNormalizationLoudnessLogging
+      ( ..,
+        AudioNormalizationLoudnessLogging_DONT_LOG,
+        AudioNormalizationLoudnessLogging_LOG
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If set to LOG, log each output\'s audio track loudness to a CSV file.
+newtype AudioNormalizationLoudnessLogging = AudioNormalizationLoudnessLogging'
+  { fromAudioNormalizationLoudnessLogging ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AudioNormalizationLoudnessLogging_DONT_LOG :: AudioNormalizationLoudnessLogging
+pattern AudioNormalizationLoudnessLogging_DONT_LOG = AudioNormalizationLoudnessLogging' "DONT_LOG"
+
+pattern AudioNormalizationLoudnessLogging_LOG :: AudioNormalizationLoudnessLogging
+pattern AudioNormalizationLoudnessLogging_LOG = AudioNormalizationLoudnessLogging' "LOG"
+
+{-# COMPLETE
+  AudioNormalizationLoudnessLogging_DONT_LOG,
+  AudioNormalizationLoudnessLogging_LOG,
+  AudioNormalizationLoudnessLogging'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AudioNormalizationPeakCalculation.hs b/gen/Amazonka/MediaConvert/Types/AudioNormalizationPeakCalculation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioNormalizationPeakCalculation.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AudioNormalizationPeakCalculation
+-- 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.AudioNormalizationPeakCalculation
+  ( AudioNormalizationPeakCalculation
+      ( ..,
+        AudioNormalizationPeakCalculation_NONE,
+        AudioNormalizationPeakCalculation_TRUE_PEAK
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If set to TRUE_PEAK, calculate and log the TruePeak for each output\'s
+-- audio track loudness.
+newtype AudioNormalizationPeakCalculation = AudioNormalizationPeakCalculation'
+  { fromAudioNormalizationPeakCalculation ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AudioNormalizationPeakCalculation_NONE :: AudioNormalizationPeakCalculation
+pattern AudioNormalizationPeakCalculation_NONE = AudioNormalizationPeakCalculation' "NONE"
+
+pattern AudioNormalizationPeakCalculation_TRUE_PEAK :: AudioNormalizationPeakCalculation
+pattern AudioNormalizationPeakCalculation_TRUE_PEAK = AudioNormalizationPeakCalculation' "TRUE_PEAK"
+
+{-# COMPLETE
+  AudioNormalizationPeakCalculation_NONE,
+  AudioNormalizationPeakCalculation_TRUE_PEAK,
+  AudioNormalizationPeakCalculation'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AudioNormalizationSettings.hs b/gen/Amazonka/MediaConvert/Types/AudioNormalizationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioNormalizationSettings.hs
@@ -0,0 +1,209 @@
+{-# 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.AudioNormalizationSettings
+-- 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.AudioNormalizationSettings 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.AudioNormalizationAlgorithm
+import Amazonka.MediaConvert.Types.AudioNormalizationAlgorithmControl
+import Amazonka.MediaConvert.Types.AudioNormalizationLoudnessLogging
+import Amazonka.MediaConvert.Types.AudioNormalizationPeakCalculation
+import qualified Amazonka.Prelude as Prelude
+
+-- | Advanced audio normalization settings. Ignore these settings unless you
+-- need to comply with a loudness standard.
+--
+-- /See:/ 'newAudioNormalizationSettings' smart constructor.
+data AudioNormalizationSettings = AudioNormalizationSettings'
+  { -- | Choose one of the following audio normalization algorithms: ITU-R
+    -- BS.1770-1: Ungated loudness. A measurement of ungated average loudness
+    -- for an entire piece of content, suitable for measurement of short-form
+    -- content under ATSC recommendation A\/85. Supports up to 5.1 audio
+    -- channels. ITU-R BS.1770-2: Gated loudness. A measurement of gated
+    -- average loudness compliant with the requirements of EBU-R128. Supports
+    -- up to 5.1 audio channels. ITU-R BS.1770-3: Modified peak. The same
+    -- loudness measurement algorithm as 1770-2, with an updated true peak
+    -- measurement. ITU-R BS.1770-4: Higher channel count. Allows for more
+    -- audio channels than the other algorithms, including configurations such
+    -- as 7.1.
+    algorithm :: Prelude.Maybe AudioNormalizationAlgorithm,
+    -- | When enabled the output audio is corrected using the chosen algorithm.
+    -- If disabled, the audio will be measured but not adjusted.
+    algorithmControl :: Prelude.Maybe AudioNormalizationAlgorithmControl,
+    -- | Content measuring above this level will be corrected to the target
+    -- level. Content measuring below this level will not be corrected.
+    correctionGateLevel :: Prelude.Maybe Prelude.Int,
+    -- | If set to LOG, log each output\'s audio track loudness to a CSV file.
+    loudnessLogging :: Prelude.Maybe AudioNormalizationLoudnessLogging,
+    -- | If set to TRUE_PEAK, calculate and log the TruePeak for each output\'s
+    -- audio track loudness.
+    peakCalculation :: Prelude.Maybe AudioNormalizationPeakCalculation,
+    -- | When you use Audio normalization (AudioNormalizationSettings),
+    -- optionally use this setting to specify a target loudness. If you don\'t
+    -- specify a value here, the encoder chooses a value for you, based on the
+    -- algorithm that you choose for Algorithm (algorithm). If you choose
+    -- algorithm 1770-1, the encoder will choose -24 LKFS; otherwise, the
+    -- encoder will choose -23 LKFS.
+    targetLkfs :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AudioNormalizationSettings' 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:
+--
+-- 'algorithm', 'audioNormalizationSettings_algorithm' - Choose one of the following audio normalization algorithms: ITU-R
+-- BS.1770-1: Ungated loudness. A measurement of ungated average loudness
+-- for an entire piece of content, suitable for measurement of short-form
+-- content under ATSC recommendation A\/85. Supports up to 5.1 audio
+-- channels. ITU-R BS.1770-2: Gated loudness. A measurement of gated
+-- average loudness compliant with the requirements of EBU-R128. Supports
+-- up to 5.1 audio channels. ITU-R BS.1770-3: Modified peak. The same
+-- loudness measurement algorithm as 1770-2, with an updated true peak
+-- measurement. ITU-R BS.1770-4: Higher channel count. Allows for more
+-- audio channels than the other algorithms, including configurations such
+-- as 7.1.
+--
+-- 'algorithmControl', 'audioNormalizationSettings_algorithmControl' - When enabled the output audio is corrected using the chosen algorithm.
+-- If disabled, the audio will be measured but not adjusted.
+--
+-- 'correctionGateLevel', 'audioNormalizationSettings_correctionGateLevel' - Content measuring above this level will be corrected to the target
+-- level. Content measuring below this level will not be corrected.
+--
+-- 'loudnessLogging', 'audioNormalizationSettings_loudnessLogging' - If set to LOG, log each output\'s audio track loudness to a CSV file.
+--
+-- 'peakCalculation', 'audioNormalizationSettings_peakCalculation' - If set to TRUE_PEAK, calculate and log the TruePeak for each output\'s
+-- audio track loudness.
+--
+-- 'targetLkfs', 'audioNormalizationSettings_targetLkfs' - When you use Audio normalization (AudioNormalizationSettings),
+-- optionally use this setting to specify a target loudness. If you don\'t
+-- specify a value here, the encoder chooses a value for you, based on the
+-- algorithm that you choose for Algorithm (algorithm). If you choose
+-- algorithm 1770-1, the encoder will choose -24 LKFS; otherwise, the
+-- encoder will choose -23 LKFS.
+newAudioNormalizationSettings ::
+  AudioNormalizationSettings
+newAudioNormalizationSettings =
+  AudioNormalizationSettings'
+    { algorithm =
+        Prelude.Nothing,
+      algorithmControl = Prelude.Nothing,
+      correctionGateLevel = Prelude.Nothing,
+      loudnessLogging = Prelude.Nothing,
+      peakCalculation = Prelude.Nothing,
+      targetLkfs = Prelude.Nothing
+    }
+
+-- | Choose one of the following audio normalization algorithms: ITU-R
+-- BS.1770-1: Ungated loudness. A measurement of ungated average loudness
+-- for an entire piece of content, suitable for measurement of short-form
+-- content under ATSC recommendation A\/85. Supports up to 5.1 audio
+-- channels. ITU-R BS.1770-2: Gated loudness. A measurement of gated
+-- average loudness compliant with the requirements of EBU-R128. Supports
+-- up to 5.1 audio channels. ITU-R BS.1770-3: Modified peak. The same
+-- loudness measurement algorithm as 1770-2, with an updated true peak
+-- measurement. ITU-R BS.1770-4: Higher channel count. Allows for more
+-- audio channels than the other algorithms, including configurations such
+-- as 7.1.
+audioNormalizationSettings_algorithm :: Lens.Lens' AudioNormalizationSettings (Prelude.Maybe AudioNormalizationAlgorithm)
+audioNormalizationSettings_algorithm = Lens.lens (\AudioNormalizationSettings' {algorithm} -> algorithm) (\s@AudioNormalizationSettings' {} a -> s {algorithm = a} :: AudioNormalizationSettings)
+
+-- | When enabled the output audio is corrected using the chosen algorithm.
+-- If disabled, the audio will be measured but not adjusted.
+audioNormalizationSettings_algorithmControl :: Lens.Lens' AudioNormalizationSettings (Prelude.Maybe AudioNormalizationAlgorithmControl)
+audioNormalizationSettings_algorithmControl = Lens.lens (\AudioNormalizationSettings' {algorithmControl} -> algorithmControl) (\s@AudioNormalizationSettings' {} a -> s {algorithmControl = a} :: AudioNormalizationSettings)
+
+-- | Content measuring above this level will be corrected to the target
+-- level. Content measuring below this level will not be corrected.
+audioNormalizationSettings_correctionGateLevel :: Lens.Lens' AudioNormalizationSettings (Prelude.Maybe Prelude.Int)
+audioNormalizationSettings_correctionGateLevel = Lens.lens (\AudioNormalizationSettings' {correctionGateLevel} -> correctionGateLevel) (\s@AudioNormalizationSettings' {} a -> s {correctionGateLevel = a} :: AudioNormalizationSettings)
+
+-- | If set to LOG, log each output\'s audio track loudness to a CSV file.
+audioNormalizationSettings_loudnessLogging :: Lens.Lens' AudioNormalizationSettings (Prelude.Maybe AudioNormalizationLoudnessLogging)
+audioNormalizationSettings_loudnessLogging = Lens.lens (\AudioNormalizationSettings' {loudnessLogging} -> loudnessLogging) (\s@AudioNormalizationSettings' {} a -> s {loudnessLogging = a} :: AudioNormalizationSettings)
+
+-- | If set to TRUE_PEAK, calculate and log the TruePeak for each output\'s
+-- audio track loudness.
+audioNormalizationSettings_peakCalculation :: Lens.Lens' AudioNormalizationSettings (Prelude.Maybe AudioNormalizationPeakCalculation)
+audioNormalizationSettings_peakCalculation = Lens.lens (\AudioNormalizationSettings' {peakCalculation} -> peakCalculation) (\s@AudioNormalizationSettings' {} a -> s {peakCalculation = a} :: AudioNormalizationSettings)
+
+-- | When you use Audio normalization (AudioNormalizationSettings),
+-- optionally use this setting to specify a target loudness. If you don\'t
+-- specify a value here, the encoder chooses a value for you, based on the
+-- algorithm that you choose for Algorithm (algorithm). If you choose
+-- algorithm 1770-1, the encoder will choose -24 LKFS; otherwise, the
+-- encoder will choose -23 LKFS.
+audioNormalizationSettings_targetLkfs :: Lens.Lens' AudioNormalizationSettings (Prelude.Maybe Prelude.Double)
+audioNormalizationSettings_targetLkfs = Lens.lens (\AudioNormalizationSettings' {targetLkfs} -> targetLkfs) (\s@AudioNormalizationSettings' {} a -> s {targetLkfs = a} :: AudioNormalizationSettings)
+
+instance Data.FromJSON AudioNormalizationSettings where
+  parseJSON =
+    Data.withObject
+      "AudioNormalizationSettings"
+      ( \x ->
+          AudioNormalizationSettings'
+            Prelude.<$> (x Data..:? "algorithm")
+            Prelude.<*> (x Data..:? "algorithmControl")
+            Prelude.<*> (x Data..:? "correctionGateLevel")
+            Prelude.<*> (x Data..:? "loudnessLogging")
+            Prelude.<*> (x Data..:? "peakCalculation")
+            Prelude.<*> (x Data..:? "targetLkfs")
+      )
+
+instance Prelude.Hashable AudioNormalizationSettings where
+  hashWithSalt _salt AudioNormalizationSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` algorithm
+      `Prelude.hashWithSalt` algorithmControl
+      `Prelude.hashWithSalt` correctionGateLevel
+      `Prelude.hashWithSalt` loudnessLogging
+      `Prelude.hashWithSalt` peakCalculation
+      `Prelude.hashWithSalt` targetLkfs
+
+instance Prelude.NFData AudioNormalizationSettings where
+  rnf AudioNormalizationSettings' {..} =
+    Prelude.rnf algorithm
+      `Prelude.seq` Prelude.rnf algorithmControl
+      `Prelude.seq` Prelude.rnf correctionGateLevel
+      `Prelude.seq` Prelude.rnf loudnessLogging
+      `Prelude.seq` Prelude.rnf peakCalculation
+      `Prelude.seq` Prelude.rnf targetLkfs
+
+instance Data.ToJSON AudioNormalizationSettings where
+  toJSON AudioNormalizationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("algorithm" Data..=) Prelude.<$> algorithm,
+            ("algorithmControl" Data..=)
+              Prelude.<$> algorithmControl,
+            ("correctionGateLevel" Data..=)
+              Prelude.<$> correctionGateLevel,
+            ("loudnessLogging" Data..=)
+              Prelude.<$> loudnessLogging,
+            ("peakCalculation" Data..=)
+              Prelude.<$> peakCalculation,
+            ("targetLkfs" Data..=) Prelude.<$> targetLkfs
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AudioSelector.hs b/gen/Amazonka/MediaConvert/Types/AudioSelector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioSelector.hs
@@ -0,0 +1,370 @@
+{-# 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.AudioSelector
+-- 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.AudioSelector 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.AudioDefaultSelection
+import Amazonka.MediaConvert.Types.AudioDurationCorrection
+import Amazonka.MediaConvert.Types.AudioSelectorType
+import Amazonka.MediaConvert.Types.HlsRenditionGroupSettings
+import Amazonka.MediaConvert.Types.LanguageCode
+import Amazonka.MediaConvert.Types.RemixSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Audio selectors (AudioSelectors) to specify a track or set of tracks
+-- from the input that you will use in your outputs. You can use multiple
+-- Audio selectors per input.
+--
+-- /See:/ 'newAudioSelector' smart constructor.
+data AudioSelector = AudioSelector'
+  { -- | Apply audio timing corrections to help synchronize audio and video in
+    -- your output. To apply timing corrections, your input must meet the
+    -- following requirements: * Container: MP4, or MOV, with an accurate
+    -- time-to-sample (STTS) table. * Audio track: AAC. Choose from the
+    -- following audio timing correction settings: * Disabled (Default): Apply
+    -- no correction. * Auto: Recommended for most inputs. MediaConvert
+    -- analyzes the audio timing in your input and determines which correction
+    -- setting to use, if needed. * Track: Adjust the duration of each audio
+    -- frame by a constant amount to align the audio track length with STTS
+    -- duration. Track-level correction does not affect pitch, and is
+    -- recommended for tonal audio content such as music. * Frame: Adjust the
+    -- duration of each audio frame by a variable amount to align audio frames
+    -- with STTS timestamps. No corrections are made to already-aligned frames.
+    -- Frame-level correction may affect the pitch of corrected frames, and is
+    -- recommended for atonal audio content such as speech or percussion.
+    audioDurationCorrection :: Prelude.Maybe AudioDurationCorrection,
+    -- | Selects a specific language code from within an audio source, using the
+    -- ISO 639-2 or ISO 639-3 three-letter language code
+    customLanguageCode :: Prelude.Maybe Prelude.Text,
+    -- | Enable this setting on one audio selector to set it as the default for
+    -- the job. The service uses this default for outputs where it can\'t find
+    -- the specified input audio. If you don\'t set a default, those outputs
+    -- have no audio.
+    defaultSelection :: Prelude.Maybe AudioDefaultSelection,
+    -- | Specifies audio data from an external file source.
+    externalAudioFileInput :: Prelude.Maybe Prelude.Text,
+    -- | Settings specific to audio sources in an HLS alternate rendition group.
+    -- Specify the properties (renditionGroupId, renditionName or
+    -- renditionLanguageCode) to identify the unique audio track among the
+    -- alternative rendition groups present in the HLS manifest. If no unique
+    -- track is found, or multiple tracks match the properties provided, the
+    -- job fails. If no properties in hlsRenditionGroupSettings are specified,
+    -- the default audio track within the video segment is chosen. If there is
+    -- no audio within video segment, the alternative audio with DEFAULT=YES is
+    -- chosen instead.
+    hlsRenditionGroupSettings :: Prelude.Maybe HlsRenditionGroupSettings,
+    -- | Selects a specific language code from within an audio source.
+    languageCode :: Prelude.Maybe LanguageCode,
+    -- | Specifies a time delta in milliseconds to offset the audio from the
+    -- input video.
+    offset :: Prelude.Maybe Prelude.Int,
+    -- | Selects a specific PID from within an audio source (e.g. 257 selects PID
+    -- 0x101).
+    pids :: Prelude.Maybe [Prelude.Natural],
+    -- | Use this setting for input streams that contain Dolby E, to have the
+    -- service extract specific program data from the track. To select multiple
+    -- programs, create multiple selectors with the same Track and different
+    -- Program numbers. In the console, this setting is visible when you set
+    -- Selector type to Track. Choose the program number from the dropdown
+    -- list. If you are sending a JSON file, provide the program ID, which is
+    -- part of the audio metadata. If your input file has incorrect metadata,
+    -- you can choose All channels instead of a program number to have the
+    -- service ignore the program IDs and include all the programs in the
+    -- track.
+    programSelection :: Prelude.Maybe Prelude.Natural,
+    -- | Use these settings to reorder the audio channels of one input to match
+    -- those of another input. This allows you to combine the two files into a
+    -- single output, one after the other.
+    remixSettings :: Prelude.Maybe RemixSettings,
+    -- | Specifies the type of the audio selector.
+    selectorType :: Prelude.Maybe AudioSelectorType,
+    -- | Identify a track from the input audio to include in this selector by
+    -- entering the track index number. To include several tracks in a single
+    -- audio selector, specify multiple tracks as follows. Using the console,
+    -- enter a comma-separated list. For examle, type \"1,2,3\" to include
+    -- tracks 1 through 3. Specifying directly in your JSON job file, provide
+    -- the track numbers in an array. For example, \"tracks\": [1,2,3].
+    tracks :: Prelude.Maybe [Prelude.Natural]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AudioSelector' 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:
+--
+-- 'audioDurationCorrection', 'audioSelector_audioDurationCorrection' - Apply audio timing corrections to help synchronize audio and video in
+-- your output. To apply timing corrections, your input must meet the
+-- following requirements: * Container: MP4, or MOV, with an accurate
+-- time-to-sample (STTS) table. * Audio track: AAC. Choose from the
+-- following audio timing correction settings: * Disabled (Default): Apply
+-- no correction. * Auto: Recommended for most inputs. MediaConvert
+-- analyzes the audio timing in your input and determines which correction
+-- setting to use, if needed. * Track: Adjust the duration of each audio
+-- frame by a constant amount to align the audio track length with STTS
+-- duration. Track-level correction does not affect pitch, and is
+-- recommended for tonal audio content such as music. * Frame: Adjust the
+-- duration of each audio frame by a variable amount to align audio frames
+-- with STTS timestamps. No corrections are made to already-aligned frames.
+-- Frame-level correction may affect the pitch of corrected frames, and is
+-- recommended for atonal audio content such as speech or percussion.
+--
+-- 'customLanguageCode', 'audioSelector_customLanguageCode' - Selects a specific language code from within an audio source, using the
+-- ISO 639-2 or ISO 639-3 three-letter language code
+--
+-- 'defaultSelection', 'audioSelector_defaultSelection' - Enable this setting on one audio selector to set it as the default for
+-- the job. The service uses this default for outputs where it can\'t find
+-- the specified input audio. If you don\'t set a default, those outputs
+-- have no audio.
+--
+-- 'externalAudioFileInput', 'audioSelector_externalAudioFileInput' - Specifies audio data from an external file source.
+--
+-- 'hlsRenditionGroupSettings', 'audioSelector_hlsRenditionGroupSettings' - Settings specific to audio sources in an HLS alternate rendition group.
+-- Specify the properties (renditionGroupId, renditionName or
+-- renditionLanguageCode) to identify the unique audio track among the
+-- alternative rendition groups present in the HLS manifest. If no unique
+-- track is found, or multiple tracks match the properties provided, the
+-- job fails. If no properties in hlsRenditionGroupSettings are specified,
+-- the default audio track within the video segment is chosen. If there is
+-- no audio within video segment, the alternative audio with DEFAULT=YES is
+-- chosen instead.
+--
+-- 'languageCode', 'audioSelector_languageCode' - Selects a specific language code from within an audio source.
+--
+-- 'offset', 'audioSelector_offset' - Specifies a time delta in milliseconds to offset the audio from the
+-- input video.
+--
+-- 'pids', 'audioSelector_pids' - Selects a specific PID from within an audio source (e.g. 257 selects PID
+-- 0x101).
+--
+-- 'programSelection', 'audioSelector_programSelection' - Use this setting for input streams that contain Dolby E, to have the
+-- service extract specific program data from the track. To select multiple
+-- programs, create multiple selectors with the same Track and different
+-- Program numbers. In the console, this setting is visible when you set
+-- Selector type to Track. Choose the program number from the dropdown
+-- list. If you are sending a JSON file, provide the program ID, which is
+-- part of the audio metadata. If your input file has incorrect metadata,
+-- you can choose All channels instead of a program number to have the
+-- service ignore the program IDs and include all the programs in the
+-- track.
+--
+-- 'remixSettings', 'audioSelector_remixSettings' - Use these settings to reorder the audio channels of one input to match
+-- those of another input. This allows you to combine the two files into a
+-- single output, one after the other.
+--
+-- 'selectorType', 'audioSelector_selectorType' - Specifies the type of the audio selector.
+--
+-- 'tracks', 'audioSelector_tracks' - Identify a track from the input audio to include in this selector by
+-- entering the track index number. To include several tracks in a single
+-- audio selector, specify multiple tracks as follows. Using the console,
+-- enter a comma-separated list. For examle, type \"1,2,3\" to include
+-- tracks 1 through 3. Specifying directly in your JSON job file, provide
+-- the track numbers in an array. For example, \"tracks\": [1,2,3].
+newAudioSelector ::
+  AudioSelector
+newAudioSelector =
+  AudioSelector'
+    { audioDurationCorrection =
+        Prelude.Nothing,
+      customLanguageCode = Prelude.Nothing,
+      defaultSelection = Prelude.Nothing,
+      externalAudioFileInput = Prelude.Nothing,
+      hlsRenditionGroupSettings = Prelude.Nothing,
+      languageCode = Prelude.Nothing,
+      offset = Prelude.Nothing,
+      pids = Prelude.Nothing,
+      programSelection = Prelude.Nothing,
+      remixSettings = Prelude.Nothing,
+      selectorType = Prelude.Nothing,
+      tracks = Prelude.Nothing
+    }
+
+-- | Apply audio timing corrections to help synchronize audio and video in
+-- your output. To apply timing corrections, your input must meet the
+-- following requirements: * Container: MP4, or MOV, with an accurate
+-- time-to-sample (STTS) table. * Audio track: AAC. Choose from the
+-- following audio timing correction settings: * Disabled (Default): Apply
+-- no correction. * Auto: Recommended for most inputs. MediaConvert
+-- analyzes the audio timing in your input and determines which correction
+-- setting to use, if needed. * Track: Adjust the duration of each audio
+-- frame by a constant amount to align the audio track length with STTS
+-- duration. Track-level correction does not affect pitch, and is
+-- recommended for tonal audio content such as music. * Frame: Adjust the
+-- duration of each audio frame by a variable amount to align audio frames
+-- with STTS timestamps. No corrections are made to already-aligned frames.
+-- Frame-level correction may affect the pitch of corrected frames, and is
+-- recommended for atonal audio content such as speech or percussion.
+audioSelector_audioDurationCorrection :: Lens.Lens' AudioSelector (Prelude.Maybe AudioDurationCorrection)
+audioSelector_audioDurationCorrection = Lens.lens (\AudioSelector' {audioDurationCorrection} -> audioDurationCorrection) (\s@AudioSelector' {} a -> s {audioDurationCorrection = a} :: AudioSelector)
+
+-- | Selects a specific language code from within an audio source, using the
+-- ISO 639-2 or ISO 639-3 three-letter language code
+audioSelector_customLanguageCode :: Lens.Lens' AudioSelector (Prelude.Maybe Prelude.Text)
+audioSelector_customLanguageCode = Lens.lens (\AudioSelector' {customLanguageCode} -> customLanguageCode) (\s@AudioSelector' {} a -> s {customLanguageCode = a} :: AudioSelector)
+
+-- | Enable this setting on one audio selector to set it as the default for
+-- the job. The service uses this default for outputs where it can\'t find
+-- the specified input audio. If you don\'t set a default, those outputs
+-- have no audio.
+audioSelector_defaultSelection :: Lens.Lens' AudioSelector (Prelude.Maybe AudioDefaultSelection)
+audioSelector_defaultSelection = Lens.lens (\AudioSelector' {defaultSelection} -> defaultSelection) (\s@AudioSelector' {} a -> s {defaultSelection = a} :: AudioSelector)
+
+-- | Specifies audio data from an external file source.
+audioSelector_externalAudioFileInput :: Lens.Lens' AudioSelector (Prelude.Maybe Prelude.Text)
+audioSelector_externalAudioFileInput = Lens.lens (\AudioSelector' {externalAudioFileInput} -> externalAudioFileInput) (\s@AudioSelector' {} a -> s {externalAudioFileInput = a} :: AudioSelector)
+
+-- | Settings specific to audio sources in an HLS alternate rendition group.
+-- Specify the properties (renditionGroupId, renditionName or
+-- renditionLanguageCode) to identify the unique audio track among the
+-- alternative rendition groups present in the HLS manifest. If no unique
+-- track is found, or multiple tracks match the properties provided, the
+-- job fails. If no properties in hlsRenditionGroupSettings are specified,
+-- the default audio track within the video segment is chosen. If there is
+-- no audio within video segment, the alternative audio with DEFAULT=YES is
+-- chosen instead.
+audioSelector_hlsRenditionGroupSettings :: Lens.Lens' AudioSelector (Prelude.Maybe HlsRenditionGroupSettings)
+audioSelector_hlsRenditionGroupSettings = Lens.lens (\AudioSelector' {hlsRenditionGroupSettings} -> hlsRenditionGroupSettings) (\s@AudioSelector' {} a -> s {hlsRenditionGroupSettings = a} :: AudioSelector)
+
+-- | Selects a specific language code from within an audio source.
+audioSelector_languageCode :: Lens.Lens' AudioSelector (Prelude.Maybe LanguageCode)
+audioSelector_languageCode = Lens.lens (\AudioSelector' {languageCode} -> languageCode) (\s@AudioSelector' {} a -> s {languageCode = a} :: AudioSelector)
+
+-- | Specifies a time delta in milliseconds to offset the audio from the
+-- input video.
+audioSelector_offset :: Lens.Lens' AudioSelector (Prelude.Maybe Prelude.Int)
+audioSelector_offset = Lens.lens (\AudioSelector' {offset} -> offset) (\s@AudioSelector' {} a -> s {offset = a} :: AudioSelector)
+
+-- | Selects a specific PID from within an audio source (e.g. 257 selects PID
+-- 0x101).
+audioSelector_pids :: Lens.Lens' AudioSelector (Prelude.Maybe [Prelude.Natural])
+audioSelector_pids = Lens.lens (\AudioSelector' {pids} -> pids) (\s@AudioSelector' {} a -> s {pids = a} :: AudioSelector) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use this setting for input streams that contain Dolby E, to have the
+-- service extract specific program data from the track. To select multiple
+-- programs, create multiple selectors with the same Track and different
+-- Program numbers. In the console, this setting is visible when you set
+-- Selector type to Track. Choose the program number from the dropdown
+-- list. If you are sending a JSON file, provide the program ID, which is
+-- part of the audio metadata. If your input file has incorrect metadata,
+-- you can choose All channels instead of a program number to have the
+-- service ignore the program IDs and include all the programs in the
+-- track.
+audioSelector_programSelection :: Lens.Lens' AudioSelector (Prelude.Maybe Prelude.Natural)
+audioSelector_programSelection = Lens.lens (\AudioSelector' {programSelection} -> programSelection) (\s@AudioSelector' {} a -> s {programSelection = a} :: AudioSelector)
+
+-- | Use these settings to reorder the audio channels of one input to match
+-- those of another input. This allows you to combine the two files into a
+-- single output, one after the other.
+audioSelector_remixSettings :: Lens.Lens' AudioSelector (Prelude.Maybe RemixSettings)
+audioSelector_remixSettings = Lens.lens (\AudioSelector' {remixSettings} -> remixSettings) (\s@AudioSelector' {} a -> s {remixSettings = a} :: AudioSelector)
+
+-- | Specifies the type of the audio selector.
+audioSelector_selectorType :: Lens.Lens' AudioSelector (Prelude.Maybe AudioSelectorType)
+audioSelector_selectorType = Lens.lens (\AudioSelector' {selectorType} -> selectorType) (\s@AudioSelector' {} a -> s {selectorType = a} :: AudioSelector)
+
+-- | Identify a track from the input audio to include in this selector by
+-- entering the track index number. To include several tracks in a single
+-- audio selector, specify multiple tracks as follows. Using the console,
+-- enter a comma-separated list. For examle, type \"1,2,3\" to include
+-- tracks 1 through 3. Specifying directly in your JSON job file, provide
+-- the track numbers in an array. For example, \"tracks\": [1,2,3].
+audioSelector_tracks :: Lens.Lens' AudioSelector (Prelude.Maybe [Prelude.Natural])
+audioSelector_tracks = Lens.lens (\AudioSelector' {tracks} -> tracks) (\s@AudioSelector' {} a -> s {tracks = a} :: AudioSelector) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON AudioSelector where
+  parseJSON =
+    Data.withObject
+      "AudioSelector"
+      ( \x ->
+          AudioSelector'
+            Prelude.<$> (x Data..:? "audioDurationCorrection")
+            Prelude.<*> (x Data..:? "customLanguageCode")
+            Prelude.<*> (x Data..:? "defaultSelection")
+            Prelude.<*> (x Data..:? "externalAudioFileInput")
+            Prelude.<*> (x Data..:? "hlsRenditionGroupSettings")
+            Prelude.<*> (x Data..:? "languageCode")
+            Prelude.<*> (x Data..:? "offset")
+            Prelude.<*> (x Data..:? "pids" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "programSelection")
+            Prelude.<*> (x Data..:? "remixSettings")
+            Prelude.<*> (x Data..:? "selectorType")
+            Prelude.<*> (x Data..:? "tracks" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable AudioSelector where
+  hashWithSalt _salt AudioSelector' {..} =
+    _salt
+      `Prelude.hashWithSalt` audioDurationCorrection
+      `Prelude.hashWithSalt` customLanguageCode
+      `Prelude.hashWithSalt` defaultSelection
+      `Prelude.hashWithSalt` externalAudioFileInput
+      `Prelude.hashWithSalt` hlsRenditionGroupSettings
+      `Prelude.hashWithSalt` languageCode
+      `Prelude.hashWithSalt` offset
+      `Prelude.hashWithSalt` pids
+      `Prelude.hashWithSalt` programSelection
+      `Prelude.hashWithSalt` remixSettings
+      `Prelude.hashWithSalt` selectorType
+      `Prelude.hashWithSalt` tracks
+
+instance Prelude.NFData AudioSelector where
+  rnf AudioSelector' {..} =
+    Prelude.rnf audioDurationCorrection
+      `Prelude.seq` Prelude.rnf customLanguageCode
+      `Prelude.seq` Prelude.rnf defaultSelection
+      `Prelude.seq` Prelude.rnf externalAudioFileInput
+      `Prelude.seq` Prelude.rnf hlsRenditionGroupSettings
+      `Prelude.seq` Prelude.rnf languageCode
+      `Prelude.seq` Prelude.rnf offset
+      `Prelude.seq` Prelude.rnf pids
+      `Prelude.seq` Prelude.rnf programSelection
+      `Prelude.seq` Prelude.rnf remixSettings
+      `Prelude.seq` Prelude.rnf selectorType
+      `Prelude.seq` Prelude.rnf tracks
+
+instance Data.ToJSON AudioSelector where
+  toJSON AudioSelector' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("audioDurationCorrection" Data..=)
+              Prelude.<$> audioDurationCorrection,
+            ("customLanguageCode" Data..=)
+              Prelude.<$> customLanguageCode,
+            ("defaultSelection" Data..=)
+              Prelude.<$> defaultSelection,
+            ("externalAudioFileInput" Data..=)
+              Prelude.<$> externalAudioFileInput,
+            ("hlsRenditionGroupSettings" Data..=)
+              Prelude.<$> hlsRenditionGroupSettings,
+            ("languageCode" Data..=) Prelude.<$> languageCode,
+            ("offset" Data..=) Prelude.<$> offset,
+            ("pids" Data..=) Prelude.<$> pids,
+            ("programSelection" Data..=)
+              Prelude.<$> programSelection,
+            ("remixSettings" Data..=) Prelude.<$> remixSettings,
+            ("selectorType" Data..=) Prelude.<$> selectorType,
+            ("tracks" Data..=) Prelude.<$> tracks
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AudioSelectorGroup.hs b/gen/Amazonka/MediaConvert/Types/AudioSelectorGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioSelectorGroup.hs
@@ -0,0 +1,97 @@
+{-# 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.AudioSelectorGroup
+-- 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.AudioSelectorGroup where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use audio selector groups to combine multiple sidecar audio inputs so
+-- that you can assign them to a single output audio tab
+-- (AudioDescription). Note that, if you\'re working with embedded audio,
+-- it\'s simpler to assign multiple input tracks into a single audio
+-- selector rather than use an audio selector group.
+--
+-- /See:/ 'newAudioSelectorGroup' smart constructor.
+data AudioSelectorGroup = AudioSelectorGroup'
+  { -- | Name of an Audio Selector within the same input to include in the group.
+    -- Audio selector names are standardized, based on their order within the
+    -- input (e.g., \"Audio Selector 1\"). The audio selector name parameter
+    -- can be repeated to add any number of audio selectors to the group.
+    audioSelectorNames :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AudioSelectorGroup' 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:
+--
+-- 'audioSelectorNames', 'audioSelectorGroup_audioSelectorNames' - Name of an Audio Selector within the same input to include in the group.
+-- Audio selector names are standardized, based on their order within the
+-- input (e.g., \"Audio Selector 1\"). The audio selector name parameter
+-- can be repeated to add any number of audio selectors to the group.
+newAudioSelectorGroup ::
+  AudioSelectorGroup
+newAudioSelectorGroup =
+  AudioSelectorGroup'
+    { audioSelectorNames =
+        Prelude.Nothing
+    }
+
+-- | Name of an Audio Selector within the same input to include in the group.
+-- Audio selector names are standardized, based on their order within the
+-- input (e.g., \"Audio Selector 1\"). The audio selector name parameter
+-- can be repeated to add any number of audio selectors to the group.
+audioSelectorGroup_audioSelectorNames :: Lens.Lens' AudioSelectorGroup (Prelude.Maybe [Prelude.Text])
+audioSelectorGroup_audioSelectorNames = Lens.lens (\AudioSelectorGroup' {audioSelectorNames} -> audioSelectorNames) (\s@AudioSelectorGroup' {} a -> s {audioSelectorNames = a} :: AudioSelectorGroup) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON AudioSelectorGroup where
+  parseJSON =
+    Data.withObject
+      "AudioSelectorGroup"
+      ( \x ->
+          AudioSelectorGroup'
+            Prelude.<$> ( x
+                            Data..:? "audioSelectorNames"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable AudioSelectorGroup where
+  hashWithSalt _salt AudioSelectorGroup' {..} =
+    _salt `Prelude.hashWithSalt` audioSelectorNames
+
+instance Prelude.NFData AudioSelectorGroup where
+  rnf AudioSelectorGroup' {..} =
+    Prelude.rnf audioSelectorNames
+
+instance Data.ToJSON AudioSelectorGroup where
+  toJSON AudioSelectorGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("audioSelectorNames" Data..=)
+              Prelude.<$> audioSelectorNames
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AudioSelectorType.hs b/gen/Amazonka/MediaConvert/Types/AudioSelectorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioSelectorType.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AudioSelectorType
+-- 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.AudioSelectorType
+  ( AudioSelectorType
+      ( ..,
+        AudioSelectorType_HLS_RENDITION_GROUP,
+        AudioSelectorType_LANGUAGE_CODE,
+        AudioSelectorType_PID,
+        AudioSelectorType_TRACK
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies the type of the audio selector.
+newtype AudioSelectorType = AudioSelectorType'
+  { fromAudioSelectorType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AudioSelectorType_HLS_RENDITION_GROUP :: AudioSelectorType
+pattern AudioSelectorType_HLS_RENDITION_GROUP = AudioSelectorType' "HLS_RENDITION_GROUP"
+
+pattern AudioSelectorType_LANGUAGE_CODE :: AudioSelectorType
+pattern AudioSelectorType_LANGUAGE_CODE = AudioSelectorType' "LANGUAGE_CODE"
+
+pattern AudioSelectorType_PID :: AudioSelectorType
+pattern AudioSelectorType_PID = AudioSelectorType' "PID"
+
+pattern AudioSelectorType_TRACK :: AudioSelectorType
+pattern AudioSelectorType_TRACK = AudioSelectorType' "TRACK"
+
+{-# COMPLETE
+  AudioSelectorType_HLS_RENDITION_GROUP,
+  AudioSelectorType_LANGUAGE_CODE,
+  AudioSelectorType_PID,
+  AudioSelectorType_TRACK,
+  AudioSelectorType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AudioTypeControl.hs b/gen/Amazonka/MediaConvert/Types/AudioTypeControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AudioTypeControl.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AudioTypeControl
+-- 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.AudioTypeControl
+  ( AudioTypeControl
+      ( ..,
+        AudioTypeControl_FOLLOW_INPUT,
+        AudioTypeControl_USE_CONFIGURED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to FOLLOW_INPUT, if the input contains an ISO 639 audio_type,
+-- then that value is passed through to the output. If the input contains
+-- no ISO 639 audio_type, the value in Audio Type is included in the
+-- output. Otherwise the value in Audio Type is included in the output.
+-- Note that this field and audioType are both ignored if
+-- audioDescriptionBroadcasterMix is set to BROADCASTER_MIXED_AD.
+newtype AudioTypeControl = AudioTypeControl'
+  { fromAudioTypeControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AudioTypeControl_FOLLOW_INPUT :: AudioTypeControl
+pattern AudioTypeControl_FOLLOW_INPUT = AudioTypeControl' "FOLLOW_INPUT"
+
+pattern AudioTypeControl_USE_CONFIGURED :: AudioTypeControl
+pattern AudioTypeControl_USE_CONFIGURED = AudioTypeControl' "USE_CONFIGURED"
+
+{-# COMPLETE
+  AudioTypeControl_FOLLOW_INPUT,
+  AudioTypeControl_USE_CONFIGURED,
+  AudioTypeControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AutomatedAbrRule.hs b/gen/Amazonka/MediaConvert/Types/AutomatedAbrRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AutomatedAbrRule.hs
@@ -0,0 +1,299 @@
+{-# 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.AutomatedAbrRule
+-- 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.AutomatedAbrRule 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.AllowedRenditionSize
+import Amazonka.MediaConvert.Types.ForceIncludeRenditionSize
+import Amazonka.MediaConvert.Types.MinBottomRenditionSize
+import Amazonka.MediaConvert.Types.MinTopRenditionSize
+import Amazonka.MediaConvert.Types.RuleType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify one or more Automated ABR rule types. Note: Force include and
+-- Allowed renditions are mutually exclusive.
+--
+-- /See:/ 'newAutomatedAbrRule' smart constructor.
+data AutomatedAbrRule = AutomatedAbrRule'
+  { -- | When customer adds the allowed renditions rule for auto ABR ladder, they
+    -- are required to add at leat one rendition to allowedRenditions list
+    allowedRenditions :: Prelude.Maybe [AllowedRenditionSize],
+    -- | When customer adds the force include renditions rule for auto ABR
+    -- ladder, they are required to add at leat one rendition to
+    -- forceIncludeRenditions list
+    forceIncludeRenditions :: Prelude.Maybe [ForceIncludeRenditionSize],
+    -- | Use Min bottom rendition size to specify a minimum size for the lowest
+    -- resolution in your ABR stack. * The lowest resolution in your ABR stack
+    -- will be equal to or greater than the value that you enter. For example:
+    -- If you specify 640x360 the lowest resolution in your ABR stack will be
+    -- equal to or greater than to 640x360. * If you specify a Min top
+    -- rendition size rule, the value that you specify for Min bottom rendition
+    -- size must be less than, or equal to, Min top rendition size.
+    minBottomRenditionSize :: Prelude.Maybe MinBottomRenditionSize,
+    -- | Use Min top rendition size to specify a minimum size for the highest
+    -- resolution in your ABR stack. * The highest resolution in your ABR stack
+    -- will be equal to or greater than the value that you enter. For example:
+    -- If you specify 1280x720 the highest resolution in your ABR stack will be
+    -- equal to or greater than 1280x720. * If you specify a value for Max
+    -- resolution, the value that you specify for Min top rendition size must
+    -- be less than, or equal to, Max resolution.
+    minTopRenditionSize :: Prelude.Maybe MinTopRenditionSize,
+    -- | Use Min top rendition size to specify a minimum size for the highest
+    -- resolution in your ABR stack. * The highest resolution in your ABR stack
+    -- will be equal to or greater than the value that you enter. For example:
+    -- If you specify 1280x720 the highest resolution in your ABR stack will be
+    -- equal to or greater than 1280x720. * If you specify a value for Max
+    -- resolution, the value that you specify for Min top rendition size must
+    -- be less than, or equal to, Max resolution. Use Min bottom rendition size
+    -- to specify a minimum size for the lowest resolution in your ABR stack. *
+    -- The lowest resolution in your ABR stack will be equal to or greater than
+    -- the value that you enter. For example: If you specify 640x360 the lowest
+    -- resolution in your ABR stack will be equal to or greater than to
+    -- 640x360. * If you specify a Min top rendition size rule, the value that
+    -- you specify for Min bottom rendition size must be less than, or equal
+    -- to, Min top rendition size. Use Force include renditions to specify one
+    -- or more resolutions to include your ABR stack. * (Recommended) To
+    -- optimize automated ABR, specify as few resolutions as possible. *
+    -- (Required) The number of resolutions that you specify must be equal to,
+    -- or less than, the Max renditions setting. * If you specify a Min top
+    -- rendition size rule, specify at least one resolution that is equal to,
+    -- or greater than, Min top rendition size. * If you specify a Min bottom
+    -- rendition size rule, only specify resolutions that are equal to, or
+    -- greater than, Min bottom rendition size. * If you specify a Force
+    -- include renditions rule, do not specify a separate rule for Allowed
+    -- renditions. * Note: The ABR stack may include other resolutions that you
+    -- do not specify here, depending on the Max renditions setting. Use
+    -- Allowed renditions to specify a list of possible resolutions in your ABR
+    -- stack. * (Required) The number of resolutions that you specify must be
+    -- equal to, or greater than, the Max renditions setting. * MediaConvert
+    -- will create an ABR stack exclusively from the list of resolutions that
+    -- you specify. * Some resolutions in the Allowed renditions list may not
+    -- be included, however you can force a resolution to be included by
+    -- setting Required to ENABLED. * You must specify at least one resolution
+    -- that is greater than or equal to any resolutions that you specify in Min
+    -- top rendition size or Min bottom rendition size. * If you specify
+    -- Allowed renditions, you must not specify a separate rule for Force
+    -- include renditions.
+    type' :: Prelude.Maybe RuleType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutomatedAbrRule' 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:
+--
+-- 'allowedRenditions', 'automatedAbrRule_allowedRenditions' - When customer adds the allowed renditions rule for auto ABR ladder, they
+-- are required to add at leat one rendition to allowedRenditions list
+--
+-- 'forceIncludeRenditions', 'automatedAbrRule_forceIncludeRenditions' - When customer adds the force include renditions rule for auto ABR
+-- ladder, they are required to add at leat one rendition to
+-- forceIncludeRenditions list
+--
+-- 'minBottomRenditionSize', 'automatedAbrRule_minBottomRenditionSize' - Use Min bottom rendition size to specify a minimum size for the lowest
+-- resolution in your ABR stack. * The lowest resolution in your ABR stack
+-- will be equal to or greater than the value that you enter. For example:
+-- If you specify 640x360 the lowest resolution in your ABR stack will be
+-- equal to or greater than to 640x360. * If you specify a Min top
+-- rendition size rule, the value that you specify for Min bottom rendition
+-- size must be less than, or equal to, Min top rendition size.
+--
+-- 'minTopRenditionSize', 'automatedAbrRule_minTopRenditionSize' - Use Min top rendition size to specify a minimum size for the highest
+-- resolution in your ABR stack. * The highest resolution in your ABR stack
+-- will be equal to or greater than the value that you enter. For example:
+-- If you specify 1280x720 the highest resolution in your ABR stack will be
+-- equal to or greater than 1280x720. * If you specify a value for Max
+-- resolution, the value that you specify for Min top rendition size must
+-- be less than, or equal to, Max resolution.
+--
+-- 'type'', 'automatedAbrRule_type' - Use Min top rendition size to specify a minimum size for the highest
+-- resolution in your ABR stack. * The highest resolution in your ABR stack
+-- will be equal to or greater than the value that you enter. For example:
+-- If you specify 1280x720 the highest resolution in your ABR stack will be
+-- equal to or greater than 1280x720. * If you specify a value for Max
+-- resolution, the value that you specify for Min top rendition size must
+-- be less than, or equal to, Max resolution. Use Min bottom rendition size
+-- to specify a minimum size for the lowest resolution in your ABR stack. *
+-- The lowest resolution in your ABR stack will be equal to or greater than
+-- the value that you enter. For example: If you specify 640x360 the lowest
+-- resolution in your ABR stack will be equal to or greater than to
+-- 640x360. * If you specify a Min top rendition size rule, the value that
+-- you specify for Min bottom rendition size must be less than, or equal
+-- to, Min top rendition size. Use Force include renditions to specify one
+-- or more resolutions to include your ABR stack. * (Recommended) To
+-- optimize automated ABR, specify as few resolutions as possible. *
+-- (Required) The number of resolutions that you specify must be equal to,
+-- or less than, the Max renditions setting. * If you specify a Min top
+-- rendition size rule, specify at least one resolution that is equal to,
+-- or greater than, Min top rendition size. * If you specify a Min bottom
+-- rendition size rule, only specify resolutions that are equal to, or
+-- greater than, Min bottom rendition size. * If you specify a Force
+-- include renditions rule, do not specify a separate rule for Allowed
+-- renditions. * Note: The ABR stack may include other resolutions that you
+-- do not specify here, depending on the Max renditions setting. Use
+-- Allowed renditions to specify a list of possible resolutions in your ABR
+-- stack. * (Required) The number of resolutions that you specify must be
+-- equal to, or greater than, the Max renditions setting. * MediaConvert
+-- will create an ABR stack exclusively from the list of resolutions that
+-- you specify. * Some resolutions in the Allowed renditions list may not
+-- be included, however you can force a resolution to be included by
+-- setting Required to ENABLED. * You must specify at least one resolution
+-- that is greater than or equal to any resolutions that you specify in Min
+-- top rendition size or Min bottom rendition size. * If you specify
+-- Allowed renditions, you must not specify a separate rule for Force
+-- include renditions.
+newAutomatedAbrRule ::
+  AutomatedAbrRule
+newAutomatedAbrRule =
+  AutomatedAbrRule'
+    { allowedRenditions =
+        Prelude.Nothing,
+      forceIncludeRenditions = Prelude.Nothing,
+      minBottomRenditionSize = Prelude.Nothing,
+      minTopRenditionSize = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | When customer adds the allowed renditions rule for auto ABR ladder, they
+-- are required to add at leat one rendition to allowedRenditions list
+automatedAbrRule_allowedRenditions :: Lens.Lens' AutomatedAbrRule (Prelude.Maybe [AllowedRenditionSize])
+automatedAbrRule_allowedRenditions = Lens.lens (\AutomatedAbrRule' {allowedRenditions} -> allowedRenditions) (\s@AutomatedAbrRule' {} a -> s {allowedRenditions = a} :: AutomatedAbrRule) Prelude.. Lens.mapping Lens.coerced
+
+-- | When customer adds the force include renditions rule for auto ABR
+-- ladder, they are required to add at leat one rendition to
+-- forceIncludeRenditions list
+automatedAbrRule_forceIncludeRenditions :: Lens.Lens' AutomatedAbrRule (Prelude.Maybe [ForceIncludeRenditionSize])
+automatedAbrRule_forceIncludeRenditions = Lens.lens (\AutomatedAbrRule' {forceIncludeRenditions} -> forceIncludeRenditions) (\s@AutomatedAbrRule' {} a -> s {forceIncludeRenditions = a} :: AutomatedAbrRule) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use Min bottom rendition size to specify a minimum size for the lowest
+-- resolution in your ABR stack. * The lowest resolution in your ABR stack
+-- will be equal to or greater than the value that you enter. For example:
+-- If you specify 640x360 the lowest resolution in your ABR stack will be
+-- equal to or greater than to 640x360. * If you specify a Min top
+-- rendition size rule, the value that you specify for Min bottom rendition
+-- size must be less than, or equal to, Min top rendition size.
+automatedAbrRule_minBottomRenditionSize :: Lens.Lens' AutomatedAbrRule (Prelude.Maybe MinBottomRenditionSize)
+automatedAbrRule_minBottomRenditionSize = Lens.lens (\AutomatedAbrRule' {minBottomRenditionSize} -> minBottomRenditionSize) (\s@AutomatedAbrRule' {} a -> s {minBottomRenditionSize = a} :: AutomatedAbrRule)
+
+-- | Use Min top rendition size to specify a minimum size for the highest
+-- resolution in your ABR stack. * The highest resolution in your ABR stack
+-- will be equal to or greater than the value that you enter. For example:
+-- If you specify 1280x720 the highest resolution in your ABR stack will be
+-- equal to or greater than 1280x720. * If you specify a value for Max
+-- resolution, the value that you specify for Min top rendition size must
+-- be less than, or equal to, Max resolution.
+automatedAbrRule_minTopRenditionSize :: Lens.Lens' AutomatedAbrRule (Prelude.Maybe MinTopRenditionSize)
+automatedAbrRule_minTopRenditionSize = Lens.lens (\AutomatedAbrRule' {minTopRenditionSize} -> minTopRenditionSize) (\s@AutomatedAbrRule' {} a -> s {minTopRenditionSize = a} :: AutomatedAbrRule)
+
+-- | Use Min top rendition size to specify a minimum size for the highest
+-- resolution in your ABR stack. * The highest resolution in your ABR stack
+-- will be equal to or greater than the value that you enter. For example:
+-- If you specify 1280x720 the highest resolution in your ABR stack will be
+-- equal to or greater than 1280x720. * If you specify a value for Max
+-- resolution, the value that you specify for Min top rendition size must
+-- be less than, or equal to, Max resolution. Use Min bottom rendition size
+-- to specify a minimum size for the lowest resolution in your ABR stack. *
+-- The lowest resolution in your ABR stack will be equal to or greater than
+-- the value that you enter. For example: If you specify 640x360 the lowest
+-- resolution in your ABR stack will be equal to or greater than to
+-- 640x360. * If you specify a Min top rendition size rule, the value that
+-- you specify for Min bottom rendition size must be less than, or equal
+-- to, Min top rendition size. Use Force include renditions to specify one
+-- or more resolutions to include your ABR stack. * (Recommended) To
+-- optimize automated ABR, specify as few resolutions as possible. *
+-- (Required) The number of resolutions that you specify must be equal to,
+-- or less than, the Max renditions setting. * If you specify a Min top
+-- rendition size rule, specify at least one resolution that is equal to,
+-- or greater than, Min top rendition size. * If you specify a Min bottom
+-- rendition size rule, only specify resolutions that are equal to, or
+-- greater than, Min bottom rendition size. * If you specify a Force
+-- include renditions rule, do not specify a separate rule for Allowed
+-- renditions. * Note: The ABR stack may include other resolutions that you
+-- do not specify here, depending on the Max renditions setting. Use
+-- Allowed renditions to specify a list of possible resolutions in your ABR
+-- stack. * (Required) The number of resolutions that you specify must be
+-- equal to, or greater than, the Max renditions setting. * MediaConvert
+-- will create an ABR stack exclusively from the list of resolutions that
+-- you specify. * Some resolutions in the Allowed renditions list may not
+-- be included, however you can force a resolution to be included by
+-- setting Required to ENABLED. * You must specify at least one resolution
+-- that is greater than or equal to any resolutions that you specify in Min
+-- top rendition size or Min bottom rendition size. * If you specify
+-- Allowed renditions, you must not specify a separate rule for Force
+-- include renditions.
+automatedAbrRule_type :: Lens.Lens' AutomatedAbrRule (Prelude.Maybe RuleType)
+automatedAbrRule_type = Lens.lens (\AutomatedAbrRule' {type'} -> type') (\s@AutomatedAbrRule' {} a -> s {type' = a} :: AutomatedAbrRule)
+
+instance Data.FromJSON AutomatedAbrRule where
+  parseJSON =
+    Data.withObject
+      "AutomatedAbrRule"
+      ( \x ->
+          AutomatedAbrRule'
+            Prelude.<$> ( x
+                            Data..:? "allowedRenditions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "forceIncludeRenditions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "minBottomRenditionSize")
+            Prelude.<*> (x Data..:? "minTopRenditionSize")
+            Prelude.<*> (x Data..:? "type")
+      )
+
+instance Prelude.Hashable AutomatedAbrRule where
+  hashWithSalt _salt AutomatedAbrRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` allowedRenditions
+      `Prelude.hashWithSalt` forceIncludeRenditions
+      `Prelude.hashWithSalt` minBottomRenditionSize
+      `Prelude.hashWithSalt` minTopRenditionSize
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData AutomatedAbrRule where
+  rnf AutomatedAbrRule' {..} =
+    Prelude.rnf allowedRenditions
+      `Prelude.seq` Prelude.rnf forceIncludeRenditions
+      `Prelude.seq` Prelude.rnf minBottomRenditionSize
+      `Prelude.seq` Prelude.rnf minTopRenditionSize
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON AutomatedAbrRule where
+  toJSON AutomatedAbrRule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("allowedRenditions" Data..=)
+              Prelude.<$> allowedRenditions,
+            ("forceIncludeRenditions" Data..=)
+              Prelude.<$> forceIncludeRenditions,
+            ("minBottomRenditionSize" Data..=)
+              Prelude.<$> minBottomRenditionSize,
+            ("minTopRenditionSize" Data..=)
+              Prelude.<$> minTopRenditionSize,
+            ("type" Data..=) Prelude.<$> type'
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AutomatedAbrSettings.hs b/gen/Amazonka/MediaConvert/Types/AutomatedAbrSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AutomatedAbrSettings.hs
@@ -0,0 +1,172 @@
+{-# 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.AutomatedAbrSettings
+-- 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.AutomatedAbrSettings 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.AutomatedAbrRule
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use automated ABR to have MediaConvert set up the renditions in your ABR
+-- package for you automatically, based on characteristics of your input
+-- video. This feature optimizes video quality while minimizing the overall
+-- size of your ABR package.
+--
+-- /See:/ 'newAutomatedAbrSettings' smart constructor.
+data AutomatedAbrSettings = AutomatedAbrSettings'
+  { -- | Optional. The maximum target bit rate used in your automated ABR stack.
+    -- Use this value to set an upper limit on the bandwidth consumed by the
+    -- highest-quality rendition. This is the rendition that is delivered to
+    -- viewers with the fastest internet connections. If you don\'t specify a
+    -- value, MediaConvert uses 8,000,000 (8 mb\/s) by default.
+    maxAbrBitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. The maximum number of renditions that MediaConvert will create
+    -- in your automated ABR stack. The number of renditions is determined
+    -- automatically, based on analysis of each job, but will never exceed this
+    -- limit. When you set this to Auto in the console, which is equivalent to
+    -- excluding it from your JSON job specification, MediaConvert defaults to
+    -- a limit of 15.
+    maxRenditions :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. The minimum target bitrate used in your automated ABR stack.
+    -- Use this value to set a lower limit on the bitrate of video delivered to
+    -- viewers with slow internet connections. If you don\'t specify a value,
+    -- MediaConvert uses 600,000 (600 kb\/s) by default.
+    minAbrBitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Use Automated ABR rules to specify restrictions for the
+    -- rendition sizes MediaConvert will create in your ABR stack. You can use
+    -- these rules if your ABR workflow has specific rendition size
+    -- requirements, but you still want MediaConvert to optimize for video
+    -- quality and overall file size.
+    rules :: Prelude.Maybe [AutomatedAbrRule]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutomatedAbrSettings' 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:
+--
+-- 'maxAbrBitrate', 'automatedAbrSettings_maxAbrBitrate' - Optional. The maximum target bit rate used in your automated ABR stack.
+-- Use this value to set an upper limit on the bandwidth consumed by the
+-- highest-quality rendition. This is the rendition that is delivered to
+-- viewers with the fastest internet connections. If you don\'t specify a
+-- value, MediaConvert uses 8,000,000 (8 mb\/s) by default.
+--
+-- 'maxRenditions', 'automatedAbrSettings_maxRenditions' - Optional. The maximum number of renditions that MediaConvert will create
+-- in your automated ABR stack. The number of renditions is determined
+-- automatically, based on analysis of each job, but will never exceed this
+-- limit. When you set this to Auto in the console, which is equivalent to
+-- excluding it from your JSON job specification, MediaConvert defaults to
+-- a limit of 15.
+--
+-- 'minAbrBitrate', 'automatedAbrSettings_minAbrBitrate' - Optional. The minimum target bitrate used in your automated ABR stack.
+-- Use this value to set a lower limit on the bitrate of video delivered to
+-- viewers with slow internet connections. If you don\'t specify a value,
+-- MediaConvert uses 600,000 (600 kb\/s) by default.
+--
+-- 'rules', 'automatedAbrSettings_rules' - Optional. Use Automated ABR rules to specify restrictions for the
+-- rendition sizes MediaConvert will create in your ABR stack. You can use
+-- these rules if your ABR workflow has specific rendition size
+-- requirements, but you still want MediaConvert to optimize for video
+-- quality and overall file size.
+newAutomatedAbrSettings ::
+  AutomatedAbrSettings
+newAutomatedAbrSettings =
+  AutomatedAbrSettings'
+    { maxAbrBitrate =
+        Prelude.Nothing,
+      maxRenditions = Prelude.Nothing,
+      minAbrBitrate = Prelude.Nothing,
+      rules = Prelude.Nothing
+    }
+
+-- | Optional. The maximum target bit rate used in your automated ABR stack.
+-- Use this value to set an upper limit on the bandwidth consumed by the
+-- highest-quality rendition. This is the rendition that is delivered to
+-- viewers with the fastest internet connections. If you don\'t specify a
+-- value, MediaConvert uses 8,000,000 (8 mb\/s) by default.
+automatedAbrSettings_maxAbrBitrate :: Lens.Lens' AutomatedAbrSettings (Prelude.Maybe Prelude.Natural)
+automatedAbrSettings_maxAbrBitrate = Lens.lens (\AutomatedAbrSettings' {maxAbrBitrate} -> maxAbrBitrate) (\s@AutomatedAbrSettings' {} a -> s {maxAbrBitrate = a} :: AutomatedAbrSettings)
+
+-- | Optional. The maximum number of renditions that MediaConvert will create
+-- in your automated ABR stack. The number of renditions is determined
+-- automatically, based on analysis of each job, but will never exceed this
+-- limit. When you set this to Auto in the console, which is equivalent to
+-- excluding it from your JSON job specification, MediaConvert defaults to
+-- a limit of 15.
+automatedAbrSettings_maxRenditions :: Lens.Lens' AutomatedAbrSettings (Prelude.Maybe Prelude.Natural)
+automatedAbrSettings_maxRenditions = Lens.lens (\AutomatedAbrSettings' {maxRenditions} -> maxRenditions) (\s@AutomatedAbrSettings' {} a -> s {maxRenditions = a} :: AutomatedAbrSettings)
+
+-- | Optional. The minimum target bitrate used in your automated ABR stack.
+-- Use this value to set a lower limit on the bitrate of video delivered to
+-- viewers with slow internet connections. If you don\'t specify a value,
+-- MediaConvert uses 600,000 (600 kb\/s) by default.
+automatedAbrSettings_minAbrBitrate :: Lens.Lens' AutomatedAbrSettings (Prelude.Maybe Prelude.Natural)
+automatedAbrSettings_minAbrBitrate = Lens.lens (\AutomatedAbrSettings' {minAbrBitrate} -> minAbrBitrate) (\s@AutomatedAbrSettings' {} a -> s {minAbrBitrate = a} :: AutomatedAbrSettings)
+
+-- | Optional. Use Automated ABR rules to specify restrictions for the
+-- rendition sizes MediaConvert will create in your ABR stack. You can use
+-- these rules if your ABR workflow has specific rendition size
+-- requirements, but you still want MediaConvert to optimize for video
+-- quality and overall file size.
+automatedAbrSettings_rules :: Lens.Lens' AutomatedAbrSettings (Prelude.Maybe [AutomatedAbrRule])
+automatedAbrSettings_rules = Lens.lens (\AutomatedAbrSettings' {rules} -> rules) (\s@AutomatedAbrSettings' {} a -> s {rules = a} :: AutomatedAbrSettings) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON AutomatedAbrSettings where
+  parseJSON =
+    Data.withObject
+      "AutomatedAbrSettings"
+      ( \x ->
+          AutomatedAbrSettings'
+            Prelude.<$> (x Data..:? "maxAbrBitrate")
+            Prelude.<*> (x Data..:? "maxRenditions")
+            Prelude.<*> (x Data..:? "minAbrBitrate")
+            Prelude.<*> (x Data..:? "rules" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable AutomatedAbrSettings where
+  hashWithSalt _salt AutomatedAbrSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxAbrBitrate
+      `Prelude.hashWithSalt` maxRenditions
+      `Prelude.hashWithSalt` minAbrBitrate
+      `Prelude.hashWithSalt` rules
+
+instance Prelude.NFData AutomatedAbrSettings where
+  rnf AutomatedAbrSettings' {..} =
+    Prelude.rnf maxAbrBitrate
+      `Prelude.seq` Prelude.rnf maxRenditions
+      `Prelude.seq` Prelude.rnf minAbrBitrate
+      `Prelude.seq` Prelude.rnf rules
+
+instance Data.ToJSON AutomatedAbrSettings where
+  toJSON AutomatedAbrSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxAbrBitrate" Data..=) Prelude.<$> maxAbrBitrate,
+            ("maxRenditions" Data..=) Prelude.<$> maxRenditions,
+            ("minAbrBitrate" Data..=) Prelude.<$> minAbrBitrate,
+            ("rules" Data..=) Prelude.<$> rules
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AutomatedEncodingSettings.hs b/gen/Amazonka/MediaConvert/Types/AutomatedEncodingSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AutomatedEncodingSettings.hs
@@ -0,0 +1,90 @@
+{-# 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.AutomatedEncodingSettings
+-- 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.AutomatedEncodingSettings 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.AutomatedAbrSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use automated encoding to have MediaConvert choose your encoding
+-- settings for you, based on characteristics of your input video.
+--
+-- /See:/ 'newAutomatedEncodingSettings' smart constructor.
+data AutomatedEncodingSettings = AutomatedEncodingSettings'
+  { -- | Use automated ABR to have MediaConvert set up the renditions in your ABR
+    -- package for you automatically, based on characteristics of your input
+    -- video. This feature optimizes video quality while minimizing the overall
+    -- size of your ABR package.
+    abrSettings :: Prelude.Maybe AutomatedAbrSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutomatedEncodingSettings' 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:
+--
+-- 'abrSettings', 'automatedEncodingSettings_abrSettings' - Use automated ABR to have MediaConvert set up the renditions in your ABR
+-- package for you automatically, based on characteristics of your input
+-- video. This feature optimizes video quality while minimizing the overall
+-- size of your ABR package.
+newAutomatedEncodingSettings ::
+  AutomatedEncodingSettings
+newAutomatedEncodingSettings =
+  AutomatedEncodingSettings'
+    { abrSettings =
+        Prelude.Nothing
+    }
+
+-- | Use automated ABR to have MediaConvert set up the renditions in your ABR
+-- package for you automatically, based on characteristics of your input
+-- video. This feature optimizes video quality while minimizing the overall
+-- size of your ABR package.
+automatedEncodingSettings_abrSettings :: Lens.Lens' AutomatedEncodingSettings (Prelude.Maybe AutomatedAbrSettings)
+automatedEncodingSettings_abrSettings = Lens.lens (\AutomatedEncodingSettings' {abrSettings} -> abrSettings) (\s@AutomatedEncodingSettings' {} a -> s {abrSettings = a} :: AutomatedEncodingSettings)
+
+instance Data.FromJSON AutomatedEncodingSettings where
+  parseJSON =
+    Data.withObject
+      "AutomatedEncodingSettings"
+      ( \x ->
+          AutomatedEncodingSettings'
+            Prelude.<$> (x Data..:? "abrSettings")
+      )
+
+instance Prelude.Hashable AutomatedEncodingSettings where
+  hashWithSalt _salt AutomatedEncodingSettings' {..} =
+    _salt `Prelude.hashWithSalt` abrSettings
+
+instance Prelude.NFData AutomatedEncodingSettings where
+  rnf AutomatedEncodingSettings' {..} =
+    Prelude.rnf abrSettings
+
+instance Data.ToJSON AutomatedEncodingSettings where
+  toJSON AutomatedEncodingSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("abrSettings" Data..=) Prelude.<$> abrSettings]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Av1AdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/Av1AdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Av1AdaptiveQuantization.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Av1AdaptiveQuantization
+-- 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.Av1AdaptiveQuantization
+  ( Av1AdaptiveQuantization
+      ( ..,
+        Av1AdaptiveQuantization_HIGH,
+        Av1AdaptiveQuantization_HIGHER,
+        Av1AdaptiveQuantization_LOW,
+        Av1AdaptiveQuantization_MAX,
+        Av1AdaptiveQuantization_MEDIUM,
+        Av1AdaptiveQuantization_OFF
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the strength of any adaptive quantization filters that you
+-- enable. The value that you choose here applies to Spatial adaptive
+-- quantization (spatialAdaptiveQuantization).
+newtype Av1AdaptiveQuantization = Av1AdaptiveQuantization'
+  { fromAv1AdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Av1AdaptiveQuantization_HIGH :: Av1AdaptiveQuantization
+pattern Av1AdaptiveQuantization_HIGH = Av1AdaptiveQuantization' "HIGH"
+
+pattern Av1AdaptiveQuantization_HIGHER :: Av1AdaptiveQuantization
+pattern Av1AdaptiveQuantization_HIGHER = Av1AdaptiveQuantization' "HIGHER"
+
+pattern Av1AdaptiveQuantization_LOW :: Av1AdaptiveQuantization
+pattern Av1AdaptiveQuantization_LOW = Av1AdaptiveQuantization' "LOW"
+
+pattern Av1AdaptiveQuantization_MAX :: Av1AdaptiveQuantization
+pattern Av1AdaptiveQuantization_MAX = Av1AdaptiveQuantization' "MAX"
+
+pattern Av1AdaptiveQuantization_MEDIUM :: Av1AdaptiveQuantization
+pattern Av1AdaptiveQuantization_MEDIUM = Av1AdaptiveQuantization' "MEDIUM"
+
+pattern Av1AdaptiveQuantization_OFF :: Av1AdaptiveQuantization
+pattern Av1AdaptiveQuantization_OFF = Av1AdaptiveQuantization' "OFF"
+
+{-# COMPLETE
+  Av1AdaptiveQuantization_HIGH,
+  Av1AdaptiveQuantization_HIGHER,
+  Av1AdaptiveQuantization_LOW,
+  Av1AdaptiveQuantization_MAX,
+  Av1AdaptiveQuantization_MEDIUM,
+  Av1AdaptiveQuantization_OFF,
+  Av1AdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Av1BitDepth.hs b/gen/Amazonka/MediaConvert/Types/Av1BitDepth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Av1BitDepth.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Av1BitDepth
+-- 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.Av1BitDepth
+  ( Av1BitDepth
+      ( ..,
+        Av1BitDepth_BIT_10,
+        Av1BitDepth_BIT_8
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the Bit depth (Av1BitDepth). You can choose 8-bit (BIT_8) or
+-- 10-bit (BIT_10).
+newtype Av1BitDepth = Av1BitDepth'
+  { fromAv1BitDepth ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Av1BitDepth_BIT_10 :: Av1BitDepth
+pattern Av1BitDepth_BIT_10 = Av1BitDepth' "BIT_10"
+
+pattern Av1BitDepth_BIT_8 :: Av1BitDepth
+pattern Av1BitDepth_BIT_8 = Av1BitDepth' "BIT_8"
+
+{-# COMPLETE
+  Av1BitDepth_BIT_10,
+  Av1BitDepth_BIT_8,
+  Av1BitDepth'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Av1FramerateControl.hs b/gen/Amazonka/MediaConvert/Types/Av1FramerateControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Av1FramerateControl.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Av1FramerateControl
+-- 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.Av1FramerateControl
+  ( Av1FramerateControl
+      ( ..,
+        Av1FramerateControl_INITIALIZE_FROM_SOURCE,
+        Av1FramerateControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+newtype Av1FramerateControl = Av1FramerateControl'
+  { fromAv1FramerateControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Av1FramerateControl_INITIALIZE_FROM_SOURCE :: Av1FramerateControl
+pattern Av1FramerateControl_INITIALIZE_FROM_SOURCE = Av1FramerateControl' "INITIALIZE_FROM_SOURCE"
+
+pattern Av1FramerateControl_SPECIFIED :: Av1FramerateControl
+pattern Av1FramerateControl_SPECIFIED = Av1FramerateControl' "SPECIFIED"
+
+{-# COMPLETE
+  Av1FramerateControl_INITIALIZE_FROM_SOURCE,
+  Av1FramerateControl_SPECIFIED,
+  Av1FramerateControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Av1FramerateConversionAlgorithm.hs b/gen/Amazonka/MediaConvert/Types/Av1FramerateConversionAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Av1FramerateConversionAlgorithm.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Av1FramerateConversionAlgorithm
+-- 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.Av1FramerateConversionAlgorithm
+  ( Av1FramerateConversionAlgorithm
+      ( ..,
+        Av1FramerateConversionAlgorithm_DUPLICATE_DROP,
+        Av1FramerateConversionAlgorithm_FRAMEFORMER,
+        Av1FramerateConversionAlgorithm_INTERPOLATE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+newtype Av1FramerateConversionAlgorithm = Av1FramerateConversionAlgorithm'
+  { fromAv1FramerateConversionAlgorithm ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Av1FramerateConversionAlgorithm_DUPLICATE_DROP :: Av1FramerateConversionAlgorithm
+pattern Av1FramerateConversionAlgorithm_DUPLICATE_DROP = Av1FramerateConversionAlgorithm' "DUPLICATE_DROP"
+
+pattern Av1FramerateConversionAlgorithm_FRAMEFORMER :: Av1FramerateConversionAlgorithm
+pattern Av1FramerateConversionAlgorithm_FRAMEFORMER = Av1FramerateConversionAlgorithm' "FRAMEFORMER"
+
+pattern Av1FramerateConversionAlgorithm_INTERPOLATE :: Av1FramerateConversionAlgorithm
+pattern Av1FramerateConversionAlgorithm_INTERPOLATE = Av1FramerateConversionAlgorithm' "INTERPOLATE"
+
+{-# COMPLETE
+  Av1FramerateConversionAlgorithm_DUPLICATE_DROP,
+  Av1FramerateConversionAlgorithm_FRAMEFORMER,
+  Av1FramerateConversionAlgorithm_INTERPOLATE,
+  Av1FramerateConversionAlgorithm'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Av1QvbrSettings.hs b/gen/Amazonka/MediaConvert/Types/Av1QvbrSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Av1QvbrSettings.hs
@@ -0,0 +1,152 @@
+{-# 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.Av1QvbrSettings
+-- 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.Av1QvbrSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for quality-defined variable bitrate encoding with the AV1
+-- codec. Use these settings only when you set QVBR for Rate control mode
+-- (RateControlMode).
+--
+-- /See:/ 'newAv1QvbrSettings' smart constructor.
+data Av1QvbrSettings = Av1QvbrSettings'
+  { -- | Use this setting only when you set Rate control mode (RateControlMode)
+    -- to QVBR. Specify the target quality level for this output. MediaConvert
+    -- determines the right number of bits to use for each part of the video to
+    -- maintain the video quality that you specify. When you keep the default
+    -- value, AUTO, MediaConvert picks a quality level for you, based on
+    -- characteristics of your input video. If you prefer to specify a quality
+    -- level, specify a number from 1 through 10. Use higher numbers for
+    -- greater quality. Level 10 results in nearly lossless compression. The
+    -- quality level for most broadcast-quality transcodes is between 6 and 9.
+    -- Optionally, to specify a value between whole numbers, also provide a
+    -- value for the setting qvbrQualityLevelFineTune. For example, if you want
+    -- your QVBR quality level to be 7.33, set qvbrQualityLevel to 7 and set
+    -- qvbrQualityLevelFineTune to .33.
+    qvbrQualityLevel :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Specify a value here to set the QVBR quality to a level that
+    -- is between whole numbers. For example, if you want your QVBR quality
+    -- level to be 7.33, set qvbrQualityLevel to 7 and set
+    -- qvbrQualityLevelFineTune to .33. MediaConvert rounds your QVBR quality
+    -- level to the nearest third of a whole number. For example, if you set
+    -- qvbrQualityLevel to 7 and you set qvbrQualityLevelFineTune to .25, your
+    -- actual QVBR quality level is 7.33.
+    qvbrQualityLevelFineTune :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Av1QvbrSettings' 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:
+--
+-- 'qvbrQualityLevel', 'av1QvbrSettings_qvbrQualityLevel' - Use this setting only when you set Rate control mode (RateControlMode)
+-- to QVBR. Specify the target quality level for this output. MediaConvert
+-- determines the right number of bits to use for each part of the video to
+-- maintain the video quality that you specify. When you keep the default
+-- value, AUTO, MediaConvert picks a quality level for you, based on
+-- characteristics of your input video. If you prefer to specify a quality
+-- level, specify a number from 1 through 10. Use higher numbers for
+-- greater quality. Level 10 results in nearly lossless compression. The
+-- quality level for most broadcast-quality transcodes is between 6 and 9.
+-- Optionally, to specify a value between whole numbers, also provide a
+-- value for the setting qvbrQualityLevelFineTune. For example, if you want
+-- your QVBR quality level to be 7.33, set qvbrQualityLevel to 7 and set
+-- qvbrQualityLevelFineTune to .33.
+--
+-- 'qvbrQualityLevelFineTune', 'av1QvbrSettings_qvbrQualityLevelFineTune' - Optional. Specify a value here to set the QVBR quality to a level that
+-- is between whole numbers. For example, if you want your QVBR quality
+-- level to be 7.33, set qvbrQualityLevel to 7 and set
+-- qvbrQualityLevelFineTune to .33. MediaConvert rounds your QVBR quality
+-- level to the nearest third of a whole number. For example, if you set
+-- qvbrQualityLevel to 7 and you set qvbrQualityLevelFineTune to .25, your
+-- actual QVBR quality level is 7.33.
+newAv1QvbrSettings ::
+  Av1QvbrSettings
+newAv1QvbrSettings =
+  Av1QvbrSettings'
+    { qvbrQualityLevel =
+        Prelude.Nothing,
+      qvbrQualityLevelFineTune = Prelude.Nothing
+    }
+
+-- | Use this setting only when you set Rate control mode (RateControlMode)
+-- to QVBR. Specify the target quality level for this output. MediaConvert
+-- determines the right number of bits to use for each part of the video to
+-- maintain the video quality that you specify. When you keep the default
+-- value, AUTO, MediaConvert picks a quality level for you, based on
+-- characteristics of your input video. If you prefer to specify a quality
+-- level, specify a number from 1 through 10. Use higher numbers for
+-- greater quality. Level 10 results in nearly lossless compression. The
+-- quality level for most broadcast-quality transcodes is between 6 and 9.
+-- Optionally, to specify a value between whole numbers, also provide a
+-- value for the setting qvbrQualityLevelFineTune. For example, if you want
+-- your QVBR quality level to be 7.33, set qvbrQualityLevel to 7 and set
+-- qvbrQualityLevelFineTune to .33.
+av1QvbrSettings_qvbrQualityLevel :: Lens.Lens' Av1QvbrSettings (Prelude.Maybe Prelude.Natural)
+av1QvbrSettings_qvbrQualityLevel = Lens.lens (\Av1QvbrSettings' {qvbrQualityLevel} -> qvbrQualityLevel) (\s@Av1QvbrSettings' {} a -> s {qvbrQualityLevel = a} :: Av1QvbrSettings)
+
+-- | Optional. Specify a value here to set the QVBR quality to a level that
+-- is between whole numbers. For example, if you want your QVBR quality
+-- level to be 7.33, set qvbrQualityLevel to 7 and set
+-- qvbrQualityLevelFineTune to .33. MediaConvert rounds your QVBR quality
+-- level to the nearest third of a whole number. For example, if you set
+-- qvbrQualityLevel to 7 and you set qvbrQualityLevelFineTune to .25, your
+-- actual QVBR quality level is 7.33.
+av1QvbrSettings_qvbrQualityLevelFineTune :: Lens.Lens' Av1QvbrSettings (Prelude.Maybe Prelude.Double)
+av1QvbrSettings_qvbrQualityLevelFineTune = Lens.lens (\Av1QvbrSettings' {qvbrQualityLevelFineTune} -> qvbrQualityLevelFineTune) (\s@Av1QvbrSettings' {} a -> s {qvbrQualityLevelFineTune = a} :: Av1QvbrSettings)
+
+instance Data.FromJSON Av1QvbrSettings where
+  parseJSON =
+    Data.withObject
+      "Av1QvbrSettings"
+      ( \x ->
+          Av1QvbrSettings'
+            Prelude.<$> (x Data..:? "qvbrQualityLevel")
+            Prelude.<*> (x Data..:? "qvbrQualityLevelFineTune")
+      )
+
+instance Prelude.Hashable Av1QvbrSettings where
+  hashWithSalt _salt Av1QvbrSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` qvbrQualityLevel
+      `Prelude.hashWithSalt` qvbrQualityLevelFineTune
+
+instance Prelude.NFData Av1QvbrSettings where
+  rnf Av1QvbrSettings' {..} =
+    Prelude.rnf qvbrQualityLevel
+      `Prelude.seq` Prelude.rnf qvbrQualityLevelFineTune
+
+instance Data.ToJSON Av1QvbrSettings where
+  toJSON Av1QvbrSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("qvbrQualityLevel" Data..=)
+              Prelude.<$> qvbrQualityLevel,
+            ("qvbrQualityLevelFineTune" Data..=)
+              Prelude.<$> qvbrQualityLevelFineTune
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Av1RateControlMode.hs b/gen/Amazonka/MediaConvert/Types/Av1RateControlMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Av1RateControlMode.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Av1RateControlMode
+-- 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.Av1RateControlMode
+  ( Av1RateControlMode
+      ( ..,
+        Av1RateControlMode_QVBR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | \'With AV1 outputs, for rate control mode, MediaConvert supports only
+-- quality-defined variable bitrate (QVBR). You can\'\'t use CBR or VBR.\'
+newtype Av1RateControlMode = Av1RateControlMode'
+  { fromAv1RateControlMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Av1RateControlMode_QVBR :: Av1RateControlMode
+pattern Av1RateControlMode_QVBR = Av1RateControlMode' "QVBR"
+
+{-# COMPLETE
+  Av1RateControlMode_QVBR,
+  Av1RateControlMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Av1Settings.hs b/gen/Amazonka/MediaConvert/Types/Av1Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Av1Settings.hs
@@ -0,0 +1,449 @@
+{-# 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.Av1Settings
+-- 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.Av1Settings 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.Av1AdaptiveQuantization
+import Amazonka.MediaConvert.Types.Av1BitDepth
+import Amazonka.MediaConvert.Types.Av1FramerateControl
+import Amazonka.MediaConvert.Types.Av1FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.Av1QvbrSettings
+import Amazonka.MediaConvert.Types.Av1RateControlMode
+import Amazonka.MediaConvert.Types.Av1SpatialAdaptiveQuantization
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set Codec, under VideoDescription>CodecSettings to the
+-- value AV1.
+--
+-- /See:/ 'newAv1Settings' smart constructor.
+data Av1Settings = Av1Settings'
+  { -- | Specify the strength of any adaptive quantization filters that you
+    -- enable. The value that you choose here applies to Spatial adaptive
+    -- quantization (spatialAdaptiveQuantization).
+    adaptiveQuantization :: Prelude.Maybe Av1AdaptiveQuantization,
+    -- | Specify the Bit depth (Av1BitDepth). You can choose 8-bit (BIT_8) or
+    -- 10-bit (BIT_10).
+    bitDepth :: Prelude.Maybe Av1BitDepth,
+    -- | If you are using the console, use the Framerate setting to specify the
+    -- frame rate for this output. If you want to keep the same frame rate as
+    -- the input video, choose Follow source. If you want to do frame rate
+    -- conversion, choose a frame rate from the dropdown list or choose Custom.
+    -- The framerates shown in the dropdown list are decimal approximations of
+    -- fractions. If you choose Custom, specify your frame rate as a fraction.
+    -- If you are creating your transcoding job specification as a JSON file
+    -- without the console, use FramerateControl to specify which value the
+    -- service uses for the frame rate for this output. Choose
+    -- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+    -- from the input. Choose SPECIFIED if you want the service to use the
+    -- frame rate you specify in the settings FramerateNumerator and
+    -- FramerateDenominator.
+    framerateControl :: Prelude.Maybe Av1FramerateControl,
+    -- | Choose the method that you want MediaConvert to use when increasing or
+    -- decreasing the frame rate. We recommend using drop duplicate
+    -- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+    -- 30 fps. For numerically complex conversions, you can use interpolate
+    -- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+    -- might introduce undesirable video artifacts. For complex frame rate
+    -- conversions, especially if your source video has already been converted
+    -- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+    -- motion-compensated interpolation. FrameFormer chooses the best
+    -- conversion method frame by frame. Note that using FrameFormer increases
+    -- the transcoding time and incurs a significant add-on cost.
+    framerateConversionAlgorithm :: Prelude.Maybe Av1FramerateConversionAlgorithm,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+    -- fraction. In this example, use 1001 for the value of
+    -- FramerateDenominator. When you use the console for transcode jobs that
+    -- use frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+    -- fraction. In this example, use 24000 for the value of
+    -- FramerateNumerator. When you use the console for transcode jobs that use
+    -- frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the GOP length (keyframe interval) in frames. With AV1,
+    -- MediaConvert doesn\'t support GOP length in seconds. This value must be
+    -- greater than zero and preferably equal to 1 + ((numberBFrames + 1) * x),
+    -- where x is an integer value.
+    gopSize :: Prelude.Maybe Prelude.Double,
+    -- | Maximum bitrate in bits\/second. For example, enter five megabits per
+    -- second as 5000000. Required when Rate control mode is QVBR.
+    maxBitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Specify from the number of B-frames, in the range of 0-15. For AV1
+    -- encoding, we recommend using 7 or 15. Choose a larger number for a lower
+    -- bitrate and smaller file size; choose a smaller number for better video
+    -- quality.
+    numberBFramesBetweenReferenceFrames :: Prelude.Maybe Prelude.Natural,
+    -- | Settings for quality-defined variable bitrate encoding with the H.265
+    -- codec. Use these settings only when you set QVBR for Rate control mode
+    -- (RateControlMode).
+    qvbrSettings :: Prelude.Maybe Av1QvbrSettings,
+    -- | \'With AV1 outputs, for rate control mode, MediaConvert supports only
+    -- quality-defined variable bitrate (QVBR). You can\'\'t use CBR or VBR.\'
+    rateControlMode :: Prelude.Maybe Av1RateControlMode,
+    -- | Specify the number of slices per picture. This value must be 1, 2, 4, 8,
+    -- 16, or 32. For progressive pictures, this value must be less than or
+    -- equal to the number of macroblock rows. For interlaced pictures, this
+    -- value must be less than or equal to half the number of macroblock rows.
+    slices :: Prelude.Maybe Prelude.Natural,
+    -- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+    -- each frame based on spatial variation of content complexity. When you
+    -- enable this feature, the encoder uses fewer bits on areas that can
+    -- sustain more distortion with no noticeable visual degradation and uses
+    -- more bits on areas where any small distortion will be noticeable. For
+    -- example, complex textured blocks are encoded with fewer bits and smooth
+    -- textured blocks are encoded with more bits. Enabling this feature will
+    -- almost always improve your video quality. Note, though, that this
+    -- feature doesn\'t take into account where the viewer\'s attention is
+    -- likely to be. If viewers are likely to be focusing their attention on a
+    -- part of the screen with a lot of complex texture, you might choose to
+    -- disable this feature. Related setting: When you enable spatial adaptive
+    -- quantization, set the value for Adaptive quantization
+    -- (adaptiveQuantization) depending on your content. For homogeneous
+    -- content, such as cartoons and video games, set it to Low. For content
+    -- with a wider variety of textures, set it to High or Higher.
+    spatialAdaptiveQuantization :: Prelude.Maybe Av1SpatialAdaptiveQuantization
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Av1Settings' 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:
+--
+-- 'adaptiveQuantization', 'av1Settings_adaptiveQuantization' - Specify the strength of any adaptive quantization filters that you
+-- enable. The value that you choose here applies to Spatial adaptive
+-- quantization (spatialAdaptiveQuantization).
+--
+-- 'bitDepth', 'av1Settings_bitDepth' - Specify the Bit depth (Av1BitDepth). You can choose 8-bit (BIT_8) or
+-- 10-bit (BIT_10).
+--
+-- 'framerateControl', 'av1Settings_framerateControl' - If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+--
+-- 'framerateConversionAlgorithm', 'av1Settings_framerateConversionAlgorithm' - Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+--
+-- 'framerateDenominator', 'av1Settings_framerateDenominator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'framerateNumerator', 'av1Settings_framerateNumerator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'gopSize', 'av1Settings_gopSize' - Specify the GOP length (keyframe interval) in frames. With AV1,
+-- MediaConvert doesn\'t support GOP length in seconds. This value must be
+-- greater than zero and preferably equal to 1 + ((numberBFrames + 1) * x),
+-- where x is an integer value.
+--
+-- 'maxBitrate', 'av1Settings_maxBitrate' - Maximum bitrate in bits\/second. For example, enter five megabits per
+-- second as 5000000. Required when Rate control mode is QVBR.
+--
+-- 'numberBFramesBetweenReferenceFrames', 'av1Settings_numberBFramesBetweenReferenceFrames' - Specify from the number of B-frames, in the range of 0-15. For AV1
+-- encoding, we recommend using 7 or 15. Choose a larger number for a lower
+-- bitrate and smaller file size; choose a smaller number for better video
+-- quality.
+--
+-- 'qvbrSettings', 'av1Settings_qvbrSettings' - Settings for quality-defined variable bitrate encoding with the H.265
+-- codec. Use these settings only when you set QVBR for Rate control mode
+-- (RateControlMode).
+--
+-- 'rateControlMode', 'av1Settings_rateControlMode' - \'With AV1 outputs, for rate control mode, MediaConvert supports only
+-- quality-defined variable bitrate (QVBR). You can\'\'t use CBR or VBR.\'
+--
+-- 'slices', 'av1Settings_slices' - Specify the number of slices per picture. This value must be 1, 2, 4, 8,
+-- 16, or 32. For progressive pictures, this value must be less than or
+-- equal to the number of macroblock rows. For interlaced pictures, this
+-- value must be less than or equal to half the number of macroblock rows.
+--
+-- 'spatialAdaptiveQuantization', 'av1Settings_spatialAdaptiveQuantization' - Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on spatial variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas that can
+-- sustain more distortion with no noticeable visual degradation and uses
+-- more bits on areas where any small distortion will be noticeable. For
+-- example, complex textured blocks are encoded with fewer bits and smooth
+-- textured blocks are encoded with more bits. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen with a lot of complex texture, you might choose to
+-- disable this feature. Related setting: When you enable spatial adaptive
+-- quantization, set the value for Adaptive quantization
+-- (adaptiveQuantization) depending on your content. For homogeneous
+-- content, such as cartoons and video games, set it to Low. For content
+-- with a wider variety of textures, set it to High or Higher.
+newAv1Settings ::
+  Av1Settings
+newAv1Settings =
+  Av1Settings'
+    { adaptiveQuantization =
+        Prelude.Nothing,
+      bitDepth = Prelude.Nothing,
+      framerateControl = Prelude.Nothing,
+      framerateConversionAlgorithm = Prelude.Nothing,
+      framerateDenominator = Prelude.Nothing,
+      framerateNumerator = Prelude.Nothing,
+      gopSize = Prelude.Nothing,
+      maxBitrate = Prelude.Nothing,
+      numberBFramesBetweenReferenceFrames =
+        Prelude.Nothing,
+      qvbrSettings = Prelude.Nothing,
+      rateControlMode = Prelude.Nothing,
+      slices = Prelude.Nothing,
+      spatialAdaptiveQuantization = Prelude.Nothing
+    }
+
+-- | Specify the strength of any adaptive quantization filters that you
+-- enable. The value that you choose here applies to Spatial adaptive
+-- quantization (spatialAdaptiveQuantization).
+av1Settings_adaptiveQuantization :: Lens.Lens' Av1Settings (Prelude.Maybe Av1AdaptiveQuantization)
+av1Settings_adaptiveQuantization = Lens.lens (\Av1Settings' {adaptiveQuantization} -> adaptiveQuantization) (\s@Av1Settings' {} a -> s {adaptiveQuantization = a} :: Av1Settings)
+
+-- | Specify the Bit depth (Av1BitDepth). You can choose 8-bit (BIT_8) or
+-- 10-bit (BIT_10).
+av1Settings_bitDepth :: Lens.Lens' Av1Settings (Prelude.Maybe Av1BitDepth)
+av1Settings_bitDepth = Lens.lens (\Av1Settings' {bitDepth} -> bitDepth) (\s@Av1Settings' {} a -> s {bitDepth = a} :: Av1Settings)
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+av1Settings_framerateControl :: Lens.Lens' Av1Settings (Prelude.Maybe Av1FramerateControl)
+av1Settings_framerateControl = Lens.lens (\Av1Settings' {framerateControl} -> framerateControl) (\s@Av1Settings' {} a -> s {framerateControl = a} :: Av1Settings)
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+av1Settings_framerateConversionAlgorithm :: Lens.Lens' Av1Settings (Prelude.Maybe Av1FramerateConversionAlgorithm)
+av1Settings_framerateConversionAlgorithm = Lens.lens (\Av1Settings' {framerateConversionAlgorithm} -> framerateConversionAlgorithm) (\s@Av1Settings' {} a -> s {framerateConversionAlgorithm = a} :: Av1Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+av1Settings_framerateDenominator :: Lens.Lens' Av1Settings (Prelude.Maybe Prelude.Natural)
+av1Settings_framerateDenominator = Lens.lens (\Av1Settings' {framerateDenominator} -> framerateDenominator) (\s@Av1Settings' {} a -> s {framerateDenominator = a} :: Av1Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+av1Settings_framerateNumerator :: Lens.Lens' Av1Settings (Prelude.Maybe Prelude.Natural)
+av1Settings_framerateNumerator = Lens.lens (\Av1Settings' {framerateNumerator} -> framerateNumerator) (\s@Av1Settings' {} a -> s {framerateNumerator = a} :: Av1Settings)
+
+-- | Specify the GOP length (keyframe interval) in frames. With AV1,
+-- MediaConvert doesn\'t support GOP length in seconds. This value must be
+-- greater than zero and preferably equal to 1 + ((numberBFrames + 1) * x),
+-- where x is an integer value.
+av1Settings_gopSize :: Lens.Lens' Av1Settings (Prelude.Maybe Prelude.Double)
+av1Settings_gopSize = Lens.lens (\Av1Settings' {gopSize} -> gopSize) (\s@Av1Settings' {} a -> s {gopSize = a} :: Av1Settings)
+
+-- | Maximum bitrate in bits\/second. For example, enter five megabits per
+-- second as 5000000. Required when Rate control mode is QVBR.
+av1Settings_maxBitrate :: Lens.Lens' Av1Settings (Prelude.Maybe Prelude.Natural)
+av1Settings_maxBitrate = Lens.lens (\Av1Settings' {maxBitrate} -> maxBitrate) (\s@Av1Settings' {} a -> s {maxBitrate = a} :: Av1Settings)
+
+-- | Specify from the number of B-frames, in the range of 0-15. For AV1
+-- encoding, we recommend using 7 or 15. Choose a larger number for a lower
+-- bitrate and smaller file size; choose a smaller number for better video
+-- quality.
+av1Settings_numberBFramesBetweenReferenceFrames :: Lens.Lens' Av1Settings (Prelude.Maybe Prelude.Natural)
+av1Settings_numberBFramesBetweenReferenceFrames = Lens.lens (\Av1Settings' {numberBFramesBetweenReferenceFrames} -> numberBFramesBetweenReferenceFrames) (\s@Av1Settings' {} a -> s {numberBFramesBetweenReferenceFrames = a} :: Av1Settings)
+
+-- | Settings for quality-defined variable bitrate encoding with the H.265
+-- codec. Use these settings only when you set QVBR for Rate control mode
+-- (RateControlMode).
+av1Settings_qvbrSettings :: Lens.Lens' Av1Settings (Prelude.Maybe Av1QvbrSettings)
+av1Settings_qvbrSettings = Lens.lens (\Av1Settings' {qvbrSettings} -> qvbrSettings) (\s@Av1Settings' {} a -> s {qvbrSettings = a} :: Av1Settings)
+
+-- | \'With AV1 outputs, for rate control mode, MediaConvert supports only
+-- quality-defined variable bitrate (QVBR). You can\'\'t use CBR or VBR.\'
+av1Settings_rateControlMode :: Lens.Lens' Av1Settings (Prelude.Maybe Av1RateControlMode)
+av1Settings_rateControlMode = Lens.lens (\Av1Settings' {rateControlMode} -> rateControlMode) (\s@Av1Settings' {} a -> s {rateControlMode = a} :: Av1Settings)
+
+-- | Specify the number of slices per picture. This value must be 1, 2, 4, 8,
+-- 16, or 32. For progressive pictures, this value must be less than or
+-- equal to the number of macroblock rows. For interlaced pictures, this
+-- value must be less than or equal to half the number of macroblock rows.
+av1Settings_slices :: Lens.Lens' Av1Settings (Prelude.Maybe Prelude.Natural)
+av1Settings_slices = Lens.lens (\Av1Settings' {slices} -> slices) (\s@Av1Settings' {} a -> s {slices = a} :: Av1Settings)
+
+-- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on spatial variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas that can
+-- sustain more distortion with no noticeable visual degradation and uses
+-- more bits on areas where any small distortion will be noticeable. For
+-- example, complex textured blocks are encoded with fewer bits and smooth
+-- textured blocks are encoded with more bits. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen with a lot of complex texture, you might choose to
+-- disable this feature. Related setting: When you enable spatial adaptive
+-- quantization, set the value for Adaptive quantization
+-- (adaptiveQuantization) depending on your content. For homogeneous
+-- content, such as cartoons and video games, set it to Low. For content
+-- with a wider variety of textures, set it to High or Higher.
+av1Settings_spatialAdaptiveQuantization :: Lens.Lens' Av1Settings (Prelude.Maybe Av1SpatialAdaptiveQuantization)
+av1Settings_spatialAdaptiveQuantization = Lens.lens (\Av1Settings' {spatialAdaptiveQuantization} -> spatialAdaptiveQuantization) (\s@Av1Settings' {} a -> s {spatialAdaptiveQuantization = a} :: Av1Settings)
+
+instance Data.FromJSON Av1Settings where
+  parseJSON =
+    Data.withObject
+      "Av1Settings"
+      ( \x ->
+          Av1Settings'
+            Prelude.<$> (x Data..:? "adaptiveQuantization")
+            Prelude.<*> (x Data..:? "bitDepth")
+            Prelude.<*> (x Data..:? "framerateControl")
+            Prelude.<*> (x Data..:? "framerateConversionAlgorithm")
+            Prelude.<*> (x Data..:? "framerateDenominator")
+            Prelude.<*> (x Data..:? "framerateNumerator")
+            Prelude.<*> (x Data..:? "gopSize")
+            Prelude.<*> (x Data..:? "maxBitrate")
+            Prelude.<*> (x Data..:? "numberBFramesBetweenReferenceFrames")
+            Prelude.<*> (x Data..:? "qvbrSettings")
+            Prelude.<*> (x Data..:? "rateControlMode")
+            Prelude.<*> (x Data..:? "slices")
+            Prelude.<*> (x Data..:? "spatialAdaptiveQuantization")
+      )
+
+instance Prelude.Hashable Av1Settings where
+  hashWithSalt _salt Av1Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` adaptiveQuantization
+      `Prelude.hashWithSalt` bitDepth
+      `Prelude.hashWithSalt` framerateControl
+      `Prelude.hashWithSalt` framerateConversionAlgorithm
+      `Prelude.hashWithSalt` framerateDenominator
+      `Prelude.hashWithSalt` framerateNumerator
+      `Prelude.hashWithSalt` gopSize
+      `Prelude.hashWithSalt` maxBitrate
+      `Prelude.hashWithSalt` numberBFramesBetweenReferenceFrames
+      `Prelude.hashWithSalt` qvbrSettings
+      `Prelude.hashWithSalt` rateControlMode
+      `Prelude.hashWithSalt` slices
+      `Prelude.hashWithSalt` spatialAdaptiveQuantization
+
+instance Prelude.NFData Av1Settings where
+  rnf Av1Settings' {..} =
+    Prelude.rnf adaptiveQuantization
+      `Prelude.seq` Prelude.rnf bitDepth
+      `Prelude.seq` Prelude.rnf framerateControl
+      `Prelude.seq` Prelude.rnf framerateConversionAlgorithm
+      `Prelude.seq` Prelude.rnf framerateDenominator
+      `Prelude.seq` Prelude.rnf framerateNumerator
+      `Prelude.seq` Prelude.rnf gopSize
+      `Prelude.seq` Prelude.rnf maxBitrate
+      `Prelude.seq` Prelude.rnf numberBFramesBetweenReferenceFrames
+      `Prelude.seq` Prelude.rnf qvbrSettings
+      `Prelude.seq` Prelude.rnf rateControlMode
+      `Prelude.seq` Prelude.rnf slices
+      `Prelude.seq` Prelude.rnf spatialAdaptiveQuantization
+
+instance Data.ToJSON Av1Settings where
+  toJSON Av1Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("adaptiveQuantization" Data..=)
+              Prelude.<$> adaptiveQuantization,
+            ("bitDepth" Data..=) Prelude.<$> bitDepth,
+            ("framerateControl" Data..=)
+              Prelude.<$> framerateControl,
+            ("framerateConversionAlgorithm" Data..=)
+              Prelude.<$> framerateConversionAlgorithm,
+            ("framerateDenominator" Data..=)
+              Prelude.<$> framerateDenominator,
+            ("framerateNumerator" Data..=)
+              Prelude.<$> framerateNumerator,
+            ("gopSize" Data..=) Prelude.<$> gopSize,
+            ("maxBitrate" Data..=) Prelude.<$> maxBitrate,
+            ("numberBFramesBetweenReferenceFrames" Data..=)
+              Prelude.<$> numberBFramesBetweenReferenceFrames,
+            ("qvbrSettings" Data..=) Prelude.<$> qvbrSettings,
+            ("rateControlMode" Data..=)
+              Prelude.<$> rateControlMode,
+            ("slices" Data..=) Prelude.<$> slices,
+            ("spatialAdaptiveQuantization" Data..=)
+              Prelude.<$> spatialAdaptiveQuantization
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Av1SpatialAdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/Av1SpatialAdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Av1SpatialAdaptiveQuantization.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Av1SpatialAdaptiveQuantization
+-- 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.Av1SpatialAdaptiveQuantization
+  ( Av1SpatialAdaptiveQuantization
+      ( ..,
+        Av1SpatialAdaptiveQuantization_DISABLED,
+        Av1SpatialAdaptiveQuantization_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on spatial variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas that can
+-- sustain more distortion with no noticeable visual degradation and uses
+-- more bits on areas where any small distortion will be noticeable. For
+-- example, complex textured blocks are encoded with fewer bits and smooth
+-- textured blocks are encoded with more bits. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen with a lot of complex texture, you might choose to
+-- disable this feature. Related setting: When you enable spatial adaptive
+-- quantization, set the value for Adaptive quantization
+-- (adaptiveQuantization) depending on your content. For homogeneous
+-- content, such as cartoons and video games, set it to Low. For content
+-- with a wider variety of textures, set it to High or Higher.
+newtype Av1SpatialAdaptiveQuantization = Av1SpatialAdaptiveQuantization'
+  { fromAv1SpatialAdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Av1SpatialAdaptiveQuantization_DISABLED :: Av1SpatialAdaptiveQuantization
+pattern Av1SpatialAdaptiveQuantization_DISABLED = Av1SpatialAdaptiveQuantization' "DISABLED"
+
+pattern Av1SpatialAdaptiveQuantization_ENABLED :: Av1SpatialAdaptiveQuantization
+pattern Av1SpatialAdaptiveQuantization_ENABLED = Av1SpatialAdaptiveQuantization' "ENABLED"
+
+{-# COMPLETE
+  Av1SpatialAdaptiveQuantization_DISABLED,
+  Av1SpatialAdaptiveQuantization_ENABLED,
+  Av1SpatialAdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AvailBlanking.hs b/gen/Amazonka/MediaConvert/Types/AvailBlanking.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AvailBlanking.hs
@@ -0,0 +1,88 @@
+{-# 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.AvailBlanking
+-- 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.AvailBlanking where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use ad avail blanking settings to specify your output content during
+-- SCTE-35 triggered ad avails. You can blank your video or overlay it with
+-- an image. MediaConvert also removes any audio and embedded captions
+-- during the ad avail. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ad-avail-blanking.html.
+--
+-- /See:/ 'newAvailBlanking' smart constructor.
+data AvailBlanking = AvailBlanking'
+  { -- | Blanking image to be used. Leave empty for solid black. Only bmp and png
+    -- images are supported.
+    availBlankingImage :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AvailBlanking' 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:
+--
+-- 'availBlankingImage', 'availBlanking_availBlankingImage' - Blanking image to be used. Leave empty for solid black. Only bmp and png
+-- images are supported.
+newAvailBlanking ::
+  AvailBlanking
+newAvailBlanking =
+  AvailBlanking'
+    { availBlankingImage =
+        Prelude.Nothing
+    }
+
+-- | Blanking image to be used. Leave empty for solid black. Only bmp and png
+-- images are supported.
+availBlanking_availBlankingImage :: Lens.Lens' AvailBlanking (Prelude.Maybe Prelude.Text)
+availBlanking_availBlankingImage = Lens.lens (\AvailBlanking' {availBlankingImage} -> availBlankingImage) (\s@AvailBlanking' {} a -> s {availBlankingImage = a} :: AvailBlanking)
+
+instance Data.FromJSON AvailBlanking where
+  parseJSON =
+    Data.withObject
+      "AvailBlanking"
+      ( \x ->
+          AvailBlanking'
+            Prelude.<$> (x Data..:? "availBlankingImage")
+      )
+
+instance Prelude.Hashable AvailBlanking where
+  hashWithSalt _salt AvailBlanking' {..} =
+    _salt `Prelude.hashWithSalt` availBlankingImage
+
+instance Prelude.NFData AvailBlanking where
+  rnf AvailBlanking' {..} =
+    Prelude.rnf availBlankingImage
+
+instance Data.ToJSON AvailBlanking where
+  toJSON AvailBlanking' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("availBlankingImage" Data..=)
+              Prelude.<$> availBlankingImage
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AvcIntraClass.hs b/gen/Amazonka/MediaConvert/Types/AvcIntraClass.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AvcIntraClass.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AvcIntraClass
+-- 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.AvcIntraClass
+  ( AvcIntraClass
+      ( ..,
+        AvcIntraClass_CLASS_100,
+        AvcIntraClass_CLASS_200,
+        AvcIntraClass_CLASS_4K_2K,
+        AvcIntraClass_CLASS_50
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the AVC-Intra class of your output. The AVC-Intra class
+-- selection determines the output video bit rate depending on the frame
+-- rate of the output. Outputs with higher class values have higher
+-- bitrates and improved image quality. Note that for Class 4K\/2K,
+-- MediaConvert supports only 4:2:2 chroma subsampling.
+newtype AvcIntraClass = AvcIntraClass'
+  { fromAvcIntraClass ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AvcIntraClass_CLASS_100 :: AvcIntraClass
+pattern AvcIntraClass_CLASS_100 = AvcIntraClass' "CLASS_100"
+
+pattern AvcIntraClass_CLASS_200 :: AvcIntraClass
+pattern AvcIntraClass_CLASS_200 = AvcIntraClass' "CLASS_200"
+
+pattern AvcIntraClass_CLASS_4K_2K :: AvcIntraClass
+pattern AvcIntraClass_CLASS_4K_2K = AvcIntraClass' "CLASS_4K_2K"
+
+pattern AvcIntraClass_CLASS_50 :: AvcIntraClass
+pattern AvcIntraClass_CLASS_50 = AvcIntraClass' "CLASS_50"
+
+{-# COMPLETE
+  AvcIntraClass_CLASS_100,
+  AvcIntraClass_CLASS_200,
+  AvcIntraClass_CLASS_4K_2K,
+  AvcIntraClass_CLASS_50,
+  AvcIntraClass'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AvcIntraFramerateControl.hs b/gen/Amazonka/MediaConvert/Types/AvcIntraFramerateControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AvcIntraFramerateControl.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AvcIntraFramerateControl
+-- 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.AvcIntraFramerateControl
+  ( AvcIntraFramerateControl
+      ( ..,
+        AvcIntraFramerateControl_INITIALIZE_FROM_SOURCE,
+        AvcIntraFramerateControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+newtype AvcIntraFramerateControl = AvcIntraFramerateControl'
+  { fromAvcIntraFramerateControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AvcIntraFramerateControl_INITIALIZE_FROM_SOURCE :: AvcIntraFramerateControl
+pattern AvcIntraFramerateControl_INITIALIZE_FROM_SOURCE = AvcIntraFramerateControl' "INITIALIZE_FROM_SOURCE"
+
+pattern AvcIntraFramerateControl_SPECIFIED :: AvcIntraFramerateControl
+pattern AvcIntraFramerateControl_SPECIFIED = AvcIntraFramerateControl' "SPECIFIED"
+
+{-# COMPLETE
+  AvcIntraFramerateControl_INITIALIZE_FROM_SOURCE,
+  AvcIntraFramerateControl_SPECIFIED,
+  AvcIntraFramerateControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AvcIntraFramerateConversionAlgorithm.hs b/gen/Amazonka/MediaConvert/Types/AvcIntraFramerateConversionAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AvcIntraFramerateConversionAlgorithm.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AvcIntraFramerateConversionAlgorithm
+-- 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.AvcIntraFramerateConversionAlgorithm
+  ( AvcIntraFramerateConversionAlgorithm
+      ( ..,
+        AvcIntraFramerateConversionAlgorithm_DUPLICATE_DROP,
+        AvcIntraFramerateConversionAlgorithm_FRAMEFORMER,
+        AvcIntraFramerateConversionAlgorithm_INTERPOLATE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+newtype AvcIntraFramerateConversionAlgorithm = AvcIntraFramerateConversionAlgorithm'
+  { fromAvcIntraFramerateConversionAlgorithm ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AvcIntraFramerateConversionAlgorithm_DUPLICATE_DROP :: AvcIntraFramerateConversionAlgorithm
+pattern AvcIntraFramerateConversionAlgorithm_DUPLICATE_DROP = AvcIntraFramerateConversionAlgorithm' "DUPLICATE_DROP"
+
+pattern AvcIntraFramerateConversionAlgorithm_FRAMEFORMER :: AvcIntraFramerateConversionAlgorithm
+pattern AvcIntraFramerateConversionAlgorithm_FRAMEFORMER = AvcIntraFramerateConversionAlgorithm' "FRAMEFORMER"
+
+pattern AvcIntraFramerateConversionAlgorithm_INTERPOLATE :: AvcIntraFramerateConversionAlgorithm
+pattern AvcIntraFramerateConversionAlgorithm_INTERPOLATE = AvcIntraFramerateConversionAlgorithm' "INTERPOLATE"
+
+{-# COMPLETE
+  AvcIntraFramerateConversionAlgorithm_DUPLICATE_DROP,
+  AvcIntraFramerateConversionAlgorithm_FRAMEFORMER,
+  AvcIntraFramerateConversionAlgorithm_INTERPOLATE,
+  AvcIntraFramerateConversionAlgorithm'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AvcIntraInterlaceMode.hs b/gen/Amazonka/MediaConvert/Types/AvcIntraInterlaceMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AvcIntraInterlaceMode.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AvcIntraInterlaceMode
+-- 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.AvcIntraInterlaceMode
+  ( AvcIntraInterlaceMode
+      ( ..,
+        AvcIntraInterlaceMode_BOTTOM_FIELD,
+        AvcIntraInterlaceMode_FOLLOW_BOTTOM_FIELD,
+        AvcIntraInterlaceMode_FOLLOW_TOP_FIELD,
+        AvcIntraInterlaceMode_PROGRESSIVE,
+        AvcIntraInterlaceMode_TOP_FIELD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+newtype AvcIntraInterlaceMode = AvcIntraInterlaceMode'
+  { fromAvcIntraInterlaceMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AvcIntraInterlaceMode_BOTTOM_FIELD :: AvcIntraInterlaceMode
+pattern AvcIntraInterlaceMode_BOTTOM_FIELD = AvcIntraInterlaceMode' "BOTTOM_FIELD"
+
+pattern AvcIntraInterlaceMode_FOLLOW_BOTTOM_FIELD :: AvcIntraInterlaceMode
+pattern AvcIntraInterlaceMode_FOLLOW_BOTTOM_FIELD = AvcIntraInterlaceMode' "FOLLOW_BOTTOM_FIELD"
+
+pattern AvcIntraInterlaceMode_FOLLOW_TOP_FIELD :: AvcIntraInterlaceMode
+pattern AvcIntraInterlaceMode_FOLLOW_TOP_FIELD = AvcIntraInterlaceMode' "FOLLOW_TOP_FIELD"
+
+pattern AvcIntraInterlaceMode_PROGRESSIVE :: AvcIntraInterlaceMode
+pattern AvcIntraInterlaceMode_PROGRESSIVE = AvcIntraInterlaceMode' "PROGRESSIVE"
+
+pattern AvcIntraInterlaceMode_TOP_FIELD :: AvcIntraInterlaceMode
+pattern AvcIntraInterlaceMode_TOP_FIELD = AvcIntraInterlaceMode' "TOP_FIELD"
+
+{-# COMPLETE
+  AvcIntraInterlaceMode_BOTTOM_FIELD,
+  AvcIntraInterlaceMode_FOLLOW_BOTTOM_FIELD,
+  AvcIntraInterlaceMode_FOLLOW_TOP_FIELD,
+  AvcIntraInterlaceMode_PROGRESSIVE,
+  AvcIntraInterlaceMode_TOP_FIELD,
+  AvcIntraInterlaceMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AvcIntraScanTypeConversionMode.hs b/gen/Amazonka/MediaConvert/Types/AvcIntraScanTypeConversionMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AvcIntraScanTypeConversionMode.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AvcIntraScanTypeConversionMode
+-- 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.AvcIntraScanTypeConversionMode
+  ( AvcIntraScanTypeConversionMode
+      ( ..,
+        AvcIntraScanTypeConversionMode_INTERLACED,
+        AvcIntraScanTypeConversionMode_INTERLACED_OPTIMIZE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+newtype AvcIntraScanTypeConversionMode = AvcIntraScanTypeConversionMode'
+  { fromAvcIntraScanTypeConversionMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AvcIntraScanTypeConversionMode_INTERLACED :: AvcIntraScanTypeConversionMode
+pattern AvcIntraScanTypeConversionMode_INTERLACED = AvcIntraScanTypeConversionMode' "INTERLACED"
+
+pattern AvcIntraScanTypeConversionMode_INTERLACED_OPTIMIZE :: AvcIntraScanTypeConversionMode
+pattern AvcIntraScanTypeConversionMode_INTERLACED_OPTIMIZE = AvcIntraScanTypeConversionMode' "INTERLACED_OPTIMIZE"
+
+{-# COMPLETE
+  AvcIntraScanTypeConversionMode_INTERLACED,
+  AvcIntraScanTypeConversionMode_INTERLACED_OPTIMIZE,
+  AvcIntraScanTypeConversionMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AvcIntraSettings.hs b/gen/Amazonka/MediaConvert/Types/AvcIntraSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AvcIntraSettings.hs
@@ -0,0 +1,450 @@
+{-# 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.AvcIntraSettings
+-- 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.AvcIntraSettings 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.AvcIntraClass
+import Amazonka.MediaConvert.Types.AvcIntraFramerateControl
+import Amazonka.MediaConvert.Types.AvcIntraFramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.AvcIntraInterlaceMode
+import Amazonka.MediaConvert.Types.AvcIntraScanTypeConversionMode
+import Amazonka.MediaConvert.Types.AvcIntraSlowPal
+import Amazonka.MediaConvert.Types.AvcIntraTelecine
+import Amazonka.MediaConvert.Types.AvcIntraUhdSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you choose AVC-Intra for your output video codec. For more
+-- information about the AVC-Intra settings, see the relevant
+-- specification. For detailed information about SD and HD in AVC-Intra,
+-- see https:\/\/ieeexplore.ieee.org\/document\/7290936. For information
+-- about 4K\/2K in AVC-Intra, see
+-- https:\/\/pro-av.panasonic.net\/en\/avc-ultra\/AVC-ULTRAoverview.pdf.
+--
+-- /See:/ 'newAvcIntraSettings' smart constructor.
+data AvcIntraSettings = AvcIntraSettings'
+  { -- | Specify the AVC-Intra class of your output. The AVC-Intra class
+    -- selection determines the output video bit rate depending on the frame
+    -- rate of the output. Outputs with higher class values have higher
+    -- bitrates and improved image quality. Note that for Class 4K\/2K,
+    -- MediaConvert supports only 4:2:2 chroma subsampling.
+    avcIntraClass :: Prelude.Maybe AvcIntraClass,
+    -- | Optional when you set AVC-Intra class (avcIntraClass) to Class 4K\/2K
+    -- (CLASS_4K_2K). When you set AVC-Intra class to a different value, this
+    -- object isn\'t allowed.
+    avcIntraUhdSettings :: Prelude.Maybe AvcIntraUhdSettings,
+    -- | If you are using the console, use the Framerate setting to specify the
+    -- frame rate for this output. If you want to keep the same frame rate as
+    -- the input video, choose Follow source. If you want to do frame rate
+    -- conversion, choose a frame rate from the dropdown list or choose Custom.
+    -- The framerates shown in the dropdown list are decimal approximations of
+    -- fractions. If you choose Custom, specify your frame rate as a fraction.
+    -- If you are creating your transcoding job specification as a JSON file
+    -- without the console, use FramerateControl to specify which value the
+    -- service uses for the frame rate for this output. Choose
+    -- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+    -- from the input. Choose SPECIFIED if you want the service to use the
+    -- frame rate you specify in the settings FramerateNumerator and
+    -- FramerateDenominator.
+    framerateControl :: Prelude.Maybe AvcIntraFramerateControl,
+    -- | Choose the method that you want MediaConvert to use when increasing or
+    -- decreasing the frame rate. We recommend using drop duplicate
+    -- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+    -- 30 fps. For numerically complex conversions, you can use interpolate
+    -- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+    -- might introduce undesirable video artifacts. For complex frame rate
+    -- conversions, especially if your source video has already been converted
+    -- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+    -- motion-compensated interpolation. FrameFormer chooses the best
+    -- conversion method frame by frame. Note that using FrameFormer increases
+    -- the transcoding time and incurs a significant add-on cost.
+    framerateConversionAlgorithm :: Prelude.Maybe AvcIntraFramerateConversionAlgorithm,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+    -- fraction. In this example, use 1001 for the value of
+    -- FramerateDenominator. When you use the console for transcode jobs that
+    -- use frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+    -- fraction. In this example, use 24000 for the value of
+    -- FramerateNumerator. When you use the console for transcode jobs that use
+    -- frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | Choose the scan line type for the output. Keep the default value,
+    -- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+    -- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+    -- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+    -- the same field polarity throughout. Use Follow, default top
+    -- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+    -- produce outputs with the same field polarity as the source. For jobs
+    -- that have multiple inputs, the output field polarity might change over
+    -- the course of the output. Follow behavior depends on the input scan
+    -- type. If the source is interlaced, the output will be interlaced with
+    -- the same polarity as the source. If the source is progressive, the
+    -- output will be interlaced with top field bottom field first, depending
+    -- on which of the Follow options you choose.
+    interlaceMode :: Prelude.Maybe AvcIntraInterlaceMode,
+    -- | Use this setting for interlaced outputs, when your output frame rate is
+    -- half of your input frame rate. In this situation, choose Optimized
+    -- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+    -- output. In this case, each progressive frame from the input corresponds
+    -- to an interlaced field in the output. Keep the default value, Basic
+    -- interlacing (INTERLACED), for all other output frame rates. With basic
+    -- interlacing, MediaConvert performs any frame rate conversion first and
+    -- then interlaces the frames. When you choose Optimized interlacing and
+    -- you set your output frame rate to a value that isn\'t suitable for
+    -- optimized interlacing, MediaConvert automatically falls back to basic
+    -- interlacing. Required settings: To use optimized interlacing, you must
+    -- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+    -- optimized interlacing for hard telecine outputs. You must also set
+    -- Interlace mode (interlaceMode) to a value other than Progressive
+    -- (PROGRESSIVE).
+    scanTypeConversionMode :: Prelude.Maybe AvcIntraScanTypeConversionMode,
+    -- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+    -- per second (fps). Enable slow PAL to create a 25 fps output. When you
+    -- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+    -- resamples your audio to keep it synchronized with the video. Note that
+    -- enabling this setting will slightly reduce the duration of your video.
+    -- Required settings: You must also set Framerate to 25. In your JSON job
+    -- specification, set (framerateControl) to (SPECIFIED),
+    -- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+    slowPal :: Prelude.Maybe AvcIntraSlowPal,
+    -- | When you do frame rate conversion from 23.976 frames per second (fps) to
+    -- 29.97 fps, and your output scan type is interlaced, you can optionally
+    -- enable hard telecine (HARD) to create a smoother picture. When you keep
+    -- the default value, None (NONE), MediaConvert does a standard frame rate
+    -- conversion to 29.97 without doing anything with the field polarity to
+    -- create a smoother picture.
+    telecine :: Prelude.Maybe AvcIntraTelecine
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AvcIntraSettings' 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:
+--
+-- 'avcIntraClass', 'avcIntraSettings_avcIntraClass' - Specify the AVC-Intra class of your output. The AVC-Intra class
+-- selection determines the output video bit rate depending on the frame
+-- rate of the output. Outputs with higher class values have higher
+-- bitrates and improved image quality. Note that for Class 4K\/2K,
+-- MediaConvert supports only 4:2:2 chroma subsampling.
+--
+-- 'avcIntraUhdSettings', 'avcIntraSettings_avcIntraUhdSettings' - Optional when you set AVC-Intra class (avcIntraClass) to Class 4K\/2K
+-- (CLASS_4K_2K). When you set AVC-Intra class to a different value, this
+-- object isn\'t allowed.
+--
+-- 'framerateControl', 'avcIntraSettings_framerateControl' - If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+--
+-- 'framerateConversionAlgorithm', 'avcIntraSettings_framerateConversionAlgorithm' - Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+--
+-- 'framerateDenominator', 'avcIntraSettings_framerateDenominator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'framerateNumerator', 'avcIntraSettings_framerateNumerator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'interlaceMode', 'avcIntraSettings_interlaceMode' - Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+--
+-- 'scanTypeConversionMode', 'avcIntraSettings_scanTypeConversionMode' - Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+--
+-- 'slowPal', 'avcIntraSettings_slowPal' - Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+--
+-- 'telecine', 'avcIntraSettings_telecine' - When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard telecine (HARD) to create a smoother picture. When you keep
+-- the default value, None (NONE), MediaConvert does a standard frame rate
+-- conversion to 29.97 without doing anything with the field polarity to
+-- create a smoother picture.
+newAvcIntraSettings ::
+  AvcIntraSettings
+newAvcIntraSettings =
+  AvcIntraSettings'
+    { avcIntraClass = Prelude.Nothing,
+      avcIntraUhdSettings = Prelude.Nothing,
+      framerateControl = Prelude.Nothing,
+      framerateConversionAlgorithm = Prelude.Nothing,
+      framerateDenominator = Prelude.Nothing,
+      framerateNumerator = Prelude.Nothing,
+      interlaceMode = Prelude.Nothing,
+      scanTypeConversionMode = Prelude.Nothing,
+      slowPal = Prelude.Nothing,
+      telecine = Prelude.Nothing
+    }
+
+-- | Specify the AVC-Intra class of your output. The AVC-Intra class
+-- selection determines the output video bit rate depending on the frame
+-- rate of the output. Outputs with higher class values have higher
+-- bitrates and improved image quality. Note that for Class 4K\/2K,
+-- MediaConvert supports only 4:2:2 chroma subsampling.
+avcIntraSettings_avcIntraClass :: Lens.Lens' AvcIntraSettings (Prelude.Maybe AvcIntraClass)
+avcIntraSettings_avcIntraClass = Lens.lens (\AvcIntraSettings' {avcIntraClass} -> avcIntraClass) (\s@AvcIntraSettings' {} a -> s {avcIntraClass = a} :: AvcIntraSettings)
+
+-- | Optional when you set AVC-Intra class (avcIntraClass) to Class 4K\/2K
+-- (CLASS_4K_2K). When you set AVC-Intra class to a different value, this
+-- object isn\'t allowed.
+avcIntraSettings_avcIntraUhdSettings :: Lens.Lens' AvcIntraSettings (Prelude.Maybe AvcIntraUhdSettings)
+avcIntraSettings_avcIntraUhdSettings = Lens.lens (\AvcIntraSettings' {avcIntraUhdSettings} -> avcIntraUhdSettings) (\s@AvcIntraSettings' {} a -> s {avcIntraUhdSettings = a} :: AvcIntraSettings)
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+avcIntraSettings_framerateControl :: Lens.Lens' AvcIntraSettings (Prelude.Maybe AvcIntraFramerateControl)
+avcIntraSettings_framerateControl = Lens.lens (\AvcIntraSettings' {framerateControl} -> framerateControl) (\s@AvcIntraSettings' {} a -> s {framerateControl = a} :: AvcIntraSettings)
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+avcIntraSettings_framerateConversionAlgorithm :: Lens.Lens' AvcIntraSettings (Prelude.Maybe AvcIntraFramerateConversionAlgorithm)
+avcIntraSettings_framerateConversionAlgorithm = Lens.lens (\AvcIntraSettings' {framerateConversionAlgorithm} -> framerateConversionAlgorithm) (\s@AvcIntraSettings' {} a -> s {framerateConversionAlgorithm = a} :: AvcIntraSettings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+avcIntraSettings_framerateDenominator :: Lens.Lens' AvcIntraSettings (Prelude.Maybe Prelude.Natural)
+avcIntraSettings_framerateDenominator = Lens.lens (\AvcIntraSettings' {framerateDenominator} -> framerateDenominator) (\s@AvcIntraSettings' {} a -> s {framerateDenominator = a} :: AvcIntraSettings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+avcIntraSettings_framerateNumerator :: Lens.Lens' AvcIntraSettings (Prelude.Maybe Prelude.Natural)
+avcIntraSettings_framerateNumerator = Lens.lens (\AvcIntraSettings' {framerateNumerator} -> framerateNumerator) (\s@AvcIntraSettings' {} a -> s {framerateNumerator = a} :: AvcIntraSettings)
+
+-- | Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+avcIntraSettings_interlaceMode :: Lens.Lens' AvcIntraSettings (Prelude.Maybe AvcIntraInterlaceMode)
+avcIntraSettings_interlaceMode = Lens.lens (\AvcIntraSettings' {interlaceMode} -> interlaceMode) (\s@AvcIntraSettings' {} a -> s {interlaceMode = a} :: AvcIntraSettings)
+
+-- | Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+avcIntraSettings_scanTypeConversionMode :: Lens.Lens' AvcIntraSettings (Prelude.Maybe AvcIntraScanTypeConversionMode)
+avcIntraSettings_scanTypeConversionMode = Lens.lens (\AvcIntraSettings' {scanTypeConversionMode} -> scanTypeConversionMode) (\s@AvcIntraSettings' {} a -> s {scanTypeConversionMode = a} :: AvcIntraSettings)
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+avcIntraSettings_slowPal :: Lens.Lens' AvcIntraSettings (Prelude.Maybe AvcIntraSlowPal)
+avcIntraSettings_slowPal = Lens.lens (\AvcIntraSettings' {slowPal} -> slowPal) (\s@AvcIntraSettings' {} a -> s {slowPal = a} :: AvcIntraSettings)
+
+-- | When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard telecine (HARD) to create a smoother picture. When you keep
+-- the default value, None (NONE), MediaConvert does a standard frame rate
+-- conversion to 29.97 without doing anything with the field polarity to
+-- create a smoother picture.
+avcIntraSettings_telecine :: Lens.Lens' AvcIntraSettings (Prelude.Maybe AvcIntraTelecine)
+avcIntraSettings_telecine = Lens.lens (\AvcIntraSettings' {telecine} -> telecine) (\s@AvcIntraSettings' {} a -> s {telecine = a} :: AvcIntraSettings)
+
+instance Data.FromJSON AvcIntraSettings where
+  parseJSON =
+    Data.withObject
+      "AvcIntraSettings"
+      ( \x ->
+          AvcIntraSettings'
+            Prelude.<$> (x Data..:? "avcIntraClass")
+            Prelude.<*> (x Data..:? "avcIntraUhdSettings")
+            Prelude.<*> (x Data..:? "framerateControl")
+            Prelude.<*> (x Data..:? "framerateConversionAlgorithm")
+            Prelude.<*> (x Data..:? "framerateDenominator")
+            Prelude.<*> (x Data..:? "framerateNumerator")
+            Prelude.<*> (x Data..:? "interlaceMode")
+            Prelude.<*> (x Data..:? "scanTypeConversionMode")
+            Prelude.<*> (x Data..:? "slowPal")
+            Prelude.<*> (x Data..:? "telecine")
+      )
+
+instance Prelude.Hashable AvcIntraSettings where
+  hashWithSalt _salt AvcIntraSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` avcIntraClass
+      `Prelude.hashWithSalt` avcIntraUhdSettings
+      `Prelude.hashWithSalt` framerateControl
+      `Prelude.hashWithSalt` framerateConversionAlgorithm
+      `Prelude.hashWithSalt` framerateDenominator
+      `Prelude.hashWithSalt` framerateNumerator
+      `Prelude.hashWithSalt` interlaceMode
+      `Prelude.hashWithSalt` scanTypeConversionMode
+      `Prelude.hashWithSalt` slowPal
+      `Prelude.hashWithSalt` telecine
+
+instance Prelude.NFData AvcIntraSettings where
+  rnf AvcIntraSettings' {..} =
+    Prelude.rnf avcIntraClass
+      `Prelude.seq` Prelude.rnf avcIntraUhdSettings
+      `Prelude.seq` Prelude.rnf framerateControl
+      `Prelude.seq` Prelude.rnf framerateConversionAlgorithm
+      `Prelude.seq` Prelude.rnf framerateDenominator
+      `Prelude.seq` Prelude.rnf framerateNumerator
+      `Prelude.seq` Prelude.rnf interlaceMode
+      `Prelude.seq` Prelude.rnf scanTypeConversionMode
+      `Prelude.seq` Prelude.rnf slowPal
+      `Prelude.seq` Prelude.rnf telecine
+
+instance Data.ToJSON AvcIntraSettings where
+  toJSON AvcIntraSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("avcIntraClass" Data..=) Prelude.<$> avcIntraClass,
+            ("avcIntraUhdSettings" Data..=)
+              Prelude.<$> avcIntraUhdSettings,
+            ("framerateControl" Data..=)
+              Prelude.<$> framerateControl,
+            ("framerateConversionAlgorithm" Data..=)
+              Prelude.<$> framerateConversionAlgorithm,
+            ("framerateDenominator" Data..=)
+              Prelude.<$> framerateDenominator,
+            ("framerateNumerator" Data..=)
+              Prelude.<$> framerateNumerator,
+            ("interlaceMode" Data..=) Prelude.<$> interlaceMode,
+            ("scanTypeConversionMode" Data..=)
+              Prelude.<$> scanTypeConversionMode,
+            ("slowPal" Data..=) Prelude.<$> slowPal,
+            ("telecine" Data..=) Prelude.<$> telecine
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/AvcIntraSlowPal.hs b/gen/Amazonka/MediaConvert/Types/AvcIntraSlowPal.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AvcIntraSlowPal.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AvcIntraSlowPal
+-- 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.AvcIntraSlowPal
+  ( AvcIntraSlowPal
+      ( ..,
+        AvcIntraSlowPal_DISABLED,
+        AvcIntraSlowPal_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+newtype AvcIntraSlowPal = AvcIntraSlowPal'
+  { fromAvcIntraSlowPal ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AvcIntraSlowPal_DISABLED :: AvcIntraSlowPal
+pattern AvcIntraSlowPal_DISABLED = AvcIntraSlowPal' "DISABLED"
+
+pattern AvcIntraSlowPal_ENABLED :: AvcIntraSlowPal
+pattern AvcIntraSlowPal_ENABLED = AvcIntraSlowPal' "ENABLED"
+
+{-# COMPLETE
+  AvcIntraSlowPal_DISABLED,
+  AvcIntraSlowPal_ENABLED,
+  AvcIntraSlowPal'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AvcIntraTelecine.hs b/gen/Amazonka/MediaConvert/Types/AvcIntraTelecine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AvcIntraTelecine.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AvcIntraTelecine
+-- 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.AvcIntraTelecine
+  ( AvcIntraTelecine
+      ( ..,
+        AvcIntraTelecine_HARD,
+        AvcIntraTelecine_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard telecine (HARD) to create a smoother picture. When you keep
+-- the default value, None (NONE), MediaConvert does a standard frame rate
+-- conversion to 29.97 without doing anything with the field polarity to
+-- create a smoother picture.
+newtype AvcIntraTelecine = AvcIntraTelecine'
+  { fromAvcIntraTelecine ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AvcIntraTelecine_HARD :: AvcIntraTelecine
+pattern AvcIntraTelecine_HARD = AvcIntraTelecine' "HARD"
+
+pattern AvcIntraTelecine_NONE :: AvcIntraTelecine
+pattern AvcIntraTelecine_NONE = AvcIntraTelecine' "NONE"
+
+{-# COMPLETE
+  AvcIntraTelecine_HARD,
+  AvcIntraTelecine_NONE,
+  AvcIntraTelecine'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AvcIntraUhdQualityTuningLevel.hs b/gen/Amazonka/MediaConvert/Types/AvcIntraUhdQualityTuningLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AvcIntraUhdQualityTuningLevel.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.AvcIntraUhdQualityTuningLevel
+-- 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.AvcIntraUhdQualityTuningLevel
+  ( AvcIntraUhdQualityTuningLevel
+      ( ..,
+        AvcIntraUhdQualityTuningLevel_MULTI_PASS,
+        AvcIntraUhdQualityTuningLevel_SINGLE_PASS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- many transcoding passes MediaConvert does with your video. When you
+-- choose Multi-pass (MULTI_PASS), your video quality is better and your
+-- output bitrate is more accurate. That is, the actual bitrate of your
+-- output is closer to the target bitrate defined in the specification.
+-- When you choose Single-pass (SINGLE_PASS), your encoding time is faster.
+-- The default behavior is Single-pass (SINGLE_PASS).
+newtype AvcIntraUhdQualityTuningLevel = AvcIntraUhdQualityTuningLevel'
+  { fromAvcIntraUhdQualityTuningLevel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AvcIntraUhdQualityTuningLevel_MULTI_PASS :: AvcIntraUhdQualityTuningLevel
+pattern AvcIntraUhdQualityTuningLevel_MULTI_PASS = AvcIntraUhdQualityTuningLevel' "MULTI_PASS"
+
+pattern AvcIntraUhdQualityTuningLevel_SINGLE_PASS :: AvcIntraUhdQualityTuningLevel
+pattern AvcIntraUhdQualityTuningLevel_SINGLE_PASS = AvcIntraUhdQualityTuningLevel' "SINGLE_PASS"
+
+{-# COMPLETE
+  AvcIntraUhdQualityTuningLevel_MULTI_PASS,
+  AvcIntraUhdQualityTuningLevel_SINGLE_PASS,
+  AvcIntraUhdQualityTuningLevel'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/AvcIntraUhdSettings.hs b/gen/Amazonka/MediaConvert/Types/AvcIntraUhdSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/AvcIntraUhdSettings.hs
@@ -0,0 +1,102 @@
+{-# 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.AvcIntraUhdSettings
+-- 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.AvcIntraUhdSettings 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.AvcIntraUhdQualityTuningLevel
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional when you set AVC-Intra class (avcIntraClass) to Class 4K\/2K
+-- (CLASS_4K_2K). When you set AVC-Intra class to a different value, this
+-- object isn\'t allowed.
+--
+-- /See:/ 'newAvcIntraUhdSettings' smart constructor.
+data AvcIntraUhdSettings = AvcIntraUhdSettings'
+  { -- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+    -- many transcoding passes MediaConvert does with your video. When you
+    -- choose Multi-pass (MULTI_PASS), your video quality is better and your
+    -- output bitrate is more accurate. That is, the actual bitrate of your
+    -- output is closer to the target bitrate defined in the specification.
+    -- When you choose Single-pass (SINGLE_PASS), your encoding time is faster.
+    -- The default behavior is Single-pass (SINGLE_PASS).
+    qualityTuningLevel :: Prelude.Maybe AvcIntraUhdQualityTuningLevel
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AvcIntraUhdSettings' 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:
+--
+-- 'qualityTuningLevel', 'avcIntraUhdSettings_qualityTuningLevel' - Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- many transcoding passes MediaConvert does with your video. When you
+-- choose Multi-pass (MULTI_PASS), your video quality is better and your
+-- output bitrate is more accurate. That is, the actual bitrate of your
+-- output is closer to the target bitrate defined in the specification.
+-- When you choose Single-pass (SINGLE_PASS), your encoding time is faster.
+-- The default behavior is Single-pass (SINGLE_PASS).
+newAvcIntraUhdSettings ::
+  AvcIntraUhdSettings
+newAvcIntraUhdSettings =
+  AvcIntraUhdSettings'
+    { qualityTuningLevel =
+        Prelude.Nothing
+    }
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- many transcoding passes MediaConvert does with your video. When you
+-- choose Multi-pass (MULTI_PASS), your video quality is better and your
+-- output bitrate is more accurate. That is, the actual bitrate of your
+-- output is closer to the target bitrate defined in the specification.
+-- When you choose Single-pass (SINGLE_PASS), your encoding time is faster.
+-- The default behavior is Single-pass (SINGLE_PASS).
+avcIntraUhdSettings_qualityTuningLevel :: Lens.Lens' AvcIntraUhdSettings (Prelude.Maybe AvcIntraUhdQualityTuningLevel)
+avcIntraUhdSettings_qualityTuningLevel = Lens.lens (\AvcIntraUhdSettings' {qualityTuningLevel} -> qualityTuningLevel) (\s@AvcIntraUhdSettings' {} a -> s {qualityTuningLevel = a} :: AvcIntraUhdSettings)
+
+instance Data.FromJSON AvcIntraUhdSettings where
+  parseJSON =
+    Data.withObject
+      "AvcIntraUhdSettings"
+      ( \x ->
+          AvcIntraUhdSettings'
+            Prelude.<$> (x Data..:? "qualityTuningLevel")
+      )
+
+instance Prelude.Hashable AvcIntraUhdSettings where
+  hashWithSalt _salt AvcIntraUhdSettings' {..} =
+    _salt `Prelude.hashWithSalt` qualityTuningLevel
+
+instance Prelude.NFData AvcIntraUhdSettings where
+  rnf AvcIntraUhdSettings' {..} =
+    Prelude.rnf qualityTuningLevel
+
+instance Data.ToJSON AvcIntraUhdSettings where
+  toJSON AvcIntraUhdSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("qualityTuningLevel" Data..=)
+              Prelude.<$> qualityTuningLevel
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/BillingTagsSource.hs b/gen/Amazonka/MediaConvert/Types/BillingTagsSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/BillingTagsSource.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.BillingTagsSource
+-- 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.BillingTagsSource
+  ( BillingTagsSource
+      ( ..,
+        BillingTagsSource_JOB,
+        BillingTagsSource_JOB_TEMPLATE,
+        BillingTagsSource_PRESET,
+        BillingTagsSource_QUEUE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The tag type that AWS Billing and Cost Management will use to sort your
+-- AWS Elemental MediaConvert costs on any billing report that you set up.
+newtype BillingTagsSource = BillingTagsSource'
+  { fromBillingTagsSource ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BillingTagsSource_JOB :: BillingTagsSource
+pattern BillingTagsSource_JOB = BillingTagsSource' "JOB"
+
+pattern BillingTagsSource_JOB_TEMPLATE :: BillingTagsSource
+pattern BillingTagsSource_JOB_TEMPLATE = BillingTagsSource' "JOB_TEMPLATE"
+
+pattern BillingTagsSource_PRESET :: BillingTagsSource
+pattern BillingTagsSource_PRESET = BillingTagsSource' "PRESET"
+
+pattern BillingTagsSource_QUEUE :: BillingTagsSource
+pattern BillingTagsSource_QUEUE = BillingTagsSource' "QUEUE"
+
+{-# COMPLETE
+  BillingTagsSource_JOB,
+  BillingTagsSource_JOB_TEMPLATE,
+  BillingTagsSource_PRESET,
+  BillingTagsSource_QUEUE,
+  BillingTagsSource'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/BurnInSubtitleStylePassthrough.hs b/gen/Amazonka/MediaConvert/Types/BurnInSubtitleStylePassthrough.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/BurnInSubtitleStylePassthrough.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.BurnInSubtitleStylePassthrough
+-- 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.BurnInSubtitleStylePassthrough
+  ( BurnInSubtitleStylePassthrough
+      ( ..,
+        BurnInSubtitleStylePassthrough_DISABLED,
+        BurnInSubtitleStylePassthrough_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Set Style passthrough (StylePassthrough) to ENABLED to use the available
+-- style, color, and position information from your input captions.
+-- MediaConvert uses default settings for any missing style and position
+-- information in your input captions. Set Style passthrough to DISABLED,
+-- or leave blank, to ignore the style and position information from your
+-- input captions and use default settings: white text with black
+-- outlining, bottom-center positioning, and automatic sizing. Whether you
+-- set Style passthrough to enabled or not, you can also choose to manually
+-- override any of the individual style and position settings.
+newtype BurnInSubtitleStylePassthrough = BurnInSubtitleStylePassthrough'
+  { fromBurnInSubtitleStylePassthrough ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BurnInSubtitleStylePassthrough_DISABLED :: BurnInSubtitleStylePassthrough
+pattern BurnInSubtitleStylePassthrough_DISABLED = BurnInSubtitleStylePassthrough' "DISABLED"
+
+pattern BurnInSubtitleStylePassthrough_ENABLED :: BurnInSubtitleStylePassthrough
+pattern BurnInSubtitleStylePassthrough_ENABLED = BurnInSubtitleStylePassthrough' "ENABLED"
+
+{-# COMPLETE
+  BurnInSubtitleStylePassthrough_DISABLED,
+  BurnInSubtitleStylePassthrough_ENABLED,
+  BurnInSubtitleStylePassthrough'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/BurninDestinationSettings.hs b/gen/Amazonka/MediaConvert/Types/BurninDestinationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/BurninDestinationSettings.hs
@@ -0,0 +1,610 @@
+{-# 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.BurninDestinationSettings
+-- 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.BurninDestinationSettings 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.BurnInSubtitleStylePassthrough
+import Amazonka.MediaConvert.Types.BurninSubtitleAlignment
+import Amazonka.MediaConvert.Types.BurninSubtitleApplyFontColor
+import Amazonka.MediaConvert.Types.BurninSubtitleBackgroundColor
+import Amazonka.MediaConvert.Types.BurninSubtitleFallbackFont
+import Amazonka.MediaConvert.Types.BurninSubtitleFontColor
+import Amazonka.MediaConvert.Types.BurninSubtitleOutlineColor
+import Amazonka.MediaConvert.Types.BurninSubtitleShadowColor
+import Amazonka.MediaConvert.Types.BurninSubtitleTeletextSpacing
+import Amazonka.MediaConvert.Types.FontScript
+import qualified Amazonka.Prelude as Prelude
+
+-- | Burn-in is a captions delivery method, rather than a captions format.
+-- Burn-in writes the captions directly on your video frames, replacing
+-- pixels of video content with the captions. Set up burn-in captions in
+-- the same output as your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/burn-in-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to
+-- BURN_IN.
+--
+-- /See:/ 'newBurninDestinationSettings' smart constructor.
+data BurninDestinationSettings = BurninDestinationSettings'
+  { -- | Specify the alignment of your captions. If no explicit x_position is
+    -- provided, setting alignment to centered will placethe captions at the
+    -- bottom center of the output. Similarly, setting a left alignment
+    -- willalign captions to the bottom left of the output. If x and y
+    -- positions are given in conjunction with the alignment parameter, the
+    -- font will be justified (either left or centered) relative to those
+    -- coordinates.
+    alignment :: Prelude.Maybe BurninSubtitleAlignment,
+    -- | Ignore this setting unless Style passthrough (StylePassthrough) is set
+    -- to Enabled and Font color (FontColor) set to Black, Yellow, Red, Green,
+    -- Blue, or Hex. Use Apply font color (ApplyFontColor) for additional font
+    -- color controls. When you choose White text only (WHITE_TEXT_ONLY), or
+    -- leave blank, your font color setting only applies to white text in your
+    -- input captions. For example, if your font color setting is Yellow, and
+    -- your input captions have red and white text, your output captions will
+    -- have red and yellow text. When you choose ALL_TEXT, your font color
+    -- setting applies to all of your output captions text.
+    applyFontColor :: Prelude.Maybe BurninSubtitleApplyFontColor,
+    -- | Specify the color of the rectangle behind the captions. Leave background
+    -- color (BackgroundColor) blank and set Style passthrough
+    -- (StylePassthrough) to enabled to use the background color data from your
+    -- input captions, if present.
+    backgroundColor :: Prelude.Maybe BurninSubtitleBackgroundColor,
+    -- | Specify the opacity of the background rectangle. Enter a value from 0 to
+    -- 255, where 0 is transparent and 255 is opaque. If Style passthrough
+    -- (StylePassthrough) is set to enabled, leave blank to pass through the
+    -- background style information in your input captions to your output
+    -- captions. If Style passthrough is set to disabled, leave blank to use a
+    -- value of 0 and remove all backgrounds from your output captions.
+    backgroundOpacity :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the font that you want the service to use for your burn in
+    -- captions when your input captions specify a font that MediaConvert
+    -- doesn\'t support. When you set Fallback font (FallbackFont) to best
+    -- match (BEST_MATCH), or leave blank, MediaConvert uses a supported font
+    -- that most closely matches the font that your input captions specify.
+    -- When there are multiple unsupported fonts in your input captions,
+    -- MediaConvert matches each font with the supported font that matches
+    -- best. When you explicitly choose a replacement font, MediaConvert uses
+    -- that font to replace all unsupported fonts from your input.
+    fallbackFont :: Prelude.Maybe BurninSubtitleFallbackFont,
+    -- | Specify the color of the burned-in captions text. Leave Font color
+    -- (FontColor) blank and set Style passthrough (StylePassthrough) to
+    -- enabled to use the font color data from your input captions, if present.
+    fontColor :: Prelude.Maybe BurninSubtitleFontColor,
+    -- | Specify the opacity of the burned-in captions. 255 is opaque; 0 is
+    -- transparent.
+    fontOpacity :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the Font resolution (FontResolution) in DPI (dots per inch).
+    fontResolution :: Prelude.Maybe Prelude.Natural,
+    -- | Set Font script (FontScript) to Automatically determined (AUTOMATIC), or
+    -- leave blank, to automatically determine the font script in your input
+    -- captions. Otherwise, set to Simplified Chinese (HANS) or Traditional
+    -- Chinese (HANT) if your input font script uses Simplified or Traditional
+    -- Chinese.
+    fontScript :: Prelude.Maybe FontScript,
+    -- | Specify the Font size (FontSize) in pixels. Must be a positive integer.
+    -- Set to 0, or leave blank, for automatic font size.
+    fontSize :: Prelude.Maybe Prelude.Natural,
+    -- | Ignore this setting unless your Font color is set to Hex. Enter either
+    -- six or eight hexidecimal digits, representing red, green, and blue, with
+    -- two optional extra digits for alpha. For example a value of 1122AABB is
+    -- a red value of 0x11, a green value of 0x22, a blue value of 0xAA, and an
+    -- alpha value of 0xBB.
+    hexFontColor :: Prelude.Maybe Prelude.Text,
+    -- | Specify font outline color. Leave Outline color (OutlineColor) blank and
+    -- set Style passthrough (StylePassthrough) to enabled to use the font
+    -- outline color data from your input captions, if present.
+    outlineColor :: Prelude.Maybe BurninSubtitleOutlineColor,
+    -- | Specify the Outline size (OutlineSize) of the caption text, in pixels.
+    -- Leave Outline size blank and set Style passthrough (StylePassthrough) to
+    -- enabled to use the outline size data from your input captions, if
+    -- present.
+    outlineSize :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the color of the shadow cast by the captions. Leave Shadow color
+    -- (ShadowColor) blank and set Style passthrough (StylePassthrough) to
+    -- enabled to use the shadow color data from your input captions, if
+    -- present.
+    shadowColor :: Prelude.Maybe BurninSubtitleShadowColor,
+    -- | Specify the opacity of the shadow. Enter a value from 0 to 255, where 0
+    -- is transparent and 255 is opaque. If Style passthrough
+    -- (StylePassthrough) is set to Enabled, leave Shadow opacity
+    -- (ShadowOpacity) blank to pass through the shadow style information in
+    -- your input captions to your output captions. If Style passthrough is set
+    -- to disabled, leave blank to use a value of 0 and remove all shadows from
+    -- your output captions.
+    shadowOpacity :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the horizontal offset of the shadow, relative to the captions in
+    -- pixels. A value of -2 would result in a shadow offset 2 pixels to the
+    -- left.
+    shadowXOffset :: Prelude.Maybe Prelude.Int,
+    -- | Specify the vertical offset of the shadow relative to the captions in
+    -- pixels. A value of -2 would result in a shadow offset 2 pixels above the
+    -- text. Leave Shadow y-offset (ShadowYOffset) blank and set Style
+    -- passthrough (StylePassthrough) to enabled to use the shadow y-offset
+    -- data from your input captions, if present.
+    shadowYOffset :: Prelude.Maybe Prelude.Int,
+    -- | Set Style passthrough (StylePassthrough) to ENABLED to use the available
+    -- style, color, and position information from your input captions.
+    -- MediaConvert uses default settings for any missing style and position
+    -- information in your input captions. Set Style passthrough to DISABLED,
+    -- or leave blank, to ignore the style and position information from your
+    -- input captions and use default settings: white text with black
+    -- outlining, bottom-center positioning, and automatic sizing. Whether you
+    -- set Style passthrough to enabled or not, you can also choose to manually
+    -- override any of the individual style and position settings.
+    stylePassthrough :: Prelude.Maybe BurnInSubtitleStylePassthrough,
+    -- | Specify whether the text spacing (TeletextSpacing) in your captions is
+    -- set by the captions grid, or varies depending on letter width. Choose
+    -- fixed grid (FIXED_GRID) to conform to the spacing specified in the
+    -- captions file more accurately. Choose proportional (PROPORTIONAL) to
+    -- make the text easier to read for closed captions.
+    teletextSpacing :: Prelude.Maybe BurninSubtitleTeletextSpacing,
+    -- | Specify the horizontal position (XPosition) of the captions, relative to
+    -- the left side of the output in pixels. A value of 10 would result in the
+    -- captions starting 10 pixels from the left of the output. If no explicit
+    -- x_position is provided, the horizontal caption position will be
+    -- determined by the alignment parameter.
+    xPosition :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the vertical position (YPosition) of the captions, relative to
+    -- the top of the output in pixels. A value of 10 would result in the
+    -- captions starting 10 pixels from the top of the output. If no explicit
+    -- y_position is provided, the caption will be positioned towards the
+    -- bottom of the output.
+    yPosition :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BurninDestinationSettings' 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:
+--
+-- 'alignment', 'burninDestinationSettings_alignment' - Specify the alignment of your captions. If no explicit x_position is
+-- provided, setting alignment to centered will placethe captions at the
+-- bottom center of the output. Similarly, setting a left alignment
+-- willalign captions to the bottom left of the output. If x and y
+-- positions are given in conjunction with the alignment parameter, the
+-- font will be justified (either left or centered) relative to those
+-- coordinates.
+--
+-- 'applyFontColor', 'burninDestinationSettings_applyFontColor' - Ignore this setting unless Style passthrough (StylePassthrough) is set
+-- to Enabled and Font color (FontColor) set to Black, Yellow, Red, Green,
+-- Blue, or Hex. Use Apply font color (ApplyFontColor) for additional font
+-- color controls. When you choose White text only (WHITE_TEXT_ONLY), or
+-- leave blank, your font color setting only applies to white text in your
+-- input captions. For example, if your font color setting is Yellow, and
+-- your input captions have red and white text, your output captions will
+-- have red and yellow text. When you choose ALL_TEXT, your font color
+-- setting applies to all of your output captions text.
+--
+-- 'backgroundColor', 'burninDestinationSettings_backgroundColor' - Specify the color of the rectangle behind the captions. Leave background
+-- color (BackgroundColor) blank and set Style passthrough
+-- (StylePassthrough) to enabled to use the background color data from your
+-- input captions, if present.
+--
+-- 'backgroundOpacity', 'burninDestinationSettings_backgroundOpacity' - Specify the opacity of the background rectangle. Enter a value from 0 to
+-- 255, where 0 is transparent and 255 is opaque. If Style passthrough
+-- (StylePassthrough) is set to enabled, leave blank to pass through the
+-- background style information in your input captions to your output
+-- captions. If Style passthrough is set to disabled, leave blank to use a
+-- value of 0 and remove all backgrounds from your output captions.
+--
+-- 'fallbackFont', 'burninDestinationSettings_fallbackFont' - Specify the font that you want the service to use for your burn in
+-- captions when your input captions specify a font that MediaConvert
+-- doesn\'t support. When you set Fallback font (FallbackFont) to best
+-- match (BEST_MATCH), or leave blank, MediaConvert uses a supported font
+-- that most closely matches the font that your input captions specify.
+-- When there are multiple unsupported fonts in your input captions,
+-- MediaConvert matches each font with the supported font that matches
+-- best. When you explicitly choose a replacement font, MediaConvert uses
+-- that font to replace all unsupported fonts from your input.
+--
+-- 'fontColor', 'burninDestinationSettings_fontColor' - Specify the color of the burned-in captions text. Leave Font color
+-- (FontColor) blank and set Style passthrough (StylePassthrough) to
+-- enabled to use the font color data from your input captions, if present.
+--
+-- 'fontOpacity', 'burninDestinationSettings_fontOpacity' - Specify the opacity of the burned-in captions. 255 is opaque; 0 is
+-- transparent.
+--
+-- 'fontResolution', 'burninDestinationSettings_fontResolution' - Specify the Font resolution (FontResolution) in DPI (dots per inch).
+--
+-- 'fontScript', 'burninDestinationSettings_fontScript' - Set Font script (FontScript) to Automatically determined (AUTOMATIC), or
+-- leave blank, to automatically determine the font script in your input
+-- captions. Otherwise, set to Simplified Chinese (HANS) or Traditional
+-- Chinese (HANT) if your input font script uses Simplified or Traditional
+-- Chinese.
+--
+-- 'fontSize', 'burninDestinationSettings_fontSize' - Specify the Font size (FontSize) in pixels. Must be a positive integer.
+-- Set to 0, or leave blank, for automatic font size.
+--
+-- 'hexFontColor', 'burninDestinationSettings_hexFontColor' - Ignore this setting unless your Font color is set to Hex. Enter either
+-- six or eight hexidecimal digits, representing red, green, and blue, with
+-- two optional extra digits for alpha. For example a value of 1122AABB is
+-- a red value of 0x11, a green value of 0x22, a blue value of 0xAA, and an
+-- alpha value of 0xBB.
+--
+-- 'outlineColor', 'burninDestinationSettings_outlineColor' - Specify font outline color. Leave Outline color (OutlineColor) blank and
+-- set Style passthrough (StylePassthrough) to enabled to use the font
+-- outline color data from your input captions, if present.
+--
+-- 'outlineSize', 'burninDestinationSettings_outlineSize' - Specify the Outline size (OutlineSize) of the caption text, in pixels.
+-- Leave Outline size blank and set Style passthrough (StylePassthrough) to
+-- enabled to use the outline size data from your input captions, if
+-- present.
+--
+-- 'shadowColor', 'burninDestinationSettings_shadowColor' - Specify the color of the shadow cast by the captions. Leave Shadow color
+-- (ShadowColor) blank and set Style passthrough (StylePassthrough) to
+-- enabled to use the shadow color data from your input captions, if
+-- present.
+--
+-- 'shadowOpacity', 'burninDestinationSettings_shadowOpacity' - Specify the opacity of the shadow. Enter a value from 0 to 255, where 0
+-- is transparent and 255 is opaque. If Style passthrough
+-- (StylePassthrough) is set to Enabled, leave Shadow opacity
+-- (ShadowOpacity) blank to pass through the shadow style information in
+-- your input captions to your output captions. If Style passthrough is set
+-- to disabled, leave blank to use a value of 0 and remove all shadows from
+-- your output captions.
+--
+-- 'shadowXOffset', 'burninDestinationSettings_shadowXOffset' - Specify the horizontal offset of the shadow, relative to the captions in
+-- pixels. A value of -2 would result in a shadow offset 2 pixels to the
+-- left.
+--
+-- 'shadowYOffset', 'burninDestinationSettings_shadowYOffset' - Specify the vertical offset of the shadow relative to the captions in
+-- pixels. A value of -2 would result in a shadow offset 2 pixels above the
+-- text. Leave Shadow y-offset (ShadowYOffset) blank and set Style
+-- passthrough (StylePassthrough) to enabled to use the shadow y-offset
+-- data from your input captions, if present.
+--
+-- 'stylePassthrough', 'burninDestinationSettings_stylePassthrough' - Set Style passthrough (StylePassthrough) to ENABLED to use the available
+-- style, color, and position information from your input captions.
+-- MediaConvert uses default settings for any missing style and position
+-- information in your input captions. Set Style passthrough to DISABLED,
+-- or leave blank, to ignore the style and position information from your
+-- input captions and use default settings: white text with black
+-- outlining, bottom-center positioning, and automatic sizing. Whether you
+-- set Style passthrough to enabled or not, you can also choose to manually
+-- override any of the individual style and position settings.
+--
+-- 'teletextSpacing', 'burninDestinationSettings_teletextSpacing' - Specify whether the text spacing (TeletextSpacing) in your captions is
+-- set by the captions grid, or varies depending on letter width. Choose
+-- fixed grid (FIXED_GRID) to conform to the spacing specified in the
+-- captions file more accurately. Choose proportional (PROPORTIONAL) to
+-- make the text easier to read for closed captions.
+--
+-- 'xPosition', 'burninDestinationSettings_xPosition' - Specify the horizontal position (XPosition) of the captions, relative to
+-- the left side of the output in pixels. A value of 10 would result in the
+-- captions starting 10 pixels from the left of the output. If no explicit
+-- x_position is provided, the horizontal caption position will be
+-- determined by the alignment parameter.
+--
+-- 'yPosition', 'burninDestinationSettings_yPosition' - Specify the vertical position (YPosition) of the captions, relative to
+-- the top of the output in pixels. A value of 10 would result in the
+-- captions starting 10 pixels from the top of the output. If no explicit
+-- y_position is provided, the caption will be positioned towards the
+-- bottom of the output.
+newBurninDestinationSettings ::
+  BurninDestinationSettings
+newBurninDestinationSettings =
+  BurninDestinationSettings'
+    { alignment =
+        Prelude.Nothing,
+      applyFontColor = Prelude.Nothing,
+      backgroundColor = Prelude.Nothing,
+      backgroundOpacity = Prelude.Nothing,
+      fallbackFont = Prelude.Nothing,
+      fontColor = Prelude.Nothing,
+      fontOpacity = Prelude.Nothing,
+      fontResolution = Prelude.Nothing,
+      fontScript = Prelude.Nothing,
+      fontSize = Prelude.Nothing,
+      hexFontColor = Prelude.Nothing,
+      outlineColor = Prelude.Nothing,
+      outlineSize = Prelude.Nothing,
+      shadowColor = Prelude.Nothing,
+      shadowOpacity = Prelude.Nothing,
+      shadowXOffset = Prelude.Nothing,
+      shadowYOffset = Prelude.Nothing,
+      stylePassthrough = Prelude.Nothing,
+      teletextSpacing = Prelude.Nothing,
+      xPosition = Prelude.Nothing,
+      yPosition = Prelude.Nothing
+    }
+
+-- | Specify the alignment of your captions. If no explicit x_position is
+-- provided, setting alignment to centered will placethe captions at the
+-- bottom center of the output. Similarly, setting a left alignment
+-- willalign captions to the bottom left of the output. If x and y
+-- positions are given in conjunction with the alignment parameter, the
+-- font will be justified (either left or centered) relative to those
+-- coordinates.
+burninDestinationSettings_alignment :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe BurninSubtitleAlignment)
+burninDestinationSettings_alignment = Lens.lens (\BurninDestinationSettings' {alignment} -> alignment) (\s@BurninDestinationSettings' {} a -> s {alignment = a} :: BurninDestinationSettings)
+
+-- | Ignore this setting unless Style passthrough (StylePassthrough) is set
+-- to Enabled and Font color (FontColor) set to Black, Yellow, Red, Green,
+-- Blue, or Hex. Use Apply font color (ApplyFontColor) for additional font
+-- color controls. When you choose White text only (WHITE_TEXT_ONLY), or
+-- leave blank, your font color setting only applies to white text in your
+-- input captions. For example, if your font color setting is Yellow, and
+-- your input captions have red and white text, your output captions will
+-- have red and yellow text. When you choose ALL_TEXT, your font color
+-- setting applies to all of your output captions text.
+burninDestinationSettings_applyFontColor :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe BurninSubtitleApplyFontColor)
+burninDestinationSettings_applyFontColor = Lens.lens (\BurninDestinationSettings' {applyFontColor} -> applyFontColor) (\s@BurninDestinationSettings' {} a -> s {applyFontColor = a} :: BurninDestinationSettings)
+
+-- | Specify the color of the rectangle behind the captions. Leave background
+-- color (BackgroundColor) blank and set Style passthrough
+-- (StylePassthrough) to enabled to use the background color data from your
+-- input captions, if present.
+burninDestinationSettings_backgroundColor :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe BurninSubtitleBackgroundColor)
+burninDestinationSettings_backgroundColor = Lens.lens (\BurninDestinationSettings' {backgroundColor} -> backgroundColor) (\s@BurninDestinationSettings' {} a -> s {backgroundColor = a} :: BurninDestinationSettings)
+
+-- | Specify the opacity of the background rectangle. Enter a value from 0 to
+-- 255, where 0 is transparent and 255 is opaque. If Style passthrough
+-- (StylePassthrough) is set to enabled, leave blank to pass through the
+-- background style information in your input captions to your output
+-- captions. If Style passthrough is set to disabled, leave blank to use a
+-- value of 0 and remove all backgrounds from your output captions.
+burninDestinationSettings_backgroundOpacity :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe Prelude.Natural)
+burninDestinationSettings_backgroundOpacity = Lens.lens (\BurninDestinationSettings' {backgroundOpacity} -> backgroundOpacity) (\s@BurninDestinationSettings' {} a -> s {backgroundOpacity = a} :: BurninDestinationSettings)
+
+-- | Specify the font that you want the service to use for your burn in
+-- captions when your input captions specify a font that MediaConvert
+-- doesn\'t support. When you set Fallback font (FallbackFont) to best
+-- match (BEST_MATCH), or leave blank, MediaConvert uses a supported font
+-- that most closely matches the font that your input captions specify.
+-- When there are multiple unsupported fonts in your input captions,
+-- MediaConvert matches each font with the supported font that matches
+-- best. When you explicitly choose a replacement font, MediaConvert uses
+-- that font to replace all unsupported fonts from your input.
+burninDestinationSettings_fallbackFont :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe BurninSubtitleFallbackFont)
+burninDestinationSettings_fallbackFont = Lens.lens (\BurninDestinationSettings' {fallbackFont} -> fallbackFont) (\s@BurninDestinationSettings' {} a -> s {fallbackFont = a} :: BurninDestinationSettings)
+
+-- | Specify the color of the burned-in captions text. Leave Font color
+-- (FontColor) blank and set Style passthrough (StylePassthrough) to
+-- enabled to use the font color data from your input captions, if present.
+burninDestinationSettings_fontColor :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe BurninSubtitleFontColor)
+burninDestinationSettings_fontColor = Lens.lens (\BurninDestinationSettings' {fontColor} -> fontColor) (\s@BurninDestinationSettings' {} a -> s {fontColor = a} :: BurninDestinationSettings)
+
+-- | Specify the opacity of the burned-in captions. 255 is opaque; 0 is
+-- transparent.
+burninDestinationSettings_fontOpacity :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe Prelude.Natural)
+burninDestinationSettings_fontOpacity = Lens.lens (\BurninDestinationSettings' {fontOpacity} -> fontOpacity) (\s@BurninDestinationSettings' {} a -> s {fontOpacity = a} :: BurninDestinationSettings)
+
+-- | Specify the Font resolution (FontResolution) in DPI (dots per inch).
+burninDestinationSettings_fontResolution :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe Prelude.Natural)
+burninDestinationSettings_fontResolution = Lens.lens (\BurninDestinationSettings' {fontResolution} -> fontResolution) (\s@BurninDestinationSettings' {} a -> s {fontResolution = a} :: BurninDestinationSettings)
+
+-- | Set Font script (FontScript) to Automatically determined (AUTOMATIC), or
+-- leave blank, to automatically determine the font script in your input
+-- captions. Otherwise, set to Simplified Chinese (HANS) or Traditional
+-- Chinese (HANT) if your input font script uses Simplified or Traditional
+-- Chinese.
+burninDestinationSettings_fontScript :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe FontScript)
+burninDestinationSettings_fontScript = Lens.lens (\BurninDestinationSettings' {fontScript} -> fontScript) (\s@BurninDestinationSettings' {} a -> s {fontScript = a} :: BurninDestinationSettings)
+
+-- | Specify the Font size (FontSize) in pixels. Must be a positive integer.
+-- Set to 0, or leave blank, for automatic font size.
+burninDestinationSettings_fontSize :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe Prelude.Natural)
+burninDestinationSettings_fontSize = Lens.lens (\BurninDestinationSettings' {fontSize} -> fontSize) (\s@BurninDestinationSettings' {} a -> s {fontSize = a} :: BurninDestinationSettings)
+
+-- | Ignore this setting unless your Font color is set to Hex. Enter either
+-- six or eight hexidecimal digits, representing red, green, and blue, with
+-- two optional extra digits for alpha. For example a value of 1122AABB is
+-- a red value of 0x11, a green value of 0x22, a blue value of 0xAA, and an
+-- alpha value of 0xBB.
+burninDestinationSettings_hexFontColor :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe Prelude.Text)
+burninDestinationSettings_hexFontColor = Lens.lens (\BurninDestinationSettings' {hexFontColor} -> hexFontColor) (\s@BurninDestinationSettings' {} a -> s {hexFontColor = a} :: BurninDestinationSettings)
+
+-- | Specify font outline color. Leave Outline color (OutlineColor) blank and
+-- set Style passthrough (StylePassthrough) to enabled to use the font
+-- outline color data from your input captions, if present.
+burninDestinationSettings_outlineColor :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe BurninSubtitleOutlineColor)
+burninDestinationSettings_outlineColor = Lens.lens (\BurninDestinationSettings' {outlineColor} -> outlineColor) (\s@BurninDestinationSettings' {} a -> s {outlineColor = a} :: BurninDestinationSettings)
+
+-- | Specify the Outline size (OutlineSize) of the caption text, in pixels.
+-- Leave Outline size blank and set Style passthrough (StylePassthrough) to
+-- enabled to use the outline size data from your input captions, if
+-- present.
+burninDestinationSettings_outlineSize :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe Prelude.Natural)
+burninDestinationSettings_outlineSize = Lens.lens (\BurninDestinationSettings' {outlineSize} -> outlineSize) (\s@BurninDestinationSettings' {} a -> s {outlineSize = a} :: BurninDestinationSettings)
+
+-- | Specify the color of the shadow cast by the captions. Leave Shadow color
+-- (ShadowColor) blank and set Style passthrough (StylePassthrough) to
+-- enabled to use the shadow color data from your input captions, if
+-- present.
+burninDestinationSettings_shadowColor :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe BurninSubtitleShadowColor)
+burninDestinationSettings_shadowColor = Lens.lens (\BurninDestinationSettings' {shadowColor} -> shadowColor) (\s@BurninDestinationSettings' {} a -> s {shadowColor = a} :: BurninDestinationSettings)
+
+-- | Specify the opacity of the shadow. Enter a value from 0 to 255, where 0
+-- is transparent and 255 is opaque. If Style passthrough
+-- (StylePassthrough) is set to Enabled, leave Shadow opacity
+-- (ShadowOpacity) blank to pass through the shadow style information in
+-- your input captions to your output captions. If Style passthrough is set
+-- to disabled, leave blank to use a value of 0 and remove all shadows from
+-- your output captions.
+burninDestinationSettings_shadowOpacity :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe Prelude.Natural)
+burninDestinationSettings_shadowOpacity = Lens.lens (\BurninDestinationSettings' {shadowOpacity} -> shadowOpacity) (\s@BurninDestinationSettings' {} a -> s {shadowOpacity = a} :: BurninDestinationSettings)
+
+-- | Specify the horizontal offset of the shadow, relative to the captions in
+-- pixels. A value of -2 would result in a shadow offset 2 pixels to the
+-- left.
+burninDestinationSettings_shadowXOffset :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe Prelude.Int)
+burninDestinationSettings_shadowXOffset = Lens.lens (\BurninDestinationSettings' {shadowXOffset} -> shadowXOffset) (\s@BurninDestinationSettings' {} a -> s {shadowXOffset = a} :: BurninDestinationSettings)
+
+-- | Specify the vertical offset of the shadow relative to the captions in
+-- pixels. A value of -2 would result in a shadow offset 2 pixels above the
+-- text. Leave Shadow y-offset (ShadowYOffset) blank and set Style
+-- passthrough (StylePassthrough) to enabled to use the shadow y-offset
+-- data from your input captions, if present.
+burninDestinationSettings_shadowYOffset :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe Prelude.Int)
+burninDestinationSettings_shadowYOffset = Lens.lens (\BurninDestinationSettings' {shadowYOffset} -> shadowYOffset) (\s@BurninDestinationSettings' {} a -> s {shadowYOffset = a} :: BurninDestinationSettings)
+
+-- | Set Style passthrough (StylePassthrough) to ENABLED to use the available
+-- style, color, and position information from your input captions.
+-- MediaConvert uses default settings for any missing style and position
+-- information in your input captions. Set Style passthrough to DISABLED,
+-- or leave blank, to ignore the style and position information from your
+-- input captions and use default settings: white text with black
+-- outlining, bottom-center positioning, and automatic sizing. Whether you
+-- set Style passthrough to enabled or not, you can also choose to manually
+-- override any of the individual style and position settings.
+burninDestinationSettings_stylePassthrough :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe BurnInSubtitleStylePassthrough)
+burninDestinationSettings_stylePassthrough = Lens.lens (\BurninDestinationSettings' {stylePassthrough} -> stylePassthrough) (\s@BurninDestinationSettings' {} a -> s {stylePassthrough = a} :: BurninDestinationSettings)
+
+-- | Specify whether the text spacing (TeletextSpacing) in your captions is
+-- set by the captions grid, or varies depending on letter width. Choose
+-- fixed grid (FIXED_GRID) to conform to the spacing specified in the
+-- captions file more accurately. Choose proportional (PROPORTIONAL) to
+-- make the text easier to read for closed captions.
+burninDestinationSettings_teletextSpacing :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe BurninSubtitleTeletextSpacing)
+burninDestinationSettings_teletextSpacing = Lens.lens (\BurninDestinationSettings' {teletextSpacing} -> teletextSpacing) (\s@BurninDestinationSettings' {} a -> s {teletextSpacing = a} :: BurninDestinationSettings)
+
+-- | Specify the horizontal position (XPosition) of the captions, relative to
+-- the left side of the output in pixels. A value of 10 would result in the
+-- captions starting 10 pixels from the left of the output. If no explicit
+-- x_position is provided, the horizontal caption position will be
+-- determined by the alignment parameter.
+burninDestinationSettings_xPosition :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe Prelude.Natural)
+burninDestinationSettings_xPosition = Lens.lens (\BurninDestinationSettings' {xPosition} -> xPosition) (\s@BurninDestinationSettings' {} a -> s {xPosition = a} :: BurninDestinationSettings)
+
+-- | Specify the vertical position (YPosition) of the captions, relative to
+-- the top of the output in pixels. A value of 10 would result in the
+-- captions starting 10 pixels from the top of the output. If no explicit
+-- y_position is provided, the caption will be positioned towards the
+-- bottom of the output.
+burninDestinationSettings_yPosition :: Lens.Lens' BurninDestinationSettings (Prelude.Maybe Prelude.Natural)
+burninDestinationSettings_yPosition = Lens.lens (\BurninDestinationSettings' {yPosition} -> yPosition) (\s@BurninDestinationSettings' {} a -> s {yPosition = a} :: BurninDestinationSettings)
+
+instance Data.FromJSON BurninDestinationSettings where
+  parseJSON =
+    Data.withObject
+      "BurninDestinationSettings"
+      ( \x ->
+          BurninDestinationSettings'
+            Prelude.<$> (x Data..:? "alignment")
+            Prelude.<*> (x Data..:? "applyFontColor")
+            Prelude.<*> (x Data..:? "backgroundColor")
+            Prelude.<*> (x Data..:? "backgroundOpacity")
+            Prelude.<*> (x Data..:? "fallbackFont")
+            Prelude.<*> (x Data..:? "fontColor")
+            Prelude.<*> (x Data..:? "fontOpacity")
+            Prelude.<*> (x Data..:? "fontResolution")
+            Prelude.<*> (x Data..:? "fontScript")
+            Prelude.<*> (x Data..:? "fontSize")
+            Prelude.<*> (x Data..:? "hexFontColor")
+            Prelude.<*> (x Data..:? "outlineColor")
+            Prelude.<*> (x Data..:? "outlineSize")
+            Prelude.<*> (x Data..:? "shadowColor")
+            Prelude.<*> (x Data..:? "shadowOpacity")
+            Prelude.<*> (x Data..:? "shadowXOffset")
+            Prelude.<*> (x Data..:? "shadowYOffset")
+            Prelude.<*> (x Data..:? "stylePassthrough")
+            Prelude.<*> (x Data..:? "teletextSpacing")
+            Prelude.<*> (x Data..:? "xPosition")
+            Prelude.<*> (x Data..:? "yPosition")
+      )
+
+instance Prelude.Hashable BurninDestinationSettings where
+  hashWithSalt _salt BurninDestinationSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` alignment
+      `Prelude.hashWithSalt` applyFontColor
+      `Prelude.hashWithSalt` backgroundColor
+      `Prelude.hashWithSalt` backgroundOpacity
+      `Prelude.hashWithSalt` fallbackFont
+      `Prelude.hashWithSalt` fontColor
+      `Prelude.hashWithSalt` fontOpacity
+      `Prelude.hashWithSalt` fontResolution
+      `Prelude.hashWithSalt` fontScript
+      `Prelude.hashWithSalt` fontSize
+      `Prelude.hashWithSalt` hexFontColor
+      `Prelude.hashWithSalt` outlineColor
+      `Prelude.hashWithSalt` outlineSize
+      `Prelude.hashWithSalt` shadowColor
+      `Prelude.hashWithSalt` shadowOpacity
+      `Prelude.hashWithSalt` shadowXOffset
+      `Prelude.hashWithSalt` shadowYOffset
+      `Prelude.hashWithSalt` stylePassthrough
+      `Prelude.hashWithSalt` teletextSpacing
+      `Prelude.hashWithSalt` xPosition
+      `Prelude.hashWithSalt` yPosition
+
+instance Prelude.NFData BurninDestinationSettings where
+  rnf BurninDestinationSettings' {..} =
+    Prelude.rnf alignment
+      `Prelude.seq` Prelude.rnf applyFontColor
+      `Prelude.seq` Prelude.rnf backgroundColor
+      `Prelude.seq` Prelude.rnf backgroundOpacity
+      `Prelude.seq` Prelude.rnf fallbackFont
+      `Prelude.seq` Prelude.rnf fontColor
+      `Prelude.seq` Prelude.rnf fontOpacity
+      `Prelude.seq` Prelude.rnf fontResolution
+      `Prelude.seq` Prelude.rnf fontScript
+      `Prelude.seq` Prelude.rnf fontSize
+      `Prelude.seq` Prelude.rnf hexFontColor
+      `Prelude.seq` Prelude.rnf outlineColor
+      `Prelude.seq` Prelude.rnf outlineSize
+      `Prelude.seq` Prelude.rnf shadowColor
+      `Prelude.seq` Prelude.rnf shadowOpacity
+      `Prelude.seq` Prelude.rnf shadowXOffset
+      `Prelude.seq` Prelude.rnf shadowYOffset
+      `Prelude.seq` Prelude.rnf stylePassthrough
+      `Prelude.seq` Prelude.rnf teletextSpacing
+      `Prelude.seq` Prelude.rnf xPosition
+      `Prelude.seq` Prelude.rnf yPosition
+
+instance Data.ToJSON BurninDestinationSettings where
+  toJSON BurninDestinationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("alignment" Data..=) Prelude.<$> alignment,
+            ("applyFontColor" Data..=)
+              Prelude.<$> applyFontColor,
+            ("backgroundColor" Data..=)
+              Prelude.<$> backgroundColor,
+            ("backgroundOpacity" Data..=)
+              Prelude.<$> backgroundOpacity,
+            ("fallbackFont" Data..=) Prelude.<$> fallbackFont,
+            ("fontColor" Data..=) Prelude.<$> fontColor,
+            ("fontOpacity" Data..=) Prelude.<$> fontOpacity,
+            ("fontResolution" Data..=)
+              Prelude.<$> fontResolution,
+            ("fontScript" Data..=) Prelude.<$> fontScript,
+            ("fontSize" Data..=) Prelude.<$> fontSize,
+            ("hexFontColor" Data..=) Prelude.<$> hexFontColor,
+            ("outlineColor" Data..=) Prelude.<$> outlineColor,
+            ("outlineSize" Data..=) Prelude.<$> outlineSize,
+            ("shadowColor" Data..=) Prelude.<$> shadowColor,
+            ("shadowOpacity" Data..=) Prelude.<$> shadowOpacity,
+            ("shadowXOffset" Data..=) Prelude.<$> shadowXOffset,
+            ("shadowYOffset" Data..=) Prelude.<$> shadowYOffset,
+            ("stylePassthrough" Data..=)
+              Prelude.<$> stylePassthrough,
+            ("teletextSpacing" Data..=)
+              Prelude.<$> teletextSpacing,
+            ("xPosition" Data..=) Prelude.<$> xPosition,
+            ("yPosition" Data..=) Prelude.<$> yPosition
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/BurninSubtitleAlignment.hs b/gen/Amazonka/MediaConvert/Types/BurninSubtitleAlignment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/BurninSubtitleAlignment.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.BurninSubtitleAlignment
+-- 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.BurninSubtitleAlignment
+  ( BurninSubtitleAlignment
+      ( ..,
+        BurninSubtitleAlignment_AUTO,
+        BurninSubtitleAlignment_CENTERED,
+        BurninSubtitleAlignment_LEFT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the alignment of your captions. If no explicit x_position is
+-- provided, setting alignment to centered will placethe captions at the
+-- bottom center of the output. Similarly, setting a left alignment
+-- willalign captions to the bottom left of the output. If x and y
+-- positions are given in conjunction with the alignment parameter, the
+-- font will be justified (either left or centered) relative to those
+-- coordinates.
+newtype BurninSubtitleAlignment = BurninSubtitleAlignment'
+  { fromBurninSubtitleAlignment ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BurninSubtitleAlignment_AUTO :: BurninSubtitleAlignment
+pattern BurninSubtitleAlignment_AUTO = BurninSubtitleAlignment' "AUTO"
+
+pattern BurninSubtitleAlignment_CENTERED :: BurninSubtitleAlignment
+pattern BurninSubtitleAlignment_CENTERED = BurninSubtitleAlignment' "CENTERED"
+
+pattern BurninSubtitleAlignment_LEFT :: BurninSubtitleAlignment
+pattern BurninSubtitleAlignment_LEFT = BurninSubtitleAlignment' "LEFT"
+
+{-# COMPLETE
+  BurninSubtitleAlignment_AUTO,
+  BurninSubtitleAlignment_CENTERED,
+  BurninSubtitleAlignment_LEFT,
+  BurninSubtitleAlignment'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/BurninSubtitleApplyFontColor.hs b/gen/Amazonka/MediaConvert/Types/BurninSubtitleApplyFontColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/BurninSubtitleApplyFontColor.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.BurninSubtitleApplyFontColor
+-- 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.BurninSubtitleApplyFontColor
+  ( BurninSubtitleApplyFontColor
+      ( ..,
+        BurninSubtitleApplyFontColor_ALL_TEXT,
+        BurninSubtitleApplyFontColor_WHITE_TEXT_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless Style passthrough (StylePassthrough) is set
+-- to Enabled and Font color (FontColor) set to Black, Yellow, Red, Green,
+-- Blue, or Hex. Use Apply font color (ApplyFontColor) for additional font
+-- color controls. When you choose White text only (WHITE_TEXT_ONLY), or
+-- leave blank, your font color setting only applies to white text in your
+-- input captions. For example, if your font color setting is Yellow, and
+-- your input captions have red and white text, your output captions will
+-- have red and yellow text. When you choose ALL_TEXT, your font color
+-- setting applies to all of your output captions text.
+newtype BurninSubtitleApplyFontColor = BurninSubtitleApplyFontColor'
+  { fromBurninSubtitleApplyFontColor ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BurninSubtitleApplyFontColor_ALL_TEXT :: BurninSubtitleApplyFontColor
+pattern BurninSubtitleApplyFontColor_ALL_TEXT = BurninSubtitleApplyFontColor' "ALL_TEXT"
+
+pattern BurninSubtitleApplyFontColor_WHITE_TEXT_ONLY :: BurninSubtitleApplyFontColor
+pattern BurninSubtitleApplyFontColor_WHITE_TEXT_ONLY = BurninSubtitleApplyFontColor' "WHITE_TEXT_ONLY"
+
+{-# COMPLETE
+  BurninSubtitleApplyFontColor_ALL_TEXT,
+  BurninSubtitleApplyFontColor_WHITE_TEXT_ONLY,
+  BurninSubtitleApplyFontColor'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/BurninSubtitleBackgroundColor.hs b/gen/Amazonka/MediaConvert/Types/BurninSubtitleBackgroundColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/BurninSubtitleBackgroundColor.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.BurninSubtitleBackgroundColor
+-- 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.BurninSubtitleBackgroundColor
+  ( BurninSubtitleBackgroundColor
+      ( ..,
+        BurninSubtitleBackgroundColor_AUTO,
+        BurninSubtitleBackgroundColor_BLACK,
+        BurninSubtitleBackgroundColor_NONE,
+        BurninSubtitleBackgroundColor_WHITE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the color of the rectangle behind the captions. Leave background
+-- color (BackgroundColor) blank and set Style passthrough
+-- (StylePassthrough) to enabled to use the background color data from your
+-- input captions, if present.
+newtype BurninSubtitleBackgroundColor = BurninSubtitleBackgroundColor'
+  { fromBurninSubtitleBackgroundColor ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BurninSubtitleBackgroundColor_AUTO :: BurninSubtitleBackgroundColor
+pattern BurninSubtitleBackgroundColor_AUTO = BurninSubtitleBackgroundColor' "AUTO"
+
+pattern BurninSubtitleBackgroundColor_BLACK :: BurninSubtitleBackgroundColor
+pattern BurninSubtitleBackgroundColor_BLACK = BurninSubtitleBackgroundColor' "BLACK"
+
+pattern BurninSubtitleBackgroundColor_NONE :: BurninSubtitleBackgroundColor
+pattern BurninSubtitleBackgroundColor_NONE = BurninSubtitleBackgroundColor' "NONE"
+
+pattern BurninSubtitleBackgroundColor_WHITE :: BurninSubtitleBackgroundColor
+pattern BurninSubtitleBackgroundColor_WHITE = BurninSubtitleBackgroundColor' "WHITE"
+
+{-# COMPLETE
+  BurninSubtitleBackgroundColor_AUTO,
+  BurninSubtitleBackgroundColor_BLACK,
+  BurninSubtitleBackgroundColor_NONE,
+  BurninSubtitleBackgroundColor_WHITE,
+  BurninSubtitleBackgroundColor'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/BurninSubtitleFallbackFont.hs b/gen/Amazonka/MediaConvert/Types/BurninSubtitleFallbackFont.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/BurninSubtitleFallbackFont.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.BurninSubtitleFallbackFont
+-- 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.BurninSubtitleFallbackFont
+  ( BurninSubtitleFallbackFont
+      ( ..,
+        BurninSubtitleFallbackFont_BEST_MATCH,
+        BurninSubtitleFallbackFont_MONOSPACED_SANSSERIF,
+        BurninSubtitleFallbackFont_MONOSPACED_SERIF,
+        BurninSubtitleFallbackFont_PROPORTIONAL_SANSSERIF,
+        BurninSubtitleFallbackFont_PROPORTIONAL_SERIF
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the font that you want the service to use for your burn in
+-- captions when your input captions specify a font that MediaConvert
+-- doesn\'t support. When you set Fallback font (FallbackFont) to best
+-- match (BEST_MATCH), or leave blank, MediaConvert uses a supported font
+-- that most closely matches the font that your input captions specify.
+-- When there are multiple unsupported fonts in your input captions,
+-- MediaConvert matches each font with the supported font that matches
+-- best. When you explicitly choose a replacement font, MediaConvert uses
+-- that font to replace all unsupported fonts from your input.
+newtype BurninSubtitleFallbackFont = BurninSubtitleFallbackFont'
+  { fromBurninSubtitleFallbackFont ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BurninSubtitleFallbackFont_BEST_MATCH :: BurninSubtitleFallbackFont
+pattern BurninSubtitleFallbackFont_BEST_MATCH = BurninSubtitleFallbackFont' "BEST_MATCH"
+
+pattern BurninSubtitleFallbackFont_MONOSPACED_SANSSERIF :: BurninSubtitleFallbackFont
+pattern BurninSubtitleFallbackFont_MONOSPACED_SANSSERIF = BurninSubtitleFallbackFont' "MONOSPACED_SANSSERIF"
+
+pattern BurninSubtitleFallbackFont_MONOSPACED_SERIF :: BurninSubtitleFallbackFont
+pattern BurninSubtitleFallbackFont_MONOSPACED_SERIF = BurninSubtitleFallbackFont' "MONOSPACED_SERIF"
+
+pattern BurninSubtitleFallbackFont_PROPORTIONAL_SANSSERIF :: BurninSubtitleFallbackFont
+pattern BurninSubtitleFallbackFont_PROPORTIONAL_SANSSERIF = BurninSubtitleFallbackFont' "PROPORTIONAL_SANSSERIF"
+
+pattern BurninSubtitleFallbackFont_PROPORTIONAL_SERIF :: BurninSubtitleFallbackFont
+pattern BurninSubtitleFallbackFont_PROPORTIONAL_SERIF = BurninSubtitleFallbackFont' "PROPORTIONAL_SERIF"
+
+{-# COMPLETE
+  BurninSubtitleFallbackFont_BEST_MATCH,
+  BurninSubtitleFallbackFont_MONOSPACED_SANSSERIF,
+  BurninSubtitleFallbackFont_MONOSPACED_SERIF,
+  BurninSubtitleFallbackFont_PROPORTIONAL_SANSSERIF,
+  BurninSubtitleFallbackFont_PROPORTIONAL_SERIF,
+  BurninSubtitleFallbackFont'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/BurninSubtitleFontColor.hs b/gen/Amazonka/MediaConvert/Types/BurninSubtitleFontColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/BurninSubtitleFontColor.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.BurninSubtitleFontColor
+-- 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.BurninSubtitleFontColor
+  ( BurninSubtitleFontColor
+      ( ..,
+        BurninSubtitleFontColor_AUTO,
+        BurninSubtitleFontColor_BLACK,
+        BurninSubtitleFontColor_BLUE,
+        BurninSubtitleFontColor_GREEN,
+        BurninSubtitleFontColor_HEX,
+        BurninSubtitleFontColor_RED,
+        BurninSubtitleFontColor_WHITE,
+        BurninSubtitleFontColor_YELLOW
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the color of the burned-in captions text. Leave Font color
+-- (FontColor) blank and set Style passthrough (StylePassthrough) to
+-- enabled to use the font color data from your input captions, if present.
+newtype BurninSubtitleFontColor = BurninSubtitleFontColor'
+  { fromBurninSubtitleFontColor ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BurninSubtitleFontColor_AUTO :: BurninSubtitleFontColor
+pattern BurninSubtitleFontColor_AUTO = BurninSubtitleFontColor' "AUTO"
+
+pattern BurninSubtitleFontColor_BLACK :: BurninSubtitleFontColor
+pattern BurninSubtitleFontColor_BLACK = BurninSubtitleFontColor' "BLACK"
+
+pattern BurninSubtitleFontColor_BLUE :: BurninSubtitleFontColor
+pattern BurninSubtitleFontColor_BLUE = BurninSubtitleFontColor' "BLUE"
+
+pattern BurninSubtitleFontColor_GREEN :: BurninSubtitleFontColor
+pattern BurninSubtitleFontColor_GREEN = BurninSubtitleFontColor' "GREEN"
+
+pattern BurninSubtitleFontColor_HEX :: BurninSubtitleFontColor
+pattern BurninSubtitleFontColor_HEX = BurninSubtitleFontColor' "HEX"
+
+pattern BurninSubtitleFontColor_RED :: BurninSubtitleFontColor
+pattern BurninSubtitleFontColor_RED = BurninSubtitleFontColor' "RED"
+
+pattern BurninSubtitleFontColor_WHITE :: BurninSubtitleFontColor
+pattern BurninSubtitleFontColor_WHITE = BurninSubtitleFontColor' "WHITE"
+
+pattern BurninSubtitleFontColor_YELLOW :: BurninSubtitleFontColor
+pattern BurninSubtitleFontColor_YELLOW = BurninSubtitleFontColor' "YELLOW"
+
+{-# COMPLETE
+  BurninSubtitleFontColor_AUTO,
+  BurninSubtitleFontColor_BLACK,
+  BurninSubtitleFontColor_BLUE,
+  BurninSubtitleFontColor_GREEN,
+  BurninSubtitleFontColor_HEX,
+  BurninSubtitleFontColor_RED,
+  BurninSubtitleFontColor_WHITE,
+  BurninSubtitleFontColor_YELLOW,
+  BurninSubtitleFontColor'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/BurninSubtitleOutlineColor.hs b/gen/Amazonka/MediaConvert/Types/BurninSubtitleOutlineColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/BurninSubtitleOutlineColor.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.BurninSubtitleOutlineColor
+-- 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.BurninSubtitleOutlineColor
+  ( BurninSubtitleOutlineColor
+      ( ..,
+        BurninSubtitleOutlineColor_AUTO,
+        BurninSubtitleOutlineColor_BLACK,
+        BurninSubtitleOutlineColor_BLUE,
+        BurninSubtitleOutlineColor_GREEN,
+        BurninSubtitleOutlineColor_RED,
+        BurninSubtitleOutlineColor_WHITE,
+        BurninSubtitleOutlineColor_YELLOW
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify font outline color. Leave Outline color (OutlineColor) blank and
+-- set Style passthrough (StylePassthrough) to enabled to use the font
+-- outline color data from your input captions, if present.
+newtype BurninSubtitleOutlineColor = BurninSubtitleOutlineColor'
+  { fromBurninSubtitleOutlineColor ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BurninSubtitleOutlineColor_AUTO :: BurninSubtitleOutlineColor
+pattern BurninSubtitleOutlineColor_AUTO = BurninSubtitleOutlineColor' "AUTO"
+
+pattern BurninSubtitleOutlineColor_BLACK :: BurninSubtitleOutlineColor
+pattern BurninSubtitleOutlineColor_BLACK = BurninSubtitleOutlineColor' "BLACK"
+
+pattern BurninSubtitleOutlineColor_BLUE :: BurninSubtitleOutlineColor
+pattern BurninSubtitleOutlineColor_BLUE = BurninSubtitleOutlineColor' "BLUE"
+
+pattern BurninSubtitleOutlineColor_GREEN :: BurninSubtitleOutlineColor
+pattern BurninSubtitleOutlineColor_GREEN = BurninSubtitleOutlineColor' "GREEN"
+
+pattern BurninSubtitleOutlineColor_RED :: BurninSubtitleOutlineColor
+pattern BurninSubtitleOutlineColor_RED = BurninSubtitleOutlineColor' "RED"
+
+pattern BurninSubtitleOutlineColor_WHITE :: BurninSubtitleOutlineColor
+pattern BurninSubtitleOutlineColor_WHITE = BurninSubtitleOutlineColor' "WHITE"
+
+pattern BurninSubtitleOutlineColor_YELLOW :: BurninSubtitleOutlineColor
+pattern BurninSubtitleOutlineColor_YELLOW = BurninSubtitleOutlineColor' "YELLOW"
+
+{-# COMPLETE
+  BurninSubtitleOutlineColor_AUTO,
+  BurninSubtitleOutlineColor_BLACK,
+  BurninSubtitleOutlineColor_BLUE,
+  BurninSubtitleOutlineColor_GREEN,
+  BurninSubtitleOutlineColor_RED,
+  BurninSubtitleOutlineColor_WHITE,
+  BurninSubtitleOutlineColor_YELLOW,
+  BurninSubtitleOutlineColor'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/BurninSubtitleShadowColor.hs b/gen/Amazonka/MediaConvert/Types/BurninSubtitleShadowColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/BurninSubtitleShadowColor.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.BurninSubtitleShadowColor
+-- 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.BurninSubtitleShadowColor
+  ( BurninSubtitleShadowColor
+      ( ..,
+        BurninSubtitleShadowColor_AUTO,
+        BurninSubtitleShadowColor_BLACK,
+        BurninSubtitleShadowColor_NONE,
+        BurninSubtitleShadowColor_WHITE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the color of the shadow cast by the captions. Leave Shadow color
+-- (ShadowColor) blank and set Style passthrough (StylePassthrough) to
+-- enabled to use the shadow color data from your input captions, if
+-- present.
+newtype BurninSubtitleShadowColor = BurninSubtitleShadowColor'
+  { fromBurninSubtitleShadowColor ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BurninSubtitleShadowColor_AUTO :: BurninSubtitleShadowColor
+pattern BurninSubtitleShadowColor_AUTO = BurninSubtitleShadowColor' "AUTO"
+
+pattern BurninSubtitleShadowColor_BLACK :: BurninSubtitleShadowColor
+pattern BurninSubtitleShadowColor_BLACK = BurninSubtitleShadowColor' "BLACK"
+
+pattern BurninSubtitleShadowColor_NONE :: BurninSubtitleShadowColor
+pattern BurninSubtitleShadowColor_NONE = BurninSubtitleShadowColor' "NONE"
+
+pattern BurninSubtitleShadowColor_WHITE :: BurninSubtitleShadowColor
+pattern BurninSubtitleShadowColor_WHITE = BurninSubtitleShadowColor' "WHITE"
+
+{-# COMPLETE
+  BurninSubtitleShadowColor_AUTO,
+  BurninSubtitleShadowColor_BLACK,
+  BurninSubtitleShadowColor_NONE,
+  BurninSubtitleShadowColor_WHITE,
+  BurninSubtitleShadowColor'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/BurninSubtitleTeletextSpacing.hs b/gen/Amazonka/MediaConvert/Types/BurninSubtitleTeletextSpacing.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/BurninSubtitleTeletextSpacing.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.BurninSubtitleTeletextSpacing
+-- 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.BurninSubtitleTeletextSpacing
+  ( BurninSubtitleTeletextSpacing
+      ( ..,
+        BurninSubtitleTeletextSpacing_AUTO,
+        BurninSubtitleTeletextSpacing_FIXED_GRID,
+        BurninSubtitleTeletextSpacing_PROPORTIONAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether the text spacing (TeletextSpacing) in your captions is
+-- set by the captions grid, or varies depending on letter width. Choose
+-- fixed grid (FIXED_GRID) to conform to the spacing specified in the
+-- captions file more accurately. Choose proportional (PROPORTIONAL) to
+-- make the text easier to read for closed captions.
+newtype BurninSubtitleTeletextSpacing = BurninSubtitleTeletextSpacing'
+  { fromBurninSubtitleTeletextSpacing ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BurninSubtitleTeletextSpacing_AUTO :: BurninSubtitleTeletextSpacing
+pattern BurninSubtitleTeletextSpacing_AUTO = BurninSubtitleTeletextSpacing' "AUTO"
+
+pattern BurninSubtitleTeletextSpacing_FIXED_GRID :: BurninSubtitleTeletextSpacing
+pattern BurninSubtitleTeletextSpacing_FIXED_GRID = BurninSubtitleTeletextSpacing' "FIXED_GRID"
+
+pattern BurninSubtitleTeletextSpacing_PROPORTIONAL :: BurninSubtitleTeletextSpacing
+pattern BurninSubtitleTeletextSpacing_PROPORTIONAL = BurninSubtitleTeletextSpacing' "PROPORTIONAL"
+
+{-# COMPLETE
+  BurninSubtitleTeletextSpacing_AUTO,
+  BurninSubtitleTeletextSpacing_FIXED_GRID,
+  BurninSubtitleTeletextSpacing_PROPORTIONAL,
+  BurninSubtitleTeletextSpacing'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CaptionDescription.hs b/gen/Amazonka/MediaConvert/Types/CaptionDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CaptionDescription.hs
@@ -0,0 +1,216 @@
+{-# 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.CaptionDescription
+-- 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.CaptionDescription 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.CaptionDestinationSettings
+import Amazonka.MediaConvert.Types.LanguageCode
+import qualified Amazonka.Prelude as Prelude
+
+-- | This object holds groups of settings related to captions for one output.
+-- For each output that has captions, include one instance of
+-- CaptionDescriptions.
+--
+-- /See:/ 'newCaptionDescription' smart constructor.
+data CaptionDescription = CaptionDescription'
+  { -- | Specifies which \"Caption Selector\":#inputs-caption_selector to use
+    -- from each input when generating captions. The name should be of the
+    -- format \"Caption Selector \", which denotes that the Nth Caption
+    -- Selector will be used from each input.
+    captionSelectorName :: Prelude.Maybe Prelude.Text,
+    -- | Specify the language for this captions output track. For most captions
+    -- output formats, the encoder puts this language information in the output
+    -- captions metadata. If your output captions format is DVB-Sub or Burn in,
+    -- the encoder uses this language information when automatically selecting
+    -- the font script for rendering the captions text. For all outputs, you
+    -- can use an ISO 639-2 or ISO 639-3 code. For streaming outputs, you can
+    -- also use any other code in the full RFC-5646 specification. Streaming
+    -- outputs are those that are in one of the following output groups: CMAF,
+    -- DASH ISO, Apple HLS, or Microsoft Smooth Streaming.
+    customLanguageCode :: Prelude.Maybe Prelude.Text,
+    -- | Settings related to one captions tab on the MediaConvert console. In
+    -- your job JSON, an instance of captions DestinationSettings is equivalent
+    -- to one captions tab in the console. Usually, one captions tab
+    -- corresponds to one output captions track. Depending on your output
+    -- captions format, one tab might correspond to a set of output captions
+    -- tracks. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/including-captions.html.
+    destinationSettings :: Prelude.Maybe CaptionDestinationSettings,
+    -- | Specify the language of this captions output track. For most captions
+    -- output formats, the encoder puts this language information in the output
+    -- captions metadata. If your output captions format is DVB-Sub or Burn in,
+    -- the encoder uses this language information to choose the font language
+    -- for rendering the captions text.
+    languageCode :: Prelude.Maybe LanguageCode,
+    -- | Specify a label for this set of output captions. For example,
+    -- \"English\", \"Director commentary\", or \"track_2\". For streaming
+    -- outputs, MediaConvert passes this information into destination manifests
+    -- for display on the end-viewer\'s player device. For outputs in other
+    -- output groups, the service ignores this setting.
+    languageDescription :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CaptionDescription' 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:
+--
+-- 'captionSelectorName', 'captionDescription_captionSelectorName' - Specifies which \"Caption Selector\":#inputs-caption_selector to use
+-- from each input when generating captions. The name should be of the
+-- format \"Caption Selector \", which denotes that the Nth Caption
+-- Selector will be used from each input.
+--
+-- 'customLanguageCode', 'captionDescription_customLanguageCode' - Specify the language for this captions output track. For most captions
+-- output formats, the encoder puts this language information in the output
+-- captions metadata. If your output captions format is DVB-Sub or Burn in,
+-- the encoder uses this language information when automatically selecting
+-- the font script for rendering the captions text. For all outputs, you
+-- can use an ISO 639-2 or ISO 639-3 code. For streaming outputs, you can
+-- also use any other code in the full RFC-5646 specification. Streaming
+-- outputs are those that are in one of the following output groups: CMAF,
+-- DASH ISO, Apple HLS, or Microsoft Smooth Streaming.
+--
+-- 'destinationSettings', 'captionDescription_destinationSettings' - Settings related to one captions tab on the MediaConvert console. In
+-- your job JSON, an instance of captions DestinationSettings is equivalent
+-- to one captions tab in the console. Usually, one captions tab
+-- corresponds to one output captions track. Depending on your output
+-- captions format, one tab might correspond to a set of output captions
+-- tracks. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/including-captions.html.
+--
+-- 'languageCode', 'captionDescription_languageCode' - Specify the language of this captions output track. For most captions
+-- output formats, the encoder puts this language information in the output
+-- captions metadata. If your output captions format is DVB-Sub or Burn in,
+-- the encoder uses this language information to choose the font language
+-- for rendering the captions text.
+--
+-- 'languageDescription', 'captionDescription_languageDescription' - Specify a label for this set of output captions. For example,
+-- \"English\", \"Director commentary\", or \"track_2\". For streaming
+-- outputs, MediaConvert passes this information into destination manifests
+-- for display on the end-viewer\'s player device. For outputs in other
+-- output groups, the service ignores this setting.
+newCaptionDescription ::
+  CaptionDescription
+newCaptionDescription =
+  CaptionDescription'
+    { captionSelectorName =
+        Prelude.Nothing,
+      customLanguageCode = Prelude.Nothing,
+      destinationSettings = Prelude.Nothing,
+      languageCode = Prelude.Nothing,
+      languageDescription = Prelude.Nothing
+    }
+
+-- | Specifies which \"Caption Selector\":#inputs-caption_selector to use
+-- from each input when generating captions. The name should be of the
+-- format \"Caption Selector \", which denotes that the Nth Caption
+-- Selector will be used from each input.
+captionDescription_captionSelectorName :: Lens.Lens' CaptionDescription (Prelude.Maybe Prelude.Text)
+captionDescription_captionSelectorName = Lens.lens (\CaptionDescription' {captionSelectorName} -> captionSelectorName) (\s@CaptionDescription' {} a -> s {captionSelectorName = a} :: CaptionDescription)
+
+-- | Specify the language for this captions output track. For most captions
+-- output formats, the encoder puts this language information in the output
+-- captions metadata. If your output captions format is DVB-Sub or Burn in,
+-- the encoder uses this language information when automatically selecting
+-- the font script for rendering the captions text. For all outputs, you
+-- can use an ISO 639-2 or ISO 639-3 code. For streaming outputs, you can
+-- also use any other code in the full RFC-5646 specification. Streaming
+-- outputs are those that are in one of the following output groups: CMAF,
+-- DASH ISO, Apple HLS, or Microsoft Smooth Streaming.
+captionDescription_customLanguageCode :: Lens.Lens' CaptionDescription (Prelude.Maybe Prelude.Text)
+captionDescription_customLanguageCode = Lens.lens (\CaptionDescription' {customLanguageCode} -> customLanguageCode) (\s@CaptionDescription' {} a -> s {customLanguageCode = a} :: CaptionDescription)
+
+-- | Settings related to one captions tab on the MediaConvert console. In
+-- your job JSON, an instance of captions DestinationSettings is equivalent
+-- to one captions tab in the console. Usually, one captions tab
+-- corresponds to one output captions track. Depending on your output
+-- captions format, one tab might correspond to a set of output captions
+-- tracks. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/including-captions.html.
+captionDescription_destinationSettings :: Lens.Lens' CaptionDescription (Prelude.Maybe CaptionDestinationSettings)
+captionDescription_destinationSettings = Lens.lens (\CaptionDescription' {destinationSettings} -> destinationSettings) (\s@CaptionDescription' {} a -> s {destinationSettings = a} :: CaptionDescription)
+
+-- | Specify the language of this captions output track. For most captions
+-- output formats, the encoder puts this language information in the output
+-- captions metadata. If your output captions format is DVB-Sub or Burn in,
+-- the encoder uses this language information to choose the font language
+-- for rendering the captions text.
+captionDescription_languageCode :: Lens.Lens' CaptionDescription (Prelude.Maybe LanguageCode)
+captionDescription_languageCode = Lens.lens (\CaptionDescription' {languageCode} -> languageCode) (\s@CaptionDescription' {} a -> s {languageCode = a} :: CaptionDescription)
+
+-- | Specify a label for this set of output captions. For example,
+-- \"English\", \"Director commentary\", or \"track_2\". For streaming
+-- outputs, MediaConvert passes this information into destination manifests
+-- for display on the end-viewer\'s player device. For outputs in other
+-- output groups, the service ignores this setting.
+captionDescription_languageDescription :: Lens.Lens' CaptionDescription (Prelude.Maybe Prelude.Text)
+captionDescription_languageDescription = Lens.lens (\CaptionDescription' {languageDescription} -> languageDescription) (\s@CaptionDescription' {} a -> s {languageDescription = a} :: CaptionDescription)
+
+instance Data.FromJSON CaptionDescription where
+  parseJSON =
+    Data.withObject
+      "CaptionDescription"
+      ( \x ->
+          CaptionDescription'
+            Prelude.<$> (x Data..:? "captionSelectorName")
+            Prelude.<*> (x Data..:? "customLanguageCode")
+            Prelude.<*> (x Data..:? "destinationSettings")
+            Prelude.<*> (x Data..:? "languageCode")
+            Prelude.<*> (x Data..:? "languageDescription")
+      )
+
+instance Prelude.Hashable CaptionDescription where
+  hashWithSalt _salt CaptionDescription' {..} =
+    _salt
+      `Prelude.hashWithSalt` captionSelectorName
+      `Prelude.hashWithSalt` customLanguageCode
+      `Prelude.hashWithSalt` destinationSettings
+      `Prelude.hashWithSalt` languageCode
+      `Prelude.hashWithSalt` languageDescription
+
+instance Prelude.NFData CaptionDescription where
+  rnf CaptionDescription' {..} =
+    Prelude.rnf captionSelectorName
+      `Prelude.seq` Prelude.rnf customLanguageCode
+      `Prelude.seq` Prelude.rnf destinationSettings
+      `Prelude.seq` Prelude.rnf languageCode
+      `Prelude.seq` Prelude.rnf languageDescription
+
+instance Data.ToJSON CaptionDescription where
+  toJSON CaptionDescription' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("captionSelectorName" Data..=)
+              Prelude.<$> captionSelectorName,
+            ("customLanguageCode" Data..=)
+              Prelude.<$> customLanguageCode,
+            ("destinationSettings" Data..=)
+              Prelude.<$> destinationSettings,
+            ("languageCode" Data..=) Prelude.<$> languageCode,
+            ("languageDescription" Data..=)
+              Prelude.<$> languageDescription
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/CaptionDescriptionPreset.hs b/gen/Amazonka/MediaConvert/Types/CaptionDescriptionPreset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CaptionDescriptionPreset.hs
@@ -0,0 +1,191 @@
+{-# 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.CaptionDescriptionPreset
+-- 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.CaptionDescriptionPreset 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.CaptionDestinationSettings
+import Amazonka.MediaConvert.Types.LanguageCode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Caption Description for preset
+--
+-- /See:/ 'newCaptionDescriptionPreset' smart constructor.
+data CaptionDescriptionPreset = CaptionDescriptionPreset'
+  { -- | Specify the language for this captions output track. For most captions
+    -- output formats, the encoder puts this language information in the output
+    -- captions metadata. If your output captions format is DVB-Sub or Burn in,
+    -- the encoder uses this language information when automatically selecting
+    -- the font script for rendering the captions text. For all outputs, you
+    -- can use an ISO 639-2 or ISO 639-3 code. For streaming outputs, you can
+    -- also use any other code in the full RFC-5646 specification. Streaming
+    -- outputs are those that are in one of the following output groups: CMAF,
+    -- DASH ISO, Apple HLS, or Microsoft Smooth Streaming.
+    customLanguageCode :: Prelude.Maybe Prelude.Text,
+    -- | Settings related to one captions tab on the MediaConvert console. In
+    -- your job JSON, an instance of captions DestinationSettings is equivalent
+    -- to one captions tab in the console. Usually, one captions tab
+    -- corresponds to one output captions track. Depending on your output
+    -- captions format, one tab might correspond to a set of output captions
+    -- tracks. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/including-captions.html.
+    destinationSettings :: Prelude.Maybe CaptionDestinationSettings,
+    -- | Specify the language of this captions output track. For most captions
+    -- output formats, the encoder puts this language information in the output
+    -- captions metadata. If your output captions format is DVB-Sub or Burn in,
+    -- the encoder uses this language information to choose the font language
+    -- for rendering the captions text.
+    languageCode :: Prelude.Maybe LanguageCode,
+    -- | Specify a label for this set of output captions. For example,
+    -- \"English\", \"Director commentary\", or \"track_2\". For streaming
+    -- outputs, MediaConvert passes this information into destination manifests
+    -- for display on the end-viewer\'s player device. For outputs in other
+    -- output groups, the service ignores this setting.
+    languageDescription :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CaptionDescriptionPreset' 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:
+--
+-- 'customLanguageCode', 'captionDescriptionPreset_customLanguageCode' - Specify the language for this captions output track. For most captions
+-- output formats, the encoder puts this language information in the output
+-- captions metadata. If your output captions format is DVB-Sub or Burn in,
+-- the encoder uses this language information when automatically selecting
+-- the font script for rendering the captions text. For all outputs, you
+-- can use an ISO 639-2 or ISO 639-3 code. For streaming outputs, you can
+-- also use any other code in the full RFC-5646 specification. Streaming
+-- outputs are those that are in one of the following output groups: CMAF,
+-- DASH ISO, Apple HLS, or Microsoft Smooth Streaming.
+--
+-- 'destinationSettings', 'captionDescriptionPreset_destinationSettings' - Settings related to one captions tab on the MediaConvert console. In
+-- your job JSON, an instance of captions DestinationSettings is equivalent
+-- to one captions tab in the console. Usually, one captions tab
+-- corresponds to one output captions track. Depending on your output
+-- captions format, one tab might correspond to a set of output captions
+-- tracks. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/including-captions.html.
+--
+-- 'languageCode', 'captionDescriptionPreset_languageCode' - Specify the language of this captions output track. For most captions
+-- output formats, the encoder puts this language information in the output
+-- captions metadata. If your output captions format is DVB-Sub or Burn in,
+-- the encoder uses this language information to choose the font language
+-- for rendering the captions text.
+--
+-- 'languageDescription', 'captionDescriptionPreset_languageDescription' - Specify a label for this set of output captions. For example,
+-- \"English\", \"Director commentary\", or \"track_2\". For streaming
+-- outputs, MediaConvert passes this information into destination manifests
+-- for display on the end-viewer\'s player device. For outputs in other
+-- output groups, the service ignores this setting.
+newCaptionDescriptionPreset ::
+  CaptionDescriptionPreset
+newCaptionDescriptionPreset =
+  CaptionDescriptionPreset'
+    { customLanguageCode =
+        Prelude.Nothing,
+      destinationSettings = Prelude.Nothing,
+      languageCode = Prelude.Nothing,
+      languageDescription = Prelude.Nothing
+    }
+
+-- | Specify the language for this captions output track. For most captions
+-- output formats, the encoder puts this language information in the output
+-- captions metadata. If your output captions format is DVB-Sub or Burn in,
+-- the encoder uses this language information when automatically selecting
+-- the font script for rendering the captions text. For all outputs, you
+-- can use an ISO 639-2 or ISO 639-3 code. For streaming outputs, you can
+-- also use any other code in the full RFC-5646 specification. Streaming
+-- outputs are those that are in one of the following output groups: CMAF,
+-- DASH ISO, Apple HLS, or Microsoft Smooth Streaming.
+captionDescriptionPreset_customLanguageCode :: Lens.Lens' CaptionDescriptionPreset (Prelude.Maybe Prelude.Text)
+captionDescriptionPreset_customLanguageCode = Lens.lens (\CaptionDescriptionPreset' {customLanguageCode} -> customLanguageCode) (\s@CaptionDescriptionPreset' {} a -> s {customLanguageCode = a} :: CaptionDescriptionPreset)
+
+-- | Settings related to one captions tab on the MediaConvert console. In
+-- your job JSON, an instance of captions DestinationSettings is equivalent
+-- to one captions tab in the console. Usually, one captions tab
+-- corresponds to one output captions track. Depending on your output
+-- captions format, one tab might correspond to a set of output captions
+-- tracks. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/including-captions.html.
+captionDescriptionPreset_destinationSettings :: Lens.Lens' CaptionDescriptionPreset (Prelude.Maybe CaptionDestinationSettings)
+captionDescriptionPreset_destinationSettings = Lens.lens (\CaptionDescriptionPreset' {destinationSettings} -> destinationSettings) (\s@CaptionDescriptionPreset' {} a -> s {destinationSettings = a} :: CaptionDescriptionPreset)
+
+-- | Specify the language of this captions output track. For most captions
+-- output formats, the encoder puts this language information in the output
+-- captions metadata. If your output captions format is DVB-Sub or Burn in,
+-- the encoder uses this language information to choose the font language
+-- for rendering the captions text.
+captionDescriptionPreset_languageCode :: Lens.Lens' CaptionDescriptionPreset (Prelude.Maybe LanguageCode)
+captionDescriptionPreset_languageCode = Lens.lens (\CaptionDescriptionPreset' {languageCode} -> languageCode) (\s@CaptionDescriptionPreset' {} a -> s {languageCode = a} :: CaptionDescriptionPreset)
+
+-- | Specify a label for this set of output captions. For example,
+-- \"English\", \"Director commentary\", or \"track_2\". For streaming
+-- outputs, MediaConvert passes this information into destination manifests
+-- for display on the end-viewer\'s player device. For outputs in other
+-- output groups, the service ignores this setting.
+captionDescriptionPreset_languageDescription :: Lens.Lens' CaptionDescriptionPreset (Prelude.Maybe Prelude.Text)
+captionDescriptionPreset_languageDescription = Lens.lens (\CaptionDescriptionPreset' {languageDescription} -> languageDescription) (\s@CaptionDescriptionPreset' {} a -> s {languageDescription = a} :: CaptionDescriptionPreset)
+
+instance Data.FromJSON CaptionDescriptionPreset where
+  parseJSON =
+    Data.withObject
+      "CaptionDescriptionPreset"
+      ( \x ->
+          CaptionDescriptionPreset'
+            Prelude.<$> (x Data..:? "customLanguageCode")
+            Prelude.<*> (x Data..:? "destinationSettings")
+            Prelude.<*> (x Data..:? "languageCode")
+            Prelude.<*> (x Data..:? "languageDescription")
+      )
+
+instance Prelude.Hashable CaptionDescriptionPreset where
+  hashWithSalt _salt CaptionDescriptionPreset' {..} =
+    _salt
+      `Prelude.hashWithSalt` customLanguageCode
+      `Prelude.hashWithSalt` destinationSettings
+      `Prelude.hashWithSalt` languageCode
+      `Prelude.hashWithSalt` languageDescription
+
+instance Prelude.NFData CaptionDescriptionPreset where
+  rnf CaptionDescriptionPreset' {..} =
+    Prelude.rnf customLanguageCode
+      `Prelude.seq` Prelude.rnf destinationSettings
+      `Prelude.seq` Prelude.rnf languageCode
+      `Prelude.seq` Prelude.rnf languageDescription
+
+instance Data.ToJSON CaptionDescriptionPreset where
+  toJSON CaptionDescriptionPreset' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("customLanguageCode" Data..=)
+              Prelude.<$> customLanguageCode,
+            ("destinationSettings" Data..=)
+              Prelude.<$> destinationSettings,
+            ("languageCode" Data..=) Prelude.<$> languageCode,
+            ("languageDescription" Data..=)
+              Prelude.<$> languageDescription
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/CaptionDestinationSettings.hs b/gen/Amazonka/MediaConvert/Types/CaptionDestinationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CaptionDestinationSettings.hs
@@ -0,0 +1,407 @@
+{-# 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.CaptionDestinationSettings
+-- 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.CaptionDestinationSettings 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.BurninDestinationSettings
+import Amazonka.MediaConvert.Types.CaptionDestinationType
+import Amazonka.MediaConvert.Types.DvbSubDestinationSettings
+import Amazonka.MediaConvert.Types.EmbeddedDestinationSettings
+import Amazonka.MediaConvert.Types.ImscDestinationSettings
+import Amazonka.MediaConvert.Types.SccDestinationSettings
+import Amazonka.MediaConvert.Types.SrtDestinationSettings
+import Amazonka.MediaConvert.Types.TeletextDestinationSettings
+import Amazonka.MediaConvert.Types.TtmlDestinationSettings
+import Amazonka.MediaConvert.Types.WebvttDestinationSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to one captions tab on the MediaConvert console. In
+-- your job JSON, an instance of captions DestinationSettings is equivalent
+-- to one captions tab in the console. Usually, one captions tab
+-- corresponds to one output captions track. Depending on your output
+-- captions format, one tab might correspond to a set of output captions
+-- tracks. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/including-captions.html.
+--
+-- /See:/ 'newCaptionDestinationSettings' smart constructor.
+data CaptionDestinationSettings = CaptionDestinationSettings'
+  { -- | Burn-in is a captions delivery method, rather than a captions format.
+    -- Burn-in writes the captions directly on your video frames, replacing
+    -- pixels of video content with the captions. Set up burn-in captions in
+    -- the same output as your video. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/burn-in-output-captions.html.
+    -- When you work directly in your JSON job specification, include this
+    -- object and any required children when you set destinationType to
+    -- BURN_IN.
+    burninDestinationSettings :: Prelude.Maybe BurninDestinationSettings,
+    -- | Specify the format for this set of captions on this output. The default
+    -- format is embedded without SCTE-20. Note that your choice of video
+    -- output container constrains your choice of output captions format. For
+    -- more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/captions-support-tables.html.
+    -- If you are using SCTE-20 and you want to create an output that complies
+    -- with the SCTE-43 spec, choose SCTE-20 plus embedded
+    -- (SCTE20_PLUS_EMBEDDED). To create a non-compliant output where the
+    -- embedded captions come first, choose Embedded plus SCTE-20
+    -- (EMBEDDED_PLUS_SCTE20).
+    destinationType :: Prelude.Maybe CaptionDestinationType,
+    -- | Settings related to DVB-Sub captions. Set up DVB-Sub captions in the
+    -- same output as your video. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/dvb-sub-output-captions.html.
+    -- When you work directly in your JSON job specification, include this
+    -- object and any required children when you set destinationType to
+    -- DVB_SUB.
+    dvbSubDestinationSettings :: Prelude.Maybe DvbSubDestinationSettings,
+    -- | Settings related to CEA\/EIA-608 and CEA\/EIA-708 (also called embedded
+    -- or ancillary) captions. Set up embedded captions in the same output as
+    -- your video. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/embedded-output-captions.html.
+    -- When you work directly in your JSON job specification, include this
+    -- object and any required children when you set destinationType to
+    -- EMBEDDED, EMBEDDED_PLUS_SCTE20, or SCTE20_PLUS_EMBEDDED.
+    embeddedDestinationSettings :: Prelude.Maybe EmbeddedDestinationSettings,
+    -- | Settings related to IMSC captions. IMSC is a sidecar format that holds
+    -- captions in a file that is separate from the video container. Set up
+    -- sidecar captions in the same output group, but different output from
+    -- your video. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
+    -- When you work directly in your JSON job specification, include this
+    -- object and any required children when you set destinationType to IMSC.
+    imscDestinationSettings :: Prelude.Maybe ImscDestinationSettings,
+    -- | Settings related to SCC captions. SCC is a sidecar format that holds
+    -- captions in a file that is separate from the video container. Set up
+    -- sidecar captions in the same output group, but different output from
+    -- your video. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/scc-srt-output-captions.html.
+    -- When you work directly in your JSON job specification, include this
+    -- object and any required children when you set destinationType to SCC.
+    sccDestinationSettings :: Prelude.Maybe SccDestinationSettings,
+    -- | Settings related to SRT captions. SRT is a sidecar format that holds
+    -- captions in a file that is separate from the video container. Set up
+    -- sidecar captions in the same output group, but different output from
+    -- your video. When you work directly in your JSON job specification,
+    -- include this object and any required children when you set
+    -- destinationType to SRT.
+    srtDestinationSettings :: Prelude.Maybe SrtDestinationSettings,
+    -- | Settings related to teletext captions. Set up teletext captions in the
+    -- same output as your video. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/teletext-output-captions.html.
+    -- When you work directly in your JSON job specification, include this
+    -- object and any required children when you set destinationType to
+    -- TELETEXT.
+    teletextDestinationSettings :: Prelude.Maybe TeletextDestinationSettings,
+    -- | Settings related to TTML captions. TTML is a sidecar format that holds
+    -- captions in a file that is separate from the video container. Set up
+    -- sidecar captions in the same output group, but different output from
+    -- your video. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
+    -- When you work directly in your JSON job specification, include this
+    -- object and any required children when you set destinationType to TTML.
+    ttmlDestinationSettings :: Prelude.Maybe TtmlDestinationSettings,
+    -- | Settings related to WebVTT captions. WebVTT is a sidecar format that
+    -- holds captions in a file that is separate from the video container. Set
+    -- up sidecar captions in the same output group, but different output from
+    -- your video. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
+    -- When you work directly in your JSON job specification, include this
+    -- object and any required children when you set destinationType to WebVTT.
+    webvttDestinationSettings :: Prelude.Maybe WebvttDestinationSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CaptionDestinationSettings' 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:
+--
+-- 'burninDestinationSettings', 'captionDestinationSettings_burninDestinationSettings' - Burn-in is a captions delivery method, rather than a captions format.
+-- Burn-in writes the captions directly on your video frames, replacing
+-- pixels of video content with the captions. Set up burn-in captions in
+-- the same output as your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/burn-in-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to
+-- BURN_IN.
+--
+-- 'destinationType', 'captionDestinationSettings_destinationType' - Specify the format for this set of captions on this output. The default
+-- format is embedded without SCTE-20. Note that your choice of video
+-- output container constrains your choice of output captions format. For
+-- more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/captions-support-tables.html.
+-- If you are using SCTE-20 and you want to create an output that complies
+-- with the SCTE-43 spec, choose SCTE-20 plus embedded
+-- (SCTE20_PLUS_EMBEDDED). To create a non-compliant output where the
+-- embedded captions come first, choose Embedded plus SCTE-20
+-- (EMBEDDED_PLUS_SCTE20).
+--
+-- 'dvbSubDestinationSettings', 'captionDestinationSettings_dvbSubDestinationSettings' - Settings related to DVB-Sub captions. Set up DVB-Sub captions in the
+-- same output as your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/dvb-sub-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to
+-- DVB_SUB.
+--
+-- 'embeddedDestinationSettings', 'captionDestinationSettings_embeddedDestinationSettings' - Settings related to CEA\/EIA-608 and CEA\/EIA-708 (also called embedded
+-- or ancillary) captions. Set up embedded captions in the same output as
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/embedded-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to
+-- EMBEDDED, EMBEDDED_PLUS_SCTE20, or SCTE20_PLUS_EMBEDDED.
+--
+-- 'imscDestinationSettings', 'captionDestinationSettings_imscDestinationSettings' - Settings related to IMSC captions. IMSC is a sidecar format that holds
+-- captions in a file that is separate from the video container. Set up
+-- sidecar captions in the same output group, but different output from
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to IMSC.
+--
+-- 'sccDestinationSettings', 'captionDestinationSettings_sccDestinationSettings' - Settings related to SCC captions. SCC is a sidecar format that holds
+-- captions in a file that is separate from the video container. Set up
+-- sidecar captions in the same output group, but different output from
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/scc-srt-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to SCC.
+--
+-- 'srtDestinationSettings', 'captionDestinationSettings_srtDestinationSettings' - Settings related to SRT captions. SRT is a sidecar format that holds
+-- captions in a file that is separate from the video container. Set up
+-- sidecar captions in the same output group, but different output from
+-- your video. When you work directly in your JSON job specification,
+-- include this object and any required children when you set
+-- destinationType to SRT.
+--
+-- 'teletextDestinationSettings', 'captionDestinationSettings_teletextDestinationSettings' - Settings related to teletext captions. Set up teletext captions in the
+-- same output as your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/teletext-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to
+-- TELETEXT.
+--
+-- 'ttmlDestinationSettings', 'captionDestinationSettings_ttmlDestinationSettings' - Settings related to TTML captions. TTML is a sidecar format that holds
+-- captions in a file that is separate from the video container. Set up
+-- sidecar captions in the same output group, but different output from
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to TTML.
+--
+-- 'webvttDestinationSettings', 'captionDestinationSettings_webvttDestinationSettings' - Settings related to WebVTT captions. WebVTT is a sidecar format that
+-- holds captions in a file that is separate from the video container. Set
+-- up sidecar captions in the same output group, but different output from
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to WebVTT.
+newCaptionDestinationSettings ::
+  CaptionDestinationSettings
+newCaptionDestinationSettings =
+  CaptionDestinationSettings'
+    { burninDestinationSettings =
+        Prelude.Nothing,
+      destinationType = Prelude.Nothing,
+      dvbSubDestinationSettings = Prelude.Nothing,
+      embeddedDestinationSettings = Prelude.Nothing,
+      imscDestinationSettings = Prelude.Nothing,
+      sccDestinationSettings = Prelude.Nothing,
+      srtDestinationSettings = Prelude.Nothing,
+      teletextDestinationSettings = Prelude.Nothing,
+      ttmlDestinationSettings = Prelude.Nothing,
+      webvttDestinationSettings = Prelude.Nothing
+    }
+
+-- | Burn-in is a captions delivery method, rather than a captions format.
+-- Burn-in writes the captions directly on your video frames, replacing
+-- pixels of video content with the captions. Set up burn-in captions in
+-- the same output as your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/burn-in-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to
+-- BURN_IN.
+captionDestinationSettings_burninDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe BurninDestinationSettings)
+captionDestinationSettings_burninDestinationSettings = Lens.lens (\CaptionDestinationSettings' {burninDestinationSettings} -> burninDestinationSettings) (\s@CaptionDestinationSettings' {} a -> s {burninDestinationSettings = a} :: CaptionDestinationSettings)
+
+-- | Specify the format for this set of captions on this output. The default
+-- format is embedded without SCTE-20. Note that your choice of video
+-- output container constrains your choice of output captions format. For
+-- more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/captions-support-tables.html.
+-- If you are using SCTE-20 and you want to create an output that complies
+-- with the SCTE-43 spec, choose SCTE-20 plus embedded
+-- (SCTE20_PLUS_EMBEDDED). To create a non-compliant output where the
+-- embedded captions come first, choose Embedded plus SCTE-20
+-- (EMBEDDED_PLUS_SCTE20).
+captionDestinationSettings_destinationType :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe CaptionDestinationType)
+captionDestinationSettings_destinationType = Lens.lens (\CaptionDestinationSettings' {destinationType} -> destinationType) (\s@CaptionDestinationSettings' {} a -> s {destinationType = a} :: CaptionDestinationSettings)
+
+-- | Settings related to DVB-Sub captions. Set up DVB-Sub captions in the
+-- same output as your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/dvb-sub-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to
+-- DVB_SUB.
+captionDestinationSettings_dvbSubDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe DvbSubDestinationSettings)
+captionDestinationSettings_dvbSubDestinationSettings = Lens.lens (\CaptionDestinationSettings' {dvbSubDestinationSettings} -> dvbSubDestinationSettings) (\s@CaptionDestinationSettings' {} a -> s {dvbSubDestinationSettings = a} :: CaptionDestinationSettings)
+
+-- | Settings related to CEA\/EIA-608 and CEA\/EIA-708 (also called embedded
+-- or ancillary) captions. Set up embedded captions in the same output as
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/embedded-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to
+-- EMBEDDED, EMBEDDED_PLUS_SCTE20, or SCTE20_PLUS_EMBEDDED.
+captionDestinationSettings_embeddedDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe EmbeddedDestinationSettings)
+captionDestinationSettings_embeddedDestinationSettings = Lens.lens (\CaptionDestinationSettings' {embeddedDestinationSettings} -> embeddedDestinationSettings) (\s@CaptionDestinationSettings' {} a -> s {embeddedDestinationSettings = a} :: CaptionDestinationSettings)
+
+-- | Settings related to IMSC captions. IMSC is a sidecar format that holds
+-- captions in a file that is separate from the video container. Set up
+-- sidecar captions in the same output group, but different output from
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to IMSC.
+captionDestinationSettings_imscDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe ImscDestinationSettings)
+captionDestinationSettings_imscDestinationSettings = Lens.lens (\CaptionDestinationSettings' {imscDestinationSettings} -> imscDestinationSettings) (\s@CaptionDestinationSettings' {} a -> s {imscDestinationSettings = a} :: CaptionDestinationSettings)
+
+-- | Settings related to SCC captions. SCC is a sidecar format that holds
+-- captions in a file that is separate from the video container. Set up
+-- sidecar captions in the same output group, but different output from
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/scc-srt-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to SCC.
+captionDestinationSettings_sccDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe SccDestinationSettings)
+captionDestinationSettings_sccDestinationSettings = Lens.lens (\CaptionDestinationSettings' {sccDestinationSettings} -> sccDestinationSettings) (\s@CaptionDestinationSettings' {} a -> s {sccDestinationSettings = a} :: CaptionDestinationSettings)
+
+-- | Settings related to SRT captions. SRT is a sidecar format that holds
+-- captions in a file that is separate from the video container. Set up
+-- sidecar captions in the same output group, but different output from
+-- your video. When you work directly in your JSON job specification,
+-- include this object and any required children when you set
+-- destinationType to SRT.
+captionDestinationSettings_srtDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe SrtDestinationSettings)
+captionDestinationSettings_srtDestinationSettings = Lens.lens (\CaptionDestinationSettings' {srtDestinationSettings} -> srtDestinationSettings) (\s@CaptionDestinationSettings' {} a -> s {srtDestinationSettings = a} :: CaptionDestinationSettings)
+
+-- | Settings related to teletext captions. Set up teletext captions in the
+-- same output as your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/teletext-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to
+-- TELETEXT.
+captionDestinationSettings_teletextDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe TeletextDestinationSettings)
+captionDestinationSettings_teletextDestinationSettings = Lens.lens (\CaptionDestinationSettings' {teletextDestinationSettings} -> teletextDestinationSettings) (\s@CaptionDestinationSettings' {} a -> s {teletextDestinationSettings = a} :: CaptionDestinationSettings)
+
+-- | Settings related to TTML captions. TTML is a sidecar format that holds
+-- captions in a file that is separate from the video container. Set up
+-- sidecar captions in the same output group, but different output from
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to TTML.
+captionDestinationSettings_ttmlDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe TtmlDestinationSettings)
+captionDestinationSettings_ttmlDestinationSettings = Lens.lens (\CaptionDestinationSettings' {ttmlDestinationSettings} -> ttmlDestinationSettings) (\s@CaptionDestinationSettings' {} a -> s {ttmlDestinationSettings = a} :: CaptionDestinationSettings)
+
+-- | Settings related to WebVTT captions. WebVTT is a sidecar format that
+-- holds captions in a file that is separate from the video container. Set
+-- up sidecar captions in the same output group, but different output from
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to WebVTT.
+captionDestinationSettings_webvttDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe WebvttDestinationSettings)
+captionDestinationSettings_webvttDestinationSettings = Lens.lens (\CaptionDestinationSettings' {webvttDestinationSettings} -> webvttDestinationSettings) (\s@CaptionDestinationSettings' {} a -> s {webvttDestinationSettings = a} :: CaptionDestinationSettings)
+
+instance Data.FromJSON CaptionDestinationSettings where
+  parseJSON =
+    Data.withObject
+      "CaptionDestinationSettings"
+      ( \x ->
+          CaptionDestinationSettings'
+            Prelude.<$> (x Data..:? "burninDestinationSettings")
+            Prelude.<*> (x Data..:? "destinationType")
+            Prelude.<*> (x Data..:? "dvbSubDestinationSettings")
+            Prelude.<*> (x Data..:? "embeddedDestinationSettings")
+            Prelude.<*> (x Data..:? "imscDestinationSettings")
+            Prelude.<*> (x Data..:? "sccDestinationSettings")
+            Prelude.<*> (x Data..:? "srtDestinationSettings")
+            Prelude.<*> (x Data..:? "teletextDestinationSettings")
+            Prelude.<*> (x Data..:? "ttmlDestinationSettings")
+            Prelude.<*> (x Data..:? "webvttDestinationSettings")
+      )
+
+instance Prelude.Hashable CaptionDestinationSettings where
+  hashWithSalt _salt CaptionDestinationSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` burninDestinationSettings
+      `Prelude.hashWithSalt` destinationType
+      `Prelude.hashWithSalt` dvbSubDestinationSettings
+      `Prelude.hashWithSalt` embeddedDestinationSettings
+      `Prelude.hashWithSalt` imscDestinationSettings
+      `Prelude.hashWithSalt` sccDestinationSettings
+      `Prelude.hashWithSalt` srtDestinationSettings
+      `Prelude.hashWithSalt` teletextDestinationSettings
+      `Prelude.hashWithSalt` ttmlDestinationSettings
+      `Prelude.hashWithSalt` webvttDestinationSettings
+
+instance Prelude.NFData CaptionDestinationSettings where
+  rnf CaptionDestinationSettings' {..} =
+    Prelude.rnf burninDestinationSettings
+      `Prelude.seq` Prelude.rnf destinationType
+      `Prelude.seq` Prelude.rnf dvbSubDestinationSettings
+      `Prelude.seq` Prelude.rnf embeddedDestinationSettings
+      `Prelude.seq` Prelude.rnf imscDestinationSettings
+      `Prelude.seq` Prelude.rnf sccDestinationSettings
+      `Prelude.seq` Prelude.rnf srtDestinationSettings
+      `Prelude.seq` Prelude.rnf teletextDestinationSettings
+      `Prelude.seq` Prelude.rnf ttmlDestinationSettings
+      `Prelude.seq` Prelude.rnf webvttDestinationSettings
+
+instance Data.ToJSON CaptionDestinationSettings where
+  toJSON CaptionDestinationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("burninDestinationSettings" Data..=)
+              Prelude.<$> burninDestinationSettings,
+            ("destinationType" Data..=)
+              Prelude.<$> destinationType,
+            ("dvbSubDestinationSettings" Data..=)
+              Prelude.<$> dvbSubDestinationSettings,
+            ("embeddedDestinationSettings" Data..=)
+              Prelude.<$> embeddedDestinationSettings,
+            ("imscDestinationSettings" Data..=)
+              Prelude.<$> imscDestinationSettings,
+            ("sccDestinationSettings" Data..=)
+              Prelude.<$> sccDestinationSettings,
+            ("srtDestinationSettings" Data..=)
+              Prelude.<$> srtDestinationSettings,
+            ("teletextDestinationSettings" Data..=)
+              Prelude.<$> teletextDestinationSettings,
+            ("ttmlDestinationSettings" Data..=)
+              Prelude.<$> ttmlDestinationSettings,
+            ("webvttDestinationSettings" Data..=)
+              Prelude.<$> webvttDestinationSettings
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/CaptionDestinationType.hs b/gen/Amazonka/MediaConvert/Types/CaptionDestinationType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CaptionDestinationType.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CaptionDestinationType
+-- 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.CaptionDestinationType
+  ( CaptionDestinationType
+      ( ..,
+        CaptionDestinationType_BURN_IN,
+        CaptionDestinationType_DVB_SUB,
+        CaptionDestinationType_EMBEDDED,
+        CaptionDestinationType_EMBEDDED_PLUS_SCTE20,
+        CaptionDestinationType_IMSC,
+        CaptionDestinationType_SCC,
+        CaptionDestinationType_SCTE20_PLUS_EMBEDDED,
+        CaptionDestinationType_SMI,
+        CaptionDestinationType_SRT,
+        CaptionDestinationType_TELETEXT,
+        CaptionDestinationType_TTML,
+        CaptionDestinationType_WEBVTT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the format for this set of captions on this output. The default
+-- format is embedded without SCTE-20. Note that your choice of video
+-- output container constrains your choice of output captions format. For
+-- more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/captions-support-tables.html.
+-- If you are using SCTE-20 and you want to create an output that complies
+-- with the SCTE-43 spec, choose SCTE-20 plus embedded
+-- (SCTE20_PLUS_EMBEDDED). To create a non-compliant output where the
+-- embedded captions come first, choose Embedded plus SCTE-20
+-- (EMBEDDED_PLUS_SCTE20).
+newtype CaptionDestinationType = CaptionDestinationType'
+  { fromCaptionDestinationType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CaptionDestinationType_BURN_IN :: CaptionDestinationType
+pattern CaptionDestinationType_BURN_IN = CaptionDestinationType' "BURN_IN"
+
+pattern CaptionDestinationType_DVB_SUB :: CaptionDestinationType
+pattern CaptionDestinationType_DVB_SUB = CaptionDestinationType' "DVB_SUB"
+
+pattern CaptionDestinationType_EMBEDDED :: CaptionDestinationType
+pattern CaptionDestinationType_EMBEDDED = CaptionDestinationType' "EMBEDDED"
+
+pattern CaptionDestinationType_EMBEDDED_PLUS_SCTE20 :: CaptionDestinationType
+pattern CaptionDestinationType_EMBEDDED_PLUS_SCTE20 = CaptionDestinationType' "EMBEDDED_PLUS_SCTE20"
+
+pattern CaptionDestinationType_IMSC :: CaptionDestinationType
+pattern CaptionDestinationType_IMSC = CaptionDestinationType' "IMSC"
+
+pattern CaptionDestinationType_SCC :: CaptionDestinationType
+pattern CaptionDestinationType_SCC = CaptionDestinationType' "SCC"
+
+pattern CaptionDestinationType_SCTE20_PLUS_EMBEDDED :: CaptionDestinationType
+pattern CaptionDestinationType_SCTE20_PLUS_EMBEDDED = CaptionDestinationType' "SCTE20_PLUS_EMBEDDED"
+
+pattern CaptionDestinationType_SMI :: CaptionDestinationType
+pattern CaptionDestinationType_SMI = CaptionDestinationType' "SMI"
+
+pattern CaptionDestinationType_SRT :: CaptionDestinationType
+pattern CaptionDestinationType_SRT = CaptionDestinationType' "SRT"
+
+pattern CaptionDestinationType_TELETEXT :: CaptionDestinationType
+pattern CaptionDestinationType_TELETEXT = CaptionDestinationType' "TELETEXT"
+
+pattern CaptionDestinationType_TTML :: CaptionDestinationType
+pattern CaptionDestinationType_TTML = CaptionDestinationType' "TTML"
+
+pattern CaptionDestinationType_WEBVTT :: CaptionDestinationType
+pattern CaptionDestinationType_WEBVTT = CaptionDestinationType' "WEBVTT"
+
+{-# COMPLETE
+  CaptionDestinationType_BURN_IN,
+  CaptionDestinationType_DVB_SUB,
+  CaptionDestinationType_EMBEDDED,
+  CaptionDestinationType_EMBEDDED_PLUS_SCTE20,
+  CaptionDestinationType_IMSC,
+  CaptionDestinationType_SCC,
+  CaptionDestinationType_SCTE20_PLUS_EMBEDDED,
+  CaptionDestinationType_SMI,
+  CaptionDestinationType_SRT,
+  CaptionDestinationType_TELETEXT,
+  CaptionDestinationType_TTML,
+  CaptionDestinationType_WEBVTT,
+  CaptionDestinationType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CaptionSelector.hs b/gen/Amazonka/MediaConvert/Types/CaptionSelector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CaptionSelector.hs
@@ -0,0 +1,158 @@
+{-# 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.CaptionSelector
+-- 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.CaptionSelector 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.CaptionSourceSettings
+import Amazonka.MediaConvert.Types.LanguageCode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use captions selectors to specify the captions data from your input that
+-- you use in your outputs. You can use up to 20 captions selectors per
+-- input.
+--
+-- /See:/ 'newCaptionSelector' smart constructor.
+data CaptionSelector = CaptionSelector'
+  { -- | The specific language to extract from source, using the ISO 639-2 or ISO
+    -- 639-3 three-letter language code. If input is SCTE-27, complete this
+    -- field and\/or PID to select the caption language to extract. If input is
+    -- DVB-Sub and output is Burn-in or SMPTE-TT, complete this field and\/or
+    -- PID to select the caption language to extract. If input is DVB-Sub that
+    -- is being passed through, omit this field (and PID field); there is no
+    -- way to extract a specific language with pass-through captions.
+    customLanguageCode :: Prelude.Maybe Prelude.Text,
+    -- | The specific language to extract from source. If input is SCTE-27,
+    -- complete this field and\/or PID to select the caption language to
+    -- extract. If input is DVB-Sub and output is Burn-in or SMPTE-TT, complete
+    -- this field and\/or PID to select the caption language to extract. If
+    -- input is DVB-Sub that is being passed through, omit this field (and PID
+    -- field); there is no way to extract a specific language with pass-through
+    -- captions.
+    languageCode :: Prelude.Maybe LanguageCode,
+    -- | If your input captions are SCC, TTML, STL, SMI, SRT, or IMSC in an xml
+    -- file, specify the URI of the input captions source file. If your input
+    -- captions are IMSC in an IMF package, use TrackSourceSettings instead of
+    -- FileSoureSettings.
+    sourceSettings :: Prelude.Maybe CaptionSourceSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CaptionSelector' 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:
+--
+-- 'customLanguageCode', 'captionSelector_customLanguageCode' - The specific language to extract from source, using the ISO 639-2 or ISO
+-- 639-3 three-letter language code. If input is SCTE-27, complete this
+-- field and\/or PID to select the caption language to extract. If input is
+-- DVB-Sub and output is Burn-in or SMPTE-TT, complete this field and\/or
+-- PID to select the caption language to extract. If input is DVB-Sub that
+-- is being passed through, omit this field (and PID field); there is no
+-- way to extract a specific language with pass-through captions.
+--
+-- 'languageCode', 'captionSelector_languageCode' - The specific language to extract from source. If input is SCTE-27,
+-- complete this field and\/or PID to select the caption language to
+-- extract. If input is DVB-Sub and output is Burn-in or SMPTE-TT, complete
+-- this field and\/or PID to select the caption language to extract. If
+-- input is DVB-Sub that is being passed through, omit this field (and PID
+-- field); there is no way to extract a specific language with pass-through
+-- captions.
+--
+-- 'sourceSettings', 'captionSelector_sourceSettings' - If your input captions are SCC, TTML, STL, SMI, SRT, or IMSC in an xml
+-- file, specify the URI of the input captions source file. If your input
+-- captions are IMSC in an IMF package, use TrackSourceSettings instead of
+-- FileSoureSettings.
+newCaptionSelector ::
+  CaptionSelector
+newCaptionSelector =
+  CaptionSelector'
+    { customLanguageCode =
+        Prelude.Nothing,
+      languageCode = Prelude.Nothing,
+      sourceSettings = Prelude.Nothing
+    }
+
+-- | The specific language to extract from source, using the ISO 639-2 or ISO
+-- 639-3 three-letter language code. If input is SCTE-27, complete this
+-- field and\/or PID to select the caption language to extract. If input is
+-- DVB-Sub and output is Burn-in or SMPTE-TT, complete this field and\/or
+-- PID to select the caption language to extract. If input is DVB-Sub that
+-- is being passed through, omit this field (and PID field); there is no
+-- way to extract a specific language with pass-through captions.
+captionSelector_customLanguageCode :: Lens.Lens' CaptionSelector (Prelude.Maybe Prelude.Text)
+captionSelector_customLanguageCode = Lens.lens (\CaptionSelector' {customLanguageCode} -> customLanguageCode) (\s@CaptionSelector' {} a -> s {customLanguageCode = a} :: CaptionSelector)
+
+-- | The specific language to extract from source. If input is SCTE-27,
+-- complete this field and\/or PID to select the caption language to
+-- extract. If input is DVB-Sub and output is Burn-in or SMPTE-TT, complete
+-- this field and\/or PID to select the caption language to extract. If
+-- input is DVB-Sub that is being passed through, omit this field (and PID
+-- field); there is no way to extract a specific language with pass-through
+-- captions.
+captionSelector_languageCode :: Lens.Lens' CaptionSelector (Prelude.Maybe LanguageCode)
+captionSelector_languageCode = Lens.lens (\CaptionSelector' {languageCode} -> languageCode) (\s@CaptionSelector' {} a -> s {languageCode = a} :: CaptionSelector)
+
+-- | If your input captions are SCC, TTML, STL, SMI, SRT, or IMSC in an xml
+-- file, specify the URI of the input captions source file. If your input
+-- captions are IMSC in an IMF package, use TrackSourceSettings instead of
+-- FileSoureSettings.
+captionSelector_sourceSettings :: Lens.Lens' CaptionSelector (Prelude.Maybe CaptionSourceSettings)
+captionSelector_sourceSettings = Lens.lens (\CaptionSelector' {sourceSettings} -> sourceSettings) (\s@CaptionSelector' {} a -> s {sourceSettings = a} :: CaptionSelector)
+
+instance Data.FromJSON CaptionSelector where
+  parseJSON =
+    Data.withObject
+      "CaptionSelector"
+      ( \x ->
+          CaptionSelector'
+            Prelude.<$> (x Data..:? "customLanguageCode")
+            Prelude.<*> (x Data..:? "languageCode")
+            Prelude.<*> (x Data..:? "sourceSettings")
+      )
+
+instance Prelude.Hashable CaptionSelector where
+  hashWithSalt _salt CaptionSelector' {..} =
+    _salt
+      `Prelude.hashWithSalt` customLanguageCode
+      `Prelude.hashWithSalt` languageCode
+      `Prelude.hashWithSalt` sourceSettings
+
+instance Prelude.NFData CaptionSelector where
+  rnf CaptionSelector' {..} =
+    Prelude.rnf customLanguageCode
+      `Prelude.seq` Prelude.rnf languageCode
+      `Prelude.seq` Prelude.rnf sourceSettings
+
+instance Data.ToJSON CaptionSelector where
+  toJSON CaptionSelector' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("customLanguageCode" Data..=)
+              Prelude.<$> customLanguageCode,
+            ("languageCode" Data..=) Prelude.<$> languageCode,
+            ("sourceSettings" Data..=)
+              Prelude.<$> sourceSettings
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/CaptionSourceFramerate.hs b/gen/Amazonka/MediaConvert/Types/CaptionSourceFramerate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CaptionSourceFramerate.hs
@@ -0,0 +1,121 @@
+{-# 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.CaptionSourceFramerate
+-- 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.CaptionSourceFramerate where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless your input captions format is SCC. To have
+-- the service compensate for differing frame rates between your input
+-- captions and input video, specify the frame rate of the captions file.
+-- Specify this value as a fraction. When you work directly in your JSON
+-- job specification, use the settings framerateNumerator and
+-- framerateDenominator. For example, you might specify 24 \/ 1 for 24 fps,
+-- 25 \/ 1 for 25 fps, 24000 \/ 1001 for 23.976 fps, or 30000 \/ 1001 for
+-- 29.97 fps.
+--
+-- /See:/ 'newCaptionSourceFramerate' smart constructor.
+data CaptionSourceFramerate = CaptionSourceFramerate'
+  { -- | Specify the denominator of the fraction that represents the frame rate
+    -- for the setting Caption source frame rate (CaptionSourceFramerate). Use
+    -- this setting along with the setting Framerate numerator
+    -- (framerateNumerator).
+    framerateDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the numerator of the fraction that represents the frame rate for
+    -- the setting Caption source frame rate (CaptionSourceFramerate). Use this
+    -- setting along with the setting Framerate denominator
+    -- (framerateDenominator).
+    framerateNumerator :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CaptionSourceFramerate' 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:
+--
+-- 'framerateDenominator', 'captionSourceFramerate_framerateDenominator' - Specify the denominator of the fraction that represents the frame rate
+-- for the setting Caption source frame rate (CaptionSourceFramerate). Use
+-- this setting along with the setting Framerate numerator
+-- (framerateNumerator).
+--
+-- 'framerateNumerator', 'captionSourceFramerate_framerateNumerator' - Specify the numerator of the fraction that represents the frame rate for
+-- the setting Caption source frame rate (CaptionSourceFramerate). Use this
+-- setting along with the setting Framerate denominator
+-- (framerateDenominator).
+newCaptionSourceFramerate ::
+  CaptionSourceFramerate
+newCaptionSourceFramerate =
+  CaptionSourceFramerate'
+    { framerateDenominator =
+        Prelude.Nothing,
+      framerateNumerator = Prelude.Nothing
+    }
+
+-- | Specify the denominator of the fraction that represents the frame rate
+-- for the setting Caption source frame rate (CaptionSourceFramerate). Use
+-- this setting along with the setting Framerate numerator
+-- (framerateNumerator).
+captionSourceFramerate_framerateDenominator :: Lens.Lens' CaptionSourceFramerate (Prelude.Maybe Prelude.Natural)
+captionSourceFramerate_framerateDenominator = Lens.lens (\CaptionSourceFramerate' {framerateDenominator} -> framerateDenominator) (\s@CaptionSourceFramerate' {} a -> s {framerateDenominator = a} :: CaptionSourceFramerate)
+
+-- | Specify the numerator of the fraction that represents the frame rate for
+-- the setting Caption source frame rate (CaptionSourceFramerate). Use this
+-- setting along with the setting Framerate denominator
+-- (framerateDenominator).
+captionSourceFramerate_framerateNumerator :: Lens.Lens' CaptionSourceFramerate (Prelude.Maybe Prelude.Natural)
+captionSourceFramerate_framerateNumerator = Lens.lens (\CaptionSourceFramerate' {framerateNumerator} -> framerateNumerator) (\s@CaptionSourceFramerate' {} a -> s {framerateNumerator = a} :: CaptionSourceFramerate)
+
+instance Data.FromJSON CaptionSourceFramerate where
+  parseJSON =
+    Data.withObject
+      "CaptionSourceFramerate"
+      ( \x ->
+          CaptionSourceFramerate'
+            Prelude.<$> (x Data..:? "framerateDenominator")
+            Prelude.<*> (x Data..:? "framerateNumerator")
+      )
+
+instance Prelude.Hashable CaptionSourceFramerate where
+  hashWithSalt _salt CaptionSourceFramerate' {..} =
+    _salt
+      `Prelude.hashWithSalt` framerateDenominator
+      `Prelude.hashWithSalt` framerateNumerator
+
+instance Prelude.NFData CaptionSourceFramerate where
+  rnf CaptionSourceFramerate' {..} =
+    Prelude.rnf framerateDenominator
+      `Prelude.seq` Prelude.rnf framerateNumerator
+
+instance Data.ToJSON CaptionSourceFramerate where
+  toJSON CaptionSourceFramerate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("framerateDenominator" Data..=)
+              Prelude.<$> framerateDenominator,
+            ("framerateNumerator" Data..=)
+              Prelude.<$> framerateNumerator
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/CaptionSourceSettings.hs b/gen/Amazonka/MediaConvert/Types/CaptionSourceSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CaptionSourceSettings.hs
@@ -0,0 +1,235 @@
+{-# 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.CaptionSourceSettings
+-- 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.CaptionSourceSettings 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.AncillarySourceSettings
+import Amazonka.MediaConvert.Types.CaptionSourceType
+import Amazonka.MediaConvert.Types.DvbSubSourceSettings
+import Amazonka.MediaConvert.Types.EmbeddedSourceSettings
+import Amazonka.MediaConvert.Types.FileSourceSettings
+import Amazonka.MediaConvert.Types.TeletextSourceSettings
+import Amazonka.MediaConvert.Types.TrackSourceSettings
+import Amazonka.MediaConvert.Types.WebvttHlsSourceSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | If your input captions are SCC, TTML, STL, SMI, SRT, or IMSC in an xml
+-- file, specify the URI of the input captions source file. If your input
+-- captions are IMSC in an IMF package, use TrackSourceSettings instead of
+-- FileSoureSettings.
+--
+-- /See:/ 'newCaptionSourceSettings' smart constructor.
+data CaptionSourceSettings = CaptionSourceSettings'
+  { -- | Settings for ancillary captions source.
+    ancillarySourceSettings :: Prelude.Maybe AncillarySourceSettings,
+    -- | DVB Sub Source Settings
+    dvbSubSourceSettings :: Prelude.Maybe DvbSubSourceSettings,
+    -- | Settings for embedded captions Source
+    embeddedSourceSettings :: Prelude.Maybe EmbeddedSourceSettings,
+    -- | If your input captions are SCC, SMI, SRT, STL, TTML, WebVTT, or IMSC 1.1
+    -- in an xml file, specify the URI of the input caption source file. If
+    -- your caption source is IMSC in an IMF package, use TrackSourceSettings
+    -- instead of FileSoureSettings.
+    fileSourceSettings :: Prelude.Maybe FileSourceSettings,
+    -- | Use Source (SourceType) to identify the format of your input captions.
+    -- The service cannot auto-detect caption format.
+    sourceType :: Prelude.Maybe CaptionSourceType,
+    -- | Settings specific to Teletext caption sources, including Page number.
+    teletextSourceSettings :: Prelude.Maybe TeletextSourceSettings,
+    -- | Settings specific to caption sources that are specified by track number.
+    -- Currently, this is only IMSC captions in an IMF package. If your caption
+    -- source is IMSC 1.1 in a separate xml file, use FileSourceSettings
+    -- instead of TrackSourceSettings.
+    trackSourceSettings :: Prelude.Maybe TrackSourceSettings,
+    -- | Settings specific to WebVTT sources in HLS alternative rendition group.
+    -- Specify the properties (renditionGroupId, renditionName or
+    -- renditionLanguageCode) to identify the unique subtitle track among the
+    -- alternative rendition groups present in the HLS manifest. If no unique
+    -- track is found, or multiple tracks match the specified properties, the
+    -- job fails. If there is only one subtitle track in the rendition group,
+    -- the settings can be left empty and the default subtitle track will be
+    -- chosen. If your caption source is a sidecar file, use FileSourceSettings
+    -- instead of WebvttHlsSourceSettings.
+    webvttHlsSourceSettings :: Prelude.Maybe WebvttHlsSourceSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CaptionSourceSettings' 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:
+--
+-- 'ancillarySourceSettings', 'captionSourceSettings_ancillarySourceSettings' - Settings for ancillary captions source.
+--
+-- 'dvbSubSourceSettings', 'captionSourceSettings_dvbSubSourceSettings' - DVB Sub Source Settings
+--
+-- 'embeddedSourceSettings', 'captionSourceSettings_embeddedSourceSettings' - Settings for embedded captions Source
+--
+-- 'fileSourceSettings', 'captionSourceSettings_fileSourceSettings' - If your input captions are SCC, SMI, SRT, STL, TTML, WebVTT, or IMSC 1.1
+-- in an xml file, specify the URI of the input caption source file. If
+-- your caption source is IMSC in an IMF package, use TrackSourceSettings
+-- instead of FileSoureSettings.
+--
+-- 'sourceType', 'captionSourceSettings_sourceType' - Use Source (SourceType) to identify the format of your input captions.
+-- The service cannot auto-detect caption format.
+--
+-- 'teletextSourceSettings', 'captionSourceSettings_teletextSourceSettings' - Settings specific to Teletext caption sources, including Page number.
+--
+-- 'trackSourceSettings', 'captionSourceSettings_trackSourceSettings' - Settings specific to caption sources that are specified by track number.
+-- Currently, this is only IMSC captions in an IMF package. If your caption
+-- source is IMSC 1.1 in a separate xml file, use FileSourceSettings
+-- instead of TrackSourceSettings.
+--
+-- 'webvttHlsSourceSettings', 'captionSourceSettings_webvttHlsSourceSettings' - Settings specific to WebVTT sources in HLS alternative rendition group.
+-- Specify the properties (renditionGroupId, renditionName or
+-- renditionLanguageCode) to identify the unique subtitle track among the
+-- alternative rendition groups present in the HLS manifest. If no unique
+-- track is found, or multiple tracks match the specified properties, the
+-- job fails. If there is only one subtitle track in the rendition group,
+-- the settings can be left empty and the default subtitle track will be
+-- chosen. If your caption source is a sidecar file, use FileSourceSettings
+-- instead of WebvttHlsSourceSettings.
+newCaptionSourceSettings ::
+  CaptionSourceSettings
+newCaptionSourceSettings =
+  CaptionSourceSettings'
+    { ancillarySourceSettings =
+        Prelude.Nothing,
+      dvbSubSourceSettings = Prelude.Nothing,
+      embeddedSourceSettings = Prelude.Nothing,
+      fileSourceSettings = Prelude.Nothing,
+      sourceType = Prelude.Nothing,
+      teletextSourceSettings = Prelude.Nothing,
+      trackSourceSettings = Prelude.Nothing,
+      webvttHlsSourceSettings = Prelude.Nothing
+    }
+
+-- | Settings for ancillary captions source.
+captionSourceSettings_ancillarySourceSettings :: Lens.Lens' CaptionSourceSettings (Prelude.Maybe AncillarySourceSettings)
+captionSourceSettings_ancillarySourceSettings = Lens.lens (\CaptionSourceSettings' {ancillarySourceSettings} -> ancillarySourceSettings) (\s@CaptionSourceSettings' {} a -> s {ancillarySourceSettings = a} :: CaptionSourceSettings)
+
+-- | DVB Sub Source Settings
+captionSourceSettings_dvbSubSourceSettings :: Lens.Lens' CaptionSourceSettings (Prelude.Maybe DvbSubSourceSettings)
+captionSourceSettings_dvbSubSourceSettings = Lens.lens (\CaptionSourceSettings' {dvbSubSourceSettings} -> dvbSubSourceSettings) (\s@CaptionSourceSettings' {} a -> s {dvbSubSourceSettings = a} :: CaptionSourceSettings)
+
+-- | Settings for embedded captions Source
+captionSourceSettings_embeddedSourceSettings :: Lens.Lens' CaptionSourceSettings (Prelude.Maybe EmbeddedSourceSettings)
+captionSourceSettings_embeddedSourceSettings = Lens.lens (\CaptionSourceSettings' {embeddedSourceSettings} -> embeddedSourceSettings) (\s@CaptionSourceSettings' {} a -> s {embeddedSourceSettings = a} :: CaptionSourceSettings)
+
+-- | If your input captions are SCC, SMI, SRT, STL, TTML, WebVTT, or IMSC 1.1
+-- in an xml file, specify the URI of the input caption source file. If
+-- your caption source is IMSC in an IMF package, use TrackSourceSettings
+-- instead of FileSoureSettings.
+captionSourceSettings_fileSourceSettings :: Lens.Lens' CaptionSourceSettings (Prelude.Maybe FileSourceSettings)
+captionSourceSettings_fileSourceSettings = Lens.lens (\CaptionSourceSettings' {fileSourceSettings} -> fileSourceSettings) (\s@CaptionSourceSettings' {} a -> s {fileSourceSettings = a} :: CaptionSourceSettings)
+
+-- | Use Source (SourceType) to identify the format of your input captions.
+-- The service cannot auto-detect caption format.
+captionSourceSettings_sourceType :: Lens.Lens' CaptionSourceSettings (Prelude.Maybe CaptionSourceType)
+captionSourceSettings_sourceType = Lens.lens (\CaptionSourceSettings' {sourceType} -> sourceType) (\s@CaptionSourceSettings' {} a -> s {sourceType = a} :: CaptionSourceSettings)
+
+-- | Settings specific to Teletext caption sources, including Page number.
+captionSourceSettings_teletextSourceSettings :: Lens.Lens' CaptionSourceSettings (Prelude.Maybe TeletextSourceSettings)
+captionSourceSettings_teletextSourceSettings = Lens.lens (\CaptionSourceSettings' {teletextSourceSettings} -> teletextSourceSettings) (\s@CaptionSourceSettings' {} a -> s {teletextSourceSettings = a} :: CaptionSourceSettings)
+
+-- | Settings specific to caption sources that are specified by track number.
+-- Currently, this is only IMSC captions in an IMF package. If your caption
+-- source is IMSC 1.1 in a separate xml file, use FileSourceSettings
+-- instead of TrackSourceSettings.
+captionSourceSettings_trackSourceSettings :: Lens.Lens' CaptionSourceSettings (Prelude.Maybe TrackSourceSettings)
+captionSourceSettings_trackSourceSettings = Lens.lens (\CaptionSourceSettings' {trackSourceSettings} -> trackSourceSettings) (\s@CaptionSourceSettings' {} a -> s {trackSourceSettings = a} :: CaptionSourceSettings)
+
+-- | Settings specific to WebVTT sources in HLS alternative rendition group.
+-- Specify the properties (renditionGroupId, renditionName or
+-- renditionLanguageCode) to identify the unique subtitle track among the
+-- alternative rendition groups present in the HLS manifest. If no unique
+-- track is found, or multiple tracks match the specified properties, the
+-- job fails. If there is only one subtitle track in the rendition group,
+-- the settings can be left empty and the default subtitle track will be
+-- chosen. If your caption source is a sidecar file, use FileSourceSettings
+-- instead of WebvttHlsSourceSettings.
+captionSourceSettings_webvttHlsSourceSettings :: Lens.Lens' CaptionSourceSettings (Prelude.Maybe WebvttHlsSourceSettings)
+captionSourceSettings_webvttHlsSourceSettings = Lens.lens (\CaptionSourceSettings' {webvttHlsSourceSettings} -> webvttHlsSourceSettings) (\s@CaptionSourceSettings' {} a -> s {webvttHlsSourceSettings = a} :: CaptionSourceSettings)
+
+instance Data.FromJSON CaptionSourceSettings where
+  parseJSON =
+    Data.withObject
+      "CaptionSourceSettings"
+      ( \x ->
+          CaptionSourceSettings'
+            Prelude.<$> (x Data..:? "ancillarySourceSettings")
+            Prelude.<*> (x Data..:? "dvbSubSourceSettings")
+            Prelude.<*> (x Data..:? "embeddedSourceSettings")
+            Prelude.<*> (x Data..:? "fileSourceSettings")
+            Prelude.<*> (x Data..:? "sourceType")
+            Prelude.<*> (x Data..:? "teletextSourceSettings")
+            Prelude.<*> (x Data..:? "trackSourceSettings")
+            Prelude.<*> (x Data..:? "webvttHlsSourceSettings")
+      )
+
+instance Prelude.Hashable CaptionSourceSettings where
+  hashWithSalt _salt CaptionSourceSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` ancillarySourceSettings
+      `Prelude.hashWithSalt` dvbSubSourceSettings
+      `Prelude.hashWithSalt` embeddedSourceSettings
+      `Prelude.hashWithSalt` fileSourceSettings
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` teletextSourceSettings
+      `Prelude.hashWithSalt` trackSourceSettings
+      `Prelude.hashWithSalt` webvttHlsSourceSettings
+
+instance Prelude.NFData CaptionSourceSettings where
+  rnf CaptionSourceSettings' {..} =
+    Prelude.rnf ancillarySourceSettings
+      `Prelude.seq` Prelude.rnf dvbSubSourceSettings
+      `Prelude.seq` Prelude.rnf embeddedSourceSettings
+      `Prelude.seq` Prelude.rnf fileSourceSettings
+      `Prelude.seq` Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf teletextSourceSettings
+      `Prelude.seq` Prelude.rnf trackSourceSettings
+      `Prelude.seq` Prelude.rnf webvttHlsSourceSettings
+
+instance Data.ToJSON CaptionSourceSettings where
+  toJSON CaptionSourceSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ancillarySourceSettings" Data..=)
+              Prelude.<$> ancillarySourceSettings,
+            ("dvbSubSourceSettings" Data..=)
+              Prelude.<$> dvbSubSourceSettings,
+            ("embeddedSourceSettings" Data..=)
+              Prelude.<$> embeddedSourceSettings,
+            ("fileSourceSettings" Data..=)
+              Prelude.<$> fileSourceSettings,
+            ("sourceType" Data..=) Prelude.<$> sourceType,
+            ("teletextSourceSettings" Data..=)
+              Prelude.<$> teletextSourceSettings,
+            ("trackSourceSettings" Data..=)
+              Prelude.<$> trackSourceSettings,
+            ("webvttHlsSourceSettings" Data..=)
+              Prelude.<$> webvttHlsSourceSettings
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/CaptionSourceType.hs b/gen/Amazonka/MediaConvert/Types/CaptionSourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CaptionSourceType.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CaptionSourceType
+-- 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.CaptionSourceType
+  ( CaptionSourceType
+      ( ..,
+        CaptionSourceType_ANCILLARY,
+        CaptionSourceType_DVB_SUB,
+        CaptionSourceType_EMBEDDED,
+        CaptionSourceType_IMSC,
+        CaptionSourceType_NULL_SOURCE,
+        CaptionSourceType_SCC,
+        CaptionSourceType_SCTE20,
+        CaptionSourceType_SMI,
+        CaptionSourceType_SMPTE_TT,
+        CaptionSourceType_SRT,
+        CaptionSourceType_STL,
+        CaptionSourceType_TELETEXT,
+        CaptionSourceType_TTML,
+        CaptionSourceType_WEBVTT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Source (SourceType) to identify the format of your input captions.
+-- The service cannot auto-detect caption format.
+newtype CaptionSourceType = CaptionSourceType'
+  { fromCaptionSourceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CaptionSourceType_ANCILLARY :: CaptionSourceType
+pattern CaptionSourceType_ANCILLARY = CaptionSourceType' "ANCILLARY"
+
+pattern CaptionSourceType_DVB_SUB :: CaptionSourceType
+pattern CaptionSourceType_DVB_SUB = CaptionSourceType' "DVB_SUB"
+
+pattern CaptionSourceType_EMBEDDED :: CaptionSourceType
+pattern CaptionSourceType_EMBEDDED = CaptionSourceType' "EMBEDDED"
+
+pattern CaptionSourceType_IMSC :: CaptionSourceType
+pattern CaptionSourceType_IMSC = CaptionSourceType' "IMSC"
+
+pattern CaptionSourceType_NULL_SOURCE :: CaptionSourceType
+pattern CaptionSourceType_NULL_SOURCE = CaptionSourceType' "NULL_SOURCE"
+
+pattern CaptionSourceType_SCC :: CaptionSourceType
+pattern CaptionSourceType_SCC = CaptionSourceType' "SCC"
+
+pattern CaptionSourceType_SCTE20 :: CaptionSourceType
+pattern CaptionSourceType_SCTE20 = CaptionSourceType' "SCTE20"
+
+pattern CaptionSourceType_SMI :: CaptionSourceType
+pattern CaptionSourceType_SMI = CaptionSourceType' "SMI"
+
+pattern CaptionSourceType_SMPTE_TT :: CaptionSourceType
+pattern CaptionSourceType_SMPTE_TT = CaptionSourceType' "SMPTE_TT"
+
+pattern CaptionSourceType_SRT :: CaptionSourceType
+pattern CaptionSourceType_SRT = CaptionSourceType' "SRT"
+
+pattern CaptionSourceType_STL :: CaptionSourceType
+pattern CaptionSourceType_STL = CaptionSourceType' "STL"
+
+pattern CaptionSourceType_TELETEXT :: CaptionSourceType
+pattern CaptionSourceType_TELETEXT = CaptionSourceType' "TELETEXT"
+
+pattern CaptionSourceType_TTML :: CaptionSourceType
+pattern CaptionSourceType_TTML = CaptionSourceType' "TTML"
+
+pattern CaptionSourceType_WEBVTT :: CaptionSourceType
+pattern CaptionSourceType_WEBVTT = CaptionSourceType' "WEBVTT"
+
+{-# COMPLETE
+  CaptionSourceType_ANCILLARY,
+  CaptionSourceType_DVB_SUB,
+  CaptionSourceType_EMBEDDED,
+  CaptionSourceType_IMSC,
+  CaptionSourceType_NULL_SOURCE,
+  CaptionSourceType_SCC,
+  CaptionSourceType_SCTE20,
+  CaptionSourceType_SMI,
+  CaptionSourceType_SMPTE_TT,
+  CaptionSourceType_SRT,
+  CaptionSourceType_STL,
+  CaptionSourceType_TELETEXT,
+  CaptionSourceType_TTML,
+  CaptionSourceType_WEBVTT,
+  CaptionSourceType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ChannelMapping.hs b/gen/Amazonka/MediaConvert/Types/ChannelMapping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ChannelMapping.hs
@@ -0,0 +1,98 @@
+{-# 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.ChannelMapping
+-- 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.ChannelMapping 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.OutputChannelMapping
+import qualified Amazonka.Prelude as Prelude
+
+-- | Channel mapping (ChannelMapping) contains the group of fields that hold
+-- the remixing value for each channel, in dB. Specify remix values to
+-- indicate how much of the content from your input audio channel you want
+-- in your output audio channels. Each instance of the InputChannels or
+-- InputChannelsFineTune array specifies these values for one output
+-- channel. Use one instance of this array for each output channel. In the
+-- console, each array corresponds to a column in the graphical depiction
+-- of the mapping matrix. The rows of the graphical matrix correspond to
+-- input channels. Valid values are within the range from -60 (mute)
+-- through 6. A setting of 0 passes the input channel unchanged to the
+-- output channel (no attenuation or amplification). Use InputChannels or
+-- InputChannelsFineTune to specify your remix values. Don\'t use both.
+--
+-- /See:/ 'newChannelMapping' smart constructor.
+data ChannelMapping = ChannelMapping'
+  { -- | In your JSON job specification, include one child of OutputChannels for
+    -- each audio channel that you want in your output. Each child should
+    -- contain one instance of InputChannels or InputChannelsFineTune.
+    outputChannels :: Prelude.Maybe [OutputChannelMapping]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelMapping' 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:
+--
+-- 'outputChannels', 'channelMapping_outputChannels' - In your JSON job specification, include one child of OutputChannels for
+-- each audio channel that you want in your output. Each child should
+-- contain one instance of InputChannels or InputChannelsFineTune.
+newChannelMapping ::
+  ChannelMapping
+newChannelMapping =
+  ChannelMapping' {outputChannels = Prelude.Nothing}
+
+-- | In your JSON job specification, include one child of OutputChannels for
+-- each audio channel that you want in your output. Each child should
+-- contain one instance of InputChannels or InputChannelsFineTune.
+channelMapping_outputChannels :: Lens.Lens' ChannelMapping (Prelude.Maybe [OutputChannelMapping])
+channelMapping_outputChannels = Lens.lens (\ChannelMapping' {outputChannels} -> outputChannels) (\s@ChannelMapping' {} a -> s {outputChannels = a} :: ChannelMapping) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ChannelMapping where
+  parseJSON =
+    Data.withObject
+      "ChannelMapping"
+      ( \x ->
+          ChannelMapping'
+            Prelude.<$> ( x
+                            Data..:? "outputChannels"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ChannelMapping where
+  hashWithSalt _salt ChannelMapping' {..} =
+    _salt `Prelude.hashWithSalt` outputChannels
+
+instance Prelude.NFData ChannelMapping where
+  rnf ChannelMapping' {..} = Prelude.rnf outputChannels
+
+instance Data.ToJSON ChannelMapping where
+  toJSON ChannelMapping' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("outputChannels" Data..=)
+              Prelude.<$> outputChannels
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/CmafAdditionalManifest.hs b/gen/Amazonka/MediaConvert/Types/CmafAdditionalManifest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafAdditionalManifest.hs
@@ -0,0 +1,129 @@
+{-# 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.CmafAdditionalManifest
+-- 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.CmafAdditionalManifest where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the details for each pair of HLS and DASH additional manifests
+-- that you want the service to generate for this CMAF output group. Each
+-- pair of manifests can reference a different subset of outputs in the
+-- group.
+--
+-- /See:/ 'newCmafAdditionalManifest' smart constructor.
+data CmafAdditionalManifest = CmafAdditionalManifest'
+  { -- | Specify a name modifier that the service adds to the name of this
+    -- manifest to make it different from the file names of the other main
+    -- manifests in the output group. For example, say that the default main
+    -- manifest for your HLS group is film-name.m3u8. If you enter
+    -- \"-no-premium\" for this setting, then the file name the service
+    -- generates for this top-level manifest is film-name-no-premium.m3u8. For
+    -- HLS output groups, specify a manifestNameModifier that is different from
+    -- the nameModifier of the output. The service uses the output name
+    -- modifier to create unique names for the individual variant manifests.
+    manifestNameModifier :: Prelude.Maybe Prelude.Text,
+    -- | Specify the outputs that you want this additional top-level manifest to
+    -- reference.
+    selectedOutputs :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CmafAdditionalManifest' 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:
+--
+-- 'manifestNameModifier', 'cmafAdditionalManifest_manifestNameModifier' - Specify a name modifier that the service adds to the name of this
+-- manifest to make it different from the file names of the other main
+-- manifests in the output group. For example, say that the default main
+-- manifest for your HLS group is film-name.m3u8. If you enter
+-- \"-no-premium\" for this setting, then the file name the service
+-- generates for this top-level manifest is film-name-no-premium.m3u8. For
+-- HLS output groups, specify a manifestNameModifier that is different from
+-- the nameModifier of the output. The service uses the output name
+-- modifier to create unique names for the individual variant manifests.
+--
+-- 'selectedOutputs', 'cmafAdditionalManifest_selectedOutputs' - Specify the outputs that you want this additional top-level manifest to
+-- reference.
+newCmafAdditionalManifest ::
+  CmafAdditionalManifest
+newCmafAdditionalManifest =
+  CmafAdditionalManifest'
+    { manifestNameModifier =
+        Prelude.Nothing,
+      selectedOutputs = Prelude.Nothing
+    }
+
+-- | Specify a name modifier that the service adds to the name of this
+-- manifest to make it different from the file names of the other main
+-- manifests in the output group. For example, say that the default main
+-- manifest for your HLS group is film-name.m3u8. If you enter
+-- \"-no-premium\" for this setting, then the file name the service
+-- generates for this top-level manifest is film-name-no-premium.m3u8. For
+-- HLS output groups, specify a manifestNameModifier that is different from
+-- the nameModifier of the output. The service uses the output name
+-- modifier to create unique names for the individual variant manifests.
+cmafAdditionalManifest_manifestNameModifier :: Lens.Lens' CmafAdditionalManifest (Prelude.Maybe Prelude.Text)
+cmafAdditionalManifest_manifestNameModifier = Lens.lens (\CmafAdditionalManifest' {manifestNameModifier} -> manifestNameModifier) (\s@CmafAdditionalManifest' {} a -> s {manifestNameModifier = a} :: CmafAdditionalManifest)
+
+-- | Specify the outputs that you want this additional top-level manifest to
+-- reference.
+cmafAdditionalManifest_selectedOutputs :: Lens.Lens' CmafAdditionalManifest (Prelude.Maybe [Prelude.Text])
+cmafAdditionalManifest_selectedOutputs = Lens.lens (\CmafAdditionalManifest' {selectedOutputs} -> selectedOutputs) (\s@CmafAdditionalManifest' {} a -> s {selectedOutputs = a} :: CmafAdditionalManifest) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON CmafAdditionalManifest where
+  parseJSON =
+    Data.withObject
+      "CmafAdditionalManifest"
+      ( \x ->
+          CmafAdditionalManifest'
+            Prelude.<$> (x Data..:? "manifestNameModifier")
+            Prelude.<*> ( x
+                            Data..:? "selectedOutputs"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable CmafAdditionalManifest where
+  hashWithSalt _salt CmafAdditionalManifest' {..} =
+    _salt
+      `Prelude.hashWithSalt` manifestNameModifier
+      `Prelude.hashWithSalt` selectedOutputs
+
+instance Prelude.NFData CmafAdditionalManifest where
+  rnf CmafAdditionalManifest' {..} =
+    Prelude.rnf manifestNameModifier
+      `Prelude.seq` Prelude.rnf selectedOutputs
+
+instance Data.ToJSON CmafAdditionalManifest where
+  toJSON CmafAdditionalManifest' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("manifestNameModifier" Data..=)
+              Prelude.<$> manifestNameModifier,
+            ("selectedOutputs" Data..=)
+              Prelude.<$> selectedOutputs
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/CmafClientCache.hs b/gen/Amazonka/MediaConvert/Types/CmafClientCache.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafClientCache.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafClientCache
+-- 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.CmafClientCache
+  ( CmafClientCache
+      ( ..,
+        CmafClientCache_DISABLED,
+        CmafClientCache_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Disable this setting only when your workflow requires the
+-- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
+-- (ENABLED) and control caching in your video distribution set up. For
+-- example, use the Cache-Control http header.
+newtype CmafClientCache = CmafClientCache'
+  { fromCmafClientCache ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafClientCache_DISABLED :: CmafClientCache
+pattern CmafClientCache_DISABLED = CmafClientCache' "DISABLED"
+
+pattern CmafClientCache_ENABLED :: CmafClientCache
+pattern CmafClientCache_ENABLED = CmafClientCache' "ENABLED"
+
+{-# COMPLETE
+  CmafClientCache_DISABLED,
+  CmafClientCache_ENABLED,
+  CmafClientCache'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafCodecSpecification.hs b/gen/Amazonka/MediaConvert/Types/CmafCodecSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafCodecSpecification.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafCodecSpecification
+-- 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.CmafCodecSpecification
+  ( CmafCodecSpecification
+      ( ..,
+        CmafCodecSpecification_RFC_4281,
+        CmafCodecSpecification_RFC_6381
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specification to use (RFC-6381 or the default RFC-4281) during m3u8
+-- playlist generation.
+newtype CmafCodecSpecification = CmafCodecSpecification'
+  { fromCmafCodecSpecification ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafCodecSpecification_RFC_4281 :: CmafCodecSpecification
+pattern CmafCodecSpecification_RFC_4281 = CmafCodecSpecification' "RFC_4281"
+
+pattern CmafCodecSpecification_RFC_6381 :: CmafCodecSpecification
+pattern CmafCodecSpecification_RFC_6381 = CmafCodecSpecification' "RFC_6381"
+
+{-# COMPLETE
+  CmafCodecSpecification_RFC_4281,
+  CmafCodecSpecification_RFC_6381,
+  CmafCodecSpecification'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafEncryptionSettings.hs b/gen/Amazonka/MediaConvert/Types/CmafEncryptionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafEncryptionSettings.hs
@@ -0,0 +1,189 @@
+{-# 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.CmafEncryptionSettings
+-- 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.CmafEncryptionSettings 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.CmafEncryptionType
+import Amazonka.MediaConvert.Types.CmafInitializationVectorInManifest
+import Amazonka.MediaConvert.Types.CmafKeyProviderType
+import Amazonka.MediaConvert.Types.SpekeKeyProviderCmaf
+import Amazonka.MediaConvert.Types.StaticKeyProvider
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for CMAF encryption
+--
+-- /See:/ 'newCmafEncryptionSettings' smart constructor.
+data CmafEncryptionSettings = CmafEncryptionSettings'
+  { -- | This is a 128-bit, 16-byte hex value represented by a 32-character text
+    -- string. If this parameter is not set then the Initialization Vector will
+    -- follow the segment number by default.
+    constantInitializationVector :: Prelude.Maybe Prelude.Text,
+    -- | Specify the encryption scheme that you want the service to use when
+    -- encrypting your CMAF segments. Choose AES-CBC subsample (SAMPLE-AES) or
+    -- AES_CTR (AES-CTR).
+    encryptionMethod :: Prelude.Maybe CmafEncryptionType,
+    -- | When you use DRM with CMAF outputs, choose whether the service writes
+    -- the 128-bit encryption initialization vector in the HLS and DASH
+    -- manifests.
+    initializationVectorInManifest :: Prelude.Maybe CmafInitializationVectorInManifest,
+    -- | If your output group type is CMAF, use these settings when doing DRM
+    -- encryption with a SPEKE-compliant key provider. If your output group
+    -- type is HLS, DASH, or Microsoft Smooth, use the SpekeKeyProvider
+    -- settings instead.
+    spekeKeyProvider :: Prelude.Maybe SpekeKeyProviderCmaf,
+    -- | Use these settings to set up encryption with a static key provider.
+    staticKeyProvider :: Prelude.Maybe StaticKeyProvider,
+    -- | Specify whether your DRM encryption key is static or from a key provider
+    -- that follows the SPEKE standard. For more information about SPEKE, see
+    -- https:\/\/docs.aws.amazon.com\/speke\/latest\/documentation\/what-is-speke.html.
+    type' :: Prelude.Maybe CmafKeyProviderType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CmafEncryptionSettings' 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:
+--
+-- 'constantInitializationVector', 'cmafEncryptionSettings_constantInitializationVector' - This is a 128-bit, 16-byte hex value represented by a 32-character text
+-- string. If this parameter is not set then the Initialization Vector will
+-- follow the segment number by default.
+--
+-- 'encryptionMethod', 'cmafEncryptionSettings_encryptionMethod' - Specify the encryption scheme that you want the service to use when
+-- encrypting your CMAF segments. Choose AES-CBC subsample (SAMPLE-AES) or
+-- AES_CTR (AES-CTR).
+--
+-- 'initializationVectorInManifest', 'cmafEncryptionSettings_initializationVectorInManifest' - When you use DRM with CMAF outputs, choose whether the service writes
+-- the 128-bit encryption initialization vector in the HLS and DASH
+-- manifests.
+--
+-- 'spekeKeyProvider', 'cmafEncryptionSettings_spekeKeyProvider' - If your output group type is CMAF, use these settings when doing DRM
+-- encryption with a SPEKE-compliant key provider. If your output group
+-- type is HLS, DASH, or Microsoft Smooth, use the SpekeKeyProvider
+-- settings instead.
+--
+-- 'staticKeyProvider', 'cmafEncryptionSettings_staticKeyProvider' - Use these settings to set up encryption with a static key provider.
+--
+-- 'type'', 'cmafEncryptionSettings_type' - Specify whether your DRM encryption key is static or from a key provider
+-- that follows the SPEKE standard. For more information about SPEKE, see
+-- https:\/\/docs.aws.amazon.com\/speke\/latest\/documentation\/what-is-speke.html.
+newCmafEncryptionSettings ::
+  CmafEncryptionSettings
+newCmafEncryptionSettings =
+  CmafEncryptionSettings'
+    { constantInitializationVector =
+        Prelude.Nothing,
+      encryptionMethod = Prelude.Nothing,
+      initializationVectorInManifest = Prelude.Nothing,
+      spekeKeyProvider = Prelude.Nothing,
+      staticKeyProvider = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | This is a 128-bit, 16-byte hex value represented by a 32-character text
+-- string. If this parameter is not set then the Initialization Vector will
+-- follow the segment number by default.
+cmafEncryptionSettings_constantInitializationVector :: Lens.Lens' CmafEncryptionSettings (Prelude.Maybe Prelude.Text)
+cmafEncryptionSettings_constantInitializationVector = Lens.lens (\CmafEncryptionSettings' {constantInitializationVector} -> constantInitializationVector) (\s@CmafEncryptionSettings' {} a -> s {constantInitializationVector = a} :: CmafEncryptionSettings)
+
+-- | Specify the encryption scheme that you want the service to use when
+-- encrypting your CMAF segments. Choose AES-CBC subsample (SAMPLE-AES) or
+-- AES_CTR (AES-CTR).
+cmafEncryptionSettings_encryptionMethod :: Lens.Lens' CmafEncryptionSettings (Prelude.Maybe CmafEncryptionType)
+cmafEncryptionSettings_encryptionMethod = Lens.lens (\CmafEncryptionSettings' {encryptionMethod} -> encryptionMethod) (\s@CmafEncryptionSettings' {} a -> s {encryptionMethod = a} :: CmafEncryptionSettings)
+
+-- | When you use DRM with CMAF outputs, choose whether the service writes
+-- the 128-bit encryption initialization vector in the HLS and DASH
+-- manifests.
+cmafEncryptionSettings_initializationVectorInManifest :: Lens.Lens' CmafEncryptionSettings (Prelude.Maybe CmafInitializationVectorInManifest)
+cmafEncryptionSettings_initializationVectorInManifest = Lens.lens (\CmafEncryptionSettings' {initializationVectorInManifest} -> initializationVectorInManifest) (\s@CmafEncryptionSettings' {} a -> s {initializationVectorInManifest = a} :: CmafEncryptionSettings)
+
+-- | If your output group type is CMAF, use these settings when doing DRM
+-- encryption with a SPEKE-compliant key provider. If your output group
+-- type is HLS, DASH, or Microsoft Smooth, use the SpekeKeyProvider
+-- settings instead.
+cmafEncryptionSettings_spekeKeyProvider :: Lens.Lens' CmafEncryptionSettings (Prelude.Maybe SpekeKeyProviderCmaf)
+cmafEncryptionSettings_spekeKeyProvider = Lens.lens (\CmafEncryptionSettings' {spekeKeyProvider} -> spekeKeyProvider) (\s@CmafEncryptionSettings' {} a -> s {spekeKeyProvider = a} :: CmafEncryptionSettings)
+
+-- | Use these settings to set up encryption with a static key provider.
+cmafEncryptionSettings_staticKeyProvider :: Lens.Lens' CmafEncryptionSettings (Prelude.Maybe StaticKeyProvider)
+cmafEncryptionSettings_staticKeyProvider = Lens.lens (\CmafEncryptionSettings' {staticKeyProvider} -> staticKeyProvider) (\s@CmafEncryptionSettings' {} a -> s {staticKeyProvider = a} :: CmafEncryptionSettings)
+
+-- | Specify whether your DRM encryption key is static or from a key provider
+-- that follows the SPEKE standard. For more information about SPEKE, see
+-- https:\/\/docs.aws.amazon.com\/speke\/latest\/documentation\/what-is-speke.html.
+cmafEncryptionSettings_type :: Lens.Lens' CmafEncryptionSettings (Prelude.Maybe CmafKeyProviderType)
+cmafEncryptionSettings_type = Lens.lens (\CmafEncryptionSettings' {type'} -> type') (\s@CmafEncryptionSettings' {} a -> s {type' = a} :: CmafEncryptionSettings)
+
+instance Data.FromJSON CmafEncryptionSettings where
+  parseJSON =
+    Data.withObject
+      "CmafEncryptionSettings"
+      ( \x ->
+          CmafEncryptionSettings'
+            Prelude.<$> (x Data..:? "constantInitializationVector")
+            Prelude.<*> (x Data..:? "encryptionMethod")
+            Prelude.<*> (x Data..:? "initializationVectorInManifest")
+            Prelude.<*> (x Data..:? "spekeKeyProvider")
+            Prelude.<*> (x Data..:? "staticKeyProvider")
+            Prelude.<*> (x Data..:? "type")
+      )
+
+instance Prelude.Hashable CmafEncryptionSettings where
+  hashWithSalt _salt CmafEncryptionSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` constantInitializationVector
+      `Prelude.hashWithSalt` encryptionMethod
+      `Prelude.hashWithSalt` initializationVectorInManifest
+      `Prelude.hashWithSalt` spekeKeyProvider
+      `Prelude.hashWithSalt` staticKeyProvider
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData CmafEncryptionSettings where
+  rnf CmafEncryptionSettings' {..} =
+    Prelude.rnf constantInitializationVector
+      `Prelude.seq` Prelude.rnf encryptionMethod
+      `Prelude.seq` Prelude.rnf initializationVectorInManifest
+      `Prelude.seq` Prelude.rnf spekeKeyProvider
+      `Prelude.seq` Prelude.rnf staticKeyProvider
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON CmafEncryptionSettings where
+  toJSON CmafEncryptionSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("constantInitializationVector" Data..=)
+              Prelude.<$> constantInitializationVector,
+            ("encryptionMethod" Data..=)
+              Prelude.<$> encryptionMethod,
+            ("initializationVectorInManifest" Data..=)
+              Prelude.<$> initializationVectorInManifest,
+            ("spekeKeyProvider" Data..=)
+              Prelude.<$> spekeKeyProvider,
+            ("staticKeyProvider" Data..=)
+              Prelude.<$> staticKeyProvider,
+            ("type" Data..=) Prelude.<$> type'
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/CmafEncryptionType.hs b/gen/Amazonka/MediaConvert/Types/CmafEncryptionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafEncryptionType.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafEncryptionType
+-- 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.CmafEncryptionType
+  ( CmafEncryptionType
+      ( ..,
+        CmafEncryptionType_AES_CTR,
+        CmafEncryptionType_SAMPLE_AES
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the encryption scheme that you want the service to use when
+-- encrypting your CMAF segments. Choose AES-CBC subsample (SAMPLE-AES) or
+-- AES_CTR (AES-CTR).
+newtype CmafEncryptionType = CmafEncryptionType'
+  { fromCmafEncryptionType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafEncryptionType_AES_CTR :: CmafEncryptionType
+pattern CmafEncryptionType_AES_CTR = CmafEncryptionType' "AES_CTR"
+
+pattern CmafEncryptionType_SAMPLE_AES :: CmafEncryptionType
+pattern CmafEncryptionType_SAMPLE_AES = CmafEncryptionType' "SAMPLE_AES"
+
+{-# COMPLETE
+  CmafEncryptionType_AES_CTR,
+  CmafEncryptionType_SAMPLE_AES,
+  CmafEncryptionType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafGroupSettings.hs b/gen/Amazonka/MediaConvert/Types/CmafGroupSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafGroupSettings.hs
@@ -0,0 +1,773 @@
+{-# 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.CmafGroupSettings
+-- 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.CmafGroupSettings 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.CmafAdditionalManifest
+import Amazonka.MediaConvert.Types.CmafClientCache
+import Amazonka.MediaConvert.Types.CmafCodecSpecification
+import Amazonka.MediaConvert.Types.CmafEncryptionSettings
+import Amazonka.MediaConvert.Types.CmafImageBasedTrickPlay
+import Amazonka.MediaConvert.Types.CmafImageBasedTrickPlaySettings
+import Amazonka.MediaConvert.Types.CmafManifestCompression
+import Amazonka.MediaConvert.Types.CmafManifestDurationFormat
+import Amazonka.MediaConvert.Types.CmafMpdManifestBandwidthType
+import Amazonka.MediaConvert.Types.CmafMpdProfile
+import Amazonka.MediaConvert.Types.CmafPtsOffsetHandlingForBFrames
+import Amazonka.MediaConvert.Types.CmafSegmentControl
+import Amazonka.MediaConvert.Types.CmafSegmentLengthControl
+import Amazonka.MediaConvert.Types.CmafStreamInfResolution
+import Amazonka.MediaConvert.Types.CmafTargetDurationCompatibilityMode
+import Amazonka.MediaConvert.Types.CmafVideoCompositionOffsets
+import Amazonka.MediaConvert.Types.CmafWriteDASHManifest
+import Amazonka.MediaConvert.Types.CmafWriteHLSManifest
+import Amazonka.MediaConvert.Types.CmafWriteSegmentTimelineInRepresentation
+import Amazonka.MediaConvert.Types.DestinationSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to your CMAF output package. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set Type, under
+-- OutputGroupSettings, to CMAF_GROUP_SETTINGS.
+--
+-- /See:/ 'newCmafGroupSettings' smart constructor.
+data CmafGroupSettings = CmafGroupSettings'
+  { -- | By default, the service creates one top-level .m3u8 HLS manifest and one
+    -- top -level .mpd DASH manifest for each CMAF output group in your job.
+    -- These default manifests reference every output in the output group. To
+    -- create additional top-level manifests that reference a subset of the
+    -- outputs in the output group, specify a list of them here. For each
+    -- additional manifest that you specify, the service creates one HLS
+    -- manifest and one DASH manifest.
+    additionalManifests :: Prelude.Maybe [CmafAdditionalManifest],
+    -- | A partial URI prefix that will be put in the manifest file at the top
+    -- level BaseURL element. Can be used if streams are delivered from a
+    -- different URL than the manifest file.
+    baseUrl :: Prelude.Maybe Prelude.Text,
+    -- | Disable this setting only when your workflow requires the
+    -- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
+    -- (ENABLED) and control caching in your video distribution set up. For
+    -- example, use the Cache-Control http header.
+    clientCache :: Prelude.Maybe CmafClientCache,
+    -- | Specification to use (RFC-6381 or the default RFC-4281) during m3u8
+    -- playlist generation.
+    codecSpecification :: Prelude.Maybe CmafCodecSpecification,
+    -- | Use Destination (Destination) to specify the S3 output location and the
+    -- output filename base. Destination accepts format identifiers. If you do
+    -- not specify the base filename in the URI, the service will use the
+    -- filename of the input file. If your job has multiple inputs, the service
+    -- uses the filename of the first input file.
+    destination :: Prelude.Maybe Prelude.Text,
+    -- | Settings associated with the destination. Will vary based on the type of
+    -- destination
+    destinationSettings :: Prelude.Maybe DestinationSettings,
+    -- | DRM settings.
+    encryption :: Prelude.Maybe CmafEncryptionSettings,
+    -- | Specify the length, in whole seconds, of the mp4 fragments. When you
+    -- don\'t specify a value, MediaConvert defaults to 2. Related setting: Use
+    -- Fragment length control (FragmentLengthControl) to specify whether the
+    -- encoder enforces this value strictly.
+    fragmentLength :: Prelude.Maybe Prelude.Natural,
+    -- | Specify whether MediaConvert generates images for trick play. Keep the
+    -- default value, None (NONE), to not generate any images. Choose Thumbnail
+    -- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
+    -- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
+    -- full-resolution images of single frames. When you enable Write HLS
+    -- manifest (WriteHlsManifest), MediaConvert creates a child manifest for
+    -- each set of images that you generate and adds corresponding entries to
+    -- the parent manifest. When you enable Write DASH manifest
+    -- (WriteDashManifest), MediaConvert adds an entry in the .mpd manifest for
+    -- each set of images that you generate. A common application for these
+    -- images is Roku trick mode. The thumbnails and full-frame images that
+    -- MediaConvert creates with this feature are compatible with this Roku
+    -- specification:
+    -- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
+    imageBasedTrickPlay :: Prelude.Maybe CmafImageBasedTrickPlay,
+    -- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
+    -- ADVANCED
+    imageBasedTrickPlaySettings :: Prelude.Maybe CmafImageBasedTrickPlaySettings,
+    -- | When set to GZIP, compresses HLS playlist.
+    manifestCompression :: Prelude.Maybe CmafManifestCompression,
+    -- | Indicates whether the output manifest should use floating point values
+    -- for segment duration.
+    manifestDurationFormat :: Prelude.Maybe CmafManifestDurationFormat,
+    -- | Minimum time of initially buffered media that is needed to ensure smooth
+    -- playout.
+    minBufferTime :: Prelude.Maybe Prelude.Natural,
+    -- | Keep this setting at the default value of 0, unless you are
+    -- troubleshooting a problem with how devices play back the end of your
+    -- video asset. If you know that player devices are hanging on the final
+    -- segment of your video because the length of your final segment is too
+    -- short, use this setting to specify a minimum final segment length, in
+    -- seconds. Choose a value that is greater than or equal to 1 and less than
+    -- your segment length. When you specify a value for this setting, the
+    -- encoder will combine any final segment that is shorter than the length
+    -- that you specify with the previous segment. For example, your segment
+    -- length is 3 seconds and your final segment is .5 seconds without a
+    -- minimum final segment length; when you set the minimum final segment
+    -- length to 1, your final segment is 3.5 seconds.
+    minFinalSegmentLength :: Prelude.Maybe Prelude.Double,
+    -- | Specify how the value for bandwidth is determined for each video
+    -- Representation in your output MPD manifest. We recommend that you choose
+    -- a MPD manifest bandwidth type that is compatible with your downstream
+    -- player configuration. Max: Use the same value that you specify for Max
+    -- bitrate in the video output, in bits per second. Average: Use the
+    -- calculated average bitrate of the encoded video output, in bits per
+    -- second.
+    mpdManifestBandwidthType :: Prelude.Maybe CmafMpdManifestBandwidthType,
+    -- | Specify whether your DASH profile is on-demand or main. When you choose
+    -- Main profile (MAIN_PROFILE), the service signals
+    -- urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When
+    -- you choose On-demand (ON_DEMAND_PROFILE), the service signals
+    -- urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose
+    -- On-demand, you must also set the output group setting Segment control
+    -- (SegmentControl) to Single file (SINGLE_FILE).
+    mpdProfile :: Prelude.Maybe CmafMpdProfile,
+    -- | Use this setting only when your output video stream has B-frames, which
+    -- causes the initial presentation time stamp (PTS) to be offset from the
+    -- initial decode time stamp (DTS). Specify how MediaConvert handles PTS
+    -- when writing time stamps in output DASH manifests. Choose Match initial
+    -- PTS (MATCH_INITIAL_PTS) when you want MediaConvert to use the initial
+    -- PTS as the first time stamp in the manifest. Choose Zero-based
+    -- (ZERO_BASED) to have MediaConvert ignore the initial PTS in the video
+    -- stream and instead write the initial time stamp as zero in the manifest.
+    -- For outputs that don\'t have B-frames, the time stamps in your DASH
+    -- manifests start at zero regardless of your choice here.
+    ptsOffsetHandlingForBFrames :: Prelude.Maybe CmafPtsOffsetHandlingForBFrames,
+    -- | When set to SINGLE_FILE, a single output file is generated, which is
+    -- internally segmented using the Fragment Length and Segment Length. When
+    -- set to SEGMENTED_FILES, separate segment files will be created.
+    segmentControl :: Prelude.Maybe CmafSegmentControl,
+    -- | Specify the length, in whole seconds, of each segment. When you don\'t
+    -- specify a value, MediaConvert defaults to 10. Related settings: Use
+    -- Segment length control (SegmentLengthControl) to specify whether the
+    -- encoder enforces this value strictly. Use Segment control
+    -- (CmafSegmentControl) to specify whether MediaConvert creates separate
+    -- segment files or one content file that has metadata to mark the segment
+    -- boundaries.
+    segmentLength :: Prelude.Maybe Prelude.Natural,
+    -- | Specify how you want MediaConvert to determine the segment length.
+    -- Choose Exact (EXACT) to have the encoder use the exact length that you
+    -- specify with the setting Segment length (SegmentLength). This might
+    -- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+    -- the encoder round up the segment lengths to match the next GOP boundary.
+    segmentLengthControl :: Prelude.Maybe CmafSegmentLengthControl,
+    -- | Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
+    -- tag of variant manifest.
+    streamInfResolution :: Prelude.Maybe CmafStreamInfResolution,
+    -- | When set to LEGACY, the segment target duration is always rounded up to
+    -- the nearest integer value above its current value in seconds. When set
+    -- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
+    -- nearest integer value if fraction seconds are greater than or equal to
+    -- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
+    -- use LEGACY if your client needs to ensure that the target duration is
+    -- always longer than the actual duration of the segment. Some older
+    -- players may experience interrupted playback when the actual duration of
+    -- a track in a segment is longer than the target duration.
+    targetDurationCompatibilityMode :: Prelude.Maybe CmafTargetDurationCompatibilityMode,
+    -- | Specify the video sample composition time offset mode in the output fMP4
+    -- TRUN box. For wider player compatibility, set Video composition offsets
+    -- to Unsigned or leave blank. The earliest presentation time may be
+    -- greater than zero, and sample composition time offsets will increment
+    -- using unsigned integers. For strict fMP4 video and audio timing, set
+    -- Video composition offsets to Signed. The earliest presentation time will
+    -- be equal to zero, and sample composition time offsets will increment
+    -- using signed integers.
+    videoCompositionOffsets :: Prelude.Maybe CmafVideoCompositionOffsets,
+    -- | When set to ENABLED, a DASH MPD manifest will be generated for this
+    -- output.
+    writeDashManifest :: Prelude.Maybe CmafWriteDASHManifest,
+    -- | When set to ENABLED, an Apple HLS manifest will be generated for this
+    -- output.
+    writeHlsManifest :: Prelude.Maybe CmafWriteHLSManifest,
+    -- | When you enable Precise segment duration in DASH manifests
+    -- (writeSegmentTimelineInRepresentation), your DASH manifest shows precise
+    -- segment durations. The segment duration information appears inside the
+    -- SegmentTimeline element, inside SegmentTemplate at the Representation
+    -- level. When this feature isn\'t enabled, the segment durations in your
+    -- DASH manifest are approximate. The segment duration information appears
+    -- in the duration attribute of the SegmentTemplate element.
+    writeSegmentTimelineInRepresentation :: Prelude.Maybe CmafWriteSegmentTimelineInRepresentation
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CmafGroupSettings' 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:
+--
+-- 'additionalManifests', 'cmafGroupSettings_additionalManifests' - By default, the service creates one top-level .m3u8 HLS manifest and one
+-- top -level .mpd DASH manifest for each CMAF output group in your job.
+-- These default manifests reference every output in the output group. To
+-- create additional top-level manifests that reference a subset of the
+-- outputs in the output group, specify a list of them here. For each
+-- additional manifest that you specify, the service creates one HLS
+-- manifest and one DASH manifest.
+--
+-- 'baseUrl', 'cmafGroupSettings_baseUrl' - A partial URI prefix that will be put in the manifest file at the top
+-- level BaseURL element. Can be used if streams are delivered from a
+-- different URL than the manifest file.
+--
+-- 'clientCache', 'cmafGroupSettings_clientCache' - Disable this setting only when your workflow requires the
+-- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
+-- (ENABLED) and control caching in your video distribution set up. For
+-- example, use the Cache-Control http header.
+--
+-- 'codecSpecification', 'cmafGroupSettings_codecSpecification' - Specification to use (RFC-6381 or the default RFC-4281) during m3u8
+-- playlist generation.
+--
+-- 'destination', 'cmafGroupSettings_destination' - Use Destination (Destination) to specify the S3 output location and the
+-- output filename base. Destination accepts format identifiers. If you do
+-- not specify the base filename in the URI, the service will use the
+-- filename of the input file. If your job has multiple inputs, the service
+-- uses the filename of the first input file.
+--
+-- 'destinationSettings', 'cmafGroupSettings_destinationSettings' - Settings associated with the destination. Will vary based on the type of
+-- destination
+--
+-- 'encryption', 'cmafGroupSettings_encryption' - DRM settings.
+--
+-- 'fragmentLength', 'cmafGroupSettings_fragmentLength' - Specify the length, in whole seconds, of the mp4 fragments. When you
+-- don\'t specify a value, MediaConvert defaults to 2. Related setting: Use
+-- Fragment length control (FragmentLengthControl) to specify whether the
+-- encoder enforces this value strictly.
+--
+-- 'imageBasedTrickPlay', 'cmafGroupSettings_imageBasedTrickPlay' - Specify whether MediaConvert generates images for trick play. Keep the
+-- default value, None (NONE), to not generate any images. Choose Thumbnail
+-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
+-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
+-- full-resolution images of single frames. When you enable Write HLS
+-- manifest (WriteHlsManifest), MediaConvert creates a child manifest for
+-- each set of images that you generate and adds corresponding entries to
+-- the parent manifest. When you enable Write DASH manifest
+-- (WriteDashManifest), MediaConvert adds an entry in the .mpd manifest for
+-- each set of images that you generate. A common application for these
+-- images is Roku trick mode. The thumbnails and full-frame images that
+-- MediaConvert creates with this feature are compatible with this Roku
+-- specification:
+-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
+--
+-- 'imageBasedTrickPlaySettings', 'cmafGroupSettings_imageBasedTrickPlaySettings' - Tile and thumbnail settings applicable when imageBasedTrickPlay is
+-- ADVANCED
+--
+-- 'manifestCompression', 'cmafGroupSettings_manifestCompression' - When set to GZIP, compresses HLS playlist.
+--
+-- 'manifestDurationFormat', 'cmafGroupSettings_manifestDurationFormat' - Indicates whether the output manifest should use floating point values
+-- for segment duration.
+--
+-- 'minBufferTime', 'cmafGroupSettings_minBufferTime' - Minimum time of initially buffered media that is needed to ensure smooth
+-- playout.
+--
+-- 'minFinalSegmentLength', 'cmafGroupSettings_minFinalSegmentLength' - Keep this setting at the default value of 0, unless you are
+-- troubleshooting a problem with how devices play back the end of your
+-- video asset. If you know that player devices are hanging on the final
+-- segment of your video because the length of your final segment is too
+-- short, use this setting to specify a minimum final segment length, in
+-- seconds. Choose a value that is greater than or equal to 1 and less than
+-- your segment length. When you specify a value for this setting, the
+-- encoder will combine any final segment that is shorter than the length
+-- that you specify with the previous segment. For example, your segment
+-- length is 3 seconds and your final segment is .5 seconds without a
+-- minimum final segment length; when you set the minimum final segment
+-- length to 1, your final segment is 3.5 seconds.
+--
+-- 'mpdManifestBandwidthType', 'cmafGroupSettings_mpdManifestBandwidthType' - Specify how the value for bandwidth is determined for each video
+-- Representation in your output MPD manifest. We recommend that you choose
+-- a MPD manifest bandwidth type that is compatible with your downstream
+-- player configuration. Max: Use the same value that you specify for Max
+-- bitrate in the video output, in bits per second. Average: Use the
+-- calculated average bitrate of the encoded video output, in bits per
+-- second.
+--
+-- 'mpdProfile', 'cmafGroupSettings_mpdProfile' - Specify whether your DASH profile is on-demand or main. When you choose
+-- Main profile (MAIN_PROFILE), the service signals
+-- urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When
+-- you choose On-demand (ON_DEMAND_PROFILE), the service signals
+-- urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose
+-- On-demand, you must also set the output group setting Segment control
+-- (SegmentControl) to Single file (SINGLE_FILE).
+--
+-- 'ptsOffsetHandlingForBFrames', 'cmafGroupSettings_ptsOffsetHandlingForBFrames' - Use this setting only when your output video stream has B-frames, which
+-- causes the initial presentation time stamp (PTS) to be offset from the
+-- initial decode time stamp (DTS). Specify how MediaConvert handles PTS
+-- when writing time stamps in output DASH manifests. Choose Match initial
+-- PTS (MATCH_INITIAL_PTS) when you want MediaConvert to use the initial
+-- PTS as the first time stamp in the manifest. Choose Zero-based
+-- (ZERO_BASED) to have MediaConvert ignore the initial PTS in the video
+-- stream and instead write the initial time stamp as zero in the manifest.
+-- For outputs that don\'t have B-frames, the time stamps in your DASH
+-- manifests start at zero regardless of your choice here.
+--
+-- 'segmentControl', 'cmafGroupSettings_segmentControl' - When set to SINGLE_FILE, a single output file is generated, which is
+-- internally segmented using the Fragment Length and Segment Length. When
+-- set to SEGMENTED_FILES, separate segment files will be created.
+--
+-- 'segmentLength', 'cmafGroupSettings_segmentLength' - Specify the length, in whole seconds, of each segment. When you don\'t
+-- specify a value, MediaConvert defaults to 10. Related settings: Use
+-- Segment length control (SegmentLengthControl) to specify whether the
+-- encoder enforces this value strictly. Use Segment control
+-- (CmafSegmentControl) to specify whether MediaConvert creates separate
+-- segment files or one content file that has metadata to mark the segment
+-- boundaries.
+--
+-- 'segmentLengthControl', 'cmafGroupSettings_segmentLengthControl' - Specify how you want MediaConvert to determine the segment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Segment length (SegmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+--
+-- 'streamInfResolution', 'cmafGroupSettings_streamInfResolution' - Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
+-- tag of variant manifest.
+--
+-- 'targetDurationCompatibilityMode', 'cmafGroupSettings_targetDurationCompatibilityMode' - When set to LEGACY, the segment target duration is always rounded up to
+-- the nearest integer value above its current value in seconds. When set
+-- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
+-- nearest integer value if fraction seconds are greater than or equal to
+-- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
+-- use LEGACY if your client needs to ensure that the target duration is
+-- always longer than the actual duration of the segment. Some older
+-- players may experience interrupted playback when the actual duration of
+-- a track in a segment is longer than the target duration.
+--
+-- 'videoCompositionOffsets', 'cmafGroupSettings_videoCompositionOffsets' - Specify the video sample composition time offset mode in the output fMP4
+-- TRUN box. For wider player compatibility, set Video composition offsets
+-- to Unsigned or leave blank. The earliest presentation time may be
+-- greater than zero, and sample composition time offsets will increment
+-- using unsigned integers. For strict fMP4 video and audio timing, set
+-- Video composition offsets to Signed. The earliest presentation time will
+-- be equal to zero, and sample composition time offsets will increment
+-- using signed integers.
+--
+-- 'writeDashManifest', 'cmafGroupSettings_writeDashManifest' - When set to ENABLED, a DASH MPD manifest will be generated for this
+-- output.
+--
+-- 'writeHlsManifest', 'cmafGroupSettings_writeHlsManifest' - When set to ENABLED, an Apple HLS manifest will be generated for this
+-- output.
+--
+-- 'writeSegmentTimelineInRepresentation', 'cmafGroupSettings_writeSegmentTimelineInRepresentation' - When you enable Precise segment duration in DASH manifests
+-- (writeSegmentTimelineInRepresentation), your DASH manifest shows precise
+-- segment durations. The segment duration information appears inside the
+-- SegmentTimeline element, inside SegmentTemplate at the Representation
+-- level. When this feature isn\'t enabled, the segment durations in your
+-- DASH manifest are approximate. The segment duration information appears
+-- in the duration attribute of the SegmentTemplate element.
+newCmafGroupSettings ::
+  CmafGroupSettings
+newCmafGroupSettings =
+  CmafGroupSettings'
+    { additionalManifests =
+        Prelude.Nothing,
+      baseUrl = Prelude.Nothing,
+      clientCache = Prelude.Nothing,
+      codecSpecification = Prelude.Nothing,
+      destination = Prelude.Nothing,
+      destinationSettings = Prelude.Nothing,
+      encryption = Prelude.Nothing,
+      fragmentLength = Prelude.Nothing,
+      imageBasedTrickPlay = Prelude.Nothing,
+      imageBasedTrickPlaySettings = Prelude.Nothing,
+      manifestCompression = Prelude.Nothing,
+      manifestDurationFormat = Prelude.Nothing,
+      minBufferTime = Prelude.Nothing,
+      minFinalSegmentLength = Prelude.Nothing,
+      mpdManifestBandwidthType = Prelude.Nothing,
+      mpdProfile = Prelude.Nothing,
+      ptsOffsetHandlingForBFrames = Prelude.Nothing,
+      segmentControl = Prelude.Nothing,
+      segmentLength = Prelude.Nothing,
+      segmentLengthControl = Prelude.Nothing,
+      streamInfResolution = Prelude.Nothing,
+      targetDurationCompatibilityMode = Prelude.Nothing,
+      videoCompositionOffsets = Prelude.Nothing,
+      writeDashManifest = Prelude.Nothing,
+      writeHlsManifest = Prelude.Nothing,
+      writeSegmentTimelineInRepresentation =
+        Prelude.Nothing
+    }
+
+-- | By default, the service creates one top-level .m3u8 HLS manifest and one
+-- top -level .mpd DASH manifest for each CMAF output group in your job.
+-- These default manifests reference every output in the output group. To
+-- create additional top-level manifests that reference a subset of the
+-- outputs in the output group, specify a list of them here. For each
+-- additional manifest that you specify, the service creates one HLS
+-- manifest and one DASH manifest.
+cmafGroupSettings_additionalManifests :: Lens.Lens' CmafGroupSettings (Prelude.Maybe [CmafAdditionalManifest])
+cmafGroupSettings_additionalManifests = Lens.lens (\CmafGroupSettings' {additionalManifests} -> additionalManifests) (\s@CmafGroupSettings' {} a -> s {additionalManifests = a} :: CmafGroupSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | A partial URI prefix that will be put in the manifest file at the top
+-- level BaseURL element. Can be used if streams are delivered from a
+-- different URL than the manifest file.
+cmafGroupSettings_baseUrl :: Lens.Lens' CmafGroupSettings (Prelude.Maybe Prelude.Text)
+cmafGroupSettings_baseUrl = Lens.lens (\CmafGroupSettings' {baseUrl} -> baseUrl) (\s@CmafGroupSettings' {} a -> s {baseUrl = a} :: CmafGroupSettings)
+
+-- | Disable this setting only when your workflow requires the
+-- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
+-- (ENABLED) and control caching in your video distribution set up. For
+-- example, use the Cache-Control http header.
+cmafGroupSettings_clientCache :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafClientCache)
+cmafGroupSettings_clientCache = Lens.lens (\CmafGroupSettings' {clientCache} -> clientCache) (\s@CmafGroupSettings' {} a -> s {clientCache = a} :: CmafGroupSettings)
+
+-- | Specification to use (RFC-6381 or the default RFC-4281) during m3u8
+-- playlist generation.
+cmafGroupSettings_codecSpecification :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafCodecSpecification)
+cmafGroupSettings_codecSpecification = Lens.lens (\CmafGroupSettings' {codecSpecification} -> codecSpecification) (\s@CmafGroupSettings' {} a -> s {codecSpecification = a} :: CmafGroupSettings)
+
+-- | Use Destination (Destination) to specify the S3 output location and the
+-- output filename base. Destination accepts format identifiers. If you do
+-- not specify the base filename in the URI, the service will use the
+-- filename of the input file. If your job has multiple inputs, the service
+-- uses the filename of the first input file.
+cmafGroupSettings_destination :: Lens.Lens' CmafGroupSettings (Prelude.Maybe Prelude.Text)
+cmafGroupSettings_destination = Lens.lens (\CmafGroupSettings' {destination} -> destination) (\s@CmafGroupSettings' {} a -> s {destination = a} :: CmafGroupSettings)
+
+-- | Settings associated with the destination. Will vary based on the type of
+-- destination
+cmafGroupSettings_destinationSettings :: Lens.Lens' CmafGroupSettings (Prelude.Maybe DestinationSettings)
+cmafGroupSettings_destinationSettings = Lens.lens (\CmafGroupSettings' {destinationSettings} -> destinationSettings) (\s@CmafGroupSettings' {} a -> s {destinationSettings = a} :: CmafGroupSettings)
+
+-- | DRM settings.
+cmafGroupSettings_encryption :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafEncryptionSettings)
+cmafGroupSettings_encryption = Lens.lens (\CmafGroupSettings' {encryption} -> encryption) (\s@CmafGroupSettings' {} a -> s {encryption = a} :: CmafGroupSettings)
+
+-- | Specify the length, in whole seconds, of the mp4 fragments. When you
+-- don\'t specify a value, MediaConvert defaults to 2. Related setting: Use
+-- Fragment length control (FragmentLengthControl) to specify whether the
+-- encoder enforces this value strictly.
+cmafGroupSettings_fragmentLength :: Lens.Lens' CmafGroupSettings (Prelude.Maybe Prelude.Natural)
+cmafGroupSettings_fragmentLength = Lens.lens (\CmafGroupSettings' {fragmentLength} -> fragmentLength) (\s@CmafGroupSettings' {} a -> s {fragmentLength = a} :: CmafGroupSettings)
+
+-- | Specify whether MediaConvert generates images for trick play. Keep the
+-- default value, None (NONE), to not generate any images. Choose Thumbnail
+-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
+-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
+-- full-resolution images of single frames. When you enable Write HLS
+-- manifest (WriteHlsManifest), MediaConvert creates a child manifest for
+-- each set of images that you generate and adds corresponding entries to
+-- the parent manifest. When you enable Write DASH manifest
+-- (WriteDashManifest), MediaConvert adds an entry in the .mpd manifest for
+-- each set of images that you generate. A common application for these
+-- images is Roku trick mode. The thumbnails and full-frame images that
+-- MediaConvert creates with this feature are compatible with this Roku
+-- specification:
+-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
+cmafGroupSettings_imageBasedTrickPlay :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafImageBasedTrickPlay)
+cmafGroupSettings_imageBasedTrickPlay = Lens.lens (\CmafGroupSettings' {imageBasedTrickPlay} -> imageBasedTrickPlay) (\s@CmafGroupSettings' {} a -> s {imageBasedTrickPlay = a} :: CmafGroupSettings)
+
+-- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
+-- ADVANCED
+cmafGroupSettings_imageBasedTrickPlaySettings :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafImageBasedTrickPlaySettings)
+cmafGroupSettings_imageBasedTrickPlaySettings = Lens.lens (\CmafGroupSettings' {imageBasedTrickPlaySettings} -> imageBasedTrickPlaySettings) (\s@CmafGroupSettings' {} a -> s {imageBasedTrickPlaySettings = a} :: CmafGroupSettings)
+
+-- | When set to GZIP, compresses HLS playlist.
+cmafGroupSettings_manifestCompression :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafManifestCompression)
+cmafGroupSettings_manifestCompression = Lens.lens (\CmafGroupSettings' {manifestCompression} -> manifestCompression) (\s@CmafGroupSettings' {} a -> s {manifestCompression = a} :: CmafGroupSettings)
+
+-- | Indicates whether the output manifest should use floating point values
+-- for segment duration.
+cmafGroupSettings_manifestDurationFormat :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafManifestDurationFormat)
+cmafGroupSettings_manifestDurationFormat = Lens.lens (\CmafGroupSettings' {manifestDurationFormat} -> manifestDurationFormat) (\s@CmafGroupSettings' {} a -> s {manifestDurationFormat = a} :: CmafGroupSettings)
+
+-- | Minimum time of initially buffered media that is needed to ensure smooth
+-- playout.
+cmafGroupSettings_minBufferTime :: Lens.Lens' CmafGroupSettings (Prelude.Maybe Prelude.Natural)
+cmafGroupSettings_minBufferTime = Lens.lens (\CmafGroupSettings' {minBufferTime} -> minBufferTime) (\s@CmafGroupSettings' {} a -> s {minBufferTime = a} :: CmafGroupSettings)
+
+-- | Keep this setting at the default value of 0, unless you are
+-- troubleshooting a problem with how devices play back the end of your
+-- video asset. If you know that player devices are hanging on the final
+-- segment of your video because the length of your final segment is too
+-- short, use this setting to specify a minimum final segment length, in
+-- seconds. Choose a value that is greater than or equal to 1 and less than
+-- your segment length. When you specify a value for this setting, the
+-- encoder will combine any final segment that is shorter than the length
+-- that you specify with the previous segment. For example, your segment
+-- length is 3 seconds and your final segment is .5 seconds without a
+-- minimum final segment length; when you set the minimum final segment
+-- length to 1, your final segment is 3.5 seconds.
+cmafGroupSettings_minFinalSegmentLength :: Lens.Lens' CmafGroupSettings (Prelude.Maybe Prelude.Double)
+cmafGroupSettings_minFinalSegmentLength = Lens.lens (\CmafGroupSettings' {minFinalSegmentLength} -> minFinalSegmentLength) (\s@CmafGroupSettings' {} a -> s {minFinalSegmentLength = a} :: CmafGroupSettings)
+
+-- | Specify how the value for bandwidth is determined for each video
+-- Representation in your output MPD manifest. We recommend that you choose
+-- a MPD manifest bandwidth type that is compatible with your downstream
+-- player configuration. Max: Use the same value that you specify for Max
+-- bitrate in the video output, in bits per second. Average: Use the
+-- calculated average bitrate of the encoded video output, in bits per
+-- second.
+cmafGroupSettings_mpdManifestBandwidthType :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafMpdManifestBandwidthType)
+cmafGroupSettings_mpdManifestBandwidthType = Lens.lens (\CmafGroupSettings' {mpdManifestBandwidthType} -> mpdManifestBandwidthType) (\s@CmafGroupSettings' {} a -> s {mpdManifestBandwidthType = a} :: CmafGroupSettings)
+
+-- | Specify whether your DASH profile is on-demand or main. When you choose
+-- Main profile (MAIN_PROFILE), the service signals
+-- urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When
+-- you choose On-demand (ON_DEMAND_PROFILE), the service signals
+-- urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose
+-- On-demand, you must also set the output group setting Segment control
+-- (SegmentControl) to Single file (SINGLE_FILE).
+cmafGroupSettings_mpdProfile :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafMpdProfile)
+cmafGroupSettings_mpdProfile = Lens.lens (\CmafGroupSettings' {mpdProfile} -> mpdProfile) (\s@CmafGroupSettings' {} a -> s {mpdProfile = a} :: CmafGroupSettings)
+
+-- | Use this setting only when your output video stream has B-frames, which
+-- causes the initial presentation time stamp (PTS) to be offset from the
+-- initial decode time stamp (DTS). Specify how MediaConvert handles PTS
+-- when writing time stamps in output DASH manifests. Choose Match initial
+-- PTS (MATCH_INITIAL_PTS) when you want MediaConvert to use the initial
+-- PTS as the first time stamp in the manifest. Choose Zero-based
+-- (ZERO_BASED) to have MediaConvert ignore the initial PTS in the video
+-- stream and instead write the initial time stamp as zero in the manifest.
+-- For outputs that don\'t have B-frames, the time stamps in your DASH
+-- manifests start at zero regardless of your choice here.
+cmafGroupSettings_ptsOffsetHandlingForBFrames :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafPtsOffsetHandlingForBFrames)
+cmafGroupSettings_ptsOffsetHandlingForBFrames = Lens.lens (\CmafGroupSettings' {ptsOffsetHandlingForBFrames} -> ptsOffsetHandlingForBFrames) (\s@CmafGroupSettings' {} a -> s {ptsOffsetHandlingForBFrames = a} :: CmafGroupSettings)
+
+-- | When set to SINGLE_FILE, a single output file is generated, which is
+-- internally segmented using the Fragment Length and Segment Length. When
+-- set to SEGMENTED_FILES, separate segment files will be created.
+cmafGroupSettings_segmentControl :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafSegmentControl)
+cmafGroupSettings_segmentControl = Lens.lens (\CmafGroupSettings' {segmentControl} -> segmentControl) (\s@CmafGroupSettings' {} a -> s {segmentControl = a} :: CmafGroupSettings)
+
+-- | Specify the length, in whole seconds, of each segment. When you don\'t
+-- specify a value, MediaConvert defaults to 10. Related settings: Use
+-- Segment length control (SegmentLengthControl) to specify whether the
+-- encoder enforces this value strictly. Use Segment control
+-- (CmafSegmentControl) to specify whether MediaConvert creates separate
+-- segment files or one content file that has metadata to mark the segment
+-- boundaries.
+cmafGroupSettings_segmentLength :: Lens.Lens' CmafGroupSettings (Prelude.Maybe Prelude.Natural)
+cmafGroupSettings_segmentLength = Lens.lens (\CmafGroupSettings' {segmentLength} -> segmentLength) (\s@CmafGroupSettings' {} a -> s {segmentLength = a} :: CmafGroupSettings)
+
+-- | Specify how you want MediaConvert to determine the segment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Segment length (SegmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+cmafGroupSettings_segmentLengthControl :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafSegmentLengthControl)
+cmafGroupSettings_segmentLengthControl = Lens.lens (\CmafGroupSettings' {segmentLengthControl} -> segmentLengthControl) (\s@CmafGroupSettings' {} a -> s {segmentLengthControl = a} :: CmafGroupSettings)
+
+-- | Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
+-- tag of variant manifest.
+cmafGroupSettings_streamInfResolution :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafStreamInfResolution)
+cmafGroupSettings_streamInfResolution = Lens.lens (\CmafGroupSettings' {streamInfResolution} -> streamInfResolution) (\s@CmafGroupSettings' {} a -> s {streamInfResolution = a} :: CmafGroupSettings)
+
+-- | When set to LEGACY, the segment target duration is always rounded up to
+-- the nearest integer value above its current value in seconds. When set
+-- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
+-- nearest integer value if fraction seconds are greater than or equal to
+-- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
+-- use LEGACY if your client needs to ensure that the target duration is
+-- always longer than the actual duration of the segment. Some older
+-- players may experience interrupted playback when the actual duration of
+-- a track in a segment is longer than the target duration.
+cmafGroupSettings_targetDurationCompatibilityMode :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafTargetDurationCompatibilityMode)
+cmafGroupSettings_targetDurationCompatibilityMode = Lens.lens (\CmafGroupSettings' {targetDurationCompatibilityMode} -> targetDurationCompatibilityMode) (\s@CmafGroupSettings' {} a -> s {targetDurationCompatibilityMode = a} :: CmafGroupSettings)
+
+-- | Specify the video sample composition time offset mode in the output fMP4
+-- TRUN box. For wider player compatibility, set Video composition offsets
+-- to Unsigned or leave blank. The earliest presentation time may be
+-- greater than zero, and sample composition time offsets will increment
+-- using unsigned integers. For strict fMP4 video and audio timing, set
+-- Video composition offsets to Signed. The earliest presentation time will
+-- be equal to zero, and sample composition time offsets will increment
+-- using signed integers.
+cmafGroupSettings_videoCompositionOffsets :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafVideoCompositionOffsets)
+cmafGroupSettings_videoCompositionOffsets = Lens.lens (\CmafGroupSettings' {videoCompositionOffsets} -> videoCompositionOffsets) (\s@CmafGroupSettings' {} a -> s {videoCompositionOffsets = a} :: CmafGroupSettings)
+
+-- | When set to ENABLED, a DASH MPD manifest will be generated for this
+-- output.
+cmafGroupSettings_writeDashManifest :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafWriteDASHManifest)
+cmafGroupSettings_writeDashManifest = Lens.lens (\CmafGroupSettings' {writeDashManifest} -> writeDashManifest) (\s@CmafGroupSettings' {} a -> s {writeDashManifest = a} :: CmafGroupSettings)
+
+-- | When set to ENABLED, an Apple HLS manifest will be generated for this
+-- output.
+cmafGroupSettings_writeHlsManifest :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafWriteHLSManifest)
+cmafGroupSettings_writeHlsManifest = Lens.lens (\CmafGroupSettings' {writeHlsManifest} -> writeHlsManifest) (\s@CmafGroupSettings' {} a -> s {writeHlsManifest = a} :: CmafGroupSettings)
+
+-- | When you enable Precise segment duration in DASH manifests
+-- (writeSegmentTimelineInRepresentation), your DASH manifest shows precise
+-- segment durations. The segment duration information appears inside the
+-- SegmentTimeline element, inside SegmentTemplate at the Representation
+-- level. When this feature isn\'t enabled, the segment durations in your
+-- DASH manifest are approximate. The segment duration information appears
+-- in the duration attribute of the SegmentTemplate element.
+cmafGroupSettings_writeSegmentTimelineInRepresentation :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafWriteSegmentTimelineInRepresentation)
+cmafGroupSettings_writeSegmentTimelineInRepresentation = Lens.lens (\CmafGroupSettings' {writeSegmentTimelineInRepresentation} -> writeSegmentTimelineInRepresentation) (\s@CmafGroupSettings' {} a -> s {writeSegmentTimelineInRepresentation = a} :: CmafGroupSettings)
+
+instance Data.FromJSON CmafGroupSettings where
+  parseJSON =
+    Data.withObject
+      "CmafGroupSettings"
+      ( \x ->
+          CmafGroupSettings'
+            Prelude.<$> ( x
+                            Data..:? "additionalManifests"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "baseUrl")
+            Prelude.<*> (x Data..:? "clientCache")
+            Prelude.<*> (x Data..:? "codecSpecification")
+            Prelude.<*> (x Data..:? "destination")
+            Prelude.<*> (x Data..:? "destinationSettings")
+            Prelude.<*> (x Data..:? "encryption")
+            Prelude.<*> (x Data..:? "fragmentLength")
+            Prelude.<*> (x Data..:? "imageBasedTrickPlay")
+            Prelude.<*> (x Data..:? "imageBasedTrickPlaySettings")
+            Prelude.<*> (x Data..:? "manifestCompression")
+            Prelude.<*> (x Data..:? "manifestDurationFormat")
+            Prelude.<*> (x Data..:? "minBufferTime")
+            Prelude.<*> (x Data..:? "minFinalSegmentLength")
+            Prelude.<*> (x Data..:? "mpdManifestBandwidthType")
+            Prelude.<*> (x Data..:? "mpdProfile")
+            Prelude.<*> (x Data..:? "ptsOffsetHandlingForBFrames")
+            Prelude.<*> (x Data..:? "segmentControl")
+            Prelude.<*> (x Data..:? "segmentLength")
+            Prelude.<*> (x Data..:? "segmentLengthControl")
+            Prelude.<*> (x Data..:? "streamInfResolution")
+            Prelude.<*> (x Data..:? "targetDurationCompatibilityMode")
+            Prelude.<*> (x Data..:? "videoCompositionOffsets")
+            Prelude.<*> (x Data..:? "writeDashManifest")
+            Prelude.<*> (x Data..:? "writeHlsManifest")
+            Prelude.<*> (x Data..:? "writeSegmentTimelineInRepresentation")
+      )
+
+instance Prelude.Hashable CmafGroupSettings where
+  hashWithSalt _salt CmafGroupSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` additionalManifests
+      `Prelude.hashWithSalt` baseUrl
+      `Prelude.hashWithSalt` clientCache
+      `Prelude.hashWithSalt` codecSpecification
+      `Prelude.hashWithSalt` destination
+      `Prelude.hashWithSalt` destinationSettings
+      `Prelude.hashWithSalt` encryption
+      `Prelude.hashWithSalt` fragmentLength
+      `Prelude.hashWithSalt` imageBasedTrickPlay
+      `Prelude.hashWithSalt` imageBasedTrickPlaySettings
+      `Prelude.hashWithSalt` manifestCompression
+      `Prelude.hashWithSalt` manifestDurationFormat
+      `Prelude.hashWithSalt` minBufferTime
+      `Prelude.hashWithSalt` minFinalSegmentLength
+      `Prelude.hashWithSalt` mpdManifestBandwidthType
+      `Prelude.hashWithSalt` mpdProfile
+      `Prelude.hashWithSalt` ptsOffsetHandlingForBFrames
+      `Prelude.hashWithSalt` segmentControl
+      `Prelude.hashWithSalt` segmentLength
+      `Prelude.hashWithSalt` segmentLengthControl
+      `Prelude.hashWithSalt` streamInfResolution
+      `Prelude.hashWithSalt` targetDurationCompatibilityMode
+      `Prelude.hashWithSalt` videoCompositionOffsets
+      `Prelude.hashWithSalt` writeDashManifest
+      `Prelude.hashWithSalt` writeHlsManifest
+      `Prelude.hashWithSalt` writeSegmentTimelineInRepresentation
+
+instance Prelude.NFData CmafGroupSettings where
+  rnf CmafGroupSettings' {..} =
+    Prelude.rnf additionalManifests
+      `Prelude.seq` Prelude.rnf baseUrl
+      `Prelude.seq` Prelude.rnf clientCache
+      `Prelude.seq` Prelude.rnf codecSpecification
+      `Prelude.seq` Prelude.rnf destination
+      `Prelude.seq` Prelude.rnf destinationSettings
+      `Prelude.seq` Prelude.rnf encryption
+      `Prelude.seq` Prelude.rnf fragmentLength
+      `Prelude.seq` Prelude.rnf imageBasedTrickPlay
+      `Prelude.seq` Prelude.rnf imageBasedTrickPlaySettings
+      `Prelude.seq` Prelude.rnf manifestCompression
+      `Prelude.seq` Prelude.rnf manifestDurationFormat
+      `Prelude.seq` Prelude.rnf minBufferTime
+      `Prelude.seq` Prelude.rnf minFinalSegmentLength
+      `Prelude.seq` Prelude.rnf mpdManifestBandwidthType
+      `Prelude.seq` Prelude.rnf mpdProfile
+      `Prelude.seq` Prelude.rnf
+        ptsOffsetHandlingForBFrames
+      `Prelude.seq` Prelude.rnf segmentControl
+      `Prelude.seq` Prelude.rnf segmentLength
+      `Prelude.seq` Prelude.rnf
+        segmentLengthControl
+      `Prelude.seq` Prelude.rnf
+        streamInfResolution
+      `Prelude.seq` Prelude.rnf
+        targetDurationCompatibilityMode
+      `Prelude.seq` Prelude.rnf
+        videoCompositionOffsets
+      `Prelude.seq` Prelude.rnf
+        writeDashManifest
+      `Prelude.seq` Prelude.rnf
+        writeHlsManifest
+      `Prelude.seq` Prelude.rnf
+        writeSegmentTimelineInRepresentation
+
+instance Data.ToJSON CmafGroupSettings where
+  toJSON CmafGroupSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("additionalManifests" Data..=)
+              Prelude.<$> additionalManifests,
+            ("baseUrl" Data..=) Prelude.<$> baseUrl,
+            ("clientCache" Data..=) Prelude.<$> clientCache,
+            ("codecSpecification" Data..=)
+              Prelude.<$> codecSpecification,
+            ("destination" Data..=) Prelude.<$> destination,
+            ("destinationSettings" Data..=)
+              Prelude.<$> destinationSettings,
+            ("encryption" Data..=) Prelude.<$> encryption,
+            ("fragmentLength" Data..=)
+              Prelude.<$> fragmentLength,
+            ("imageBasedTrickPlay" Data..=)
+              Prelude.<$> imageBasedTrickPlay,
+            ("imageBasedTrickPlaySettings" Data..=)
+              Prelude.<$> imageBasedTrickPlaySettings,
+            ("manifestCompression" Data..=)
+              Prelude.<$> manifestCompression,
+            ("manifestDurationFormat" Data..=)
+              Prelude.<$> manifestDurationFormat,
+            ("minBufferTime" Data..=) Prelude.<$> minBufferTime,
+            ("minFinalSegmentLength" Data..=)
+              Prelude.<$> minFinalSegmentLength,
+            ("mpdManifestBandwidthType" Data..=)
+              Prelude.<$> mpdManifestBandwidthType,
+            ("mpdProfile" Data..=) Prelude.<$> mpdProfile,
+            ("ptsOffsetHandlingForBFrames" Data..=)
+              Prelude.<$> ptsOffsetHandlingForBFrames,
+            ("segmentControl" Data..=)
+              Prelude.<$> segmentControl,
+            ("segmentLength" Data..=) Prelude.<$> segmentLength,
+            ("segmentLengthControl" Data..=)
+              Prelude.<$> segmentLengthControl,
+            ("streamInfResolution" Data..=)
+              Prelude.<$> streamInfResolution,
+            ("targetDurationCompatibilityMode" Data..=)
+              Prelude.<$> targetDurationCompatibilityMode,
+            ("videoCompositionOffsets" Data..=)
+              Prelude.<$> videoCompositionOffsets,
+            ("writeDashManifest" Data..=)
+              Prelude.<$> writeDashManifest,
+            ("writeHlsManifest" Data..=)
+              Prelude.<$> writeHlsManifest,
+            ("writeSegmentTimelineInRepresentation" Data..=)
+              Prelude.<$> writeSegmentTimelineInRepresentation
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/CmafImageBasedTrickPlay.hs b/gen/Amazonka/MediaConvert/Types/CmafImageBasedTrickPlay.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafImageBasedTrickPlay.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafImageBasedTrickPlay
+-- 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.CmafImageBasedTrickPlay
+  ( CmafImageBasedTrickPlay
+      ( ..,
+        CmafImageBasedTrickPlay_ADVANCED,
+        CmafImageBasedTrickPlay_NONE,
+        CmafImageBasedTrickPlay_THUMBNAIL,
+        CmafImageBasedTrickPlay_THUMBNAIL_AND_FULLFRAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether MediaConvert generates images for trick play. Keep the
+-- default value, None (NONE), to not generate any images. Choose Thumbnail
+-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
+-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
+-- full-resolution images of single frames. When you enable Write HLS
+-- manifest (WriteHlsManifest), MediaConvert creates a child manifest for
+-- each set of images that you generate and adds corresponding entries to
+-- the parent manifest. When you enable Write DASH manifest
+-- (WriteDashManifest), MediaConvert adds an entry in the .mpd manifest for
+-- each set of images that you generate. A common application for these
+-- images is Roku trick mode. The thumbnails and full-frame images that
+-- MediaConvert creates with this feature are compatible with this Roku
+-- specification:
+-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
+newtype CmafImageBasedTrickPlay = CmafImageBasedTrickPlay'
+  { fromCmafImageBasedTrickPlay ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafImageBasedTrickPlay_ADVANCED :: CmafImageBasedTrickPlay
+pattern CmafImageBasedTrickPlay_ADVANCED = CmafImageBasedTrickPlay' "ADVANCED"
+
+pattern CmafImageBasedTrickPlay_NONE :: CmafImageBasedTrickPlay
+pattern CmafImageBasedTrickPlay_NONE = CmafImageBasedTrickPlay' "NONE"
+
+pattern CmafImageBasedTrickPlay_THUMBNAIL :: CmafImageBasedTrickPlay
+pattern CmafImageBasedTrickPlay_THUMBNAIL = CmafImageBasedTrickPlay' "THUMBNAIL"
+
+pattern CmafImageBasedTrickPlay_THUMBNAIL_AND_FULLFRAME :: CmafImageBasedTrickPlay
+pattern CmafImageBasedTrickPlay_THUMBNAIL_AND_FULLFRAME = CmafImageBasedTrickPlay' "THUMBNAIL_AND_FULLFRAME"
+
+{-# COMPLETE
+  CmafImageBasedTrickPlay_ADVANCED,
+  CmafImageBasedTrickPlay_NONE,
+  CmafImageBasedTrickPlay_THUMBNAIL,
+  CmafImageBasedTrickPlay_THUMBNAIL_AND_FULLFRAME,
+  CmafImageBasedTrickPlay'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafImageBasedTrickPlaySettings.hs b/gen/Amazonka/MediaConvert/Types/CmafImageBasedTrickPlaySettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafImageBasedTrickPlaySettings.hs
@@ -0,0 +1,208 @@
+{-# 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.CmafImageBasedTrickPlaySettings
+-- 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.CmafImageBasedTrickPlaySettings 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.CmafIntervalCadence
+import qualified Amazonka.Prelude as Prelude
+
+-- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
+-- ADVANCED
+--
+-- /See:/ 'newCmafImageBasedTrickPlaySettings' smart constructor.
+data CmafImageBasedTrickPlaySettings = CmafImageBasedTrickPlaySettings'
+  { -- | The cadence MediaConvert follows for generating thumbnails. If set to
+    -- FOLLOW_IFRAME, MediaConvert generates thumbnails for each IDR frame in
+    -- the output (matching the GOP cadence). If set to FOLLOW_CUSTOM,
+    -- MediaConvert generates thumbnails according to the interval you specify
+    -- in thumbnailInterval.
+    intervalCadence :: Prelude.Maybe CmafIntervalCadence,
+    -- | Height of each thumbnail within each tile image, in pixels. Leave blank
+    -- to maintain aspect ratio with thumbnail width. If following the aspect
+    -- ratio would lead to a total tile height greater than 4096, then the job
+    -- will be rejected. Must be divisible by 2.
+    thumbnailHeight :: Prelude.Maybe Prelude.Natural,
+    -- | Enter the interval, in seconds, that MediaConvert uses to generate
+    -- thumbnails. If the interval you enter doesn\'t align with the output
+    -- frame rate, MediaConvert automatically rounds the interval to align with
+    -- the output frame rate. For example, if the output frame rate is 29.97
+    -- frames per second and you enter 5, MediaConvert uses a 150 frame
+    -- interval to generate thumbnails.
+    thumbnailInterval :: Prelude.Maybe Prelude.Double,
+    -- | Width of each thumbnail within each tile image, in pixels. Default is
+    -- 312. Must be divisible by 8.
+    thumbnailWidth :: Prelude.Maybe Prelude.Natural,
+    -- | Number of thumbnails in each column of a tile image. Set a value between
+    -- 2 and 2048. Must be divisible by 2.
+    tileHeight :: Prelude.Maybe Prelude.Natural,
+    -- | Number of thumbnails in each row of a tile image. Set a value between 1
+    -- and 512.
+    tileWidth :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CmafImageBasedTrickPlaySettings' 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:
+--
+-- 'intervalCadence', 'cmafImageBasedTrickPlaySettings_intervalCadence' - The cadence MediaConvert follows for generating thumbnails. If set to
+-- FOLLOW_IFRAME, MediaConvert generates thumbnails for each IDR frame in
+-- the output (matching the GOP cadence). If set to FOLLOW_CUSTOM,
+-- MediaConvert generates thumbnails according to the interval you specify
+-- in thumbnailInterval.
+--
+-- 'thumbnailHeight', 'cmafImageBasedTrickPlaySettings_thumbnailHeight' - Height of each thumbnail within each tile image, in pixels. Leave blank
+-- to maintain aspect ratio with thumbnail width. If following the aspect
+-- ratio would lead to a total tile height greater than 4096, then the job
+-- will be rejected. Must be divisible by 2.
+--
+-- 'thumbnailInterval', 'cmafImageBasedTrickPlaySettings_thumbnailInterval' - Enter the interval, in seconds, that MediaConvert uses to generate
+-- thumbnails. If the interval you enter doesn\'t align with the output
+-- frame rate, MediaConvert automatically rounds the interval to align with
+-- the output frame rate. For example, if the output frame rate is 29.97
+-- frames per second and you enter 5, MediaConvert uses a 150 frame
+-- interval to generate thumbnails.
+--
+-- 'thumbnailWidth', 'cmafImageBasedTrickPlaySettings_thumbnailWidth' - Width of each thumbnail within each tile image, in pixels. Default is
+-- 312. Must be divisible by 8.
+--
+-- 'tileHeight', 'cmafImageBasedTrickPlaySettings_tileHeight' - Number of thumbnails in each column of a tile image. Set a value between
+-- 2 and 2048. Must be divisible by 2.
+--
+-- 'tileWidth', 'cmafImageBasedTrickPlaySettings_tileWidth' - Number of thumbnails in each row of a tile image. Set a value between 1
+-- and 512.
+newCmafImageBasedTrickPlaySettings ::
+  CmafImageBasedTrickPlaySettings
+newCmafImageBasedTrickPlaySettings =
+  CmafImageBasedTrickPlaySettings'
+    { intervalCadence =
+        Prelude.Nothing,
+      thumbnailHeight = Prelude.Nothing,
+      thumbnailInterval = Prelude.Nothing,
+      thumbnailWidth = Prelude.Nothing,
+      tileHeight = Prelude.Nothing,
+      tileWidth = Prelude.Nothing
+    }
+
+-- | The cadence MediaConvert follows for generating thumbnails. If set to
+-- FOLLOW_IFRAME, MediaConvert generates thumbnails for each IDR frame in
+-- the output (matching the GOP cadence). If set to FOLLOW_CUSTOM,
+-- MediaConvert generates thumbnails according to the interval you specify
+-- in thumbnailInterval.
+cmafImageBasedTrickPlaySettings_intervalCadence :: Lens.Lens' CmafImageBasedTrickPlaySettings (Prelude.Maybe CmafIntervalCadence)
+cmafImageBasedTrickPlaySettings_intervalCadence = Lens.lens (\CmafImageBasedTrickPlaySettings' {intervalCadence} -> intervalCadence) (\s@CmafImageBasedTrickPlaySettings' {} a -> s {intervalCadence = a} :: CmafImageBasedTrickPlaySettings)
+
+-- | Height of each thumbnail within each tile image, in pixels. Leave blank
+-- to maintain aspect ratio with thumbnail width. If following the aspect
+-- ratio would lead to a total tile height greater than 4096, then the job
+-- will be rejected. Must be divisible by 2.
+cmafImageBasedTrickPlaySettings_thumbnailHeight :: Lens.Lens' CmafImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Natural)
+cmafImageBasedTrickPlaySettings_thumbnailHeight = Lens.lens (\CmafImageBasedTrickPlaySettings' {thumbnailHeight} -> thumbnailHeight) (\s@CmafImageBasedTrickPlaySettings' {} a -> s {thumbnailHeight = a} :: CmafImageBasedTrickPlaySettings)
+
+-- | Enter the interval, in seconds, that MediaConvert uses to generate
+-- thumbnails. If the interval you enter doesn\'t align with the output
+-- frame rate, MediaConvert automatically rounds the interval to align with
+-- the output frame rate. For example, if the output frame rate is 29.97
+-- frames per second and you enter 5, MediaConvert uses a 150 frame
+-- interval to generate thumbnails.
+cmafImageBasedTrickPlaySettings_thumbnailInterval :: Lens.Lens' CmafImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Double)
+cmafImageBasedTrickPlaySettings_thumbnailInterval = Lens.lens (\CmafImageBasedTrickPlaySettings' {thumbnailInterval} -> thumbnailInterval) (\s@CmafImageBasedTrickPlaySettings' {} a -> s {thumbnailInterval = a} :: CmafImageBasedTrickPlaySettings)
+
+-- | Width of each thumbnail within each tile image, in pixels. Default is
+-- 312. Must be divisible by 8.
+cmafImageBasedTrickPlaySettings_thumbnailWidth :: Lens.Lens' CmafImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Natural)
+cmafImageBasedTrickPlaySettings_thumbnailWidth = Lens.lens (\CmafImageBasedTrickPlaySettings' {thumbnailWidth} -> thumbnailWidth) (\s@CmafImageBasedTrickPlaySettings' {} a -> s {thumbnailWidth = a} :: CmafImageBasedTrickPlaySettings)
+
+-- | Number of thumbnails in each column of a tile image. Set a value between
+-- 2 and 2048. Must be divisible by 2.
+cmafImageBasedTrickPlaySettings_tileHeight :: Lens.Lens' CmafImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Natural)
+cmafImageBasedTrickPlaySettings_tileHeight = Lens.lens (\CmafImageBasedTrickPlaySettings' {tileHeight} -> tileHeight) (\s@CmafImageBasedTrickPlaySettings' {} a -> s {tileHeight = a} :: CmafImageBasedTrickPlaySettings)
+
+-- | Number of thumbnails in each row of a tile image. Set a value between 1
+-- and 512.
+cmafImageBasedTrickPlaySettings_tileWidth :: Lens.Lens' CmafImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Natural)
+cmafImageBasedTrickPlaySettings_tileWidth = Lens.lens (\CmafImageBasedTrickPlaySettings' {tileWidth} -> tileWidth) (\s@CmafImageBasedTrickPlaySettings' {} a -> s {tileWidth = a} :: CmafImageBasedTrickPlaySettings)
+
+instance
+  Data.FromJSON
+    CmafImageBasedTrickPlaySettings
+  where
+  parseJSON =
+    Data.withObject
+      "CmafImageBasedTrickPlaySettings"
+      ( \x ->
+          CmafImageBasedTrickPlaySettings'
+            Prelude.<$> (x Data..:? "intervalCadence")
+            Prelude.<*> (x Data..:? "thumbnailHeight")
+            Prelude.<*> (x Data..:? "thumbnailInterval")
+            Prelude.<*> (x Data..:? "thumbnailWidth")
+            Prelude.<*> (x Data..:? "tileHeight")
+            Prelude.<*> (x Data..:? "tileWidth")
+      )
+
+instance
+  Prelude.Hashable
+    CmafImageBasedTrickPlaySettings
+  where
+  hashWithSalt
+    _salt
+    CmafImageBasedTrickPlaySettings' {..} =
+      _salt
+        `Prelude.hashWithSalt` intervalCadence
+        `Prelude.hashWithSalt` thumbnailHeight
+        `Prelude.hashWithSalt` thumbnailInterval
+        `Prelude.hashWithSalt` thumbnailWidth
+        `Prelude.hashWithSalt` tileHeight
+        `Prelude.hashWithSalt` tileWidth
+
+instance
+  Prelude.NFData
+    CmafImageBasedTrickPlaySettings
+  where
+  rnf CmafImageBasedTrickPlaySettings' {..} =
+    Prelude.rnf intervalCadence
+      `Prelude.seq` Prelude.rnf thumbnailHeight
+      `Prelude.seq` Prelude.rnf thumbnailInterval
+      `Prelude.seq` Prelude.rnf thumbnailWidth
+      `Prelude.seq` Prelude.rnf tileHeight
+      `Prelude.seq` Prelude.rnf tileWidth
+
+instance Data.ToJSON CmafImageBasedTrickPlaySettings where
+  toJSON CmafImageBasedTrickPlaySettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("intervalCadence" Data..=)
+              Prelude.<$> intervalCadence,
+            ("thumbnailHeight" Data..=)
+              Prelude.<$> thumbnailHeight,
+            ("thumbnailInterval" Data..=)
+              Prelude.<$> thumbnailInterval,
+            ("thumbnailWidth" Data..=)
+              Prelude.<$> thumbnailWidth,
+            ("tileHeight" Data..=) Prelude.<$> tileHeight,
+            ("tileWidth" Data..=) Prelude.<$> tileWidth
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/CmafInitializationVectorInManifest.hs b/gen/Amazonka/MediaConvert/Types/CmafInitializationVectorInManifest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafInitializationVectorInManifest.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafInitializationVectorInManifest
+-- 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.CmafInitializationVectorInManifest
+  ( CmafInitializationVectorInManifest
+      ( ..,
+        CmafInitializationVectorInManifest_EXCLUDE,
+        CmafInitializationVectorInManifest_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you use DRM with CMAF outputs, choose whether the service writes
+-- the 128-bit encryption initialization vector in the HLS and DASH
+-- manifests.
+newtype CmafInitializationVectorInManifest = CmafInitializationVectorInManifest'
+  { fromCmafInitializationVectorInManifest ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafInitializationVectorInManifest_EXCLUDE :: CmafInitializationVectorInManifest
+pattern CmafInitializationVectorInManifest_EXCLUDE = CmafInitializationVectorInManifest' "EXCLUDE"
+
+pattern CmafInitializationVectorInManifest_INCLUDE :: CmafInitializationVectorInManifest
+pattern CmafInitializationVectorInManifest_INCLUDE = CmafInitializationVectorInManifest' "INCLUDE"
+
+{-# COMPLETE
+  CmafInitializationVectorInManifest_EXCLUDE,
+  CmafInitializationVectorInManifest_INCLUDE,
+  CmafInitializationVectorInManifest'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafIntervalCadence.hs b/gen/Amazonka/MediaConvert/Types/CmafIntervalCadence.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafIntervalCadence.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafIntervalCadence
+-- 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.CmafIntervalCadence
+  ( CmafIntervalCadence
+      ( ..,
+        CmafIntervalCadence_FOLLOW_CUSTOM,
+        CmafIntervalCadence_FOLLOW_IFRAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The cadence MediaConvert follows for generating thumbnails. If set to
+-- FOLLOW_IFRAME, MediaConvert generates thumbnails for each IDR frame in
+-- the output (matching the GOP cadence). If set to FOLLOW_CUSTOM,
+-- MediaConvert generates thumbnails according to the interval you specify
+-- in thumbnailInterval.
+newtype CmafIntervalCadence = CmafIntervalCadence'
+  { fromCmafIntervalCadence ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafIntervalCadence_FOLLOW_CUSTOM :: CmafIntervalCadence
+pattern CmafIntervalCadence_FOLLOW_CUSTOM = CmafIntervalCadence' "FOLLOW_CUSTOM"
+
+pattern CmafIntervalCadence_FOLLOW_IFRAME :: CmafIntervalCadence
+pattern CmafIntervalCadence_FOLLOW_IFRAME = CmafIntervalCadence' "FOLLOW_IFRAME"
+
+{-# COMPLETE
+  CmafIntervalCadence_FOLLOW_CUSTOM,
+  CmafIntervalCadence_FOLLOW_IFRAME,
+  CmafIntervalCadence'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafKeyProviderType.hs b/gen/Amazonka/MediaConvert/Types/CmafKeyProviderType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafKeyProviderType.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafKeyProviderType
+-- 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.CmafKeyProviderType
+  ( CmafKeyProviderType
+      ( ..,
+        CmafKeyProviderType_SPEKE,
+        CmafKeyProviderType_STATIC_KEY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether your DRM encryption key is static or from a key provider
+-- that follows the SPEKE standard. For more information about SPEKE, see
+-- https:\/\/docs.aws.amazon.com\/speke\/latest\/documentation\/what-is-speke.html.
+newtype CmafKeyProviderType = CmafKeyProviderType'
+  { fromCmafKeyProviderType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafKeyProviderType_SPEKE :: CmafKeyProviderType
+pattern CmafKeyProviderType_SPEKE = CmafKeyProviderType' "SPEKE"
+
+pattern CmafKeyProviderType_STATIC_KEY :: CmafKeyProviderType
+pattern CmafKeyProviderType_STATIC_KEY = CmafKeyProviderType' "STATIC_KEY"
+
+{-# COMPLETE
+  CmafKeyProviderType_SPEKE,
+  CmafKeyProviderType_STATIC_KEY,
+  CmafKeyProviderType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafManifestCompression.hs b/gen/Amazonka/MediaConvert/Types/CmafManifestCompression.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafManifestCompression.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafManifestCompression
+-- 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.CmafManifestCompression
+  ( CmafManifestCompression
+      ( ..,
+        CmafManifestCompression_GZIP,
+        CmafManifestCompression_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to GZIP, compresses HLS playlist.
+newtype CmafManifestCompression = CmafManifestCompression'
+  { fromCmafManifestCompression ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafManifestCompression_GZIP :: CmafManifestCompression
+pattern CmafManifestCompression_GZIP = CmafManifestCompression' "GZIP"
+
+pattern CmafManifestCompression_NONE :: CmafManifestCompression
+pattern CmafManifestCompression_NONE = CmafManifestCompression' "NONE"
+
+{-# COMPLETE
+  CmafManifestCompression_GZIP,
+  CmafManifestCompression_NONE,
+  CmafManifestCompression'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafManifestDurationFormat.hs b/gen/Amazonka/MediaConvert/Types/CmafManifestDurationFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafManifestDurationFormat.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafManifestDurationFormat
+-- 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.CmafManifestDurationFormat
+  ( CmafManifestDurationFormat
+      ( ..,
+        CmafManifestDurationFormat_FLOATING_POINT,
+        CmafManifestDurationFormat_INTEGER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Indicates whether the output manifest should use floating point values
+-- for segment duration.
+newtype CmafManifestDurationFormat = CmafManifestDurationFormat'
+  { fromCmafManifestDurationFormat ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafManifestDurationFormat_FLOATING_POINT :: CmafManifestDurationFormat
+pattern CmafManifestDurationFormat_FLOATING_POINT = CmafManifestDurationFormat' "FLOATING_POINT"
+
+pattern CmafManifestDurationFormat_INTEGER :: CmafManifestDurationFormat
+pattern CmafManifestDurationFormat_INTEGER = CmafManifestDurationFormat' "INTEGER"
+
+{-# COMPLETE
+  CmafManifestDurationFormat_FLOATING_POINT,
+  CmafManifestDurationFormat_INTEGER,
+  CmafManifestDurationFormat'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafMpdManifestBandwidthType.hs b/gen/Amazonka/MediaConvert/Types/CmafMpdManifestBandwidthType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafMpdManifestBandwidthType.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafMpdManifestBandwidthType
+-- 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.CmafMpdManifestBandwidthType
+  ( CmafMpdManifestBandwidthType
+      ( ..,
+        CmafMpdManifestBandwidthType_AVERAGE,
+        CmafMpdManifestBandwidthType_MAX
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify how the value for bandwidth is determined for each video
+-- Representation in your output MPD manifest. We recommend that you choose
+-- a MPD manifest bandwidth type that is compatible with your downstream
+-- player configuration. Max: Use the same value that you specify for Max
+-- bitrate in the video output, in bits per second. Average: Use the
+-- calculated average bitrate of the encoded video output, in bits per
+-- second.
+newtype CmafMpdManifestBandwidthType = CmafMpdManifestBandwidthType'
+  { fromCmafMpdManifestBandwidthType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafMpdManifestBandwidthType_AVERAGE :: CmafMpdManifestBandwidthType
+pattern CmafMpdManifestBandwidthType_AVERAGE = CmafMpdManifestBandwidthType' "AVERAGE"
+
+pattern CmafMpdManifestBandwidthType_MAX :: CmafMpdManifestBandwidthType
+pattern CmafMpdManifestBandwidthType_MAX = CmafMpdManifestBandwidthType' "MAX"
+
+{-# COMPLETE
+  CmafMpdManifestBandwidthType_AVERAGE,
+  CmafMpdManifestBandwidthType_MAX,
+  CmafMpdManifestBandwidthType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafMpdProfile.hs b/gen/Amazonka/MediaConvert/Types/CmafMpdProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafMpdProfile.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafMpdProfile
+-- 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.CmafMpdProfile
+  ( CmafMpdProfile
+      ( ..,
+        CmafMpdProfile_MAIN_PROFILE,
+        CmafMpdProfile_ON_DEMAND_PROFILE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether your DASH profile is on-demand or main. When you choose
+-- Main profile (MAIN_PROFILE), the service signals
+-- urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When
+-- you choose On-demand (ON_DEMAND_PROFILE), the service signals
+-- urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose
+-- On-demand, you must also set the output group setting Segment control
+-- (SegmentControl) to Single file (SINGLE_FILE).
+newtype CmafMpdProfile = CmafMpdProfile'
+  { fromCmafMpdProfile ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafMpdProfile_MAIN_PROFILE :: CmafMpdProfile
+pattern CmafMpdProfile_MAIN_PROFILE = CmafMpdProfile' "MAIN_PROFILE"
+
+pattern CmafMpdProfile_ON_DEMAND_PROFILE :: CmafMpdProfile
+pattern CmafMpdProfile_ON_DEMAND_PROFILE = CmafMpdProfile' "ON_DEMAND_PROFILE"
+
+{-# COMPLETE
+  CmafMpdProfile_MAIN_PROFILE,
+  CmafMpdProfile_ON_DEMAND_PROFILE,
+  CmafMpdProfile'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafPtsOffsetHandlingForBFrames.hs b/gen/Amazonka/MediaConvert/Types/CmafPtsOffsetHandlingForBFrames.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafPtsOffsetHandlingForBFrames.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafPtsOffsetHandlingForBFrames
+-- 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.CmafPtsOffsetHandlingForBFrames
+  ( CmafPtsOffsetHandlingForBFrames
+      ( ..,
+        CmafPtsOffsetHandlingForBFrames_MATCH_INITIAL_PTS,
+        CmafPtsOffsetHandlingForBFrames_ZERO_BASED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting only when your output video stream has B-frames, which
+-- causes the initial presentation time stamp (PTS) to be offset from the
+-- initial decode time stamp (DTS). Specify how MediaConvert handles PTS
+-- when writing time stamps in output DASH manifests. Choose Match initial
+-- PTS (MATCH_INITIAL_PTS) when you want MediaConvert to use the initial
+-- PTS as the first time stamp in the manifest. Choose Zero-based
+-- (ZERO_BASED) to have MediaConvert ignore the initial PTS in the video
+-- stream and instead write the initial time stamp as zero in the manifest.
+-- For outputs that don\'t have B-frames, the time stamps in your DASH
+-- manifests start at zero regardless of your choice here.
+newtype CmafPtsOffsetHandlingForBFrames = CmafPtsOffsetHandlingForBFrames'
+  { fromCmafPtsOffsetHandlingForBFrames ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafPtsOffsetHandlingForBFrames_MATCH_INITIAL_PTS :: CmafPtsOffsetHandlingForBFrames
+pattern CmafPtsOffsetHandlingForBFrames_MATCH_INITIAL_PTS = CmafPtsOffsetHandlingForBFrames' "MATCH_INITIAL_PTS"
+
+pattern CmafPtsOffsetHandlingForBFrames_ZERO_BASED :: CmafPtsOffsetHandlingForBFrames
+pattern CmafPtsOffsetHandlingForBFrames_ZERO_BASED = CmafPtsOffsetHandlingForBFrames' "ZERO_BASED"
+
+{-# COMPLETE
+  CmafPtsOffsetHandlingForBFrames_MATCH_INITIAL_PTS,
+  CmafPtsOffsetHandlingForBFrames_ZERO_BASED,
+  CmafPtsOffsetHandlingForBFrames'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafSegmentControl.hs b/gen/Amazonka/MediaConvert/Types/CmafSegmentControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafSegmentControl.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafSegmentControl
+-- 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.CmafSegmentControl
+  ( CmafSegmentControl
+      ( ..,
+        CmafSegmentControl_SEGMENTED_FILES,
+        CmafSegmentControl_SINGLE_FILE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to SINGLE_FILE, a single output file is generated, which is
+-- internally segmented using the Fragment Length and Segment Length. When
+-- set to SEGMENTED_FILES, separate segment files will be created.
+newtype CmafSegmentControl = CmafSegmentControl'
+  { fromCmafSegmentControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafSegmentControl_SEGMENTED_FILES :: CmafSegmentControl
+pattern CmafSegmentControl_SEGMENTED_FILES = CmafSegmentControl' "SEGMENTED_FILES"
+
+pattern CmafSegmentControl_SINGLE_FILE :: CmafSegmentControl
+pattern CmafSegmentControl_SINGLE_FILE = CmafSegmentControl' "SINGLE_FILE"
+
+{-# COMPLETE
+  CmafSegmentControl_SEGMENTED_FILES,
+  CmafSegmentControl_SINGLE_FILE,
+  CmafSegmentControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafSegmentLengthControl.hs b/gen/Amazonka/MediaConvert/Types/CmafSegmentLengthControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafSegmentLengthControl.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafSegmentLengthControl
+-- 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.CmafSegmentLengthControl
+  ( CmafSegmentLengthControl
+      ( ..,
+        CmafSegmentLengthControl_EXACT,
+        CmafSegmentLengthControl_GOP_MULTIPLE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify how you want MediaConvert to determine the segment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Segment length (SegmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+newtype CmafSegmentLengthControl = CmafSegmentLengthControl'
+  { fromCmafSegmentLengthControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafSegmentLengthControl_EXACT :: CmafSegmentLengthControl
+pattern CmafSegmentLengthControl_EXACT = CmafSegmentLengthControl' "EXACT"
+
+pattern CmafSegmentLengthControl_GOP_MULTIPLE :: CmafSegmentLengthControl
+pattern CmafSegmentLengthControl_GOP_MULTIPLE = CmafSegmentLengthControl' "GOP_MULTIPLE"
+
+{-# COMPLETE
+  CmafSegmentLengthControl_EXACT,
+  CmafSegmentLengthControl_GOP_MULTIPLE,
+  CmafSegmentLengthControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafStreamInfResolution.hs b/gen/Amazonka/MediaConvert/Types/CmafStreamInfResolution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafStreamInfResolution.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafStreamInfResolution
+-- 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.CmafStreamInfResolution
+  ( CmafStreamInfResolution
+      ( ..,
+        CmafStreamInfResolution_EXCLUDE,
+        CmafStreamInfResolution_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
+-- tag of variant manifest.
+newtype CmafStreamInfResolution = CmafStreamInfResolution'
+  { fromCmafStreamInfResolution ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafStreamInfResolution_EXCLUDE :: CmafStreamInfResolution
+pattern CmafStreamInfResolution_EXCLUDE = CmafStreamInfResolution' "EXCLUDE"
+
+pattern CmafStreamInfResolution_INCLUDE :: CmafStreamInfResolution
+pattern CmafStreamInfResolution_INCLUDE = CmafStreamInfResolution' "INCLUDE"
+
+{-# COMPLETE
+  CmafStreamInfResolution_EXCLUDE,
+  CmafStreamInfResolution_INCLUDE,
+  CmafStreamInfResolution'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafTargetDurationCompatibilityMode.hs b/gen/Amazonka/MediaConvert/Types/CmafTargetDurationCompatibilityMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafTargetDurationCompatibilityMode.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafTargetDurationCompatibilityMode
+-- 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.CmafTargetDurationCompatibilityMode
+  ( CmafTargetDurationCompatibilityMode
+      ( ..,
+        CmafTargetDurationCompatibilityMode_LEGACY,
+        CmafTargetDurationCompatibilityMode_SPEC_COMPLIANT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to LEGACY, the segment target duration is always rounded up to
+-- the nearest integer value above its current value in seconds. When set
+-- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
+-- nearest integer value if fraction seconds are greater than or equal to
+-- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
+-- use LEGACY if your client needs to ensure that the target duration is
+-- always longer than the actual duration of the segment. Some older
+-- players may experience interrupted playback when the actual duration of
+-- a track in a segment is longer than the target duration.
+newtype CmafTargetDurationCompatibilityMode = CmafTargetDurationCompatibilityMode'
+  { fromCmafTargetDurationCompatibilityMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafTargetDurationCompatibilityMode_LEGACY :: CmafTargetDurationCompatibilityMode
+pattern CmafTargetDurationCompatibilityMode_LEGACY = CmafTargetDurationCompatibilityMode' "LEGACY"
+
+pattern CmafTargetDurationCompatibilityMode_SPEC_COMPLIANT :: CmafTargetDurationCompatibilityMode
+pattern CmafTargetDurationCompatibilityMode_SPEC_COMPLIANT = CmafTargetDurationCompatibilityMode' "SPEC_COMPLIANT"
+
+{-# COMPLETE
+  CmafTargetDurationCompatibilityMode_LEGACY,
+  CmafTargetDurationCompatibilityMode_SPEC_COMPLIANT,
+  CmafTargetDurationCompatibilityMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafVideoCompositionOffsets.hs b/gen/Amazonka/MediaConvert/Types/CmafVideoCompositionOffsets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafVideoCompositionOffsets.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafVideoCompositionOffsets
+-- 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.CmafVideoCompositionOffsets
+  ( CmafVideoCompositionOffsets
+      ( ..,
+        CmafVideoCompositionOffsets_SIGNED,
+        CmafVideoCompositionOffsets_UNSIGNED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the video sample composition time offset mode in the output fMP4
+-- TRUN box. For wider player compatibility, set Video composition offsets
+-- to Unsigned or leave blank. The earliest presentation time may be
+-- greater than zero, and sample composition time offsets will increment
+-- using unsigned integers. For strict fMP4 video and audio timing, set
+-- Video composition offsets to Signed. The earliest presentation time will
+-- be equal to zero, and sample composition time offsets will increment
+-- using signed integers.
+newtype CmafVideoCompositionOffsets = CmafVideoCompositionOffsets'
+  { fromCmafVideoCompositionOffsets ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafVideoCompositionOffsets_SIGNED :: CmafVideoCompositionOffsets
+pattern CmafVideoCompositionOffsets_SIGNED = CmafVideoCompositionOffsets' "SIGNED"
+
+pattern CmafVideoCompositionOffsets_UNSIGNED :: CmafVideoCompositionOffsets
+pattern CmafVideoCompositionOffsets_UNSIGNED = CmafVideoCompositionOffsets' "UNSIGNED"
+
+{-# COMPLETE
+  CmafVideoCompositionOffsets_SIGNED,
+  CmafVideoCompositionOffsets_UNSIGNED,
+  CmafVideoCompositionOffsets'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafWriteDASHManifest.hs b/gen/Amazonka/MediaConvert/Types/CmafWriteDASHManifest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafWriteDASHManifest.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafWriteDASHManifest
+-- 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.CmafWriteDASHManifest
+  ( CmafWriteDASHManifest
+      ( ..,
+        CmafWriteDASHManifest_DISABLED,
+        CmafWriteDASHManifest_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to ENABLED, a DASH MPD manifest will be generated for this
+-- output.
+newtype CmafWriteDASHManifest = CmafWriteDASHManifest'
+  { fromCmafWriteDASHManifest ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafWriteDASHManifest_DISABLED :: CmafWriteDASHManifest
+pattern CmafWriteDASHManifest_DISABLED = CmafWriteDASHManifest' "DISABLED"
+
+pattern CmafWriteDASHManifest_ENABLED :: CmafWriteDASHManifest
+pattern CmafWriteDASHManifest_ENABLED = CmafWriteDASHManifest' "ENABLED"
+
+{-# COMPLETE
+  CmafWriteDASHManifest_DISABLED,
+  CmafWriteDASHManifest_ENABLED,
+  CmafWriteDASHManifest'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafWriteHLSManifest.hs b/gen/Amazonka/MediaConvert/Types/CmafWriteHLSManifest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafWriteHLSManifest.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafWriteHLSManifest
+-- 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.CmafWriteHLSManifest
+  ( CmafWriteHLSManifest
+      ( ..,
+        CmafWriteHLSManifest_DISABLED,
+        CmafWriteHLSManifest_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to ENABLED, an Apple HLS manifest will be generated for this
+-- output.
+newtype CmafWriteHLSManifest = CmafWriteHLSManifest'
+  { fromCmafWriteHLSManifest ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafWriteHLSManifest_DISABLED :: CmafWriteHLSManifest
+pattern CmafWriteHLSManifest_DISABLED = CmafWriteHLSManifest' "DISABLED"
+
+pattern CmafWriteHLSManifest_ENABLED :: CmafWriteHLSManifest
+pattern CmafWriteHLSManifest_ENABLED = CmafWriteHLSManifest' "ENABLED"
+
+{-# COMPLETE
+  CmafWriteHLSManifest_DISABLED,
+  CmafWriteHLSManifest_ENABLED,
+  CmafWriteHLSManifest'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmafWriteSegmentTimelineInRepresentation.hs b/gen/Amazonka/MediaConvert/Types/CmafWriteSegmentTimelineInRepresentation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmafWriteSegmentTimelineInRepresentation.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmafWriteSegmentTimelineInRepresentation
+-- 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.CmafWriteSegmentTimelineInRepresentation
+  ( CmafWriteSegmentTimelineInRepresentation
+      ( ..,
+        CmafWriteSegmentTimelineInRepresentation_DISABLED,
+        CmafWriteSegmentTimelineInRepresentation_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you enable Precise segment duration in DASH manifests
+-- (writeSegmentTimelineInRepresentation), your DASH manifest shows precise
+-- segment durations. The segment duration information appears inside the
+-- SegmentTimeline element, inside SegmentTemplate at the Representation
+-- level. When this feature isn\'t enabled, the segment durations in your
+-- DASH manifest are approximate. The segment duration information appears
+-- in the duration attribute of the SegmentTemplate element.
+newtype CmafWriteSegmentTimelineInRepresentation = CmafWriteSegmentTimelineInRepresentation'
+  { fromCmafWriteSegmentTimelineInRepresentation ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmafWriteSegmentTimelineInRepresentation_DISABLED :: CmafWriteSegmentTimelineInRepresentation
+pattern CmafWriteSegmentTimelineInRepresentation_DISABLED = CmafWriteSegmentTimelineInRepresentation' "DISABLED"
+
+pattern CmafWriteSegmentTimelineInRepresentation_ENABLED :: CmafWriteSegmentTimelineInRepresentation
+pattern CmafWriteSegmentTimelineInRepresentation_ENABLED = CmafWriteSegmentTimelineInRepresentation' "ENABLED"
+
+{-# COMPLETE
+  CmafWriteSegmentTimelineInRepresentation_DISABLED,
+  CmafWriteSegmentTimelineInRepresentation_ENABLED,
+  CmafWriteSegmentTimelineInRepresentation'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmfcAudioDuration.hs b/gen/Amazonka/MediaConvert/Types/CmfcAudioDuration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmfcAudioDuration.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmfcAudioDuration
+-- 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.CmfcAudioDuration
+  ( CmfcAudioDuration
+      ( ..,
+        CmfcAudioDuration_DEFAULT_CODEC_DURATION,
+        CmfcAudioDuration_MATCH_VIDEO_DURATION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+newtype CmfcAudioDuration = CmfcAudioDuration'
+  { fromCmfcAudioDuration ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmfcAudioDuration_DEFAULT_CODEC_DURATION :: CmfcAudioDuration
+pattern CmfcAudioDuration_DEFAULT_CODEC_DURATION = CmfcAudioDuration' "DEFAULT_CODEC_DURATION"
+
+pattern CmfcAudioDuration_MATCH_VIDEO_DURATION :: CmfcAudioDuration
+pattern CmfcAudioDuration_MATCH_VIDEO_DURATION = CmfcAudioDuration' "MATCH_VIDEO_DURATION"
+
+{-# COMPLETE
+  CmfcAudioDuration_DEFAULT_CODEC_DURATION,
+  CmfcAudioDuration_MATCH_VIDEO_DURATION,
+  CmfcAudioDuration'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmfcAudioTrackType.hs b/gen/Amazonka/MediaConvert/Types/CmfcAudioTrackType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmfcAudioTrackType.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmfcAudioTrackType
+-- 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.CmfcAudioTrackType
+  ( CmfcAudioTrackType
+      ( ..,
+        CmfcAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT,
+        CmfcAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT,
+        CmfcAudioTrackType_ALTERNATE_AUDIO_NOT_AUTO_SELECT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting to control the values that MediaConvert puts in your
+-- HLS parent playlist to control how the client player selects which audio
+-- track to play. The other options for this setting determine the values
+-- that MediaConvert writes for the DEFAULT and AUTOSELECT attributes of
+-- the EXT-X-MEDIA entry for the audio variant. For more information about
+-- these attributes, see the Apple documentation article
+-- https:\/\/developer.apple.com\/documentation\/http_live_streaming\/example_playlists_for_http_live_streaming\/adding_alternate_media_to_a_playlist.
+-- Choose Alternate audio, auto select, default
+-- (ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT) to set DEFAULT=YES and
+-- AUTOSELECT=YES. Choose this value for only one variant in your output
+-- group. Choose Alternate audio, auto select, not default
+-- (ALTERNATE_AUDIO_AUTO_SELECT) to set DEFAULT=NO and AUTOSELECT=YES.
+-- Choose Alternate Audio, Not Auto Select to set DEFAULT=NO and
+-- AUTOSELECT=NO. When you don\'t specify a value for this setting,
+-- MediaConvert defaults to Alternate audio, auto select, default. When
+-- there is more than one variant in your output group, you must explicitly
+-- choose a value for this setting.
+newtype CmfcAudioTrackType = CmfcAudioTrackType'
+  { fromCmfcAudioTrackType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmfcAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT :: CmfcAudioTrackType
+pattern CmfcAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT = CmfcAudioTrackType' "ALTERNATE_AUDIO_AUTO_SELECT"
+
+pattern CmfcAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT :: CmfcAudioTrackType
+pattern CmfcAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT = CmfcAudioTrackType' "ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT"
+
+pattern CmfcAudioTrackType_ALTERNATE_AUDIO_NOT_AUTO_SELECT :: CmfcAudioTrackType
+pattern CmfcAudioTrackType_ALTERNATE_AUDIO_NOT_AUTO_SELECT = CmfcAudioTrackType' "ALTERNATE_AUDIO_NOT_AUTO_SELECT"
+
+{-# COMPLETE
+  CmfcAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT,
+  CmfcAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT,
+  CmfcAudioTrackType_ALTERNATE_AUDIO_NOT_AUTO_SELECT,
+  CmfcAudioTrackType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmfcDescriptiveVideoServiceFlag.hs b/gen/Amazonka/MediaConvert/Types/CmfcDescriptiveVideoServiceFlag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmfcDescriptiveVideoServiceFlag.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmfcDescriptiveVideoServiceFlag
+-- 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.CmfcDescriptiveVideoServiceFlag
+  ( CmfcDescriptiveVideoServiceFlag
+      ( ..,
+        CmfcDescriptiveVideoServiceFlag_DONT_FLAG,
+        CmfcDescriptiveVideoServiceFlag_FLAG
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether to flag this audio track as descriptive video service
+-- (DVS) in your HLS parent manifest. When you choose Flag (FLAG),
+-- MediaConvert includes the parameter
+-- CHARACTERISTICS=\"public.accessibility.describes-video\" in the
+-- EXT-X-MEDIA entry for this track. When you keep the default choice,
+-- Don\'t flag (DONT_FLAG), MediaConvert leaves this parameter out. The DVS
+-- flag can help with accessibility on Apple devices. For more information,
+-- see the Apple documentation.
+newtype CmfcDescriptiveVideoServiceFlag = CmfcDescriptiveVideoServiceFlag'
+  { fromCmfcDescriptiveVideoServiceFlag ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmfcDescriptiveVideoServiceFlag_DONT_FLAG :: CmfcDescriptiveVideoServiceFlag
+pattern CmfcDescriptiveVideoServiceFlag_DONT_FLAG = CmfcDescriptiveVideoServiceFlag' "DONT_FLAG"
+
+pattern CmfcDescriptiveVideoServiceFlag_FLAG :: CmfcDescriptiveVideoServiceFlag
+pattern CmfcDescriptiveVideoServiceFlag_FLAG = CmfcDescriptiveVideoServiceFlag' "FLAG"
+
+{-# COMPLETE
+  CmfcDescriptiveVideoServiceFlag_DONT_FLAG,
+  CmfcDescriptiveVideoServiceFlag_FLAG,
+  CmfcDescriptiveVideoServiceFlag'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmfcIFrameOnlyManifest.hs b/gen/Amazonka/MediaConvert/Types/CmfcIFrameOnlyManifest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmfcIFrameOnlyManifest.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmfcIFrameOnlyManifest
+-- 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.CmfcIFrameOnlyManifest
+  ( CmfcIFrameOnlyManifest
+      ( ..,
+        CmfcIFrameOnlyManifest_EXCLUDE,
+        CmfcIFrameOnlyManifest_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose Include (INCLUDE) to have MediaConvert generate an HLS child
+-- manifest that lists only the I-frames for this rendition, in addition to
+-- your regular manifest for this rendition. You might use this manifest as
+-- part of a workflow that creates preview functions for your video.
+-- MediaConvert adds both the I-frame only child manifest and the regular
+-- child manifest to the parent manifest. When you don\'t need the I-frame
+-- only child manifest, keep the default value Exclude (EXCLUDE).
+newtype CmfcIFrameOnlyManifest = CmfcIFrameOnlyManifest'
+  { fromCmfcIFrameOnlyManifest ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmfcIFrameOnlyManifest_EXCLUDE :: CmfcIFrameOnlyManifest
+pattern CmfcIFrameOnlyManifest_EXCLUDE = CmfcIFrameOnlyManifest' "EXCLUDE"
+
+pattern CmfcIFrameOnlyManifest_INCLUDE :: CmfcIFrameOnlyManifest
+pattern CmfcIFrameOnlyManifest_INCLUDE = CmfcIFrameOnlyManifest' "INCLUDE"
+
+{-# COMPLETE
+  CmfcIFrameOnlyManifest_EXCLUDE,
+  CmfcIFrameOnlyManifest_INCLUDE,
+  CmfcIFrameOnlyManifest'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmfcKlvMetadata.hs b/gen/Amazonka/MediaConvert/Types/CmfcKlvMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmfcKlvMetadata.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmfcKlvMetadata
+-- 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.CmfcKlvMetadata
+  ( CmfcKlvMetadata
+      ( ..,
+        CmfcKlvMetadata_NONE,
+        CmfcKlvMetadata_PASSTHROUGH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | To include key-length-value metadata in this output: Set KLV metadata
+-- insertion to Passthrough. MediaConvert reads KLV metadata present in
+-- your input and writes each instance to a separate event message box in
+-- the output, according to MISB ST1910.1. To exclude this KLV metadata:
+-- Set KLV metadata insertion to None or leave blank.
+newtype CmfcKlvMetadata = CmfcKlvMetadata'
+  { fromCmfcKlvMetadata ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmfcKlvMetadata_NONE :: CmfcKlvMetadata
+pattern CmfcKlvMetadata_NONE = CmfcKlvMetadata' "NONE"
+
+pattern CmfcKlvMetadata_PASSTHROUGH :: CmfcKlvMetadata
+pattern CmfcKlvMetadata_PASSTHROUGH = CmfcKlvMetadata' "PASSTHROUGH"
+
+{-# COMPLETE
+  CmfcKlvMetadata_NONE,
+  CmfcKlvMetadata_PASSTHROUGH,
+  CmfcKlvMetadata'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmfcManifestMetadataSignaling.hs b/gen/Amazonka/MediaConvert/Types/CmfcManifestMetadataSignaling.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmfcManifestMetadataSignaling.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmfcManifestMetadataSignaling
+-- 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.CmfcManifestMetadataSignaling
+  ( CmfcManifestMetadataSignaling
+      ( ..,
+        CmfcManifestMetadataSignaling_DISABLED,
+        CmfcManifestMetadataSignaling_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | To add an InbandEventStream element in your output MPD manifest for each
+-- type of event message, set Manifest metadata signaling to Enabled. For
+-- ID3 event messages, the InbandEventStream element schemeIdUri will be
+-- same value that you specify for ID3 metadata scheme ID URI. For SCTE35
+-- event messages, the InbandEventStream element schemeIdUri will be
+-- \"urn:scte:scte35:2013:bin\". To leave these elements out of your output
+-- MPD manifest, set Manifest metadata signaling to Disabled.
+newtype CmfcManifestMetadataSignaling = CmfcManifestMetadataSignaling'
+  { fromCmfcManifestMetadataSignaling ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmfcManifestMetadataSignaling_DISABLED :: CmfcManifestMetadataSignaling
+pattern CmfcManifestMetadataSignaling_DISABLED = CmfcManifestMetadataSignaling' "DISABLED"
+
+pattern CmfcManifestMetadataSignaling_ENABLED :: CmfcManifestMetadataSignaling
+pattern CmfcManifestMetadataSignaling_ENABLED = CmfcManifestMetadataSignaling' "ENABLED"
+
+{-# COMPLETE
+  CmfcManifestMetadataSignaling_DISABLED,
+  CmfcManifestMetadataSignaling_ENABLED,
+  CmfcManifestMetadataSignaling'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmfcScte35Esam.hs b/gen/Amazonka/MediaConvert/Types/CmfcScte35Esam.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmfcScte35Esam.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmfcScte35Esam
+-- 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.CmfcScte35Esam
+  ( CmfcScte35Esam
+      ( ..,
+        CmfcScte35Esam_INSERT,
+        CmfcScte35Esam_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting only when you specify SCTE-35 markers from ESAM. Choose
+-- INSERT to put SCTE-35 markers in this output at the insertion points
+-- that you specify in an ESAM XML document. Provide the document in the
+-- setting SCC XML (sccXml).
+newtype CmfcScte35Esam = CmfcScte35Esam'
+  { fromCmfcScte35Esam ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmfcScte35Esam_INSERT :: CmfcScte35Esam
+pattern CmfcScte35Esam_INSERT = CmfcScte35Esam' "INSERT"
+
+pattern CmfcScte35Esam_NONE :: CmfcScte35Esam
+pattern CmfcScte35Esam_NONE = CmfcScte35Esam' "NONE"
+
+{-# COMPLETE
+  CmfcScte35Esam_INSERT,
+  CmfcScte35Esam_NONE,
+  CmfcScte35Esam'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmfcScte35Source.hs b/gen/Amazonka/MediaConvert/Types/CmfcScte35Source.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmfcScte35Source.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmfcScte35Source
+-- 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.CmfcScte35Source
+  ( CmfcScte35Source
+      ( ..,
+        CmfcScte35Source_NONE,
+        CmfcScte35Source_PASSTHROUGH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless you have SCTE-35 markers in your input video
+-- file. Choose Passthrough (PASSTHROUGH) if you want SCTE-35 markers that
+-- appear in your input to also appear in this output. Choose None (NONE)
+-- if you don\'t want those SCTE-35 markers in this output.
+newtype CmfcScte35Source = CmfcScte35Source'
+  { fromCmfcScte35Source ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmfcScte35Source_NONE :: CmfcScte35Source
+pattern CmfcScte35Source_NONE = CmfcScte35Source' "NONE"
+
+pattern CmfcScte35Source_PASSTHROUGH :: CmfcScte35Source
+pattern CmfcScte35Source_PASSTHROUGH = CmfcScte35Source' "PASSTHROUGH"
+
+{-# COMPLETE
+  CmfcScte35Source_NONE,
+  CmfcScte35Source_PASSTHROUGH,
+  CmfcScte35Source'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmfcSettings.hs b/gen/Amazonka/MediaConvert/Types/CmfcSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmfcSettings.hs
@@ -0,0 +1,571 @@
+{-# 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.CmfcSettings
+-- 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.CmfcSettings 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.CmfcAudioDuration
+import Amazonka.MediaConvert.Types.CmfcAudioTrackType
+import Amazonka.MediaConvert.Types.CmfcDescriptiveVideoServiceFlag
+import Amazonka.MediaConvert.Types.CmfcIFrameOnlyManifest
+import Amazonka.MediaConvert.Types.CmfcKlvMetadata
+import Amazonka.MediaConvert.Types.CmfcManifestMetadataSignaling
+import Amazonka.MediaConvert.Types.CmfcScte35Esam
+import Amazonka.MediaConvert.Types.CmfcScte35Source
+import Amazonka.MediaConvert.Types.CmfcTimedMetadata
+import Amazonka.MediaConvert.Types.CmfcTimedMetadataBoxVersion
+import qualified Amazonka.Prelude as Prelude
+
+-- | These settings relate to the fragmented MP4 container for the segments
+-- in your CMAF outputs.
+--
+-- /See:/ 'newCmfcSettings' smart constructor.
+data CmfcSettings = CmfcSettings'
+  { -- | Specify this setting only when your output will be consumed by a
+    -- downstream repackaging workflow that is sensitive to very small duration
+    -- differences between video and audio. For this situation, choose Match
+    -- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+    -- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+    -- choose Match video duration, MediaConvert pads the output audio streams
+    -- with silence or trims them to ensure that the total duration of each
+    -- audio stream is at least as long as the total duration of the video
+    -- stream. After padding or trimming, the audio stream duration is no more
+    -- than one frame longer than the video stream. MediaConvert applies audio
+    -- padding or trimming only to the end of the last segment of the output.
+    -- For unsegmented outputs, MediaConvert adds padding only to the end of
+    -- the file. When you keep the default value, any minor discrepancies
+    -- between audio and video duration will depend on your output audio codec.
+    audioDuration :: Prelude.Maybe CmfcAudioDuration,
+    -- | Specify the audio rendition group for this audio rendition. Specify up
+    -- to one value for each audio output in your output group. This value
+    -- appears in your HLS parent manifest in the EXT-X-MEDIA tag of
+    -- TYPE=AUDIO, as the value for the GROUP-ID attribute. For example, if you
+    -- specify \"audio_aac_1\" for Audio group ID, it appears in your manifest
+    -- like this: #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID=\"audio_aac_1\". Related
+    -- setting: To associate the rendition group that this audio track belongs
+    -- to with a video rendition, include the same value that you provide here
+    -- for that video output\'s setting Audio rendition sets
+    -- (audioRenditionSets).
+    audioGroupId :: Prelude.Maybe Prelude.Text,
+    -- | List the audio rendition groups that you want included with this video
+    -- rendition. Use a comma-separated list. For example, say you want to
+    -- include the audio rendition groups that have the audio group IDs
+    -- \"audio_aac_1\" and \"audio_dolby\". Then you would specify this value:
+    -- \"audio_aac_1,audio_dolby\". Related setting: The rendition groups that
+    -- you include in your comma-separated list should all match values that
+    -- you specify in the setting Audio group ID (AudioGroupId) for audio
+    -- renditions in the same output group as this video rendition. Default
+    -- behavior: If you don\'t specify anything here and for Audio group ID,
+    -- MediaConvert puts each audio variant in its own audio rendition group
+    -- and associates it with every video variant. Each value in your list
+    -- appears in your HLS parent manifest in the EXT-X-STREAM-INF tag as the
+    -- value for the AUDIO attribute. To continue the previous example, say
+    -- that the file name for the child manifest for your video rendition is
+    -- \"amazing_video_1.m3u8\". Then, in your parent manifest, each value will
+    -- appear on separate lines, like this:
+    -- #EXT-X-STREAM-INF:AUDIO=\"audio_aac_1\"... amazing_video_1.m3u8
+    -- #EXT-X-STREAM-INF:AUDIO=\"audio_dolby\"... amazing_video_1.m3u8
+    audioRenditionSets :: Prelude.Maybe Prelude.Text,
+    -- | Use this setting to control the values that MediaConvert puts in your
+    -- HLS parent playlist to control how the client player selects which audio
+    -- track to play. The other options for this setting determine the values
+    -- that MediaConvert writes for the DEFAULT and AUTOSELECT attributes of
+    -- the EXT-X-MEDIA entry for the audio variant. For more information about
+    -- these attributes, see the Apple documentation article
+    -- https:\/\/developer.apple.com\/documentation\/http_live_streaming\/example_playlists_for_http_live_streaming\/adding_alternate_media_to_a_playlist.
+    -- Choose Alternate audio, auto select, default
+    -- (ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT) to set DEFAULT=YES and
+    -- AUTOSELECT=YES. Choose this value for only one variant in your output
+    -- group. Choose Alternate audio, auto select, not default
+    -- (ALTERNATE_AUDIO_AUTO_SELECT) to set DEFAULT=NO and AUTOSELECT=YES.
+    -- Choose Alternate Audio, Not Auto Select to set DEFAULT=NO and
+    -- AUTOSELECT=NO. When you don\'t specify a value for this setting,
+    -- MediaConvert defaults to Alternate audio, auto select, default. When
+    -- there is more than one variant in your output group, you must explicitly
+    -- choose a value for this setting.
+    audioTrackType :: Prelude.Maybe CmfcAudioTrackType,
+    -- | Specify whether to flag this audio track as descriptive video service
+    -- (DVS) in your HLS parent manifest. When you choose Flag (FLAG),
+    -- MediaConvert includes the parameter
+    -- CHARACTERISTICS=\"public.accessibility.describes-video\" in the
+    -- EXT-X-MEDIA entry for this track. When you keep the default choice,
+    -- Don\'t flag (DONT_FLAG), MediaConvert leaves this parameter out. The DVS
+    -- flag can help with accessibility on Apple devices. For more information,
+    -- see the Apple documentation.
+    descriptiveVideoServiceFlag :: Prelude.Maybe CmfcDescriptiveVideoServiceFlag,
+    -- | Choose Include (INCLUDE) to have MediaConvert generate an HLS child
+    -- manifest that lists only the I-frames for this rendition, in addition to
+    -- your regular manifest for this rendition. You might use this manifest as
+    -- part of a workflow that creates preview functions for your video.
+    -- MediaConvert adds both the I-frame only child manifest and the regular
+    -- child manifest to the parent manifest. When you don\'t need the I-frame
+    -- only child manifest, keep the default value Exclude (EXCLUDE).
+    iFrameOnlyManifest :: Prelude.Maybe CmfcIFrameOnlyManifest,
+    -- | To include key-length-value metadata in this output: Set KLV metadata
+    -- insertion to Passthrough. MediaConvert reads KLV metadata present in
+    -- your input and writes each instance to a separate event message box in
+    -- the output, according to MISB ST1910.1. To exclude this KLV metadata:
+    -- Set KLV metadata insertion to None or leave blank.
+    klvMetadata :: Prelude.Maybe CmfcKlvMetadata,
+    -- | To add an InbandEventStream element in your output MPD manifest for each
+    -- type of event message, set Manifest metadata signaling to Enabled. For
+    -- ID3 event messages, the InbandEventStream element schemeIdUri will be
+    -- same value that you specify for ID3 metadata scheme ID URI. For SCTE35
+    -- event messages, the InbandEventStream element schemeIdUri will be
+    -- \"urn:scte:scte35:2013:bin\". To leave these elements out of your output
+    -- MPD manifest, set Manifest metadata signaling to Disabled.
+    manifestMetadataSignaling :: Prelude.Maybe CmfcManifestMetadataSignaling,
+    -- | Use this setting only when you specify SCTE-35 markers from ESAM. Choose
+    -- INSERT to put SCTE-35 markers in this output at the insertion points
+    -- that you specify in an ESAM XML document. Provide the document in the
+    -- setting SCC XML (sccXml).
+    scte35Esam :: Prelude.Maybe CmfcScte35Esam,
+    -- | Ignore this setting unless you have SCTE-35 markers in your input video
+    -- file. Choose Passthrough (PASSTHROUGH) if you want SCTE-35 markers that
+    -- appear in your input to also appear in this output. Choose None (NONE)
+    -- if you don\'t want those SCTE-35 markers in this output.
+    scte35Source :: Prelude.Maybe CmfcScte35Source,
+    -- | To include ID3 metadata in this output: Set ID3 metadata (timedMetadata)
+    -- to Passthrough (PASSTHROUGH). Specify this ID3 metadata in Custom ID3
+    -- metadata inserter (timedMetadataInsertion). MediaConvert writes each
+    -- instance of ID3 metadata in a separate Event Message (eMSG) box. To
+    -- exclude this ID3 metadata: Set ID3 metadata to None (NONE) or leave
+    -- blank.
+    timedMetadata :: Prelude.Maybe CmfcTimedMetadata,
+    -- | Specify the event message box (eMSG) version for ID3 timed metadata in
+    -- your output. For more information, see ISO\/IEC 23009-1:2022 section
+    -- 5.10.3.3.3 Syntax. Leave blank to use the default value Version 0. When
+    -- you specify Version 1, you must also set ID3 metadata (timedMetadata) to
+    -- Passthrough.
+    timedMetadataBoxVersion :: Prelude.Maybe CmfcTimedMetadataBoxVersion,
+    -- | Specify the event message box (eMSG) scheme ID URI (scheme_id_uri) for
+    -- ID3 timed metadata in your output. For more informaiton, see ISO\/IEC
+    -- 23009-1:2022 section 5.10.3.3.4 Semantics. Leave blank to use the
+    -- default value: https:\/\/aomedia.org\/emsg\/ID3 When you specify a value
+    -- for ID3 metadata scheme ID URI, you must also set ID3 metadata
+    -- (timedMetadata) to Passthrough.
+    timedMetadataSchemeIdUri :: Prelude.Maybe Prelude.Text,
+    -- | Specify the event message box (eMSG) value for ID3 timed metadata in
+    -- your output. For more informaiton, see ISO\/IEC 23009-1:2022 section
+    -- 5.10.3.3.4 Semantics. When you specify a value for ID3 Metadata Value,
+    -- you must also set ID3 metadata (timedMetadata) to Passthrough.
+    timedMetadataValue :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CmfcSettings' 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:
+--
+-- 'audioDuration', 'cmfcSettings_audioDuration' - Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+--
+-- 'audioGroupId', 'cmfcSettings_audioGroupId' - Specify the audio rendition group for this audio rendition. Specify up
+-- to one value for each audio output in your output group. This value
+-- appears in your HLS parent manifest in the EXT-X-MEDIA tag of
+-- TYPE=AUDIO, as the value for the GROUP-ID attribute. For example, if you
+-- specify \"audio_aac_1\" for Audio group ID, it appears in your manifest
+-- like this: #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID=\"audio_aac_1\". Related
+-- setting: To associate the rendition group that this audio track belongs
+-- to with a video rendition, include the same value that you provide here
+-- for that video output\'s setting Audio rendition sets
+-- (audioRenditionSets).
+--
+-- 'audioRenditionSets', 'cmfcSettings_audioRenditionSets' - List the audio rendition groups that you want included with this video
+-- rendition. Use a comma-separated list. For example, say you want to
+-- include the audio rendition groups that have the audio group IDs
+-- \"audio_aac_1\" and \"audio_dolby\". Then you would specify this value:
+-- \"audio_aac_1,audio_dolby\". Related setting: The rendition groups that
+-- you include in your comma-separated list should all match values that
+-- you specify in the setting Audio group ID (AudioGroupId) for audio
+-- renditions in the same output group as this video rendition. Default
+-- behavior: If you don\'t specify anything here and for Audio group ID,
+-- MediaConvert puts each audio variant in its own audio rendition group
+-- and associates it with every video variant. Each value in your list
+-- appears in your HLS parent manifest in the EXT-X-STREAM-INF tag as the
+-- value for the AUDIO attribute. To continue the previous example, say
+-- that the file name for the child manifest for your video rendition is
+-- \"amazing_video_1.m3u8\". Then, in your parent manifest, each value will
+-- appear on separate lines, like this:
+-- #EXT-X-STREAM-INF:AUDIO=\"audio_aac_1\"... amazing_video_1.m3u8
+-- #EXT-X-STREAM-INF:AUDIO=\"audio_dolby\"... amazing_video_1.m3u8
+--
+-- 'audioTrackType', 'cmfcSettings_audioTrackType' - Use this setting to control the values that MediaConvert puts in your
+-- HLS parent playlist to control how the client player selects which audio
+-- track to play. The other options for this setting determine the values
+-- that MediaConvert writes for the DEFAULT and AUTOSELECT attributes of
+-- the EXT-X-MEDIA entry for the audio variant. For more information about
+-- these attributes, see the Apple documentation article
+-- https:\/\/developer.apple.com\/documentation\/http_live_streaming\/example_playlists_for_http_live_streaming\/adding_alternate_media_to_a_playlist.
+-- Choose Alternate audio, auto select, default
+-- (ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT) to set DEFAULT=YES and
+-- AUTOSELECT=YES. Choose this value for only one variant in your output
+-- group. Choose Alternate audio, auto select, not default
+-- (ALTERNATE_AUDIO_AUTO_SELECT) to set DEFAULT=NO and AUTOSELECT=YES.
+-- Choose Alternate Audio, Not Auto Select to set DEFAULT=NO and
+-- AUTOSELECT=NO. When you don\'t specify a value for this setting,
+-- MediaConvert defaults to Alternate audio, auto select, default. When
+-- there is more than one variant in your output group, you must explicitly
+-- choose a value for this setting.
+--
+-- 'descriptiveVideoServiceFlag', 'cmfcSettings_descriptiveVideoServiceFlag' - Specify whether to flag this audio track as descriptive video service
+-- (DVS) in your HLS parent manifest. When you choose Flag (FLAG),
+-- MediaConvert includes the parameter
+-- CHARACTERISTICS=\"public.accessibility.describes-video\" in the
+-- EXT-X-MEDIA entry for this track. When you keep the default choice,
+-- Don\'t flag (DONT_FLAG), MediaConvert leaves this parameter out. The DVS
+-- flag can help with accessibility on Apple devices. For more information,
+-- see the Apple documentation.
+--
+-- 'iFrameOnlyManifest', 'cmfcSettings_iFrameOnlyManifest' - Choose Include (INCLUDE) to have MediaConvert generate an HLS child
+-- manifest that lists only the I-frames for this rendition, in addition to
+-- your regular manifest for this rendition. You might use this manifest as
+-- part of a workflow that creates preview functions for your video.
+-- MediaConvert adds both the I-frame only child manifest and the regular
+-- child manifest to the parent manifest. When you don\'t need the I-frame
+-- only child manifest, keep the default value Exclude (EXCLUDE).
+--
+-- 'klvMetadata', 'cmfcSettings_klvMetadata' - To include key-length-value metadata in this output: Set KLV metadata
+-- insertion to Passthrough. MediaConvert reads KLV metadata present in
+-- your input and writes each instance to a separate event message box in
+-- the output, according to MISB ST1910.1. To exclude this KLV metadata:
+-- Set KLV metadata insertion to None or leave blank.
+--
+-- 'manifestMetadataSignaling', 'cmfcSettings_manifestMetadataSignaling' - To add an InbandEventStream element in your output MPD manifest for each
+-- type of event message, set Manifest metadata signaling to Enabled. For
+-- ID3 event messages, the InbandEventStream element schemeIdUri will be
+-- same value that you specify for ID3 metadata scheme ID URI. For SCTE35
+-- event messages, the InbandEventStream element schemeIdUri will be
+-- \"urn:scte:scte35:2013:bin\". To leave these elements out of your output
+-- MPD manifest, set Manifest metadata signaling to Disabled.
+--
+-- 'scte35Esam', 'cmfcSettings_scte35Esam' - Use this setting only when you specify SCTE-35 markers from ESAM. Choose
+-- INSERT to put SCTE-35 markers in this output at the insertion points
+-- that you specify in an ESAM XML document. Provide the document in the
+-- setting SCC XML (sccXml).
+--
+-- 'scte35Source', 'cmfcSettings_scte35Source' - Ignore this setting unless you have SCTE-35 markers in your input video
+-- file. Choose Passthrough (PASSTHROUGH) if you want SCTE-35 markers that
+-- appear in your input to also appear in this output. Choose None (NONE)
+-- if you don\'t want those SCTE-35 markers in this output.
+--
+-- 'timedMetadata', 'cmfcSettings_timedMetadata' - To include ID3 metadata in this output: Set ID3 metadata (timedMetadata)
+-- to Passthrough (PASSTHROUGH). Specify this ID3 metadata in Custom ID3
+-- metadata inserter (timedMetadataInsertion). MediaConvert writes each
+-- instance of ID3 metadata in a separate Event Message (eMSG) box. To
+-- exclude this ID3 metadata: Set ID3 metadata to None (NONE) or leave
+-- blank.
+--
+-- 'timedMetadataBoxVersion', 'cmfcSettings_timedMetadataBoxVersion' - Specify the event message box (eMSG) version for ID3 timed metadata in
+-- your output. For more information, see ISO\/IEC 23009-1:2022 section
+-- 5.10.3.3.3 Syntax. Leave blank to use the default value Version 0. When
+-- you specify Version 1, you must also set ID3 metadata (timedMetadata) to
+-- Passthrough.
+--
+-- 'timedMetadataSchemeIdUri', 'cmfcSettings_timedMetadataSchemeIdUri' - Specify the event message box (eMSG) scheme ID URI (scheme_id_uri) for
+-- ID3 timed metadata in your output. For more informaiton, see ISO\/IEC
+-- 23009-1:2022 section 5.10.3.3.4 Semantics. Leave blank to use the
+-- default value: https:\/\/aomedia.org\/emsg\/ID3 When you specify a value
+-- for ID3 metadata scheme ID URI, you must also set ID3 metadata
+-- (timedMetadata) to Passthrough.
+--
+-- 'timedMetadataValue', 'cmfcSettings_timedMetadataValue' - Specify the event message box (eMSG) value for ID3 timed metadata in
+-- your output. For more informaiton, see ISO\/IEC 23009-1:2022 section
+-- 5.10.3.3.4 Semantics. When you specify a value for ID3 Metadata Value,
+-- you must also set ID3 metadata (timedMetadata) to Passthrough.
+newCmfcSettings ::
+  CmfcSettings
+newCmfcSettings =
+  CmfcSettings'
+    { audioDuration = Prelude.Nothing,
+      audioGroupId = Prelude.Nothing,
+      audioRenditionSets = Prelude.Nothing,
+      audioTrackType = Prelude.Nothing,
+      descriptiveVideoServiceFlag = Prelude.Nothing,
+      iFrameOnlyManifest = Prelude.Nothing,
+      klvMetadata = Prelude.Nothing,
+      manifestMetadataSignaling = Prelude.Nothing,
+      scte35Esam = Prelude.Nothing,
+      scte35Source = Prelude.Nothing,
+      timedMetadata = Prelude.Nothing,
+      timedMetadataBoxVersion = Prelude.Nothing,
+      timedMetadataSchemeIdUri = Prelude.Nothing,
+      timedMetadataValue = Prelude.Nothing
+    }
+
+-- | Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+cmfcSettings_audioDuration :: Lens.Lens' CmfcSettings (Prelude.Maybe CmfcAudioDuration)
+cmfcSettings_audioDuration = Lens.lens (\CmfcSettings' {audioDuration} -> audioDuration) (\s@CmfcSettings' {} a -> s {audioDuration = a} :: CmfcSettings)
+
+-- | Specify the audio rendition group for this audio rendition. Specify up
+-- to one value for each audio output in your output group. This value
+-- appears in your HLS parent manifest in the EXT-X-MEDIA tag of
+-- TYPE=AUDIO, as the value for the GROUP-ID attribute. For example, if you
+-- specify \"audio_aac_1\" for Audio group ID, it appears in your manifest
+-- like this: #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID=\"audio_aac_1\". Related
+-- setting: To associate the rendition group that this audio track belongs
+-- to with a video rendition, include the same value that you provide here
+-- for that video output\'s setting Audio rendition sets
+-- (audioRenditionSets).
+cmfcSettings_audioGroupId :: Lens.Lens' CmfcSettings (Prelude.Maybe Prelude.Text)
+cmfcSettings_audioGroupId = Lens.lens (\CmfcSettings' {audioGroupId} -> audioGroupId) (\s@CmfcSettings' {} a -> s {audioGroupId = a} :: CmfcSettings)
+
+-- | List the audio rendition groups that you want included with this video
+-- rendition. Use a comma-separated list. For example, say you want to
+-- include the audio rendition groups that have the audio group IDs
+-- \"audio_aac_1\" and \"audio_dolby\". Then you would specify this value:
+-- \"audio_aac_1,audio_dolby\". Related setting: The rendition groups that
+-- you include in your comma-separated list should all match values that
+-- you specify in the setting Audio group ID (AudioGroupId) for audio
+-- renditions in the same output group as this video rendition. Default
+-- behavior: If you don\'t specify anything here and for Audio group ID,
+-- MediaConvert puts each audio variant in its own audio rendition group
+-- and associates it with every video variant. Each value in your list
+-- appears in your HLS parent manifest in the EXT-X-STREAM-INF tag as the
+-- value for the AUDIO attribute. To continue the previous example, say
+-- that the file name for the child manifest for your video rendition is
+-- \"amazing_video_1.m3u8\". Then, in your parent manifest, each value will
+-- appear on separate lines, like this:
+-- #EXT-X-STREAM-INF:AUDIO=\"audio_aac_1\"... amazing_video_1.m3u8
+-- #EXT-X-STREAM-INF:AUDIO=\"audio_dolby\"... amazing_video_1.m3u8
+cmfcSettings_audioRenditionSets :: Lens.Lens' CmfcSettings (Prelude.Maybe Prelude.Text)
+cmfcSettings_audioRenditionSets = Lens.lens (\CmfcSettings' {audioRenditionSets} -> audioRenditionSets) (\s@CmfcSettings' {} a -> s {audioRenditionSets = a} :: CmfcSettings)
+
+-- | Use this setting to control the values that MediaConvert puts in your
+-- HLS parent playlist to control how the client player selects which audio
+-- track to play. The other options for this setting determine the values
+-- that MediaConvert writes for the DEFAULT and AUTOSELECT attributes of
+-- the EXT-X-MEDIA entry for the audio variant. For more information about
+-- these attributes, see the Apple documentation article
+-- https:\/\/developer.apple.com\/documentation\/http_live_streaming\/example_playlists_for_http_live_streaming\/adding_alternate_media_to_a_playlist.
+-- Choose Alternate audio, auto select, default
+-- (ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT) to set DEFAULT=YES and
+-- AUTOSELECT=YES. Choose this value for only one variant in your output
+-- group. Choose Alternate audio, auto select, not default
+-- (ALTERNATE_AUDIO_AUTO_SELECT) to set DEFAULT=NO and AUTOSELECT=YES.
+-- Choose Alternate Audio, Not Auto Select to set DEFAULT=NO and
+-- AUTOSELECT=NO. When you don\'t specify a value for this setting,
+-- MediaConvert defaults to Alternate audio, auto select, default. When
+-- there is more than one variant in your output group, you must explicitly
+-- choose a value for this setting.
+cmfcSettings_audioTrackType :: Lens.Lens' CmfcSettings (Prelude.Maybe CmfcAudioTrackType)
+cmfcSettings_audioTrackType = Lens.lens (\CmfcSettings' {audioTrackType} -> audioTrackType) (\s@CmfcSettings' {} a -> s {audioTrackType = a} :: CmfcSettings)
+
+-- | Specify whether to flag this audio track as descriptive video service
+-- (DVS) in your HLS parent manifest. When you choose Flag (FLAG),
+-- MediaConvert includes the parameter
+-- CHARACTERISTICS=\"public.accessibility.describes-video\" in the
+-- EXT-X-MEDIA entry for this track. When you keep the default choice,
+-- Don\'t flag (DONT_FLAG), MediaConvert leaves this parameter out. The DVS
+-- flag can help with accessibility on Apple devices. For more information,
+-- see the Apple documentation.
+cmfcSettings_descriptiveVideoServiceFlag :: Lens.Lens' CmfcSettings (Prelude.Maybe CmfcDescriptiveVideoServiceFlag)
+cmfcSettings_descriptiveVideoServiceFlag = Lens.lens (\CmfcSettings' {descriptiveVideoServiceFlag} -> descriptiveVideoServiceFlag) (\s@CmfcSettings' {} a -> s {descriptiveVideoServiceFlag = a} :: CmfcSettings)
+
+-- | Choose Include (INCLUDE) to have MediaConvert generate an HLS child
+-- manifest that lists only the I-frames for this rendition, in addition to
+-- your regular manifest for this rendition. You might use this manifest as
+-- part of a workflow that creates preview functions for your video.
+-- MediaConvert adds both the I-frame only child manifest and the regular
+-- child manifest to the parent manifest. When you don\'t need the I-frame
+-- only child manifest, keep the default value Exclude (EXCLUDE).
+cmfcSettings_iFrameOnlyManifest :: Lens.Lens' CmfcSettings (Prelude.Maybe CmfcIFrameOnlyManifest)
+cmfcSettings_iFrameOnlyManifest = Lens.lens (\CmfcSettings' {iFrameOnlyManifest} -> iFrameOnlyManifest) (\s@CmfcSettings' {} a -> s {iFrameOnlyManifest = a} :: CmfcSettings)
+
+-- | To include key-length-value metadata in this output: Set KLV metadata
+-- insertion to Passthrough. MediaConvert reads KLV metadata present in
+-- your input and writes each instance to a separate event message box in
+-- the output, according to MISB ST1910.1. To exclude this KLV metadata:
+-- Set KLV metadata insertion to None or leave blank.
+cmfcSettings_klvMetadata :: Lens.Lens' CmfcSettings (Prelude.Maybe CmfcKlvMetadata)
+cmfcSettings_klvMetadata = Lens.lens (\CmfcSettings' {klvMetadata} -> klvMetadata) (\s@CmfcSettings' {} a -> s {klvMetadata = a} :: CmfcSettings)
+
+-- | To add an InbandEventStream element in your output MPD manifest for each
+-- type of event message, set Manifest metadata signaling to Enabled. For
+-- ID3 event messages, the InbandEventStream element schemeIdUri will be
+-- same value that you specify for ID3 metadata scheme ID URI. For SCTE35
+-- event messages, the InbandEventStream element schemeIdUri will be
+-- \"urn:scte:scte35:2013:bin\". To leave these elements out of your output
+-- MPD manifest, set Manifest metadata signaling to Disabled.
+cmfcSettings_manifestMetadataSignaling :: Lens.Lens' CmfcSettings (Prelude.Maybe CmfcManifestMetadataSignaling)
+cmfcSettings_manifestMetadataSignaling = Lens.lens (\CmfcSettings' {manifestMetadataSignaling} -> manifestMetadataSignaling) (\s@CmfcSettings' {} a -> s {manifestMetadataSignaling = a} :: CmfcSettings)
+
+-- | Use this setting only when you specify SCTE-35 markers from ESAM. Choose
+-- INSERT to put SCTE-35 markers in this output at the insertion points
+-- that you specify in an ESAM XML document. Provide the document in the
+-- setting SCC XML (sccXml).
+cmfcSettings_scte35Esam :: Lens.Lens' CmfcSettings (Prelude.Maybe CmfcScte35Esam)
+cmfcSettings_scte35Esam = Lens.lens (\CmfcSettings' {scte35Esam} -> scte35Esam) (\s@CmfcSettings' {} a -> s {scte35Esam = a} :: CmfcSettings)
+
+-- | Ignore this setting unless you have SCTE-35 markers in your input video
+-- file. Choose Passthrough (PASSTHROUGH) if you want SCTE-35 markers that
+-- appear in your input to also appear in this output. Choose None (NONE)
+-- if you don\'t want those SCTE-35 markers in this output.
+cmfcSettings_scte35Source :: Lens.Lens' CmfcSettings (Prelude.Maybe CmfcScte35Source)
+cmfcSettings_scte35Source = Lens.lens (\CmfcSettings' {scte35Source} -> scte35Source) (\s@CmfcSettings' {} a -> s {scte35Source = a} :: CmfcSettings)
+
+-- | To include ID3 metadata in this output: Set ID3 metadata (timedMetadata)
+-- to Passthrough (PASSTHROUGH). Specify this ID3 metadata in Custom ID3
+-- metadata inserter (timedMetadataInsertion). MediaConvert writes each
+-- instance of ID3 metadata in a separate Event Message (eMSG) box. To
+-- exclude this ID3 metadata: Set ID3 metadata to None (NONE) or leave
+-- blank.
+cmfcSettings_timedMetadata :: Lens.Lens' CmfcSettings (Prelude.Maybe CmfcTimedMetadata)
+cmfcSettings_timedMetadata = Lens.lens (\CmfcSettings' {timedMetadata} -> timedMetadata) (\s@CmfcSettings' {} a -> s {timedMetadata = a} :: CmfcSettings)
+
+-- | Specify the event message box (eMSG) version for ID3 timed metadata in
+-- your output. For more information, see ISO\/IEC 23009-1:2022 section
+-- 5.10.3.3.3 Syntax. Leave blank to use the default value Version 0. When
+-- you specify Version 1, you must also set ID3 metadata (timedMetadata) to
+-- Passthrough.
+cmfcSettings_timedMetadataBoxVersion :: Lens.Lens' CmfcSettings (Prelude.Maybe CmfcTimedMetadataBoxVersion)
+cmfcSettings_timedMetadataBoxVersion = Lens.lens (\CmfcSettings' {timedMetadataBoxVersion} -> timedMetadataBoxVersion) (\s@CmfcSettings' {} a -> s {timedMetadataBoxVersion = a} :: CmfcSettings)
+
+-- | Specify the event message box (eMSG) scheme ID URI (scheme_id_uri) for
+-- ID3 timed metadata in your output. For more informaiton, see ISO\/IEC
+-- 23009-1:2022 section 5.10.3.3.4 Semantics. Leave blank to use the
+-- default value: https:\/\/aomedia.org\/emsg\/ID3 When you specify a value
+-- for ID3 metadata scheme ID URI, you must also set ID3 metadata
+-- (timedMetadata) to Passthrough.
+cmfcSettings_timedMetadataSchemeIdUri :: Lens.Lens' CmfcSettings (Prelude.Maybe Prelude.Text)
+cmfcSettings_timedMetadataSchemeIdUri = Lens.lens (\CmfcSettings' {timedMetadataSchemeIdUri} -> timedMetadataSchemeIdUri) (\s@CmfcSettings' {} a -> s {timedMetadataSchemeIdUri = a} :: CmfcSettings)
+
+-- | Specify the event message box (eMSG) value for ID3 timed metadata in
+-- your output. For more informaiton, see ISO\/IEC 23009-1:2022 section
+-- 5.10.3.3.4 Semantics. When you specify a value for ID3 Metadata Value,
+-- you must also set ID3 metadata (timedMetadata) to Passthrough.
+cmfcSettings_timedMetadataValue :: Lens.Lens' CmfcSettings (Prelude.Maybe Prelude.Text)
+cmfcSettings_timedMetadataValue = Lens.lens (\CmfcSettings' {timedMetadataValue} -> timedMetadataValue) (\s@CmfcSettings' {} a -> s {timedMetadataValue = a} :: CmfcSettings)
+
+instance Data.FromJSON CmfcSettings where
+  parseJSON =
+    Data.withObject
+      "CmfcSettings"
+      ( \x ->
+          CmfcSettings'
+            Prelude.<$> (x Data..:? "audioDuration")
+            Prelude.<*> (x Data..:? "audioGroupId")
+            Prelude.<*> (x Data..:? "audioRenditionSets")
+            Prelude.<*> (x Data..:? "audioTrackType")
+            Prelude.<*> (x Data..:? "descriptiveVideoServiceFlag")
+            Prelude.<*> (x Data..:? "iFrameOnlyManifest")
+            Prelude.<*> (x Data..:? "klvMetadata")
+            Prelude.<*> (x Data..:? "manifestMetadataSignaling")
+            Prelude.<*> (x Data..:? "scte35Esam")
+            Prelude.<*> (x Data..:? "scte35Source")
+            Prelude.<*> (x Data..:? "timedMetadata")
+            Prelude.<*> (x Data..:? "timedMetadataBoxVersion")
+            Prelude.<*> (x Data..:? "timedMetadataSchemeIdUri")
+            Prelude.<*> (x Data..:? "timedMetadataValue")
+      )
+
+instance Prelude.Hashable CmfcSettings where
+  hashWithSalt _salt CmfcSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` audioDuration
+      `Prelude.hashWithSalt` audioGroupId
+      `Prelude.hashWithSalt` audioRenditionSets
+      `Prelude.hashWithSalt` audioTrackType
+      `Prelude.hashWithSalt` descriptiveVideoServiceFlag
+      `Prelude.hashWithSalt` iFrameOnlyManifest
+      `Prelude.hashWithSalt` klvMetadata
+      `Prelude.hashWithSalt` manifestMetadataSignaling
+      `Prelude.hashWithSalt` scte35Esam
+      `Prelude.hashWithSalt` scte35Source
+      `Prelude.hashWithSalt` timedMetadata
+      `Prelude.hashWithSalt` timedMetadataBoxVersion
+      `Prelude.hashWithSalt` timedMetadataSchemeIdUri
+      `Prelude.hashWithSalt` timedMetadataValue
+
+instance Prelude.NFData CmfcSettings where
+  rnf CmfcSettings' {..} =
+    Prelude.rnf audioDuration
+      `Prelude.seq` Prelude.rnf audioGroupId
+      `Prelude.seq` Prelude.rnf audioRenditionSets
+      `Prelude.seq` Prelude.rnf audioTrackType
+      `Prelude.seq` Prelude.rnf descriptiveVideoServiceFlag
+      `Prelude.seq` Prelude.rnf iFrameOnlyManifest
+      `Prelude.seq` Prelude.rnf klvMetadata
+      `Prelude.seq` Prelude.rnf manifestMetadataSignaling
+      `Prelude.seq` Prelude.rnf scte35Esam
+      `Prelude.seq` Prelude.rnf scte35Source
+      `Prelude.seq` Prelude.rnf timedMetadata
+      `Prelude.seq` Prelude.rnf timedMetadataBoxVersion
+      `Prelude.seq` Prelude.rnf timedMetadataSchemeIdUri
+      `Prelude.seq` Prelude.rnf timedMetadataValue
+
+instance Data.ToJSON CmfcSettings where
+  toJSON CmfcSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("audioDuration" Data..=) Prelude.<$> audioDuration,
+            ("audioGroupId" Data..=) Prelude.<$> audioGroupId,
+            ("audioRenditionSets" Data..=)
+              Prelude.<$> audioRenditionSets,
+            ("audioTrackType" Data..=)
+              Prelude.<$> audioTrackType,
+            ("descriptiveVideoServiceFlag" Data..=)
+              Prelude.<$> descriptiveVideoServiceFlag,
+            ("iFrameOnlyManifest" Data..=)
+              Prelude.<$> iFrameOnlyManifest,
+            ("klvMetadata" Data..=) Prelude.<$> klvMetadata,
+            ("manifestMetadataSignaling" Data..=)
+              Prelude.<$> manifestMetadataSignaling,
+            ("scte35Esam" Data..=) Prelude.<$> scte35Esam,
+            ("scte35Source" Data..=) Prelude.<$> scte35Source,
+            ("timedMetadata" Data..=) Prelude.<$> timedMetadata,
+            ("timedMetadataBoxVersion" Data..=)
+              Prelude.<$> timedMetadataBoxVersion,
+            ("timedMetadataSchemeIdUri" Data..=)
+              Prelude.<$> timedMetadataSchemeIdUri,
+            ("timedMetadataValue" Data..=)
+              Prelude.<$> timedMetadataValue
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/CmfcTimedMetadata.hs b/gen/Amazonka/MediaConvert/Types/CmfcTimedMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmfcTimedMetadata.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmfcTimedMetadata
+-- 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.CmfcTimedMetadata
+  ( CmfcTimedMetadata
+      ( ..,
+        CmfcTimedMetadata_NONE,
+        CmfcTimedMetadata_PASSTHROUGH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | To include ID3 metadata in this output: Set ID3 metadata (timedMetadata)
+-- to Passthrough (PASSTHROUGH). Specify this ID3 metadata in Custom ID3
+-- metadata inserter (timedMetadataInsertion). MediaConvert writes each
+-- instance of ID3 metadata in a separate Event Message (eMSG) box. To
+-- exclude this ID3 metadata: Set ID3 metadata to None (NONE) or leave
+-- blank.
+newtype CmfcTimedMetadata = CmfcTimedMetadata'
+  { fromCmfcTimedMetadata ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmfcTimedMetadata_NONE :: CmfcTimedMetadata
+pattern CmfcTimedMetadata_NONE = CmfcTimedMetadata' "NONE"
+
+pattern CmfcTimedMetadata_PASSTHROUGH :: CmfcTimedMetadata
+pattern CmfcTimedMetadata_PASSTHROUGH = CmfcTimedMetadata' "PASSTHROUGH"
+
+{-# COMPLETE
+  CmfcTimedMetadata_NONE,
+  CmfcTimedMetadata_PASSTHROUGH,
+  CmfcTimedMetadata'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CmfcTimedMetadataBoxVersion.hs b/gen/Amazonka/MediaConvert/Types/CmfcTimedMetadataBoxVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CmfcTimedMetadataBoxVersion.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CmfcTimedMetadataBoxVersion
+-- 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.CmfcTimedMetadataBoxVersion
+  ( CmfcTimedMetadataBoxVersion
+      ( ..,
+        CmfcTimedMetadataBoxVersion_VERSION_0,
+        CmfcTimedMetadataBoxVersion_VERSION_1
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the event message box (eMSG) version for ID3 timed metadata in
+-- your output. For more information, see ISO\/IEC 23009-1:2022 section
+-- 5.10.3.3.3 Syntax. Leave blank to use the default value Version 0. When
+-- you specify Version 1, you must also set ID3 metadata (timedMetadata) to
+-- Passthrough.
+newtype CmfcTimedMetadataBoxVersion = CmfcTimedMetadataBoxVersion'
+  { fromCmfcTimedMetadataBoxVersion ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmfcTimedMetadataBoxVersion_VERSION_0 :: CmfcTimedMetadataBoxVersion
+pattern CmfcTimedMetadataBoxVersion_VERSION_0 = CmfcTimedMetadataBoxVersion' "VERSION_0"
+
+pattern CmfcTimedMetadataBoxVersion_VERSION_1 :: CmfcTimedMetadataBoxVersion
+pattern CmfcTimedMetadataBoxVersion_VERSION_1 = CmfcTimedMetadataBoxVersion' "VERSION_1"
+
+{-# COMPLETE
+  CmfcTimedMetadataBoxVersion_VERSION_0,
+  CmfcTimedMetadataBoxVersion_VERSION_1,
+  CmfcTimedMetadataBoxVersion'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ColorCorrector.hs b/gen/Amazonka/MediaConvert/Types/ColorCorrector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ColorCorrector.hs
@@ -0,0 +1,291 @@
+{-# 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.ColorCorrector
+-- 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.ColorCorrector 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.ColorSpaceConversion
+import Amazonka.MediaConvert.Types.Hdr10Metadata
+import Amazonka.MediaConvert.Types.SampleRangeConversion
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for color correction.
+--
+-- /See:/ 'newColorCorrector' smart constructor.
+data ColorCorrector = ColorCorrector'
+  { -- | Brightness level.
+    brightness :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the color space you want for this output. The service supports
+    -- conversion between HDR formats, between SDR formats, from SDR to HDR,
+    -- and from HDR to SDR. SDR to HDR conversion doesn\'t upgrade the dynamic
+    -- range. The converted video has an HDR format, but visually appears the
+    -- same as an unconverted output. HDR to SDR conversion uses Elemental tone
+    -- mapping technology to approximate the outcome of manually regrading from
+    -- HDR to SDR. Select Force P3D65 (SDR) to set the output color space
+    -- metadata to the following: * Color primaries: Display P3 * Transfer
+    -- characteristics: SMPTE 428M * Matrix coefficients: BT.709
+    colorSpaceConversion :: Prelude.Maybe ColorSpaceConversion,
+    -- | Contrast level.
+    contrast :: Prelude.Maybe Prelude.Natural,
+    -- | Use these settings when you convert to the HDR 10 color space. Specify
+    -- the SMPTE ST 2086 Mastering Display Color Volume static metadata that
+    -- you want signaled in the output. These values don\'t affect the pixel
+    -- values that are encoded in the video stream. They are intended to help
+    -- the downstream video player display content in a way that reflects the
+    -- intentions of the the content creator. When you set Color space
+    -- conversion (ColorSpaceConversion) to HDR 10 (FORCE_HDR10), these
+    -- settings are required. You must set values for Max frame average light
+    -- level (maxFrameAverageLightLevel) and Max content light level
+    -- (maxContentLightLevel); these settings don\'t have a default value. The
+    -- default values for the other HDR 10 metadata settings are defined by the
+    -- P3D65 color space. For more information about MediaConvert HDR jobs, see
+    -- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/hdr.
+    hdr10Metadata :: Prelude.Maybe Hdr10Metadata,
+    -- | Hue in degrees.
+    hue :: Prelude.Maybe Prelude.Int,
+    -- | Specify the video color sample range for this output. To create a full
+    -- range output, you must start with a full range YUV input and keep the
+    -- default value, None (NONE). To create a limited range output from a full
+    -- range input, choose Limited range (LIMITED_RANGE_SQUEEZE). With RGB
+    -- inputs, your output is always limited range, regardless of your choice
+    -- here. When you create a limited range output from a full range input,
+    -- MediaConvert limits the active pixel values in a way that depends on the
+    -- output\'s bit depth: 8-bit outputs contain only values from 16 through
+    -- 235 and 10-bit outputs contain only values from 64 through 940. With
+    -- this conversion, MediaConvert also changes the output metadata to note
+    -- the limited range.
+    sampleRangeConversion :: Prelude.Maybe SampleRangeConversion,
+    -- | Saturation level.
+    saturation :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the reference white level, in nits, for all of your SDR inputs.
+    -- Use to correct brightness levels within HDR10 outputs. The following
+    -- color metadata must be present in your SDR input: color primaries,
+    -- transfer characteristics, and matrix coefficients. If your SDR input has
+    -- missing color metadata, or if you want to correct input color metadata,
+    -- manually specify a color space in the input video selector. For 1,000
+    -- nit peak brightness displays, we recommend that you set SDR reference
+    -- white level to 203 (according to ITU-R BT.2408). Leave blank to use the
+    -- default value of 100, or specify an integer from 100 to 1000.
+    sdrReferenceWhiteLevel :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ColorCorrector' 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:
+--
+-- 'brightness', 'colorCorrector_brightness' - Brightness level.
+--
+-- 'colorSpaceConversion', 'colorCorrector_colorSpaceConversion' - Specify the color space you want for this output. The service supports
+-- conversion between HDR formats, between SDR formats, from SDR to HDR,
+-- and from HDR to SDR. SDR to HDR conversion doesn\'t upgrade the dynamic
+-- range. The converted video has an HDR format, but visually appears the
+-- same as an unconverted output. HDR to SDR conversion uses Elemental tone
+-- mapping technology to approximate the outcome of manually regrading from
+-- HDR to SDR. Select Force P3D65 (SDR) to set the output color space
+-- metadata to the following: * Color primaries: Display P3 * Transfer
+-- characteristics: SMPTE 428M * Matrix coefficients: BT.709
+--
+-- 'contrast', 'colorCorrector_contrast' - Contrast level.
+--
+-- 'hdr10Metadata', 'colorCorrector_hdr10Metadata' - Use these settings when you convert to the HDR 10 color space. Specify
+-- the SMPTE ST 2086 Mastering Display Color Volume static metadata that
+-- you want signaled in the output. These values don\'t affect the pixel
+-- values that are encoded in the video stream. They are intended to help
+-- the downstream video player display content in a way that reflects the
+-- intentions of the the content creator. When you set Color space
+-- conversion (ColorSpaceConversion) to HDR 10 (FORCE_HDR10), these
+-- settings are required. You must set values for Max frame average light
+-- level (maxFrameAverageLightLevel) and Max content light level
+-- (maxContentLightLevel); these settings don\'t have a default value. The
+-- default values for the other HDR 10 metadata settings are defined by the
+-- P3D65 color space. For more information about MediaConvert HDR jobs, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/hdr.
+--
+-- 'hue', 'colorCorrector_hue' - Hue in degrees.
+--
+-- 'sampleRangeConversion', 'colorCorrector_sampleRangeConversion' - Specify the video color sample range for this output. To create a full
+-- range output, you must start with a full range YUV input and keep the
+-- default value, None (NONE). To create a limited range output from a full
+-- range input, choose Limited range (LIMITED_RANGE_SQUEEZE). With RGB
+-- inputs, your output is always limited range, regardless of your choice
+-- here. When you create a limited range output from a full range input,
+-- MediaConvert limits the active pixel values in a way that depends on the
+-- output\'s bit depth: 8-bit outputs contain only values from 16 through
+-- 235 and 10-bit outputs contain only values from 64 through 940. With
+-- this conversion, MediaConvert also changes the output metadata to note
+-- the limited range.
+--
+-- 'saturation', 'colorCorrector_saturation' - Saturation level.
+--
+-- 'sdrReferenceWhiteLevel', 'colorCorrector_sdrReferenceWhiteLevel' - Specify the reference white level, in nits, for all of your SDR inputs.
+-- Use to correct brightness levels within HDR10 outputs. The following
+-- color metadata must be present in your SDR input: color primaries,
+-- transfer characteristics, and matrix coefficients. If your SDR input has
+-- missing color metadata, or if you want to correct input color metadata,
+-- manually specify a color space in the input video selector. For 1,000
+-- nit peak brightness displays, we recommend that you set SDR reference
+-- white level to 203 (according to ITU-R BT.2408). Leave blank to use the
+-- default value of 100, or specify an integer from 100 to 1000.
+newColorCorrector ::
+  ColorCorrector
+newColorCorrector =
+  ColorCorrector'
+    { brightness = Prelude.Nothing,
+      colorSpaceConversion = Prelude.Nothing,
+      contrast = Prelude.Nothing,
+      hdr10Metadata = Prelude.Nothing,
+      hue = Prelude.Nothing,
+      sampleRangeConversion = Prelude.Nothing,
+      saturation = Prelude.Nothing,
+      sdrReferenceWhiteLevel = Prelude.Nothing
+    }
+
+-- | Brightness level.
+colorCorrector_brightness :: Lens.Lens' ColorCorrector (Prelude.Maybe Prelude.Natural)
+colorCorrector_brightness = Lens.lens (\ColorCorrector' {brightness} -> brightness) (\s@ColorCorrector' {} a -> s {brightness = a} :: ColorCorrector)
+
+-- | Specify the color space you want for this output. The service supports
+-- conversion between HDR formats, between SDR formats, from SDR to HDR,
+-- and from HDR to SDR. SDR to HDR conversion doesn\'t upgrade the dynamic
+-- range. The converted video has an HDR format, but visually appears the
+-- same as an unconverted output. HDR to SDR conversion uses Elemental tone
+-- mapping technology to approximate the outcome of manually regrading from
+-- HDR to SDR. Select Force P3D65 (SDR) to set the output color space
+-- metadata to the following: * Color primaries: Display P3 * Transfer
+-- characteristics: SMPTE 428M * Matrix coefficients: BT.709
+colorCorrector_colorSpaceConversion :: Lens.Lens' ColorCorrector (Prelude.Maybe ColorSpaceConversion)
+colorCorrector_colorSpaceConversion = Lens.lens (\ColorCorrector' {colorSpaceConversion} -> colorSpaceConversion) (\s@ColorCorrector' {} a -> s {colorSpaceConversion = a} :: ColorCorrector)
+
+-- | Contrast level.
+colorCorrector_contrast :: Lens.Lens' ColorCorrector (Prelude.Maybe Prelude.Natural)
+colorCorrector_contrast = Lens.lens (\ColorCorrector' {contrast} -> contrast) (\s@ColorCorrector' {} a -> s {contrast = a} :: ColorCorrector)
+
+-- | Use these settings when you convert to the HDR 10 color space. Specify
+-- the SMPTE ST 2086 Mastering Display Color Volume static metadata that
+-- you want signaled in the output. These values don\'t affect the pixel
+-- values that are encoded in the video stream. They are intended to help
+-- the downstream video player display content in a way that reflects the
+-- intentions of the the content creator. When you set Color space
+-- conversion (ColorSpaceConversion) to HDR 10 (FORCE_HDR10), these
+-- settings are required. You must set values for Max frame average light
+-- level (maxFrameAverageLightLevel) and Max content light level
+-- (maxContentLightLevel); these settings don\'t have a default value. The
+-- default values for the other HDR 10 metadata settings are defined by the
+-- P3D65 color space. For more information about MediaConvert HDR jobs, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/hdr.
+colorCorrector_hdr10Metadata :: Lens.Lens' ColorCorrector (Prelude.Maybe Hdr10Metadata)
+colorCorrector_hdr10Metadata = Lens.lens (\ColorCorrector' {hdr10Metadata} -> hdr10Metadata) (\s@ColorCorrector' {} a -> s {hdr10Metadata = a} :: ColorCorrector)
+
+-- | Hue in degrees.
+colorCorrector_hue :: Lens.Lens' ColorCorrector (Prelude.Maybe Prelude.Int)
+colorCorrector_hue = Lens.lens (\ColorCorrector' {hue} -> hue) (\s@ColorCorrector' {} a -> s {hue = a} :: ColorCorrector)
+
+-- | Specify the video color sample range for this output. To create a full
+-- range output, you must start with a full range YUV input and keep the
+-- default value, None (NONE). To create a limited range output from a full
+-- range input, choose Limited range (LIMITED_RANGE_SQUEEZE). With RGB
+-- inputs, your output is always limited range, regardless of your choice
+-- here. When you create a limited range output from a full range input,
+-- MediaConvert limits the active pixel values in a way that depends on the
+-- output\'s bit depth: 8-bit outputs contain only values from 16 through
+-- 235 and 10-bit outputs contain only values from 64 through 940. With
+-- this conversion, MediaConvert also changes the output metadata to note
+-- the limited range.
+colorCorrector_sampleRangeConversion :: Lens.Lens' ColorCorrector (Prelude.Maybe SampleRangeConversion)
+colorCorrector_sampleRangeConversion = Lens.lens (\ColorCorrector' {sampleRangeConversion} -> sampleRangeConversion) (\s@ColorCorrector' {} a -> s {sampleRangeConversion = a} :: ColorCorrector)
+
+-- | Saturation level.
+colorCorrector_saturation :: Lens.Lens' ColorCorrector (Prelude.Maybe Prelude.Natural)
+colorCorrector_saturation = Lens.lens (\ColorCorrector' {saturation} -> saturation) (\s@ColorCorrector' {} a -> s {saturation = a} :: ColorCorrector)
+
+-- | Specify the reference white level, in nits, for all of your SDR inputs.
+-- Use to correct brightness levels within HDR10 outputs. The following
+-- color metadata must be present in your SDR input: color primaries,
+-- transfer characteristics, and matrix coefficients. If your SDR input has
+-- missing color metadata, or if you want to correct input color metadata,
+-- manually specify a color space in the input video selector. For 1,000
+-- nit peak brightness displays, we recommend that you set SDR reference
+-- white level to 203 (according to ITU-R BT.2408). Leave blank to use the
+-- default value of 100, or specify an integer from 100 to 1000.
+colorCorrector_sdrReferenceWhiteLevel :: Lens.Lens' ColorCorrector (Prelude.Maybe Prelude.Natural)
+colorCorrector_sdrReferenceWhiteLevel = Lens.lens (\ColorCorrector' {sdrReferenceWhiteLevel} -> sdrReferenceWhiteLevel) (\s@ColorCorrector' {} a -> s {sdrReferenceWhiteLevel = a} :: ColorCorrector)
+
+instance Data.FromJSON ColorCorrector where
+  parseJSON =
+    Data.withObject
+      "ColorCorrector"
+      ( \x ->
+          ColorCorrector'
+            Prelude.<$> (x Data..:? "brightness")
+            Prelude.<*> (x Data..:? "colorSpaceConversion")
+            Prelude.<*> (x Data..:? "contrast")
+            Prelude.<*> (x Data..:? "hdr10Metadata")
+            Prelude.<*> (x Data..:? "hue")
+            Prelude.<*> (x Data..:? "sampleRangeConversion")
+            Prelude.<*> (x Data..:? "saturation")
+            Prelude.<*> (x Data..:? "sdrReferenceWhiteLevel")
+      )
+
+instance Prelude.Hashable ColorCorrector where
+  hashWithSalt _salt ColorCorrector' {..} =
+    _salt
+      `Prelude.hashWithSalt` brightness
+      `Prelude.hashWithSalt` colorSpaceConversion
+      `Prelude.hashWithSalt` contrast
+      `Prelude.hashWithSalt` hdr10Metadata
+      `Prelude.hashWithSalt` hue
+      `Prelude.hashWithSalt` sampleRangeConversion
+      `Prelude.hashWithSalt` saturation
+      `Prelude.hashWithSalt` sdrReferenceWhiteLevel
+
+instance Prelude.NFData ColorCorrector where
+  rnf ColorCorrector' {..} =
+    Prelude.rnf brightness
+      `Prelude.seq` Prelude.rnf colorSpaceConversion
+      `Prelude.seq` Prelude.rnf contrast
+      `Prelude.seq` Prelude.rnf hdr10Metadata
+      `Prelude.seq` Prelude.rnf hue
+      `Prelude.seq` Prelude.rnf sampleRangeConversion
+      `Prelude.seq` Prelude.rnf saturation
+      `Prelude.seq` Prelude.rnf sdrReferenceWhiteLevel
+
+instance Data.ToJSON ColorCorrector where
+  toJSON ColorCorrector' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("brightness" Data..=) Prelude.<$> brightness,
+            ("colorSpaceConversion" Data..=)
+              Prelude.<$> colorSpaceConversion,
+            ("contrast" Data..=) Prelude.<$> contrast,
+            ("hdr10Metadata" Data..=) Prelude.<$> hdr10Metadata,
+            ("hue" Data..=) Prelude.<$> hue,
+            ("sampleRangeConversion" Data..=)
+              Prelude.<$> sampleRangeConversion,
+            ("saturation" Data..=) Prelude.<$> saturation,
+            ("sdrReferenceWhiteLevel" Data..=)
+              Prelude.<$> sdrReferenceWhiteLevel
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/ColorMetadata.hs b/gen/Amazonka/MediaConvert/Types/ColorMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ColorMetadata.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ColorMetadata
+-- 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.ColorMetadata
+  ( ColorMetadata
+      ( ..,
+        ColorMetadata_IGNORE,
+        ColorMetadata_INSERT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose Insert (INSERT) for this setting to include color metadata in
+-- this output. Choose Ignore (IGNORE) to exclude color metadata from this
+-- output. If you don\'t specify a value, the service sets this to Insert
+-- by default.
+newtype ColorMetadata = ColorMetadata'
+  { fromColorMetadata ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ColorMetadata_IGNORE :: ColorMetadata
+pattern ColorMetadata_IGNORE = ColorMetadata' "IGNORE"
+
+pattern ColorMetadata_INSERT :: ColorMetadata
+pattern ColorMetadata_INSERT = ColorMetadata' "INSERT"
+
+{-# COMPLETE
+  ColorMetadata_IGNORE,
+  ColorMetadata_INSERT,
+  ColorMetadata'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ColorSpace.hs b/gen/Amazonka/MediaConvert/Types/ColorSpace.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ColorSpace.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ColorSpace
+-- 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.ColorSpace
+  ( ColorSpace
+      ( ..,
+        ColorSpace_FOLLOW,
+        ColorSpace_HDR10,
+        ColorSpace_HLG_2020,
+        ColorSpace_P3D65_SDR,
+        ColorSpace_P3DCI,
+        ColorSpace_REC_601,
+        ColorSpace_REC_709
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If your input video has accurate color space metadata, or if you don\'t
+-- know about color space, leave this set to the default value Follow. The
+-- service will automatically detect your input color space. If your input
+-- video has metadata indicating the wrong color space, specify the
+-- accurate color space here. If your input video is HDR 10 and the SMPTE
+-- ST 2086 Mastering Display Color Volume static metadata isn\'t present in
+-- your video stream, or if that metadata is present but not accurate,
+-- choose Force HDR 10 here and specify correct values in the input HDR 10
+-- metadata settings. For more information about MediaConvert HDR jobs, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/hdr. Select P3D65
+-- (SDR) to set the input color space metadata to the following: * Color
+-- primaries: Display P3 * Transfer characteristics: SMPTE 428M * Matrix
+-- coefficients: BT.709
+newtype ColorSpace = ColorSpace'
+  { fromColorSpace ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ColorSpace_FOLLOW :: ColorSpace
+pattern ColorSpace_FOLLOW = ColorSpace' "FOLLOW"
+
+pattern ColorSpace_HDR10 :: ColorSpace
+pattern ColorSpace_HDR10 = ColorSpace' "HDR10"
+
+pattern ColorSpace_HLG_2020 :: ColorSpace
+pattern ColorSpace_HLG_2020 = ColorSpace' "HLG_2020"
+
+pattern ColorSpace_P3D65_SDR :: ColorSpace
+pattern ColorSpace_P3D65_SDR = ColorSpace' "P3D65_SDR"
+
+pattern ColorSpace_P3DCI :: ColorSpace
+pattern ColorSpace_P3DCI = ColorSpace' "P3DCI"
+
+pattern ColorSpace_REC_601 :: ColorSpace
+pattern ColorSpace_REC_601 = ColorSpace' "REC_601"
+
+pattern ColorSpace_REC_709 :: ColorSpace
+pattern ColorSpace_REC_709 = ColorSpace' "REC_709"
+
+{-# COMPLETE
+  ColorSpace_FOLLOW,
+  ColorSpace_HDR10,
+  ColorSpace_HLG_2020,
+  ColorSpace_P3D65_SDR,
+  ColorSpace_P3DCI,
+  ColorSpace_REC_601,
+  ColorSpace_REC_709,
+  ColorSpace'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ColorSpaceConversion.hs b/gen/Amazonka/MediaConvert/Types/ColorSpaceConversion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ColorSpaceConversion.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ColorSpaceConversion
+-- 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.ColorSpaceConversion
+  ( ColorSpaceConversion
+      ( ..,
+        ColorSpaceConversion_FORCE_601,
+        ColorSpaceConversion_FORCE_709,
+        ColorSpaceConversion_FORCE_HDR10,
+        ColorSpaceConversion_FORCE_HLG_2020,
+        ColorSpaceConversion_FORCE_P3D65_SDR,
+        ColorSpaceConversion_FORCE_P3DCI,
+        ColorSpaceConversion_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the color space you want for this output. The service supports
+-- conversion between HDR formats, between SDR formats, from SDR to HDR,
+-- and from HDR to SDR. SDR to HDR conversion doesn\'t upgrade the dynamic
+-- range. The converted video has an HDR format, but visually appears the
+-- same as an unconverted output. HDR to SDR conversion uses Elemental tone
+-- mapping technology to approximate the outcome of manually regrading from
+-- HDR to SDR. Select Force P3D65 (SDR) to set the output color space
+-- metadata to the following: * Color primaries: Display P3 * Transfer
+-- characteristics: SMPTE 428M * Matrix coefficients: BT.709
+newtype ColorSpaceConversion = ColorSpaceConversion'
+  { fromColorSpaceConversion ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ColorSpaceConversion_FORCE_601 :: ColorSpaceConversion
+pattern ColorSpaceConversion_FORCE_601 = ColorSpaceConversion' "FORCE_601"
+
+pattern ColorSpaceConversion_FORCE_709 :: ColorSpaceConversion
+pattern ColorSpaceConversion_FORCE_709 = ColorSpaceConversion' "FORCE_709"
+
+pattern ColorSpaceConversion_FORCE_HDR10 :: ColorSpaceConversion
+pattern ColorSpaceConversion_FORCE_HDR10 = ColorSpaceConversion' "FORCE_HDR10"
+
+pattern ColorSpaceConversion_FORCE_HLG_2020 :: ColorSpaceConversion
+pattern ColorSpaceConversion_FORCE_HLG_2020 = ColorSpaceConversion' "FORCE_HLG_2020"
+
+pattern ColorSpaceConversion_FORCE_P3D65_SDR :: ColorSpaceConversion
+pattern ColorSpaceConversion_FORCE_P3D65_SDR = ColorSpaceConversion' "FORCE_P3D65_SDR"
+
+pattern ColorSpaceConversion_FORCE_P3DCI :: ColorSpaceConversion
+pattern ColorSpaceConversion_FORCE_P3DCI = ColorSpaceConversion' "FORCE_P3DCI"
+
+pattern ColorSpaceConversion_NONE :: ColorSpaceConversion
+pattern ColorSpaceConversion_NONE = ColorSpaceConversion' "NONE"
+
+{-# COMPLETE
+  ColorSpaceConversion_FORCE_601,
+  ColorSpaceConversion_FORCE_709,
+  ColorSpaceConversion_FORCE_HDR10,
+  ColorSpaceConversion_FORCE_HLG_2020,
+  ColorSpaceConversion_FORCE_P3D65_SDR,
+  ColorSpaceConversion_FORCE_P3DCI,
+  ColorSpaceConversion_NONE,
+  ColorSpaceConversion'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ColorSpaceUsage.hs b/gen/Amazonka/MediaConvert/Types/ColorSpaceUsage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ColorSpaceUsage.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ColorSpaceUsage
+-- 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.ColorSpaceUsage
+  ( ColorSpaceUsage
+      ( ..,
+        ColorSpaceUsage_FALLBACK,
+        ColorSpaceUsage_FORCE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | There are two sources for color metadata, the input file and the job
+-- input settings Color space (ColorSpace) and HDR master display
+-- information settings(Hdr10Metadata). The Color space usage setting
+-- determines which takes precedence. Choose Force (FORCE) to use color
+-- metadata from the input job settings. If you don\'t specify values for
+-- those settings, the service defaults to using metadata from your input.
+-- FALLBACK - Choose Fallback (FALLBACK) to use color metadata from the
+-- source when it is present. If there\'s no color metadata in your input
+-- file, the service defaults to using values you specify in the input
+-- settings.
+newtype ColorSpaceUsage = ColorSpaceUsage'
+  { fromColorSpaceUsage ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ColorSpaceUsage_FALLBACK :: ColorSpaceUsage
+pattern ColorSpaceUsage_FALLBACK = ColorSpaceUsage' "FALLBACK"
+
+pattern ColorSpaceUsage_FORCE :: ColorSpaceUsage
+pattern ColorSpaceUsage_FORCE = ColorSpaceUsage' "FORCE"
+
+{-# COMPLETE
+  ColorSpaceUsage_FALLBACK,
+  ColorSpaceUsage_FORCE,
+  ColorSpaceUsage'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Commitment.hs b/gen/Amazonka/MediaConvert/Types/Commitment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Commitment.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Commitment
+-- 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.Commitment
+  ( Commitment
+      ( ..,
+        Commitment_ONE_YEAR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The length of the term of your reserved queue pricing plan commitment.
+newtype Commitment = Commitment'
+  { fromCommitment ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Commitment_ONE_YEAR :: Commitment
+pattern Commitment_ONE_YEAR = Commitment' "ONE_YEAR"
+
+{-# COMPLETE
+  Commitment_ONE_YEAR,
+  Commitment'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ContainerSettings.hs b/gen/Amazonka/MediaConvert/Types/ContainerSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ContainerSettings.hs
@@ -0,0 +1,241 @@
+{-# 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.ContainerSettings
+-- 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.ContainerSettings 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.CmfcSettings
+import Amazonka.MediaConvert.Types.ContainerType
+import Amazonka.MediaConvert.Types.F4vSettings
+import Amazonka.MediaConvert.Types.M2tsSettings
+import Amazonka.MediaConvert.Types.M3u8Settings
+import Amazonka.MediaConvert.Types.MovSettings
+import Amazonka.MediaConvert.Types.Mp4Settings
+import Amazonka.MediaConvert.Types.MpdSettings
+import Amazonka.MediaConvert.Types.MxfSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Container specific settings.
+--
+-- /See:/ 'newContainerSettings' smart constructor.
+data ContainerSettings = ContainerSettings'
+  { -- | These settings relate to the fragmented MP4 container for the segments
+    -- in your CMAF outputs.
+    cmfcSettings :: Prelude.Maybe CmfcSettings,
+    -- | Container for this output. Some containers require a container settings
+    -- object. If not specified, the default object will be created.
+    container :: Prelude.Maybe ContainerType,
+    -- | Settings for F4v container
+    f4vSettings :: Prelude.Maybe F4vSettings,
+    -- | MPEG-2 TS container settings. These apply to outputs in a File output
+    -- group when the output\'s container (ContainerType) is MPEG-2 Transport
+    -- Stream (M2TS). In these assets, data is organized by the program map
+    -- table (PMT). Each transport stream program contains subsets of data,
+    -- including audio, video, and metadata. Each of these subsets of data has
+    -- a numerical label called a packet identifier (PID). Each transport
+    -- stream program corresponds to one MediaConvert output. The PMT lists the
+    -- types of data in a program along with their PID. Downstream systems and
+    -- players use the program map table to look up the PID for each type of
+    -- data it accesses and then uses the PIDs to locate specific data within
+    -- the asset.
+    m2tsSettings :: Prelude.Maybe M2tsSettings,
+    -- | These settings relate to the MPEG-2 transport stream (MPEG2-TS)
+    -- container for the MPEG2-TS segments in your HLS outputs.
+    m3u8Settings :: Prelude.Maybe M3u8Settings,
+    -- | These settings relate to your QuickTime MOV output container.
+    movSettings :: Prelude.Maybe MovSettings,
+    -- | These settings relate to your MP4 output container. You can create audio
+    -- only outputs with this container. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/supported-codecs-containers-audio-only.html#output-codecs-and-containers-supported-for-audio-only.
+    mp4Settings :: Prelude.Maybe Mp4Settings,
+    -- | These settings relate to the fragmented MP4 container for the segments
+    -- in your DASH outputs.
+    mpdSettings :: Prelude.Maybe MpdSettings,
+    -- | These settings relate to your MXF output container.
+    mxfSettings :: Prelude.Maybe MxfSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ContainerSettings' 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:
+--
+-- 'cmfcSettings', 'containerSettings_cmfcSettings' - These settings relate to the fragmented MP4 container for the segments
+-- in your CMAF outputs.
+--
+-- 'container', 'containerSettings_container' - Container for this output. Some containers require a container settings
+-- object. If not specified, the default object will be created.
+--
+-- 'f4vSettings', 'containerSettings_f4vSettings' - Settings for F4v container
+--
+-- 'm2tsSettings', 'containerSettings_m2tsSettings' - MPEG-2 TS container settings. These apply to outputs in a File output
+-- group when the output\'s container (ContainerType) is MPEG-2 Transport
+-- Stream (M2TS). In these assets, data is organized by the program map
+-- table (PMT). Each transport stream program contains subsets of data,
+-- including audio, video, and metadata. Each of these subsets of data has
+-- a numerical label called a packet identifier (PID). Each transport
+-- stream program corresponds to one MediaConvert output. The PMT lists the
+-- types of data in a program along with their PID. Downstream systems and
+-- players use the program map table to look up the PID for each type of
+-- data it accesses and then uses the PIDs to locate specific data within
+-- the asset.
+--
+-- 'm3u8Settings', 'containerSettings_m3u8Settings' - These settings relate to the MPEG-2 transport stream (MPEG2-TS)
+-- container for the MPEG2-TS segments in your HLS outputs.
+--
+-- 'movSettings', 'containerSettings_movSettings' - These settings relate to your QuickTime MOV output container.
+--
+-- 'mp4Settings', 'containerSettings_mp4Settings' - These settings relate to your MP4 output container. You can create audio
+-- only outputs with this container. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/supported-codecs-containers-audio-only.html#output-codecs-and-containers-supported-for-audio-only.
+--
+-- 'mpdSettings', 'containerSettings_mpdSettings' - These settings relate to the fragmented MP4 container for the segments
+-- in your DASH outputs.
+--
+-- 'mxfSettings', 'containerSettings_mxfSettings' - These settings relate to your MXF output container.
+newContainerSettings ::
+  ContainerSettings
+newContainerSettings =
+  ContainerSettings'
+    { cmfcSettings = Prelude.Nothing,
+      container = Prelude.Nothing,
+      f4vSettings = Prelude.Nothing,
+      m2tsSettings = Prelude.Nothing,
+      m3u8Settings = Prelude.Nothing,
+      movSettings = Prelude.Nothing,
+      mp4Settings = Prelude.Nothing,
+      mpdSettings = Prelude.Nothing,
+      mxfSettings = Prelude.Nothing
+    }
+
+-- | These settings relate to the fragmented MP4 container for the segments
+-- in your CMAF outputs.
+containerSettings_cmfcSettings :: Lens.Lens' ContainerSettings (Prelude.Maybe CmfcSettings)
+containerSettings_cmfcSettings = Lens.lens (\ContainerSettings' {cmfcSettings} -> cmfcSettings) (\s@ContainerSettings' {} a -> s {cmfcSettings = a} :: ContainerSettings)
+
+-- | Container for this output. Some containers require a container settings
+-- object. If not specified, the default object will be created.
+containerSettings_container :: Lens.Lens' ContainerSettings (Prelude.Maybe ContainerType)
+containerSettings_container = Lens.lens (\ContainerSettings' {container} -> container) (\s@ContainerSettings' {} a -> s {container = a} :: ContainerSettings)
+
+-- | Settings for F4v container
+containerSettings_f4vSettings :: Lens.Lens' ContainerSettings (Prelude.Maybe F4vSettings)
+containerSettings_f4vSettings = Lens.lens (\ContainerSettings' {f4vSettings} -> f4vSettings) (\s@ContainerSettings' {} a -> s {f4vSettings = a} :: ContainerSettings)
+
+-- | MPEG-2 TS container settings. These apply to outputs in a File output
+-- group when the output\'s container (ContainerType) is MPEG-2 Transport
+-- Stream (M2TS). In these assets, data is organized by the program map
+-- table (PMT). Each transport stream program contains subsets of data,
+-- including audio, video, and metadata. Each of these subsets of data has
+-- a numerical label called a packet identifier (PID). Each transport
+-- stream program corresponds to one MediaConvert output. The PMT lists the
+-- types of data in a program along with their PID. Downstream systems and
+-- players use the program map table to look up the PID for each type of
+-- data it accesses and then uses the PIDs to locate specific data within
+-- the asset.
+containerSettings_m2tsSettings :: Lens.Lens' ContainerSettings (Prelude.Maybe M2tsSettings)
+containerSettings_m2tsSettings = Lens.lens (\ContainerSettings' {m2tsSettings} -> m2tsSettings) (\s@ContainerSettings' {} a -> s {m2tsSettings = a} :: ContainerSettings)
+
+-- | These settings relate to the MPEG-2 transport stream (MPEG2-TS)
+-- container for the MPEG2-TS segments in your HLS outputs.
+containerSettings_m3u8Settings :: Lens.Lens' ContainerSettings (Prelude.Maybe M3u8Settings)
+containerSettings_m3u8Settings = Lens.lens (\ContainerSettings' {m3u8Settings} -> m3u8Settings) (\s@ContainerSettings' {} a -> s {m3u8Settings = a} :: ContainerSettings)
+
+-- | These settings relate to your QuickTime MOV output container.
+containerSettings_movSettings :: Lens.Lens' ContainerSettings (Prelude.Maybe MovSettings)
+containerSettings_movSettings = Lens.lens (\ContainerSettings' {movSettings} -> movSettings) (\s@ContainerSettings' {} a -> s {movSettings = a} :: ContainerSettings)
+
+-- | These settings relate to your MP4 output container. You can create audio
+-- only outputs with this container. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/supported-codecs-containers-audio-only.html#output-codecs-and-containers-supported-for-audio-only.
+containerSettings_mp4Settings :: Lens.Lens' ContainerSettings (Prelude.Maybe Mp4Settings)
+containerSettings_mp4Settings = Lens.lens (\ContainerSettings' {mp4Settings} -> mp4Settings) (\s@ContainerSettings' {} a -> s {mp4Settings = a} :: ContainerSettings)
+
+-- | These settings relate to the fragmented MP4 container for the segments
+-- in your DASH outputs.
+containerSettings_mpdSettings :: Lens.Lens' ContainerSettings (Prelude.Maybe MpdSettings)
+containerSettings_mpdSettings = Lens.lens (\ContainerSettings' {mpdSettings} -> mpdSettings) (\s@ContainerSettings' {} a -> s {mpdSettings = a} :: ContainerSettings)
+
+-- | These settings relate to your MXF output container.
+containerSettings_mxfSettings :: Lens.Lens' ContainerSettings (Prelude.Maybe MxfSettings)
+containerSettings_mxfSettings = Lens.lens (\ContainerSettings' {mxfSettings} -> mxfSettings) (\s@ContainerSettings' {} a -> s {mxfSettings = a} :: ContainerSettings)
+
+instance Data.FromJSON ContainerSettings where
+  parseJSON =
+    Data.withObject
+      "ContainerSettings"
+      ( \x ->
+          ContainerSettings'
+            Prelude.<$> (x Data..:? "cmfcSettings")
+            Prelude.<*> (x Data..:? "container")
+            Prelude.<*> (x Data..:? "f4vSettings")
+            Prelude.<*> (x Data..:? "m2tsSettings")
+            Prelude.<*> (x Data..:? "m3u8Settings")
+            Prelude.<*> (x Data..:? "movSettings")
+            Prelude.<*> (x Data..:? "mp4Settings")
+            Prelude.<*> (x Data..:? "mpdSettings")
+            Prelude.<*> (x Data..:? "mxfSettings")
+      )
+
+instance Prelude.Hashable ContainerSettings where
+  hashWithSalt _salt ContainerSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` cmfcSettings
+      `Prelude.hashWithSalt` container
+      `Prelude.hashWithSalt` f4vSettings
+      `Prelude.hashWithSalt` m2tsSettings
+      `Prelude.hashWithSalt` m3u8Settings
+      `Prelude.hashWithSalt` movSettings
+      `Prelude.hashWithSalt` mp4Settings
+      `Prelude.hashWithSalt` mpdSettings
+      `Prelude.hashWithSalt` mxfSettings
+
+instance Prelude.NFData ContainerSettings where
+  rnf ContainerSettings' {..} =
+    Prelude.rnf cmfcSettings
+      `Prelude.seq` Prelude.rnf container
+      `Prelude.seq` Prelude.rnf f4vSettings
+      `Prelude.seq` Prelude.rnf m2tsSettings
+      `Prelude.seq` Prelude.rnf m3u8Settings
+      `Prelude.seq` Prelude.rnf movSettings
+      `Prelude.seq` Prelude.rnf mp4Settings
+      `Prelude.seq` Prelude.rnf mpdSettings
+      `Prelude.seq` Prelude.rnf mxfSettings
+
+instance Data.ToJSON ContainerSettings where
+  toJSON ContainerSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("cmfcSettings" Data..=) Prelude.<$> cmfcSettings,
+            ("container" Data..=) Prelude.<$> container,
+            ("f4vSettings" Data..=) Prelude.<$> f4vSettings,
+            ("m2tsSettings" Data..=) Prelude.<$> m2tsSettings,
+            ("m3u8Settings" Data..=) Prelude.<$> m3u8Settings,
+            ("movSettings" Data..=) Prelude.<$> movSettings,
+            ("mp4Settings" Data..=) Prelude.<$> mp4Settings,
+            ("mpdSettings" Data..=) Prelude.<$> mpdSettings,
+            ("mxfSettings" Data..=) Prelude.<$> mxfSettings
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/ContainerType.hs b/gen/Amazonka/MediaConvert/Types/ContainerType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ContainerType.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ContainerType
+-- 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.ContainerType
+  ( ContainerType
+      ( ..,
+        ContainerType_CMFC,
+        ContainerType_F4V,
+        ContainerType_ISMV,
+        ContainerType_M2TS,
+        ContainerType_M3U8,
+        ContainerType_MOV,
+        ContainerType_MP4,
+        ContainerType_MPD,
+        ContainerType_MXF,
+        ContainerType_RAW,
+        ContainerType_WEBM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Container for this output. Some containers require a container settings
+-- object. If not specified, the default object will be created.
+newtype ContainerType = ContainerType'
+  { fromContainerType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ContainerType_CMFC :: ContainerType
+pattern ContainerType_CMFC = ContainerType' "CMFC"
+
+pattern ContainerType_F4V :: ContainerType
+pattern ContainerType_F4V = ContainerType' "F4V"
+
+pattern ContainerType_ISMV :: ContainerType
+pattern ContainerType_ISMV = ContainerType' "ISMV"
+
+pattern ContainerType_M2TS :: ContainerType
+pattern ContainerType_M2TS = ContainerType' "M2TS"
+
+pattern ContainerType_M3U8 :: ContainerType
+pattern ContainerType_M3U8 = ContainerType' "M3U8"
+
+pattern ContainerType_MOV :: ContainerType
+pattern ContainerType_MOV = ContainerType' "MOV"
+
+pattern ContainerType_MP4 :: ContainerType
+pattern ContainerType_MP4 = ContainerType' "MP4"
+
+pattern ContainerType_MPD :: ContainerType
+pattern ContainerType_MPD = ContainerType' "MPD"
+
+pattern ContainerType_MXF :: ContainerType
+pattern ContainerType_MXF = ContainerType' "MXF"
+
+pattern ContainerType_RAW :: ContainerType
+pattern ContainerType_RAW = ContainerType' "RAW"
+
+pattern ContainerType_WEBM :: ContainerType
+pattern ContainerType_WEBM = ContainerType' "WEBM"
+
+{-# COMPLETE
+  ContainerType_CMFC,
+  ContainerType_F4V,
+  ContainerType_ISMV,
+  ContainerType_M2TS,
+  ContainerType_M3U8,
+  ContainerType_MOV,
+  ContainerType_MP4,
+  ContainerType_MPD,
+  ContainerType_MXF,
+  ContainerType_RAW,
+  ContainerType_WEBM,
+  ContainerType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/CopyProtectionAction.hs b/gen/Amazonka/MediaConvert/Types/CopyProtectionAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/CopyProtectionAction.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.CopyProtectionAction
+-- 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.CopyProtectionAction
+  ( CopyProtectionAction
+      ( ..,
+        CopyProtectionAction_PASSTHROUGH,
+        CopyProtectionAction_STRIP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The action to take on copy and redistribution control XDS packets. If
+-- you select PASSTHROUGH, packets will not be changed. If you select
+-- STRIP, any packets will be removed in output captions.
+newtype CopyProtectionAction = CopyProtectionAction'
+  { fromCopyProtectionAction ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CopyProtectionAction_PASSTHROUGH :: CopyProtectionAction
+pattern CopyProtectionAction_PASSTHROUGH = CopyProtectionAction' "PASSTHROUGH"
+
+pattern CopyProtectionAction_STRIP :: CopyProtectionAction
+pattern CopyProtectionAction_STRIP = CopyProtectionAction' "STRIP"
+
+{-# COMPLETE
+  CopyProtectionAction_PASSTHROUGH,
+  CopyProtectionAction_STRIP,
+  CopyProtectionAction'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DashAdditionalManifest.hs b/gen/Amazonka/MediaConvert/Types/DashAdditionalManifest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashAdditionalManifest.hs
@@ -0,0 +1,119 @@
+{-# 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.DashAdditionalManifest
+-- 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.DashAdditionalManifest where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the details for each additional DASH manifest that you want the
+-- service to generate for this output group. Each manifest can reference a
+-- different subset of outputs in the group.
+--
+-- /See:/ 'newDashAdditionalManifest' smart constructor.
+data DashAdditionalManifest = DashAdditionalManifest'
+  { -- | Specify a name modifier that the service adds to the name of this
+    -- manifest to make it different from the file names of the other main
+    -- manifests in the output group. For example, say that the default main
+    -- manifest for your DASH group is film-name.mpd. If you enter
+    -- \"-no-premium\" for this setting, then the file name the service
+    -- generates for this top-level manifest is film-name-no-premium.mpd.
+    manifestNameModifier :: Prelude.Maybe Prelude.Text,
+    -- | Specify the outputs that you want this additional top-level manifest to
+    -- reference.
+    selectedOutputs :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashAdditionalManifest' 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:
+--
+-- 'manifestNameModifier', 'dashAdditionalManifest_manifestNameModifier' - Specify a name modifier that the service adds to the name of this
+-- manifest to make it different from the file names of the other main
+-- manifests in the output group. For example, say that the default main
+-- manifest for your DASH group is film-name.mpd. If you enter
+-- \"-no-premium\" for this setting, then the file name the service
+-- generates for this top-level manifest is film-name-no-premium.mpd.
+--
+-- 'selectedOutputs', 'dashAdditionalManifest_selectedOutputs' - Specify the outputs that you want this additional top-level manifest to
+-- reference.
+newDashAdditionalManifest ::
+  DashAdditionalManifest
+newDashAdditionalManifest =
+  DashAdditionalManifest'
+    { manifestNameModifier =
+        Prelude.Nothing,
+      selectedOutputs = Prelude.Nothing
+    }
+
+-- | Specify a name modifier that the service adds to the name of this
+-- manifest to make it different from the file names of the other main
+-- manifests in the output group. For example, say that the default main
+-- manifest for your DASH group is film-name.mpd. If you enter
+-- \"-no-premium\" for this setting, then the file name the service
+-- generates for this top-level manifest is film-name-no-premium.mpd.
+dashAdditionalManifest_manifestNameModifier :: Lens.Lens' DashAdditionalManifest (Prelude.Maybe Prelude.Text)
+dashAdditionalManifest_manifestNameModifier = Lens.lens (\DashAdditionalManifest' {manifestNameModifier} -> manifestNameModifier) (\s@DashAdditionalManifest' {} a -> s {manifestNameModifier = a} :: DashAdditionalManifest)
+
+-- | Specify the outputs that you want this additional top-level manifest to
+-- reference.
+dashAdditionalManifest_selectedOutputs :: Lens.Lens' DashAdditionalManifest (Prelude.Maybe [Prelude.Text])
+dashAdditionalManifest_selectedOutputs = Lens.lens (\DashAdditionalManifest' {selectedOutputs} -> selectedOutputs) (\s@DashAdditionalManifest' {} a -> s {selectedOutputs = a} :: DashAdditionalManifest) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DashAdditionalManifest where
+  parseJSON =
+    Data.withObject
+      "DashAdditionalManifest"
+      ( \x ->
+          DashAdditionalManifest'
+            Prelude.<$> (x Data..:? "manifestNameModifier")
+            Prelude.<*> ( x
+                            Data..:? "selectedOutputs"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable DashAdditionalManifest where
+  hashWithSalt _salt DashAdditionalManifest' {..} =
+    _salt
+      `Prelude.hashWithSalt` manifestNameModifier
+      `Prelude.hashWithSalt` selectedOutputs
+
+instance Prelude.NFData DashAdditionalManifest where
+  rnf DashAdditionalManifest' {..} =
+    Prelude.rnf manifestNameModifier
+      `Prelude.seq` Prelude.rnf selectedOutputs
+
+instance Data.ToJSON DashAdditionalManifest where
+  toJSON DashAdditionalManifest' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("manifestNameModifier" Data..=)
+              Prelude.<$> manifestNameModifier,
+            ("selectedOutputs" Data..=)
+              Prelude.<$> selectedOutputs
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoEncryptionSettings.hs b/gen/Amazonka/MediaConvert/Types/DashIsoEncryptionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoEncryptionSettings.hs
@@ -0,0 +1,125 @@
+{-# 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.DashIsoEncryptionSettings
+-- 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.DashIsoEncryptionSettings 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.DashIsoPlaybackDeviceCompatibility
+import Amazonka.MediaConvert.Types.SpekeKeyProvider
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies DRM settings for DASH outputs.
+--
+-- /See:/ 'newDashIsoEncryptionSettings' smart constructor.
+data DashIsoEncryptionSettings = DashIsoEncryptionSettings'
+  { -- | This setting can improve the compatibility of your output with video
+    -- players on obsolete devices. It applies only to DASH H.264 outputs with
+    -- DRM encryption. Choose Unencrypted SEI (UNENCRYPTED_SEI) only to correct
+    -- problems with playback on older devices. Otherwise, keep the default
+    -- setting CENC v1 (CENC_V1). If you choose Unencrypted SEI, for that
+    -- output, the service will exclude the access unit delimiter and will
+    -- leave the SEI NAL units unencrypted.
+    playbackDeviceCompatibility :: Prelude.Maybe DashIsoPlaybackDeviceCompatibility,
+    -- | If your output group type is HLS, DASH, or Microsoft Smooth, use these
+    -- settings when doing DRM encryption with a SPEKE-compliant key provider.
+    -- If your output group type is CMAF, use the SpekeKeyProviderCmaf settings
+    -- instead.
+    spekeKeyProvider :: Prelude.Maybe SpekeKeyProvider
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashIsoEncryptionSettings' 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:
+--
+-- 'playbackDeviceCompatibility', 'dashIsoEncryptionSettings_playbackDeviceCompatibility' - This setting can improve the compatibility of your output with video
+-- players on obsolete devices. It applies only to DASH H.264 outputs with
+-- DRM encryption. Choose Unencrypted SEI (UNENCRYPTED_SEI) only to correct
+-- problems with playback on older devices. Otherwise, keep the default
+-- setting CENC v1 (CENC_V1). If you choose Unencrypted SEI, for that
+-- output, the service will exclude the access unit delimiter and will
+-- leave the SEI NAL units unencrypted.
+--
+-- 'spekeKeyProvider', 'dashIsoEncryptionSettings_spekeKeyProvider' - If your output group type is HLS, DASH, or Microsoft Smooth, use these
+-- settings when doing DRM encryption with a SPEKE-compliant key provider.
+-- If your output group type is CMAF, use the SpekeKeyProviderCmaf settings
+-- instead.
+newDashIsoEncryptionSettings ::
+  DashIsoEncryptionSettings
+newDashIsoEncryptionSettings =
+  DashIsoEncryptionSettings'
+    { playbackDeviceCompatibility =
+        Prelude.Nothing,
+      spekeKeyProvider = Prelude.Nothing
+    }
+
+-- | This setting can improve the compatibility of your output with video
+-- players on obsolete devices. It applies only to DASH H.264 outputs with
+-- DRM encryption. Choose Unencrypted SEI (UNENCRYPTED_SEI) only to correct
+-- problems with playback on older devices. Otherwise, keep the default
+-- setting CENC v1 (CENC_V1). If you choose Unencrypted SEI, for that
+-- output, the service will exclude the access unit delimiter and will
+-- leave the SEI NAL units unencrypted.
+dashIsoEncryptionSettings_playbackDeviceCompatibility :: Lens.Lens' DashIsoEncryptionSettings (Prelude.Maybe DashIsoPlaybackDeviceCompatibility)
+dashIsoEncryptionSettings_playbackDeviceCompatibility = Lens.lens (\DashIsoEncryptionSettings' {playbackDeviceCompatibility} -> playbackDeviceCompatibility) (\s@DashIsoEncryptionSettings' {} a -> s {playbackDeviceCompatibility = a} :: DashIsoEncryptionSettings)
+
+-- | If your output group type is HLS, DASH, or Microsoft Smooth, use these
+-- settings when doing DRM encryption with a SPEKE-compliant key provider.
+-- If your output group type is CMAF, use the SpekeKeyProviderCmaf settings
+-- instead.
+dashIsoEncryptionSettings_spekeKeyProvider :: Lens.Lens' DashIsoEncryptionSettings (Prelude.Maybe SpekeKeyProvider)
+dashIsoEncryptionSettings_spekeKeyProvider = Lens.lens (\DashIsoEncryptionSettings' {spekeKeyProvider} -> spekeKeyProvider) (\s@DashIsoEncryptionSettings' {} a -> s {spekeKeyProvider = a} :: DashIsoEncryptionSettings)
+
+instance Data.FromJSON DashIsoEncryptionSettings where
+  parseJSON =
+    Data.withObject
+      "DashIsoEncryptionSettings"
+      ( \x ->
+          DashIsoEncryptionSettings'
+            Prelude.<$> (x Data..:? "playbackDeviceCompatibility")
+            Prelude.<*> (x Data..:? "spekeKeyProvider")
+      )
+
+instance Prelude.Hashable DashIsoEncryptionSettings where
+  hashWithSalt _salt DashIsoEncryptionSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` playbackDeviceCompatibility
+      `Prelude.hashWithSalt` spekeKeyProvider
+
+instance Prelude.NFData DashIsoEncryptionSettings where
+  rnf DashIsoEncryptionSettings' {..} =
+    Prelude.rnf playbackDeviceCompatibility
+      `Prelude.seq` Prelude.rnf spekeKeyProvider
+
+instance Data.ToJSON DashIsoEncryptionSettings where
+  toJSON DashIsoEncryptionSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("playbackDeviceCompatibility" Data..=)
+              Prelude.<$> playbackDeviceCompatibility,
+            ("spekeKeyProvider" Data..=)
+              Prelude.<$> spekeKeyProvider
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoGroupAudioChannelConfigSchemeIdUri.hs b/gen/Amazonka/MediaConvert/Types/DashIsoGroupAudioChannelConfigSchemeIdUri.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoGroupAudioChannelConfigSchemeIdUri.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DashIsoGroupAudioChannelConfigSchemeIdUri
+-- 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.DashIsoGroupAudioChannelConfigSchemeIdUri
+  ( DashIsoGroupAudioChannelConfigSchemeIdUri
+      ( ..,
+        DashIsoGroupAudioChannelConfigSchemeIdUri_DOLBY_CHANNEL_CONFIGURATION,
+        DashIsoGroupAudioChannelConfigSchemeIdUri_MPEG_CHANNEL_CONFIGURATION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting only when your audio codec is a Dolby one (AC3, EAC3,
+-- or Atmos) and your downstream workflow requires that your DASH manifest
+-- use the Dolby channel configuration tag, rather than the MPEG one. For
+-- example, you might need to use this to make dynamic ad insertion work.
+-- Specify which audio channel configuration scheme ID URI MediaConvert
+-- writes in your DASH manifest. Keep the default value, MPEG channel
+-- configuration (MPEG_CHANNEL_CONFIGURATION), to have MediaConvert write
+-- this: urn:mpeg:mpegB:cicp:ChannelConfiguration. Choose Dolby channel
+-- configuration (DOLBY_CHANNEL_CONFIGURATION) to have MediaConvert write
+-- this instead: tag:dolby.com,2014:dash:audio_channel_configuration:2011.
+newtype DashIsoGroupAudioChannelConfigSchemeIdUri = DashIsoGroupAudioChannelConfigSchemeIdUri'
+  { fromDashIsoGroupAudioChannelConfigSchemeIdUri ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DashIsoGroupAudioChannelConfigSchemeIdUri_DOLBY_CHANNEL_CONFIGURATION :: DashIsoGroupAudioChannelConfigSchemeIdUri
+pattern DashIsoGroupAudioChannelConfigSchemeIdUri_DOLBY_CHANNEL_CONFIGURATION = DashIsoGroupAudioChannelConfigSchemeIdUri' "DOLBY_CHANNEL_CONFIGURATION"
+
+pattern DashIsoGroupAudioChannelConfigSchemeIdUri_MPEG_CHANNEL_CONFIGURATION :: DashIsoGroupAudioChannelConfigSchemeIdUri
+pattern DashIsoGroupAudioChannelConfigSchemeIdUri_MPEG_CHANNEL_CONFIGURATION = DashIsoGroupAudioChannelConfigSchemeIdUri' "MPEG_CHANNEL_CONFIGURATION"
+
+{-# COMPLETE
+  DashIsoGroupAudioChannelConfigSchemeIdUri_DOLBY_CHANNEL_CONFIGURATION,
+  DashIsoGroupAudioChannelConfigSchemeIdUri_MPEG_CHANNEL_CONFIGURATION,
+  DashIsoGroupAudioChannelConfigSchemeIdUri'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoGroupSettings.hs b/gen/Amazonka/MediaConvert/Types/DashIsoGroupSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoGroupSettings.hs
@@ -0,0 +1,645 @@
+{-# 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.DashIsoGroupSettings
+-- 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.DashIsoGroupSettings 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.DashAdditionalManifest
+import Amazonka.MediaConvert.Types.DashIsoEncryptionSettings
+import Amazonka.MediaConvert.Types.DashIsoGroupAudioChannelConfigSchemeIdUri
+import Amazonka.MediaConvert.Types.DashIsoHbbtvCompliance
+import Amazonka.MediaConvert.Types.DashIsoImageBasedTrickPlay
+import Amazonka.MediaConvert.Types.DashIsoImageBasedTrickPlaySettings
+import Amazonka.MediaConvert.Types.DashIsoMpdManifestBandwidthType
+import Amazonka.MediaConvert.Types.DashIsoMpdProfile
+import Amazonka.MediaConvert.Types.DashIsoPtsOffsetHandlingForBFrames
+import Amazonka.MediaConvert.Types.DashIsoSegmentControl
+import Amazonka.MediaConvert.Types.DashIsoSegmentLengthControl
+import Amazonka.MediaConvert.Types.DashIsoVideoCompositionOffsets
+import Amazonka.MediaConvert.Types.DashIsoWriteSegmentTimelineInRepresentation
+import Amazonka.MediaConvert.Types.DestinationSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to your DASH output package. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set Type, under
+-- OutputGroupSettings, to DASH_ISO_GROUP_SETTINGS.
+--
+-- /See:/ 'newDashIsoGroupSettings' smart constructor.
+data DashIsoGroupSettings = DashIsoGroupSettings'
+  { -- | By default, the service creates one .mpd DASH manifest for each DASH ISO
+    -- output group in your job. This default manifest references every output
+    -- in the output group. To create additional DASH manifests that reference
+    -- a subset of the outputs in the output group, specify a list of them
+    -- here.
+    additionalManifests :: Prelude.Maybe [DashAdditionalManifest],
+    -- | Use this setting only when your audio codec is a Dolby one (AC3, EAC3,
+    -- or Atmos) and your downstream workflow requires that your DASH manifest
+    -- use the Dolby channel configuration tag, rather than the MPEG one. For
+    -- example, you might need to use this to make dynamic ad insertion work.
+    -- Specify which audio channel configuration scheme ID URI MediaConvert
+    -- writes in your DASH manifest. Keep the default value, MPEG channel
+    -- configuration (MPEG_CHANNEL_CONFIGURATION), to have MediaConvert write
+    -- this: urn:mpeg:mpegB:cicp:ChannelConfiguration. Choose Dolby channel
+    -- configuration (DOLBY_CHANNEL_CONFIGURATION) to have MediaConvert write
+    -- this instead: tag:dolby.com,2014:dash:audio_channel_configuration:2011.
+    audioChannelConfigSchemeIdUri :: Prelude.Maybe DashIsoGroupAudioChannelConfigSchemeIdUri,
+    -- | A partial URI prefix that will be put in the manifest (.mpd) file at the
+    -- top level BaseURL element. Can be used if streams are delivered from a
+    -- different URL than the manifest file.
+    baseUrl :: Prelude.Maybe Prelude.Text,
+    -- | Use Destination (Destination) to specify the S3 output location and the
+    -- output filename base. Destination accepts format identifiers. If you do
+    -- not specify the base filename in the URI, the service will use the
+    -- filename of the input file. If your job has multiple inputs, the service
+    -- uses the filename of the first input file.
+    destination :: Prelude.Maybe Prelude.Text,
+    -- | Settings associated with the destination. Will vary based on the type of
+    -- destination
+    destinationSettings :: Prelude.Maybe DestinationSettings,
+    -- | DRM settings.
+    encryption :: Prelude.Maybe DashIsoEncryptionSettings,
+    -- | Length of fragments to generate (in seconds). Fragment length must be
+    -- compatible with GOP size and Framerate. Note that fragments will end on
+    -- the next keyframe after this number of seconds, so actual fragment
+    -- length may be longer. When Emit Single File is checked, the
+    -- fragmentation is internal to a single output file and it does not cause
+    -- the creation of many output files as in other output types.
+    fragmentLength :: Prelude.Maybe Prelude.Natural,
+    -- | Supports HbbTV specification as indicated
+    hbbtvCompliance :: Prelude.Maybe DashIsoHbbtvCompliance,
+    -- | Specify whether MediaConvert generates images for trick play. Keep the
+    -- default value, None (NONE), to not generate any images. Choose Thumbnail
+    -- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
+    -- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
+    -- full-resolution images of single frames. MediaConvert adds an entry in
+    -- the .mpd manifest for each set of images that you generate. A common
+    -- application for these images is Roku trick mode. The thumbnails and
+    -- full-frame images that MediaConvert creates with this feature are
+    -- compatible with this Roku specification:
+    -- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
+    imageBasedTrickPlay :: Prelude.Maybe DashIsoImageBasedTrickPlay,
+    -- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
+    -- ADVANCED
+    imageBasedTrickPlaySettings :: Prelude.Maybe DashIsoImageBasedTrickPlaySettings,
+    -- | Minimum time of initially buffered media that is needed to ensure smooth
+    -- playout.
+    minBufferTime :: Prelude.Maybe Prelude.Natural,
+    -- | Keep this setting at the default value of 0, unless you are
+    -- troubleshooting a problem with how devices play back the end of your
+    -- video asset. If you know that player devices are hanging on the final
+    -- segment of your video because the length of your final segment is too
+    -- short, use this setting to specify a minimum final segment length, in
+    -- seconds. Choose a value that is greater than or equal to 1 and less than
+    -- your segment length. When you specify a value for this setting, the
+    -- encoder will combine any final segment that is shorter than the length
+    -- that you specify with the previous segment. For example, your segment
+    -- length is 3 seconds and your final segment is .5 seconds without a
+    -- minimum final segment length; when you set the minimum final segment
+    -- length to 1, your final segment is 3.5 seconds.
+    minFinalSegmentLength :: Prelude.Maybe Prelude.Double,
+    -- | Specify how the value for bandwidth is determined for each video
+    -- Representation in your output MPD manifest. We recommend that you choose
+    -- a MPD manifest bandwidth type that is compatible with your downstream
+    -- player configuration. Max: Use the same value that you specify for Max
+    -- bitrate in the video output, in bits per second. Average: Use the
+    -- calculated average bitrate of the encoded video output, in bits per
+    -- second.
+    mpdManifestBandwidthType :: Prelude.Maybe DashIsoMpdManifestBandwidthType,
+    -- | Specify whether your DASH profile is on-demand or main. When you choose
+    -- Main profile (MAIN_PROFILE), the service signals
+    -- urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When
+    -- you choose On-demand (ON_DEMAND_PROFILE), the service signals
+    -- urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose
+    -- On-demand, you must also set the output group setting Segment control
+    -- (SegmentControl) to Single file (SINGLE_FILE).
+    mpdProfile :: Prelude.Maybe DashIsoMpdProfile,
+    -- | Use this setting only when your output video stream has B-frames, which
+    -- causes the initial presentation time stamp (PTS) to be offset from the
+    -- initial decode time stamp (DTS). Specify how MediaConvert handles PTS
+    -- when writing time stamps in output DASH manifests. Choose Match initial
+    -- PTS (MATCH_INITIAL_PTS) when you want MediaConvert to use the initial
+    -- PTS as the first time stamp in the manifest. Choose Zero-based
+    -- (ZERO_BASED) to have MediaConvert ignore the initial PTS in the video
+    -- stream and instead write the initial time stamp as zero in the manifest.
+    -- For outputs that don\'t have B-frames, the time stamps in your DASH
+    -- manifests start at zero regardless of your choice here.
+    ptsOffsetHandlingForBFrames :: Prelude.Maybe DashIsoPtsOffsetHandlingForBFrames,
+    -- | When set to SINGLE_FILE, a single output file is generated, which is
+    -- internally segmented using the Fragment Length and Segment Length. When
+    -- set to SEGMENTED_FILES, separate segment files will be created.
+    segmentControl :: Prelude.Maybe DashIsoSegmentControl,
+    -- | Specify the length, in whole seconds, of each segment. When you don\'t
+    -- specify a value, MediaConvert defaults to 30. Related settings: Use
+    -- Segment length control (SegmentLengthControl) to specify whether the
+    -- encoder enforces this value strictly. Use Segment control
+    -- (DashIsoSegmentControl) to specify whether MediaConvert creates separate
+    -- segment files or one content file that has metadata to mark the segment
+    -- boundaries.
+    segmentLength :: Prelude.Maybe Prelude.Natural,
+    -- | Specify how you want MediaConvert to determine the segment length.
+    -- Choose Exact (EXACT) to have the encoder use the exact length that you
+    -- specify with the setting Segment length (SegmentLength). This might
+    -- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+    -- the encoder round up the segment lengths to match the next GOP boundary.
+    segmentLengthControl :: Prelude.Maybe DashIsoSegmentLengthControl,
+    -- | Specify the video sample composition time offset mode in the output fMP4
+    -- TRUN box. For wider player compatibility, set Video composition offsets
+    -- to Unsigned or leave blank. The earliest presentation time may be
+    -- greater than zero, and sample composition time offsets will increment
+    -- using unsigned integers. For strict fMP4 video and audio timing, set
+    -- Video composition offsets to Signed. The earliest presentation time will
+    -- be equal to zero, and sample composition time offsets will increment
+    -- using signed integers.
+    videoCompositionOffsets :: Prelude.Maybe DashIsoVideoCompositionOffsets,
+    -- | If you get an HTTP error in the 400 range when you play back your DASH
+    -- output, enable this setting and run your transcoding job again. When you
+    -- enable this setting, the service writes precise segment durations in the
+    -- DASH manifest. The segment duration information appears inside the
+    -- SegmentTimeline element, inside SegmentTemplate at the Representation
+    -- level. When you don\'t enable this setting, the service writes
+    -- approximate segment durations in your DASH manifest.
+    writeSegmentTimelineInRepresentation :: Prelude.Maybe DashIsoWriteSegmentTimelineInRepresentation
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashIsoGroupSettings' 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:
+--
+-- 'additionalManifests', 'dashIsoGroupSettings_additionalManifests' - By default, the service creates one .mpd DASH manifest for each DASH ISO
+-- output group in your job. This default manifest references every output
+-- in the output group. To create additional DASH manifests that reference
+-- a subset of the outputs in the output group, specify a list of them
+-- here.
+--
+-- 'audioChannelConfigSchemeIdUri', 'dashIsoGroupSettings_audioChannelConfigSchemeIdUri' - Use this setting only when your audio codec is a Dolby one (AC3, EAC3,
+-- or Atmos) and your downstream workflow requires that your DASH manifest
+-- use the Dolby channel configuration tag, rather than the MPEG one. For
+-- example, you might need to use this to make dynamic ad insertion work.
+-- Specify which audio channel configuration scheme ID URI MediaConvert
+-- writes in your DASH manifest. Keep the default value, MPEG channel
+-- configuration (MPEG_CHANNEL_CONFIGURATION), to have MediaConvert write
+-- this: urn:mpeg:mpegB:cicp:ChannelConfiguration. Choose Dolby channel
+-- configuration (DOLBY_CHANNEL_CONFIGURATION) to have MediaConvert write
+-- this instead: tag:dolby.com,2014:dash:audio_channel_configuration:2011.
+--
+-- 'baseUrl', 'dashIsoGroupSettings_baseUrl' - A partial URI prefix that will be put in the manifest (.mpd) file at the
+-- top level BaseURL element. Can be used if streams are delivered from a
+-- different URL than the manifest file.
+--
+-- 'destination', 'dashIsoGroupSettings_destination' - Use Destination (Destination) to specify the S3 output location and the
+-- output filename base. Destination accepts format identifiers. If you do
+-- not specify the base filename in the URI, the service will use the
+-- filename of the input file. If your job has multiple inputs, the service
+-- uses the filename of the first input file.
+--
+-- 'destinationSettings', 'dashIsoGroupSettings_destinationSettings' - Settings associated with the destination. Will vary based on the type of
+-- destination
+--
+-- 'encryption', 'dashIsoGroupSettings_encryption' - DRM settings.
+--
+-- 'fragmentLength', 'dashIsoGroupSettings_fragmentLength' - Length of fragments to generate (in seconds). Fragment length must be
+-- compatible with GOP size and Framerate. Note that fragments will end on
+-- the next keyframe after this number of seconds, so actual fragment
+-- length may be longer. When Emit Single File is checked, the
+-- fragmentation is internal to a single output file and it does not cause
+-- the creation of many output files as in other output types.
+--
+-- 'hbbtvCompliance', 'dashIsoGroupSettings_hbbtvCompliance' - Supports HbbTV specification as indicated
+--
+-- 'imageBasedTrickPlay', 'dashIsoGroupSettings_imageBasedTrickPlay' - Specify whether MediaConvert generates images for trick play. Keep the
+-- default value, None (NONE), to not generate any images. Choose Thumbnail
+-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
+-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
+-- full-resolution images of single frames. MediaConvert adds an entry in
+-- the .mpd manifest for each set of images that you generate. A common
+-- application for these images is Roku trick mode. The thumbnails and
+-- full-frame images that MediaConvert creates with this feature are
+-- compatible with this Roku specification:
+-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
+--
+-- 'imageBasedTrickPlaySettings', 'dashIsoGroupSettings_imageBasedTrickPlaySettings' - Tile and thumbnail settings applicable when imageBasedTrickPlay is
+-- ADVANCED
+--
+-- 'minBufferTime', 'dashIsoGroupSettings_minBufferTime' - Minimum time of initially buffered media that is needed to ensure smooth
+-- playout.
+--
+-- 'minFinalSegmentLength', 'dashIsoGroupSettings_minFinalSegmentLength' - Keep this setting at the default value of 0, unless you are
+-- troubleshooting a problem with how devices play back the end of your
+-- video asset. If you know that player devices are hanging on the final
+-- segment of your video because the length of your final segment is too
+-- short, use this setting to specify a minimum final segment length, in
+-- seconds. Choose a value that is greater than or equal to 1 and less than
+-- your segment length. When you specify a value for this setting, the
+-- encoder will combine any final segment that is shorter than the length
+-- that you specify with the previous segment. For example, your segment
+-- length is 3 seconds and your final segment is .5 seconds without a
+-- minimum final segment length; when you set the minimum final segment
+-- length to 1, your final segment is 3.5 seconds.
+--
+-- 'mpdManifestBandwidthType', 'dashIsoGroupSettings_mpdManifestBandwidthType' - Specify how the value for bandwidth is determined for each video
+-- Representation in your output MPD manifest. We recommend that you choose
+-- a MPD manifest bandwidth type that is compatible with your downstream
+-- player configuration. Max: Use the same value that you specify for Max
+-- bitrate in the video output, in bits per second. Average: Use the
+-- calculated average bitrate of the encoded video output, in bits per
+-- second.
+--
+-- 'mpdProfile', 'dashIsoGroupSettings_mpdProfile' - Specify whether your DASH profile is on-demand or main. When you choose
+-- Main profile (MAIN_PROFILE), the service signals
+-- urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When
+-- you choose On-demand (ON_DEMAND_PROFILE), the service signals
+-- urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose
+-- On-demand, you must also set the output group setting Segment control
+-- (SegmentControl) to Single file (SINGLE_FILE).
+--
+-- 'ptsOffsetHandlingForBFrames', 'dashIsoGroupSettings_ptsOffsetHandlingForBFrames' - Use this setting only when your output video stream has B-frames, which
+-- causes the initial presentation time stamp (PTS) to be offset from the
+-- initial decode time stamp (DTS). Specify how MediaConvert handles PTS
+-- when writing time stamps in output DASH manifests. Choose Match initial
+-- PTS (MATCH_INITIAL_PTS) when you want MediaConvert to use the initial
+-- PTS as the first time stamp in the manifest. Choose Zero-based
+-- (ZERO_BASED) to have MediaConvert ignore the initial PTS in the video
+-- stream and instead write the initial time stamp as zero in the manifest.
+-- For outputs that don\'t have B-frames, the time stamps in your DASH
+-- manifests start at zero regardless of your choice here.
+--
+-- 'segmentControl', 'dashIsoGroupSettings_segmentControl' - When set to SINGLE_FILE, a single output file is generated, which is
+-- internally segmented using the Fragment Length and Segment Length. When
+-- set to SEGMENTED_FILES, separate segment files will be created.
+--
+-- 'segmentLength', 'dashIsoGroupSettings_segmentLength' - Specify the length, in whole seconds, of each segment. When you don\'t
+-- specify a value, MediaConvert defaults to 30. Related settings: Use
+-- Segment length control (SegmentLengthControl) to specify whether the
+-- encoder enforces this value strictly. Use Segment control
+-- (DashIsoSegmentControl) to specify whether MediaConvert creates separate
+-- segment files or one content file that has metadata to mark the segment
+-- boundaries.
+--
+-- 'segmentLengthControl', 'dashIsoGroupSettings_segmentLengthControl' - Specify how you want MediaConvert to determine the segment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Segment length (SegmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+--
+-- 'videoCompositionOffsets', 'dashIsoGroupSettings_videoCompositionOffsets' - Specify the video sample composition time offset mode in the output fMP4
+-- TRUN box. For wider player compatibility, set Video composition offsets
+-- to Unsigned or leave blank. The earliest presentation time may be
+-- greater than zero, and sample composition time offsets will increment
+-- using unsigned integers. For strict fMP4 video and audio timing, set
+-- Video composition offsets to Signed. The earliest presentation time will
+-- be equal to zero, and sample composition time offsets will increment
+-- using signed integers.
+--
+-- 'writeSegmentTimelineInRepresentation', 'dashIsoGroupSettings_writeSegmentTimelineInRepresentation' - If you get an HTTP error in the 400 range when you play back your DASH
+-- output, enable this setting and run your transcoding job again. When you
+-- enable this setting, the service writes precise segment durations in the
+-- DASH manifest. The segment duration information appears inside the
+-- SegmentTimeline element, inside SegmentTemplate at the Representation
+-- level. When you don\'t enable this setting, the service writes
+-- approximate segment durations in your DASH manifest.
+newDashIsoGroupSettings ::
+  DashIsoGroupSettings
+newDashIsoGroupSettings =
+  DashIsoGroupSettings'
+    { additionalManifests =
+        Prelude.Nothing,
+      audioChannelConfigSchemeIdUri = Prelude.Nothing,
+      baseUrl = Prelude.Nothing,
+      destination = Prelude.Nothing,
+      destinationSettings = Prelude.Nothing,
+      encryption = Prelude.Nothing,
+      fragmentLength = Prelude.Nothing,
+      hbbtvCompliance = Prelude.Nothing,
+      imageBasedTrickPlay = Prelude.Nothing,
+      imageBasedTrickPlaySettings = Prelude.Nothing,
+      minBufferTime = Prelude.Nothing,
+      minFinalSegmentLength = Prelude.Nothing,
+      mpdManifestBandwidthType = Prelude.Nothing,
+      mpdProfile = Prelude.Nothing,
+      ptsOffsetHandlingForBFrames = Prelude.Nothing,
+      segmentControl = Prelude.Nothing,
+      segmentLength = Prelude.Nothing,
+      segmentLengthControl = Prelude.Nothing,
+      videoCompositionOffsets = Prelude.Nothing,
+      writeSegmentTimelineInRepresentation =
+        Prelude.Nothing
+    }
+
+-- | By default, the service creates one .mpd DASH manifest for each DASH ISO
+-- output group in your job. This default manifest references every output
+-- in the output group. To create additional DASH manifests that reference
+-- a subset of the outputs in the output group, specify a list of them
+-- here.
+dashIsoGroupSettings_additionalManifests :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe [DashAdditionalManifest])
+dashIsoGroupSettings_additionalManifests = Lens.lens (\DashIsoGroupSettings' {additionalManifests} -> additionalManifests) (\s@DashIsoGroupSettings' {} a -> s {additionalManifests = a} :: DashIsoGroupSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use this setting only when your audio codec is a Dolby one (AC3, EAC3,
+-- or Atmos) and your downstream workflow requires that your DASH manifest
+-- use the Dolby channel configuration tag, rather than the MPEG one. For
+-- example, you might need to use this to make dynamic ad insertion work.
+-- Specify which audio channel configuration scheme ID URI MediaConvert
+-- writes in your DASH manifest. Keep the default value, MPEG channel
+-- configuration (MPEG_CHANNEL_CONFIGURATION), to have MediaConvert write
+-- this: urn:mpeg:mpegB:cicp:ChannelConfiguration. Choose Dolby channel
+-- configuration (DOLBY_CHANNEL_CONFIGURATION) to have MediaConvert write
+-- this instead: tag:dolby.com,2014:dash:audio_channel_configuration:2011.
+dashIsoGroupSettings_audioChannelConfigSchemeIdUri :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoGroupAudioChannelConfigSchemeIdUri)
+dashIsoGroupSettings_audioChannelConfigSchemeIdUri = Lens.lens (\DashIsoGroupSettings' {audioChannelConfigSchemeIdUri} -> audioChannelConfigSchemeIdUri) (\s@DashIsoGroupSettings' {} a -> s {audioChannelConfigSchemeIdUri = a} :: DashIsoGroupSettings)
+
+-- | A partial URI prefix that will be put in the manifest (.mpd) file at the
+-- top level BaseURL element. Can be used if streams are delivered from a
+-- different URL than the manifest file.
+dashIsoGroupSettings_baseUrl :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe Prelude.Text)
+dashIsoGroupSettings_baseUrl = Lens.lens (\DashIsoGroupSettings' {baseUrl} -> baseUrl) (\s@DashIsoGroupSettings' {} a -> s {baseUrl = a} :: DashIsoGroupSettings)
+
+-- | Use Destination (Destination) to specify the S3 output location and the
+-- output filename base. Destination accepts format identifiers. If you do
+-- not specify the base filename in the URI, the service will use the
+-- filename of the input file. If your job has multiple inputs, the service
+-- uses the filename of the first input file.
+dashIsoGroupSettings_destination :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe Prelude.Text)
+dashIsoGroupSettings_destination = Lens.lens (\DashIsoGroupSettings' {destination} -> destination) (\s@DashIsoGroupSettings' {} a -> s {destination = a} :: DashIsoGroupSettings)
+
+-- | Settings associated with the destination. Will vary based on the type of
+-- destination
+dashIsoGroupSettings_destinationSettings :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DestinationSettings)
+dashIsoGroupSettings_destinationSettings = Lens.lens (\DashIsoGroupSettings' {destinationSettings} -> destinationSettings) (\s@DashIsoGroupSettings' {} a -> s {destinationSettings = a} :: DashIsoGroupSettings)
+
+-- | DRM settings.
+dashIsoGroupSettings_encryption :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoEncryptionSettings)
+dashIsoGroupSettings_encryption = Lens.lens (\DashIsoGroupSettings' {encryption} -> encryption) (\s@DashIsoGroupSettings' {} a -> s {encryption = a} :: DashIsoGroupSettings)
+
+-- | Length of fragments to generate (in seconds). Fragment length must be
+-- compatible with GOP size and Framerate. Note that fragments will end on
+-- the next keyframe after this number of seconds, so actual fragment
+-- length may be longer. When Emit Single File is checked, the
+-- fragmentation is internal to a single output file and it does not cause
+-- the creation of many output files as in other output types.
+dashIsoGroupSettings_fragmentLength :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe Prelude.Natural)
+dashIsoGroupSettings_fragmentLength = Lens.lens (\DashIsoGroupSettings' {fragmentLength} -> fragmentLength) (\s@DashIsoGroupSettings' {} a -> s {fragmentLength = a} :: DashIsoGroupSettings)
+
+-- | Supports HbbTV specification as indicated
+dashIsoGroupSettings_hbbtvCompliance :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoHbbtvCompliance)
+dashIsoGroupSettings_hbbtvCompliance = Lens.lens (\DashIsoGroupSettings' {hbbtvCompliance} -> hbbtvCompliance) (\s@DashIsoGroupSettings' {} a -> s {hbbtvCompliance = a} :: DashIsoGroupSettings)
+
+-- | Specify whether MediaConvert generates images for trick play. Keep the
+-- default value, None (NONE), to not generate any images. Choose Thumbnail
+-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
+-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
+-- full-resolution images of single frames. MediaConvert adds an entry in
+-- the .mpd manifest for each set of images that you generate. A common
+-- application for these images is Roku trick mode. The thumbnails and
+-- full-frame images that MediaConvert creates with this feature are
+-- compatible with this Roku specification:
+-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
+dashIsoGroupSettings_imageBasedTrickPlay :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoImageBasedTrickPlay)
+dashIsoGroupSettings_imageBasedTrickPlay = Lens.lens (\DashIsoGroupSettings' {imageBasedTrickPlay} -> imageBasedTrickPlay) (\s@DashIsoGroupSettings' {} a -> s {imageBasedTrickPlay = a} :: DashIsoGroupSettings)
+
+-- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
+-- ADVANCED
+dashIsoGroupSettings_imageBasedTrickPlaySettings :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoImageBasedTrickPlaySettings)
+dashIsoGroupSettings_imageBasedTrickPlaySettings = Lens.lens (\DashIsoGroupSettings' {imageBasedTrickPlaySettings} -> imageBasedTrickPlaySettings) (\s@DashIsoGroupSettings' {} a -> s {imageBasedTrickPlaySettings = a} :: DashIsoGroupSettings)
+
+-- | Minimum time of initially buffered media that is needed to ensure smooth
+-- playout.
+dashIsoGroupSettings_minBufferTime :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe Prelude.Natural)
+dashIsoGroupSettings_minBufferTime = Lens.lens (\DashIsoGroupSettings' {minBufferTime} -> minBufferTime) (\s@DashIsoGroupSettings' {} a -> s {minBufferTime = a} :: DashIsoGroupSettings)
+
+-- | Keep this setting at the default value of 0, unless you are
+-- troubleshooting a problem with how devices play back the end of your
+-- video asset. If you know that player devices are hanging on the final
+-- segment of your video because the length of your final segment is too
+-- short, use this setting to specify a minimum final segment length, in
+-- seconds. Choose a value that is greater than or equal to 1 and less than
+-- your segment length. When you specify a value for this setting, the
+-- encoder will combine any final segment that is shorter than the length
+-- that you specify with the previous segment. For example, your segment
+-- length is 3 seconds and your final segment is .5 seconds without a
+-- minimum final segment length; when you set the minimum final segment
+-- length to 1, your final segment is 3.5 seconds.
+dashIsoGroupSettings_minFinalSegmentLength :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe Prelude.Double)
+dashIsoGroupSettings_minFinalSegmentLength = Lens.lens (\DashIsoGroupSettings' {minFinalSegmentLength} -> minFinalSegmentLength) (\s@DashIsoGroupSettings' {} a -> s {minFinalSegmentLength = a} :: DashIsoGroupSettings)
+
+-- | Specify how the value for bandwidth is determined for each video
+-- Representation in your output MPD manifest. We recommend that you choose
+-- a MPD manifest bandwidth type that is compatible with your downstream
+-- player configuration. Max: Use the same value that you specify for Max
+-- bitrate in the video output, in bits per second. Average: Use the
+-- calculated average bitrate of the encoded video output, in bits per
+-- second.
+dashIsoGroupSettings_mpdManifestBandwidthType :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoMpdManifestBandwidthType)
+dashIsoGroupSettings_mpdManifestBandwidthType = Lens.lens (\DashIsoGroupSettings' {mpdManifestBandwidthType} -> mpdManifestBandwidthType) (\s@DashIsoGroupSettings' {} a -> s {mpdManifestBandwidthType = a} :: DashIsoGroupSettings)
+
+-- | Specify whether your DASH profile is on-demand or main. When you choose
+-- Main profile (MAIN_PROFILE), the service signals
+-- urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When
+-- you choose On-demand (ON_DEMAND_PROFILE), the service signals
+-- urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose
+-- On-demand, you must also set the output group setting Segment control
+-- (SegmentControl) to Single file (SINGLE_FILE).
+dashIsoGroupSettings_mpdProfile :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoMpdProfile)
+dashIsoGroupSettings_mpdProfile = Lens.lens (\DashIsoGroupSettings' {mpdProfile} -> mpdProfile) (\s@DashIsoGroupSettings' {} a -> s {mpdProfile = a} :: DashIsoGroupSettings)
+
+-- | Use this setting only when your output video stream has B-frames, which
+-- causes the initial presentation time stamp (PTS) to be offset from the
+-- initial decode time stamp (DTS). Specify how MediaConvert handles PTS
+-- when writing time stamps in output DASH manifests. Choose Match initial
+-- PTS (MATCH_INITIAL_PTS) when you want MediaConvert to use the initial
+-- PTS as the first time stamp in the manifest. Choose Zero-based
+-- (ZERO_BASED) to have MediaConvert ignore the initial PTS in the video
+-- stream and instead write the initial time stamp as zero in the manifest.
+-- For outputs that don\'t have B-frames, the time stamps in your DASH
+-- manifests start at zero regardless of your choice here.
+dashIsoGroupSettings_ptsOffsetHandlingForBFrames :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoPtsOffsetHandlingForBFrames)
+dashIsoGroupSettings_ptsOffsetHandlingForBFrames = Lens.lens (\DashIsoGroupSettings' {ptsOffsetHandlingForBFrames} -> ptsOffsetHandlingForBFrames) (\s@DashIsoGroupSettings' {} a -> s {ptsOffsetHandlingForBFrames = a} :: DashIsoGroupSettings)
+
+-- | When set to SINGLE_FILE, a single output file is generated, which is
+-- internally segmented using the Fragment Length and Segment Length. When
+-- set to SEGMENTED_FILES, separate segment files will be created.
+dashIsoGroupSettings_segmentControl :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoSegmentControl)
+dashIsoGroupSettings_segmentControl = Lens.lens (\DashIsoGroupSettings' {segmentControl} -> segmentControl) (\s@DashIsoGroupSettings' {} a -> s {segmentControl = a} :: DashIsoGroupSettings)
+
+-- | Specify the length, in whole seconds, of each segment. When you don\'t
+-- specify a value, MediaConvert defaults to 30. Related settings: Use
+-- Segment length control (SegmentLengthControl) to specify whether the
+-- encoder enforces this value strictly. Use Segment control
+-- (DashIsoSegmentControl) to specify whether MediaConvert creates separate
+-- segment files or one content file that has metadata to mark the segment
+-- boundaries.
+dashIsoGroupSettings_segmentLength :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe Prelude.Natural)
+dashIsoGroupSettings_segmentLength = Lens.lens (\DashIsoGroupSettings' {segmentLength} -> segmentLength) (\s@DashIsoGroupSettings' {} a -> s {segmentLength = a} :: DashIsoGroupSettings)
+
+-- | Specify how you want MediaConvert to determine the segment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Segment length (SegmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+dashIsoGroupSettings_segmentLengthControl :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoSegmentLengthControl)
+dashIsoGroupSettings_segmentLengthControl = Lens.lens (\DashIsoGroupSettings' {segmentLengthControl} -> segmentLengthControl) (\s@DashIsoGroupSettings' {} a -> s {segmentLengthControl = a} :: DashIsoGroupSettings)
+
+-- | Specify the video sample composition time offset mode in the output fMP4
+-- TRUN box. For wider player compatibility, set Video composition offsets
+-- to Unsigned or leave blank. The earliest presentation time may be
+-- greater than zero, and sample composition time offsets will increment
+-- using unsigned integers. For strict fMP4 video and audio timing, set
+-- Video composition offsets to Signed. The earliest presentation time will
+-- be equal to zero, and sample composition time offsets will increment
+-- using signed integers.
+dashIsoGroupSettings_videoCompositionOffsets :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoVideoCompositionOffsets)
+dashIsoGroupSettings_videoCompositionOffsets = Lens.lens (\DashIsoGroupSettings' {videoCompositionOffsets} -> videoCompositionOffsets) (\s@DashIsoGroupSettings' {} a -> s {videoCompositionOffsets = a} :: DashIsoGroupSettings)
+
+-- | If you get an HTTP error in the 400 range when you play back your DASH
+-- output, enable this setting and run your transcoding job again. When you
+-- enable this setting, the service writes precise segment durations in the
+-- DASH manifest. The segment duration information appears inside the
+-- SegmentTimeline element, inside SegmentTemplate at the Representation
+-- level. When you don\'t enable this setting, the service writes
+-- approximate segment durations in your DASH manifest.
+dashIsoGroupSettings_writeSegmentTimelineInRepresentation :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoWriteSegmentTimelineInRepresentation)
+dashIsoGroupSettings_writeSegmentTimelineInRepresentation = Lens.lens (\DashIsoGroupSettings' {writeSegmentTimelineInRepresentation} -> writeSegmentTimelineInRepresentation) (\s@DashIsoGroupSettings' {} a -> s {writeSegmentTimelineInRepresentation = a} :: DashIsoGroupSettings)
+
+instance Data.FromJSON DashIsoGroupSettings where
+  parseJSON =
+    Data.withObject
+      "DashIsoGroupSettings"
+      ( \x ->
+          DashIsoGroupSettings'
+            Prelude.<$> ( x
+                            Data..:? "additionalManifests"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "audioChannelConfigSchemeIdUri")
+            Prelude.<*> (x Data..:? "baseUrl")
+            Prelude.<*> (x Data..:? "destination")
+            Prelude.<*> (x Data..:? "destinationSettings")
+            Prelude.<*> (x Data..:? "encryption")
+            Prelude.<*> (x Data..:? "fragmentLength")
+            Prelude.<*> (x Data..:? "hbbtvCompliance")
+            Prelude.<*> (x Data..:? "imageBasedTrickPlay")
+            Prelude.<*> (x Data..:? "imageBasedTrickPlaySettings")
+            Prelude.<*> (x Data..:? "minBufferTime")
+            Prelude.<*> (x Data..:? "minFinalSegmentLength")
+            Prelude.<*> (x Data..:? "mpdManifestBandwidthType")
+            Prelude.<*> (x Data..:? "mpdProfile")
+            Prelude.<*> (x Data..:? "ptsOffsetHandlingForBFrames")
+            Prelude.<*> (x Data..:? "segmentControl")
+            Prelude.<*> (x Data..:? "segmentLength")
+            Prelude.<*> (x Data..:? "segmentLengthControl")
+            Prelude.<*> (x Data..:? "videoCompositionOffsets")
+            Prelude.<*> (x Data..:? "writeSegmentTimelineInRepresentation")
+      )
+
+instance Prelude.Hashable DashIsoGroupSettings where
+  hashWithSalt _salt DashIsoGroupSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` additionalManifests
+      `Prelude.hashWithSalt` audioChannelConfigSchemeIdUri
+      `Prelude.hashWithSalt` baseUrl
+      `Prelude.hashWithSalt` destination
+      `Prelude.hashWithSalt` destinationSettings
+      `Prelude.hashWithSalt` encryption
+      `Prelude.hashWithSalt` fragmentLength
+      `Prelude.hashWithSalt` hbbtvCompliance
+      `Prelude.hashWithSalt` imageBasedTrickPlay
+      `Prelude.hashWithSalt` imageBasedTrickPlaySettings
+      `Prelude.hashWithSalt` minBufferTime
+      `Prelude.hashWithSalt` minFinalSegmentLength
+      `Prelude.hashWithSalt` mpdManifestBandwidthType
+      `Prelude.hashWithSalt` mpdProfile
+      `Prelude.hashWithSalt` ptsOffsetHandlingForBFrames
+      `Prelude.hashWithSalt` segmentControl
+      `Prelude.hashWithSalt` segmentLength
+      `Prelude.hashWithSalt` segmentLengthControl
+      `Prelude.hashWithSalt` videoCompositionOffsets
+      `Prelude.hashWithSalt` writeSegmentTimelineInRepresentation
+
+instance Prelude.NFData DashIsoGroupSettings where
+  rnf DashIsoGroupSettings' {..} =
+    Prelude.rnf additionalManifests
+      `Prelude.seq` Prelude.rnf audioChannelConfigSchemeIdUri
+      `Prelude.seq` Prelude.rnf baseUrl
+      `Prelude.seq` Prelude.rnf destination
+      `Prelude.seq` Prelude.rnf destinationSettings
+      `Prelude.seq` Prelude.rnf encryption
+      `Prelude.seq` Prelude.rnf fragmentLength
+      `Prelude.seq` Prelude.rnf hbbtvCompliance
+      `Prelude.seq` Prelude.rnf imageBasedTrickPlay
+      `Prelude.seq` Prelude.rnf imageBasedTrickPlaySettings
+      `Prelude.seq` Prelude.rnf minBufferTime
+      `Prelude.seq` Prelude.rnf minFinalSegmentLength
+      `Prelude.seq` Prelude.rnf mpdManifestBandwidthType
+      `Prelude.seq` Prelude.rnf mpdProfile
+      `Prelude.seq` Prelude.rnf ptsOffsetHandlingForBFrames
+      `Prelude.seq` Prelude.rnf segmentControl
+      `Prelude.seq` Prelude.rnf segmentLength
+      `Prelude.seq` Prelude.rnf segmentLengthControl
+      `Prelude.seq` Prelude.rnf
+        videoCompositionOffsets
+      `Prelude.seq` Prelude.rnf
+        writeSegmentTimelineInRepresentation
+
+instance Data.ToJSON DashIsoGroupSettings where
+  toJSON DashIsoGroupSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("additionalManifests" Data..=)
+              Prelude.<$> additionalManifests,
+            ("audioChannelConfigSchemeIdUri" Data..=)
+              Prelude.<$> audioChannelConfigSchemeIdUri,
+            ("baseUrl" Data..=) Prelude.<$> baseUrl,
+            ("destination" Data..=) Prelude.<$> destination,
+            ("destinationSettings" Data..=)
+              Prelude.<$> destinationSettings,
+            ("encryption" Data..=) Prelude.<$> encryption,
+            ("fragmentLength" Data..=)
+              Prelude.<$> fragmentLength,
+            ("hbbtvCompliance" Data..=)
+              Prelude.<$> hbbtvCompliance,
+            ("imageBasedTrickPlay" Data..=)
+              Prelude.<$> imageBasedTrickPlay,
+            ("imageBasedTrickPlaySettings" Data..=)
+              Prelude.<$> imageBasedTrickPlaySettings,
+            ("minBufferTime" Data..=) Prelude.<$> minBufferTime,
+            ("minFinalSegmentLength" Data..=)
+              Prelude.<$> minFinalSegmentLength,
+            ("mpdManifestBandwidthType" Data..=)
+              Prelude.<$> mpdManifestBandwidthType,
+            ("mpdProfile" Data..=) Prelude.<$> mpdProfile,
+            ("ptsOffsetHandlingForBFrames" Data..=)
+              Prelude.<$> ptsOffsetHandlingForBFrames,
+            ("segmentControl" Data..=)
+              Prelude.<$> segmentControl,
+            ("segmentLength" Data..=) Prelude.<$> segmentLength,
+            ("segmentLengthControl" Data..=)
+              Prelude.<$> segmentLengthControl,
+            ("videoCompositionOffsets" Data..=)
+              Prelude.<$> videoCompositionOffsets,
+            ("writeSegmentTimelineInRepresentation" Data..=)
+              Prelude.<$> writeSegmentTimelineInRepresentation
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoHbbtvCompliance.hs b/gen/Amazonka/MediaConvert/Types/DashIsoHbbtvCompliance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoHbbtvCompliance.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DashIsoHbbtvCompliance
+-- 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.DashIsoHbbtvCompliance
+  ( DashIsoHbbtvCompliance
+      ( ..,
+        DashIsoHbbtvCompliance_HBBTV_1_5,
+        DashIsoHbbtvCompliance_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Supports HbbTV specification as indicated
+newtype DashIsoHbbtvCompliance = DashIsoHbbtvCompliance'
+  { fromDashIsoHbbtvCompliance ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DashIsoHbbtvCompliance_HBBTV_1_5 :: DashIsoHbbtvCompliance
+pattern DashIsoHbbtvCompliance_HBBTV_1_5 = DashIsoHbbtvCompliance' "HBBTV_1_5"
+
+pattern DashIsoHbbtvCompliance_NONE :: DashIsoHbbtvCompliance
+pattern DashIsoHbbtvCompliance_NONE = DashIsoHbbtvCompliance' "NONE"
+
+{-# COMPLETE
+  DashIsoHbbtvCompliance_HBBTV_1_5,
+  DashIsoHbbtvCompliance_NONE,
+  DashIsoHbbtvCompliance'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoImageBasedTrickPlay.hs b/gen/Amazonka/MediaConvert/Types/DashIsoImageBasedTrickPlay.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoImageBasedTrickPlay.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DashIsoImageBasedTrickPlay
+-- 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.DashIsoImageBasedTrickPlay
+  ( DashIsoImageBasedTrickPlay
+      ( ..,
+        DashIsoImageBasedTrickPlay_ADVANCED,
+        DashIsoImageBasedTrickPlay_NONE,
+        DashIsoImageBasedTrickPlay_THUMBNAIL,
+        DashIsoImageBasedTrickPlay_THUMBNAIL_AND_FULLFRAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether MediaConvert generates images for trick play. Keep the
+-- default value, None (NONE), to not generate any images. Choose Thumbnail
+-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
+-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
+-- full-resolution images of single frames. MediaConvert adds an entry in
+-- the .mpd manifest for each set of images that you generate. A common
+-- application for these images is Roku trick mode. The thumbnails and
+-- full-frame images that MediaConvert creates with this feature are
+-- compatible with this Roku specification:
+-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
+newtype DashIsoImageBasedTrickPlay = DashIsoImageBasedTrickPlay'
+  { fromDashIsoImageBasedTrickPlay ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DashIsoImageBasedTrickPlay_ADVANCED :: DashIsoImageBasedTrickPlay
+pattern DashIsoImageBasedTrickPlay_ADVANCED = DashIsoImageBasedTrickPlay' "ADVANCED"
+
+pattern DashIsoImageBasedTrickPlay_NONE :: DashIsoImageBasedTrickPlay
+pattern DashIsoImageBasedTrickPlay_NONE = DashIsoImageBasedTrickPlay' "NONE"
+
+pattern DashIsoImageBasedTrickPlay_THUMBNAIL :: DashIsoImageBasedTrickPlay
+pattern DashIsoImageBasedTrickPlay_THUMBNAIL = DashIsoImageBasedTrickPlay' "THUMBNAIL"
+
+pattern DashIsoImageBasedTrickPlay_THUMBNAIL_AND_FULLFRAME :: DashIsoImageBasedTrickPlay
+pattern DashIsoImageBasedTrickPlay_THUMBNAIL_AND_FULLFRAME = DashIsoImageBasedTrickPlay' "THUMBNAIL_AND_FULLFRAME"
+
+{-# COMPLETE
+  DashIsoImageBasedTrickPlay_ADVANCED,
+  DashIsoImageBasedTrickPlay_NONE,
+  DashIsoImageBasedTrickPlay_THUMBNAIL,
+  DashIsoImageBasedTrickPlay_THUMBNAIL_AND_FULLFRAME,
+  DashIsoImageBasedTrickPlay'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoImageBasedTrickPlaySettings.hs b/gen/Amazonka/MediaConvert/Types/DashIsoImageBasedTrickPlaySettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoImageBasedTrickPlaySettings.hs
@@ -0,0 +1,211 @@
+{-# 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.DashIsoImageBasedTrickPlaySettings
+-- 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.DashIsoImageBasedTrickPlaySettings 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.DashIsoIntervalCadence
+import qualified Amazonka.Prelude as Prelude
+
+-- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
+-- ADVANCED
+--
+-- /See:/ 'newDashIsoImageBasedTrickPlaySettings' smart constructor.
+data DashIsoImageBasedTrickPlaySettings = DashIsoImageBasedTrickPlaySettings'
+  { -- | The cadence MediaConvert follows for generating thumbnails. If set to
+    -- FOLLOW_IFRAME, MediaConvert generates thumbnails for each IDR frame in
+    -- the output (matching the GOP cadence). If set to FOLLOW_CUSTOM,
+    -- MediaConvert generates thumbnails according to the interval you specify
+    -- in thumbnailInterval.
+    intervalCadence :: Prelude.Maybe DashIsoIntervalCadence,
+    -- | Height of each thumbnail within each tile image, in pixels. Leave blank
+    -- to maintain aspect ratio with thumbnail width. If following the aspect
+    -- ratio would lead to a total tile height greater than 4096, then the job
+    -- will be rejected. Must be divisible by 2.
+    thumbnailHeight :: Prelude.Maybe Prelude.Natural,
+    -- | Enter the interval, in seconds, that MediaConvert uses to generate
+    -- thumbnails. If the interval you enter doesn\'t align with the output
+    -- frame rate, MediaConvert automatically rounds the interval to align with
+    -- the output frame rate. For example, if the output frame rate is 29.97
+    -- frames per second and you enter 5, MediaConvert uses a 150 frame
+    -- interval to generate thumbnails.
+    thumbnailInterval :: Prelude.Maybe Prelude.Double,
+    -- | Width of each thumbnail within each tile image, in pixels. Default is
+    -- 312. Must be divisible by 8.
+    thumbnailWidth :: Prelude.Maybe Prelude.Natural,
+    -- | Number of thumbnails in each column of a tile image. Set a value between
+    -- 2 and 2048. Must be divisible by 2.
+    tileHeight :: Prelude.Maybe Prelude.Natural,
+    -- | Number of thumbnails in each row of a tile image. Set a value between 1
+    -- and 512.
+    tileWidth :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashIsoImageBasedTrickPlaySettings' 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:
+--
+-- 'intervalCadence', 'dashIsoImageBasedTrickPlaySettings_intervalCadence' - The cadence MediaConvert follows for generating thumbnails. If set to
+-- FOLLOW_IFRAME, MediaConvert generates thumbnails for each IDR frame in
+-- the output (matching the GOP cadence). If set to FOLLOW_CUSTOM,
+-- MediaConvert generates thumbnails according to the interval you specify
+-- in thumbnailInterval.
+--
+-- 'thumbnailHeight', 'dashIsoImageBasedTrickPlaySettings_thumbnailHeight' - Height of each thumbnail within each tile image, in pixels. Leave blank
+-- to maintain aspect ratio with thumbnail width. If following the aspect
+-- ratio would lead to a total tile height greater than 4096, then the job
+-- will be rejected. Must be divisible by 2.
+--
+-- 'thumbnailInterval', 'dashIsoImageBasedTrickPlaySettings_thumbnailInterval' - Enter the interval, in seconds, that MediaConvert uses to generate
+-- thumbnails. If the interval you enter doesn\'t align with the output
+-- frame rate, MediaConvert automatically rounds the interval to align with
+-- the output frame rate. For example, if the output frame rate is 29.97
+-- frames per second and you enter 5, MediaConvert uses a 150 frame
+-- interval to generate thumbnails.
+--
+-- 'thumbnailWidth', 'dashIsoImageBasedTrickPlaySettings_thumbnailWidth' - Width of each thumbnail within each tile image, in pixels. Default is
+-- 312. Must be divisible by 8.
+--
+-- 'tileHeight', 'dashIsoImageBasedTrickPlaySettings_tileHeight' - Number of thumbnails in each column of a tile image. Set a value between
+-- 2 and 2048. Must be divisible by 2.
+--
+-- 'tileWidth', 'dashIsoImageBasedTrickPlaySettings_tileWidth' - Number of thumbnails in each row of a tile image. Set a value between 1
+-- and 512.
+newDashIsoImageBasedTrickPlaySettings ::
+  DashIsoImageBasedTrickPlaySettings
+newDashIsoImageBasedTrickPlaySettings =
+  DashIsoImageBasedTrickPlaySettings'
+    { intervalCadence =
+        Prelude.Nothing,
+      thumbnailHeight = Prelude.Nothing,
+      thumbnailInterval = Prelude.Nothing,
+      thumbnailWidth = Prelude.Nothing,
+      tileHeight = Prelude.Nothing,
+      tileWidth = Prelude.Nothing
+    }
+
+-- | The cadence MediaConvert follows for generating thumbnails. If set to
+-- FOLLOW_IFRAME, MediaConvert generates thumbnails for each IDR frame in
+-- the output (matching the GOP cadence). If set to FOLLOW_CUSTOM,
+-- MediaConvert generates thumbnails according to the interval you specify
+-- in thumbnailInterval.
+dashIsoImageBasedTrickPlaySettings_intervalCadence :: Lens.Lens' DashIsoImageBasedTrickPlaySettings (Prelude.Maybe DashIsoIntervalCadence)
+dashIsoImageBasedTrickPlaySettings_intervalCadence = Lens.lens (\DashIsoImageBasedTrickPlaySettings' {intervalCadence} -> intervalCadence) (\s@DashIsoImageBasedTrickPlaySettings' {} a -> s {intervalCadence = a} :: DashIsoImageBasedTrickPlaySettings)
+
+-- | Height of each thumbnail within each tile image, in pixels. Leave blank
+-- to maintain aspect ratio with thumbnail width. If following the aspect
+-- ratio would lead to a total tile height greater than 4096, then the job
+-- will be rejected. Must be divisible by 2.
+dashIsoImageBasedTrickPlaySettings_thumbnailHeight :: Lens.Lens' DashIsoImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Natural)
+dashIsoImageBasedTrickPlaySettings_thumbnailHeight = Lens.lens (\DashIsoImageBasedTrickPlaySettings' {thumbnailHeight} -> thumbnailHeight) (\s@DashIsoImageBasedTrickPlaySettings' {} a -> s {thumbnailHeight = a} :: DashIsoImageBasedTrickPlaySettings)
+
+-- | Enter the interval, in seconds, that MediaConvert uses to generate
+-- thumbnails. If the interval you enter doesn\'t align with the output
+-- frame rate, MediaConvert automatically rounds the interval to align with
+-- the output frame rate. For example, if the output frame rate is 29.97
+-- frames per second and you enter 5, MediaConvert uses a 150 frame
+-- interval to generate thumbnails.
+dashIsoImageBasedTrickPlaySettings_thumbnailInterval :: Lens.Lens' DashIsoImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Double)
+dashIsoImageBasedTrickPlaySettings_thumbnailInterval = Lens.lens (\DashIsoImageBasedTrickPlaySettings' {thumbnailInterval} -> thumbnailInterval) (\s@DashIsoImageBasedTrickPlaySettings' {} a -> s {thumbnailInterval = a} :: DashIsoImageBasedTrickPlaySettings)
+
+-- | Width of each thumbnail within each tile image, in pixels. Default is
+-- 312. Must be divisible by 8.
+dashIsoImageBasedTrickPlaySettings_thumbnailWidth :: Lens.Lens' DashIsoImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Natural)
+dashIsoImageBasedTrickPlaySettings_thumbnailWidth = Lens.lens (\DashIsoImageBasedTrickPlaySettings' {thumbnailWidth} -> thumbnailWidth) (\s@DashIsoImageBasedTrickPlaySettings' {} a -> s {thumbnailWidth = a} :: DashIsoImageBasedTrickPlaySettings)
+
+-- | Number of thumbnails in each column of a tile image. Set a value between
+-- 2 and 2048. Must be divisible by 2.
+dashIsoImageBasedTrickPlaySettings_tileHeight :: Lens.Lens' DashIsoImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Natural)
+dashIsoImageBasedTrickPlaySettings_tileHeight = Lens.lens (\DashIsoImageBasedTrickPlaySettings' {tileHeight} -> tileHeight) (\s@DashIsoImageBasedTrickPlaySettings' {} a -> s {tileHeight = a} :: DashIsoImageBasedTrickPlaySettings)
+
+-- | Number of thumbnails in each row of a tile image. Set a value between 1
+-- and 512.
+dashIsoImageBasedTrickPlaySettings_tileWidth :: Lens.Lens' DashIsoImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Natural)
+dashIsoImageBasedTrickPlaySettings_tileWidth = Lens.lens (\DashIsoImageBasedTrickPlaySettings' {tileWidth} -> tileWidth) (\s@DashIsoImageBasedTrickPlaySettings' {} a -> s {tileWidth = a} :: DashIsoImageBasedTrickPlaySettings)
+
+instance
+  Data.FromJSON
+    DashIsoImageBasedTrickPlaySettings
+  where
+  parseJSON =
+    Data.withObject
+      "DashIsoImageBasedTrickPlaySettings"
+      ( \x ->
+          DashIsoImageBasedTrickPlaySettings'
+            Prelude.<$> (x Data..:? "intervalCadence")
+            Prelude.<*> (x Data..:? "thumbnailHeight")
+            Prelude.<*> (x Data..:? "thumbnailInterval")
+            Prelude.<*> (x Data..:? "thumbnailWidth")
+            Prelude.<*> (x Data..:? "tileHeight")
+            Prelude.<*> (x Data..:? "tileWidth")
+      )
+
+instance
+  Prelude.Hashable
+    DashIsoImageBasedTrickPlaySettings
+  where
+  hashWithSalt
+    _salt
+    DashIsoImageBasedTrickPlaySettings' {..} =
+      _salt
+        `Prelude.hashWithSalt` intervalCadence
+        `Prelude.hashWithSalt` thumbnailHeight
+        `Prelude.hashWithSalt` thumbnailInterval
+        `Prelude.hashWithSalt` thumbnailWidth
+        `Prelude.hashWithSalt` tileHeight
+        `Prelude.hashWithSalt` tileWidth
+
+instance
+  Prelude.NFData
+    DashIsoImageBasedTrickPlaySettings
+  where
+  rnf DashIsoImageBasedTrickPlaySettings' {..} =
+    Prelude.rnf intervalCadence
+      `Prelude.seq` Prelude.rnf thumbnailHeight
+      `Prelude.seq` Prelude.rnf thumbnailInterval
+      `Prelude.seq` Prelude.rnf thumbnailWidth
+      `Prelude.seq` Prelude.rnf tileHeight
+      `Prelude.seq` Prelude.rnf tileWidth
+
+instance
+  Data.ToJSON
+    DashIsoImageBasedTrickPlaySettings
+  where
+  toJSON DashIsoImageBasedTrickPlaySettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("intervalCadence" Data..=)
+              Prelude.<$> intervalCadence,
+            ("thumbnailHeight" Data..=)
+              Prelude.<$> thumbnailHeight,
+            ("thumbnailInterval" Data..=)
+              Prelude.<$> thumbnailInterval,
+            ("thumbnailWidth" Data..=)
+              Prelude.<$> thumbnailWidth,
+            ("tileHeight" Data..=) Prelude.<$> tileHeight,
+            ("tileWidth" Data..=) Prelude.<$> tileWidth
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoIntervalCadence.hs b/gen/Amazonka/MediaConvert/Types/DashIsoIntervalCadence.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoIntervalCadence.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DashIsoIntervalCadence
+-- 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.DashIsoIntervalCadence
+  ( DashIsoIntervalCadence
+      ( ..,
+        DashIsoIntervalCadence_FOLLOW_CUSTOM,
+        DashIsoIntervalCadence_FOLLOW_IFRAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The cadence MediaConvert follows for generating thumbnails. If set to
+-- FOLLOW_IFRAME, MediaConvert generates thumbnails for each IDR frame in
+-- the output (matching the GOP cadence). If set to FOLLOW_CUSTOM,
+-- MediaConvert generates thumbnails according to the interval you specify
+-- in thumbnailInterval.
+newtype DashIsoIntervalCadence = DashIsoIntervalCadence'
+  { fromDashIsoIntervalCadence ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DashIsoIntervalCadence_FOLLOW_CUSTOM :: DashIsoIntervalCadence
+pattern DashIsoIntervalCadence_FOLLOW_CUSTOM = DashIsoIntervalCadence' "FOLLOW_CUSTOM"
+
+pattern DashIsoIntervalCadence_FOLLOW_IFRAME :: DashIsoIntervalCadence
+pattern DashIsoIntervalCadence_FOLLOW_IFRAME = DashIsoIntervalCadence' "FOLLOW_IFRAME"
+
+{-# COMPLETE
+  DashIsoIntervalCadence_FOLLOW_CUSTOM,
+  DashIsoIntervalCadence_FOLLOW_IFRAME,
+  DashIsoIntervalCadence'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoMpdManifestBandwidthType.hs b/gen/Amazonka/MediaConvert/Types/DashIsoMpdManifestBandwidthType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoMpdManifestBandwidthType.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DashIsoMpdManifestBandwidthType
+-- 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.DashIsoMpdManifestBandwidthType
+  ( DashIsoMpdManifestBandwidthType
+      ( ..,
+        DashIsoMpdManifestBandwidthType_AVERAGE,
+        DashIsoMpdManifestBandwidthType_MAX
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify how the value for bandwidth is determined for each video
+-- Representation in your output MPD manifest. We recommend that you choose
+-- a MPD manifest bandwidth type that is compatible with your downstream
+-- player configuration. Max: Use the same value that you specify for Max
+-- bitrate in the video output, in bits per second. Average: Use the
+-- calculated average bitrate of the encoded video output, in bits per
+-- second.
+newtype DashIsoMpdManifestBandwidthType = DashIsoMpdManifestBandwidthType'
+  { fromDashIsoMpdManifestBandwidthType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DashIsoMpdManifestBandwidthType_AVERAGE :: DashIsoMpdManifestBandwidthType
+pattern DashIsoMpdManifestBandwidthType_AVERAGE = DashIsoMpdManifestBandwidthType' "AVERAGE"
+
+pattern DashIsoMpdManifestBandwidthType_MAX :: DashIsoMpdManifestBandwidthType
+pattern DashIsoMpdManifestBandwidthType_MAX = DashIsoMpdManifestBandwidthType' "MAX"
+
+{-# COMPLETE
+  DashIsoMpdManifestBandwidthType_AVERAGE,
+  DashIsoMpdManifestBandwidthType_MAX,
+  DashIsoMpdManifestBandwidthType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoMpdProfile.hs b/gen/Amazonka/MediaConvert/Types/DashIsoMpdProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoMpdProfile.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DashIsoMpdProfile
+-- 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.DashIsoMpdProfile
+  ( DashIsoMpdProfile
+      ( ..,
+        DashIsoMpdProfile_MAIN_PROFILE,
+        DashIsoMpdProfile_ON_DEMAND_PROFILE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether your DASH profile is on-demand or main. When you choose
+-- Main profile (MAIN_PROFILE), the service signals
+-- urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When
+-- you choose On-demand (ON_DEMAND_PROFILE), the service signals
+-- urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose
+-- On-demand, you must also set the output group setting Segment control
+-- (SegmentControl) to Single file (SINGLE_FILE).
+newtype DashIsoMpdProfile = DashIsoMpdProfile'
+  { fromDashIsoMpdProfile ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DashIsoMpdProfile_MAIN_PROFILE :: DashIsoMpdProfile
+pattern DashIsoMpdProfile_MAIN_PROFILE = DashIsoMpdProfile' "MAIN_PROFILE"
+
+pattern DashIsoMpdProfile_ON_DEMAND_PROFILE :: DashIsoMpdProfile
+pattern DashIsoMpdProfile_ON_DEMAND_PROFILE = DashIsoMpdProfile' "ON_DEMAND_PROFILE"
+
+{-# COMPLETE
+  DashIsoMpdProfile_MAIN_PROFILE,
+  DashIsoMpdProfile_ON_DEMAND_PROFILE,
+  DashIsoMpdProfile'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoPlaybackDeviceCompatibility.hs b/gen/Amazonka/MediaConvert/Types/DashIsoPlaybackDeviceCompatibility.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoPlaybackDeviceCompatibility.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DashIsoPlaybackDeviceCompatibility
+-- 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.DashIsoPlaybackDeviceCompatibility
+  ( DashIsoPlaybackDeviceCompatibility
+      ( ..,
+        DashIsoPlaybackDeviceCompatibility_CENC_V1,
+        DashIsoPlaybackDeviceCompatibility_UNENCRYPTED_SEI
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | This setting can improve the compatibility of your output with video
+-- players on obsolete devices. It applies only to DASH H.264 outputs with
+-- DRM encryption. Choose Unencrypted SEI (UNENCRYPTED_SEI) only to correct
+-- problems with playback on older devices. Otherwise, keep the default
+-- setting CENC v1 (CENC_V1). If you choose Unencrypted SEI, for that
+-- output, the service will exclude the access unit delimiter and will
+-- leave the SEI NAL units unencrypted.
+newtype DashIsoPlaybackDeviceCompatibility = DashIsoPlaybackDeviceCompatibility'
+  { fromDashIsoPlaybackDeviceCompatibility ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DashIsoPlaybackDeviceCompatibility_CENC_V1 :: DashIsoPlaybackDeviceCompatibility
+pattern DashIsoPlaybackDeviceCompatibility_CENC_V1 = DashIsoPlaybackDeviceCompatibility' "CENC_V1"
+
+pattern DashIsoPlaybackDeviceCompatibility_UNENCRYPTED_SEI :: DashIsoPlaybackDeviceCompatibility
+pattern DashIsoPlaybackDeviceCompatibility_UNENCRYPTED_SEI = DashIsoPlaybackDeviceCompatibility' "UNENCRYPTED_SEI"
+
+{-# COMPLETE
+  DashIsoPlaybackDeviceCompatibility_CENC_V1,
+  DashIsoPlaybackDeviceCompatibility_UNENCRYPTED_SEI,
+  DashIsoPlaybackDeviceCompatibility'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoPtsOffsetHandlingForBFrames.hs b/gen/Amazonka/MediaConvert/Types/DashIsoPtsOffsetHandlingForBFrames.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoPtsOffsetHandlingForBFrames.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DashIsoPtsOffsetHandlingForBFrames
+-- 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.DashIsoPtsOffsetHandlingForBFrames
+  ( DashIsoPtsOffsetHandlingForBFrames
+      ( ..,
+        DashIsoPtsOffsetHandlingForBFrames_MATCH_INITIAL_PTS,
+        DashIsoPtsOffsetHandlingForBFrames_ZERO_BASED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting only when your output video stream has B-frames, which
+-- causes the initial presentation time stamp (PTS) to be offset from the
+-- initial decode time stamp (DTS). Specify how MediaConvert handles PTS
+-- when writing time stamps in output DASH manifests. Choose Match initial
+-- PTS (MATCH_INITIAL_PTS) when you want MediaConvert to use the initial
+-- PTS as the first time stamp in the manifest. Choose Zero-based
+-- (ZERO_BASED) to have MediaConvert ignore the initial PTS in the video
+-- stream and instead write the initial time stamp as zero in the manifest.
+-- For outputs that don\'t have B-frames, the time stamps in your DASH
+-- manifests start at zero regardless of your choice here.
+newtype DashIsoPtsOffsetHandlingForBFrames = DashIsoPtsOffsetHandlingForBFrames'
+  { fromDashIsoPtsOffsetHandlingForBFrames ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DashIsoPtsOffsetHandlingForBFrames_MATCH_INITIAL_PTS :: DashIsoPtsOffsetHandlingForBFrames
+pattern DashIsoPtsOffsetHandlingForBFrames_MATCH_INITIAL_PTS = DashIsoPtsOffsetHandlingForBFrames' "MATCH_INITIAL_PTS"
+
+pattern DashIsoPtsOffsetHandlingForBFrames_ZERO_BASED :: DashIsoPtsOffsetHandlingForBFrames
+pattern DashIsoPtsOffsetHandlingForBFrames_ZERO_BASED = DashIsoPtsOffsetHandlingForBFrames' "ZERO_BASED"
+
+{-# COMPLETE
+  DashIsoPtsOffsetHandlingForBFrames_MATCH_INITIAL_PTS,
+  DashIsoPtsOffsetHandlingForBFrames_ZERO_BASED,
+  DashIsoPtsOffsetHandlingForBFrames'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoSegmentControl.hs b/gen/Amazonka/MediaConvert/Types/DashIsoSegmentControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoSegmentControl.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DashIsoSegmentControl
+-- 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.DashIsoSegmentControl
+  ( DashIsoSegmentControl
+      ( ..,
+        DashIsoSegmentControl_SEGMENTED_FILES,
+        DashIsoSegmentControl_SINGLE_FILE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to SINGLE_FILE, a single output file is generated, which is
+-- internally segmented using the Fragment Length and Segment Length. When
+-- set to SEGMENTED_FILES, separate segment files will be created.
+newtype DashIsoSegmentControl = DashIsoSegmentControl'
+  { fromDashIsoSegmentControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DashIsoSegmentControl_SEGMENTED_FILES :: DashIsoSegmentControl
+pattern DashIsoSegmentControl_SEGMENTED_FILES = DashIsoSegmentControl' "SEGMENTED_FILES"
+
+pattern DashIsoSegmentControl_SINGLE_FILE :: DashIsoSegmentControl
+pattern DashIsoSegmentControl_SINGLE_FILE = DashIsoSegmentControl' "SINGLE_FILE"
+
+{-# COMPLETE
+  DashIsoSegmentControl_SEGMENTED_FILES,
+  DashIsoSegmentControl_SINGLE_FILE,
+  DashIsoSegmentControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoSegmentLengthControl.hs b/gen/Amazonka/MediaConvert/Types/DashIsoSegmentLengthControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoSegmentLengthControl.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DashIsoSegmentLengthControl
+-- 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.DashIsoSegmentLengthControl
+  ( DashIsoSegmentLengthControl
+      ( ..,
+        DashIsoSegmentLengthControl_EXACT,
+        DashIsoSegmentLengthControl_GOP_MULTIPLE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify how you want MediaConvert to determine the segment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Segment length (SegmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+newtype DashIsoSegmentLengthControl = DashIsoSegmentLengthControl'
+  { fromDashIsoSegmentLengthControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DashIsoSegmentLengthControl_EXACT :: DashIsoSegmentLengthControl
+pattern DashIsoSegmentLengthControl_EXACT = DashIsoSegmentLengthControl' "EXACT"
+
+pattern DashIsoSegmentLengthControl_GOP_MULTIPLE :: DashIsoSegmentLengthControl
+pattern DashIsoSegmentLengthControl_GOP_MULTIPLE = DashIsoSegmentLengthControl' "GOP_MULTIPLE"
+
+{-# COMPLETE
+  DashIsoSegmentLengthControl_EXACT,
+  DashIsoSegmentLengthControl_GOP_MULTIPLE,
+  DashIsoSegmentLengthControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoVideoCompositionOffsets.hs b/gen/Amazonka/MediaConvert/Types/DashIsoVideoCompositionOffsets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoVideoCompositionOffsets.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DashIsoVideoCompositionOffsets
+-- 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.DashIsoVideoCompositionOffsets
+  ( DashIsoVideoCompositionOffsets
+      ( ..,
+        DashIsoVideoCompositionOffsets_SIGNED,
+        DashIsoVideoCompositionOffsets_UNSIGNED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the video sample composition time offset mode in the output fMP4
+-- TRUN box. For wider player compatibility, set Video composition offsets
+-- to Unsigned or leave blank. The earliest presentation time may be
+-- greater than zero, and sample composition time offsets will increment
+-- using unsigned integers. For strict fMP4 video and audio timing, set
+-- Video composition offsets to Signed. The earliest presentation time will
+-- be equal to zero, and sample composition time offsets will increment
+-- using signed integers.
+newtype DashIsoVideoCompositionOffsets = DashIsoVideoCompositionOffsets'
+  { fromDashIsoVideoCompositionOffsets ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DashIsoVideoCompositionOffsets_SIGNED :: DashIsoVideoCompositionOffsets
+pattern DashIsoVideoCompositionOffsets_SIGNED = DashIsoVideoCompositionOffsets' "SIGNED"
+
+pattern DashIsoVideoCompositionOffsets_UNSIGNED :: DashIsoVideoCompositionOffsets
+pattern DashIsoVideoCompositionOffsets_UNSIGNED = DashIsoVideoCompositionOffsets' "UNSIGNED"
+
+{-# COMPLETE
+  DashIsoVideoCompositionOffsets_SIGNED,
+  DashIsoVideoCompositionOffsets_UNSIGNED,
+  DashIsoVideoCompositionOffsets'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DashIsoWriteSegmentTimelineInRepresentation.hs b/gen/Amazonka/MediaConvert/Types/DashIsoWriteSegmentTimelineInRepresentation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DashIsoWriteSegmentTimelineInRepresentation.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DashIsoWriteSegmentTimelineInRepresentation
+-- 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.DashIsoWriteSegmentTimelineInRepresentation
+  ( DashIsoWriteSegmentTimelineInRepresentation
+      ( ..,
+        DashIsoWriteSegmentTimelineInRepresentation_DISABLED,
+        DashIsoWriteSegmentTimelineInRepresentation_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you enable Precise segment duration in manifests
+-- (writeSegmentTimelineInRepresentation), your DASH manifest shows precise
+-- segment durations. The segment duration information appears inside the
+-- SegmentTimeline element, inside SegmentTemplate at the Representation
+-- level. When this feature isn\'t enabled, the segment durations in your
+-- DASH manifest are approximate. The segment duration information appears
+-- in the duration attribute of the SegmentTemplate element.
+newtype DashIsoWriteSegmentTimelineInRepresentation = DashIsoWriteSegmentTimelineInRepresentation'
+  { fromDashIsoWriteSegmentTimelineInRepresentation ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DashIsoWriteSegmentTimelineInRepresentation_DISABLED :: DashIsoWriteSegmentTimelineInRepresentation
+pattern DashIsoWriteSegmentTimelineInRepresentation_DISABLED = DashIsoWriteSegmentTimelineInRepresentation' "DISABLED"
+
+pattern DashIsoWriteSegmentTimelineInRepresentation_ENABLED :: DashIsoWriteSegmentTimelineInRepresentation
+pattern DashIsoWriteSegmentTimelineInRepresentation_ENABLED = DashIsoWriteSegmentTimelineInRepresentation' "ENABLED"
+
+{-# COMPLETE
+  DashIsoWriteSegmentTimelineInRepresentation_DISABLED,
+  DashIsoWriteSegmentTimelineInRepresentation_ENABLED,
+  DashIsoWriteSegmentTimelineInRepresentation'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DecryptionMode.hs b/gen/Amazonka/MediaConvert/Types/DecryptionMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DecryptionMode.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DecryptionMode
+-- 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.DecryptionMode
+  ( DecryptionMode
+      ( ..,
+        DecryptionMode_AES_CBC,
+        DecryptionMode_AES_CTR,
+        DecryptionMode_AES_GCM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the encryption mode that you used to encrypt your input files.
+newtype DecryptionMode = DecryptionMode'
+  { fromDecryptionMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DecryptionMode_AES_CBC :: DecryptionMode
+pattern DecryptionMode_AES_CBC = DecryptionMode' "AES_CBC"
+
+pattern DecryptionMode_AES_CTR :: DecryptionMode
+pattern DecryptionMode_AES_CTR = DecryptionMode' "AES_CTR"
+
+pattern DecryptionMode_AES_GCM :: DecryptionMode
+pattern DecryptionMode_AES_GCM = DecryptionMode' "AES_GCM"
+
+{-# COMPLETE
+  DecryptionMode_AES_CBC,
+  DecryptionMode_AES_CTR,
+  DecryptionMode_AES_GCM,
+  DecryptionMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DeinterlaceAlgorithm.hs b/gen/Amazonka/MediaConvert/Types/DeinterlaceAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DeinterlaceAlgorithm.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DeinterlaceAlgorithm
+-- 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.DeinterlaceAlgorithm
+  ( DeinterlaceAlgorithm
+      ( ..,
+        DeinterlaceAlgorithm_BLEND,
+        DeinterlaceAlgorithm_BLEND_TICKER,
+        DeinterlaceAlgorithm_INTERPOLATE,
+        DeinterlaceAlgorithm_INTERPOLATE_TICKER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Only applies when you set Deinterlacer (DeinterlaceMode) to Deinterlace
+-- (DEINTERLACE) or Adaptive (ADAPTIVE). Motion adaptive interpolate
+-- (INTERPOLATE) produces sharper pictures, while blend (BLEND) produces
+-- smoother motion. Use (INTERPOLATE_TICKER) OR (BLEND_TICKER) if your
+-- source file includes a ticker, such as a scrolling headline at the
+-- bottom of the frame.
+newtype DeinterlaceAlgorithm = DeinterlaceAlgorithm'
+  { fromDeinterlaceAlgorithm ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DeinterlaceAlgorithm_BLEND :: DeinterlaceAlgorithm
+pattern DeinterlaceAlgorithm_BLEND = DeinterlaceAlgorithm' "BLEND"
+
+pattern DeinterlaceAlgorithm_BLEND_TICKER :: DeinterlaceAlgorithm
+pattern DeinterlaceAlgorithm_BLEND_TICKER = DeinterlaceAlgorithm' "BLEND_TICKER"
+
+pattern DeinterlaceAlgorithm_INTERPOLATE :: DeinterlaceAlgorithm
+pattern DeinterlaceAlgorithm_INTERPOLATE = DeinterlaceAlgorithm' "INTERPOLATE"
+
+pattern DeinterlaceAlgorithm_INTERPOLATE_TICKER :: DeinterlaceAlgorithm
+pattern DeinterlaceAlgorithm_INTERPOLATE_TICKER = DeinterlaceAlgorithm' "INTERPOLATE_TICKER"
+
+{-# COMPLETE
+  DeinterlaceAlgorithm_BLEND,
+  DeinterlaceAlgorithm_BLEND_TICKER,
+  DeinterlaceAlgorithm_INTERPOLATE,
+  DeinterlaceAlgorithm_INTERPOLATE_TICKER,
+  DeinterlaceAlgorithm'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Deinterlacer.hs b/gen/Amazonka/MediaConvert/Types/Deinterlacer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Deinterlacer.hs
@@ -0,0 +1,160 @@
+{-# 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.Deinterlacer
+-- 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.Deinterlacer 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.DeinterlaceAlgorithm
+import Amazonka.MediaConvert.Types.DeinterlacerControl
+import Amazonka.MediaConvert.Types.DeinterlacerMode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for deinterlacer
+--
+-- /See:/ 'newDeinterlacer' smart constructor.
+data Deinterlacer = Deinterlacer'
+  { -- | Only applies when you set Deinterlacer (DeinterlaceMode) to Deinterlace
+    -- (DEINTERLACE) or Adaptive (ADAPTIVE). Motion adaptive interpolate
+    -- (INTERPOLATE) produces sharper pictures, while blend (BLEND) produces
+    -- smoother motion. Use (INTERPOLATE_TICKER) OR (BLEND_TICKER) if your
+    -- source file includes a ticker, such as a scrolling headline at the
+    -- bottom of the frame.
+    algorithm :: Prelude.Maybe DeinterlaceAlgorithm,
+    -- | - When set to NORMAL (default), the deinterlacer does not convert frames
+    -- that are tagged in metadata as progressive. It will only convert those
+    -- that are tagged as some other type. - When set to FORCE_ALL_FRAMES, the
+    -- deinterlacer converts every frame to progressive - even those that are
+    -- already tagged as progressive. Turn Force mode on only if there is a
+    -- good chance that the metadata has tagged frames as progressive when they
+    -- are not progressive. Do not turn on otherwise; processing frames that
+    -- are already progressive into progressive will probably result in lower
+    -- quality video.
+    control :: Prelude.Maybe DeinterlacerControl,
+    -- | Use Deinterlacer (DeinterlaceMode) to choose how the service will do
+    -- deinterlacing. Default is Deinterlace. - Deinterlace converts interlaced
+    -- to progressive. - Inverse telecine converts Hard Telecine 29.97i to
+    -- progressive 23.976p. - Adaptive auto-detects and converts to
+    -- progressive.
+    mode :: Prelude.Maybe DeinterlacerMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Deinterlacer' 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:
+--
+-- 'algorithm', 'deinterlacer_algorithm' - Only applies when you set Deinterlacer (DeinterlaceMode) to Deinterlace
+-- (DEINTERLACE) or Adaptive (ADAPTIVE). Motion adaptive interpolate
+-- (INTERPOLATE) produces sharper pictures, while blend (BLEND) produces
+-- smoother motion. Use (INTERPOLATE_TICKER) OR (BLEND_TICKER) if your
+-- source file includes a ticker, such as a scrolling headline at the
+-- bottom of the frame.
+--
+-- 'control', 'deinterlacer_control' - - When set to NORMAL (default), the deinterlacer does not convert frames
+-- that are tagged in metadata as progressive. It will only convert those
+-- that are tagged as some other type. - When set to FORCE_ALL_FRAMES, the
+-- deinterlacer converts every frame to progressive - even those that are
+-- already tagged as progressive. Turn Force mode on only if there is a
+-- good chance that the metadata has tagged frames as progressive when they
+-- are not progressive. Do not turn on otherwise; processing frames that
+-- are already progressive into progressive will probably result in lower
+-- quality video.
+--
+-- 'mode', 'deinterlacer_mode' - Use Deinterlacer (DeinterlaceMode) to choose how the service will do
+-- deinterlacing. Default is Deinterlace. - Deinterlace converts interlaced
+-- to progressive. - Inverse telecine converts Hard Telecine 29.97i to
+-- progressive 23.976p. - Adaptive auto-detects and converts to
+-- progressive.
+newDeinterlacer ::
+  Deinterlacer
+newDeinterlacer =
+  Deinterlacer'
+    { algorithm = Prelude.Nothing,
+      control = Prelude.Nothing,
+      mode = Prelude.Nothing
+    }
+
+-- | Only applies when you set Deinterlacer (DeinterlaceMode) to Deinterlace
+-- (DEINTERLACE) or Adaptive (ADAPTIVE). Motion adaptive interpolate
+-- (INTERPOLATE) produces sharper pictures, while blend (BLEND) produces
+-- smoother motion. Use (INTERPOLATE_TICKER) OR (BLEND_TICKER) if your
+-- source file includes a ticker, such as a scrolling headline at the
+-- bottom of the frame.
+deinterlacer_algorithm :: Lens.Lens' Deinterlacer (Prelude.Maybe DeinterlaceAlgorithm)
+deinterlacer_algorithm = Lens.lens (\Deinterlacer' {algorithm} -> algorithm) (\s@Deinterlacer' {} a -> s {algorithm = a} :: Deinterlacer)
+
+-- | - When set to NORMAL (default), the deinterlacer does not convert frames
+-- that are tagged in metadata as progressive. It will only convert those
+-- that are tagged as some other type. - When set to FORCE_ALL_FRAMES, the
+-- deinterlacer converts every frame to progressive - even those that are
+-- already tagged as progressive. Turn Force mode on only if there is a
+-- good chance that the metadata has tagged frames as progressive when they
+-- are not progressive. Do not turn on otherwise; processing frames that
+-- are already progressive into progressive will probably result in lower
+-- quality video.
+deinterlacer_control :: Lens.Lens' Deinterlacer (Prelude.Maybe DeinterlacerControl)
+deinterlacer_control = Lens.lens (\Deinterlacer' {control} -> control) (\s@Deinterlacer' {} a -> s {control = a} :: Deinterlacer)
+
+-- | Use Deinterlacer (DeinterlaceMode) to choose how the service will do
+-- deinterlacing. Default is Deinterlace. - Deinterlace converts interlaced
+-- to progressive. - Inverse telecine converts Hard Telecine 29.97i to
+-- progressive 23.976p. - Adaptive auto-detects and converts to
+-- progressive.
+deinterlacer_mode :: Lens.Lens' Deinterlacer (Prelude.Maybe DeinterlacerMode)
+deinterlacer_mode = Lens.lens (\Deinterlacer' {mode} -> mode) (\s@Deinterlacer' {} a -> s {mode = a} :: Deinterlacer)
+
+instance Data.FromJSON Deinterlacer where
+  parseJSON =
+    Data.withObject
+      "Deinterlacer"
+      ( \x ->
+          Deinterlacer'
+            Prelude.<$> (x Data..:? "algorithm")
+            Prelude.<*> (x Data..:? "control")
+            Prelude.<*> (x Data..:? "mode")
+      )
+
+instance Prelude.Hashable Deinterlacer where
+  hashWithSalt _salt Deinterlacer' {..} =
+    _salt
+      `Prelude.hashWithSalt` algorithm
+      `Prelude.hashWithSalt` control
+      `Prelude.hashWithSalt` mode
+
+instance Prelude.NFData Deinterlacer where
+  rnf Deinterlacer' {..} =
+    Prelude.rnf algorithm
+      `Prelude.seq` Prelude.rnf control
+      `Prelude.seq` Prelude.rnf mode
+
+instance Data.ToJSON Deinterlacer where
+  toJSON Deinterlacer' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("algorithm" Data..=) Prelude.<$> algorithm,
+            ("control" Data..=) Prelude.<$> control,
+            ("mode" Data..=) Prelude.<$> mode
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/DeinterlacerControl.hs b/gen/Amazonka/MediaConvert/Types/DeinterlacerControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DeinterlacerControl.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DeinterlacerControl
+-- 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.DeinterlacerControl
+  ( DeinterlacerControl
+      ( ..,
+        DeinterlacerControl_FORCE_ALL_FRAMES,
+        DeinterlacerControl_NORMAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | - When set to NORMAL (default), the deinterlacer does not convert frames
+-- that are tagged in metadata as progressive. It will only convert those
+-- that are tagged as some other type. - When set to FORCE_ALL_FRAMES, the
+-- deinterlacer converts every frame to progressive - even those that are
+-- already tagged as progressive. Turn Force mode on only if there is a
+-- good chance that the metadata has tagged frames as progressive when they
+-- are not progressive. Do not turn on otherwise; processing frames that
+-- are already progressive into progressive will probably result in lower
+-- quality video.
+newtype DeinterlacerControl = DeinterlacerControl'
+  { fromDeinterlacerControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DeinterlacerControl_FORCE_ALL_FRAMES :: DeinterlacerControl
+pattern DeinterlacerControl_FORCE_ALL_FRAMES = DeinterlacerControl' "FORCE_ALL_FRAMES"
+
+pattern DeinterlacerControl_NORMAL :: DeinterlacerControl
+pattern DeinterlacerControl_NORMAL = DeinterlacerControl' "NORMAL"
+
+{-# COMPLETE
+  DeinterlacerControl_FORCE_ALL_FRAMES,
+  DeinterlacerControl_NORMAL,
+  DeinterlacerControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DeinterlacerMode.hs b/gen/Amazonka/MediaConvert/Types/DeinterlacerMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DeinterlacerMode.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DeinterlacerMode
+-- 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.DeinterlacerMode
+  ( DeinterlacerMode
+      ( ..,
+        DeinterlacerMode_ADAPTIVE,
+        DeinterlacerMode_DEINTERLACE,
+        DeinterlacerMode_INVERSE_TELECINE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Deinterlacer (DeinterlaceMode) to choose how the service will do
+-- deinterlacing. Default is Deinterlace. - Deinterlace converts interlaced
+-- to progressive. - Inverse telecine converts Hard Telecine 29.97i to
+-- progressive 23.976p. - Adaptive auto-detects and converts to
+-- progressive.
+newtype DeinterlacerMode = DeinterlacerMode'
+  { fromDeinterlacerMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DeinterlacerMode_ADAPTIVE :: DeinterlacerMode
+pattern DeinterlacerMode_ADAPTIVE = DeinterlacerMode' "ADAPTIVE"
+
+pattern DeinterlacerMode_DEINTERLACE :: DeinterlacerMode
+pattern DeinterlacerMode_DEINTERLACE = DeinterlacerMode' "DEINTERLACE"
+
+pattern DeinterlacerMode_INVERSE_TELECINE :: DeinterlacerMode
+pattern DeinterlacerMode_INVERSE_TELECINE = DeinterlacerMode' "INVERSE_TELECINE"
+
+{-# COMPLETE
+  DeinterlacerMode_ADAPTIVE,
+  DeinterlacerMode_DEINTERLACE,
+  DeinterlacerMode_INVERSE_TELECINE,
+  DeinterlacerMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DescribeEndpointsMode.hs b/gen/Amazonka/MediaConvert/Types/DescribeEndpointsMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DescribeEndpointsMode.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DescribeEndpointsMode
+-- 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.DescribeEndpointsMode
+  ( DescribeEndpointsMode
+      ( ..,
+        DescribeEndpointsMode_DEFAULT,
+        DescribeEndpointsMode_GET_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional field, defaults to DEFAULT. Specify DEFAULT for this operation
+-- to return your endpoints if any exist, or to create an endpoint for you
+-- and return it if one doesn\'t already exist. Specify GET_ONLY to return
+-- your endpoints if any exist, or an empty list if none exist.
+newtype DescribeEndpointsMode = DescribeEndpointsMode'
+  { fromDescribeEndpointsMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DescribeEndpointsMode_DEFAULT :: DescribeEndpointsMode
+pattern DescribeEndpointsMode_DEFAULT = DescribeEndpointsMode' "DEFAULT"
+
+pattern DescribeEndpointsMode_GET_ONLY :: DescribeEndpointsMode
+pattern DescribeEndpointsMode_GET_ONLY = DescribeEndpointsMode' "GET_ONLY"
+
+{-# COMPLETE
+  DescribeEndpointsMode_DEFAULT,
+  DescribeEndpointsMode_GET_ONLY,
+  DescribeEndpointsMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DestinationSettings.hs b/gen/Amazonka/MediaConvert/Types/DestinationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DestinationSettings.hs
@@ -0,0 +1,77 @@
+{-# 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.DestinationSettings
+-- 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.DestinationSettings 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.S3DestinationSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings associated with the destination. Will vary based on the type of
+-- destination
+--
+-- /See:/ 'newDestinationSettings' smart constructor.
+data DestinationSettings = DestinationSettings'
+  { -- | Settings associated with S3 destination
+    s3Settings :: Prelude.Maybe S3DestinationSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DestinationSettings' 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:
+--
+-- 's3Settings', 'destinationSettings_s3Settings' - Settings associated with S3 destination
+newDestinationSettings ::
+  DestinationSettings
+newDestinationSettings =
+  DestinationSettings' {s3Settings = Prelude.Nothing}
+
+-- | Settings associated with S3 destination
+destinationSettings_s3Settings :: Lens.Lens' DestinationSettings (Prelude.Maybe S3DestinationSettings)
+destinationSettings_s3Settings = Lens.lens (\DestinationSettings' {s3Settings} -> s3Settings) (\s@DestinationSettings' {} a -> s {s3Settings = a} :: DestinationSettings)
+
+instance Data.FromJSON DestinationSettings where
+  parseJSON =
+    Data.withObject
+      "DestinationSettings"
+      ( \x ->
+          DestinationSettings'
+            Prelude.<$> (x Data..:? "s3Settings")
+      )
+
+instance Prelude.Hashable DestinationSettings where
+  hashWithSalt _salt DestinationSettings' {..} =
+    _salt `Prelude.hashWithSalt` s3Settings
+
+instance Prelude.NFData DestinationSettings where
+  rnf DestinationSettings' {..} = Prelude.rnf s3Settings
+
+instance Data.ToJSON DestinationSettings where
+  toJSON DestinationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("s3Settings" Data..=) Prelude.<$> s3Settings]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/DolbyVision.hs b/gen/Amazonka/MediaConvert/Types/DolbyVision.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DolbyVision.hs
@@ -0,0 +1,165 @@
+{-# 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.DolbyVision
+-- 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.DolbyVision 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.DolbyVisionLevel6Metadata
+import Amazonka.MediaConvert.Types.DolbyVisionLevel6Mode
+import Amazonka.MediaConvert.Types.DolbyVisionMapping
+import Amazonka.MediaConvert.Types.DolbyVisionProfile
+import qualified Amazonka.Prelude as Prelude
+
+-- | Create Dolby Vision Profile 5 or Profile 8.1 compatible video output.
+--
+-- /See:/ 'newDolbyVision' smart constructor.
+data DolbyVision = DolbyVision'
+  { -- | Use these settings when you set DolbyVisionLevel6Mode to SPECIFY to
+    -- override the MaxCLL and MaxFALL values in your input with new values.
+    l6Metadata :: Prelude.Maybe DolbyVisionLevel6Metadata,
+    -- | Use Dolby Vision Mode to choose how the service will handle Dolby Vision
+    -- MaxCLL and MaxFALL properies.
+    l6Mode :: Prelude.Maybe DolbyVisionLevel6Mode,
+    -- | Required when you set Dolby Vision Profile to Profile 8.1. When you set
+    -- Content mapping to None, content mapping is not applied to the
+    -- HDR10-compatible signal. Depending on the source peak nit level,
+    -- clipping might occur on HDR devices without Dolby Vision. When you set
+    -- Content mapping to HDR10 1000, the transcoder creates a 1,000 nits peak
+    -- HDR10-compatible signal by applying static content mapping to the
+    -- source. This mode is speed-optimized for PQ10 sources with metadata that
+    -- is created from analysis. For graded Dolby Vision content, be aware that
+    -- creative intent might not be guaranteed with extreme 1,000 nits trims.
+    mapping :: Prelude.Maybe DolbyVisionMapping,
+    -- | Required when you enable Dolby Vision. Use Profile 5 to include
+    -- frame-interleaved Dolby Vision metadata in your output. Your input must
+    -- include Dolby Vision metadata or an HDR10 YUV color space. Use Profile
+    -- 8.1 to include frame-interleaved Dolby Vision metadata and HDR10
+    -- metadata in your output. Your input must include Dolby Vision metadata.
+    profile :: Prelude.Maybe DolbyVisionProfile
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DolbyVision' 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:
+--
+-- 'l6Metadata', 'dolbyVision_l6Metadata' - Use these settings when you set DolbyVisionLevel6Mode to SPECIFY to
+-- override the MaxCLL and MaxFALL values in your input with new values.
+--
+-- 'l6Mode', 'dolbyVision_l6Mode' - Use Dolby Vision Mode to choose how the service will handle Dolby Vision
+-- MaxCLL and MaxFALL properies.
+--
+-- 'mapping', 'dolbyVision_mapping' - Required when you set Dolby Vision Profile to Profile 8.1. When you set
+-- Content mapping to None, content mapping is not applied to the
+-- HDR10-compatible signal. Depending on the source peak nit level,
+-- clipping might occur on HDR devices without Dolby Vision. When you set
+-- Content mapping to HDR10 1000, the transcoder creates a 1,000 nits peak
+-- HDR10-compatible signal by applying static content mapping to the
+-- source. This mode is speed-optimized for PQ10 sources with metadata that
+-- is created from analysis. For graded Dolby Vision content, be aware that
+-- creative intent might not be guaranteed with extreme 1,000 nits trims.
+--
+-- 'profile', 'dolbyVision_profile' - Required when you enable Dolby Vision. Use Profile 5 to include
+-- frame-interleaved Dolby Vision metadata in your output. Your input must
+-- include Dolby Vision metadata or an HDR10 YUV color space. Use Profile
+-- 8.1 to include frame-interleaved Dolby Vision metadata and HDR10
+-- metadata in your output. Your input must include Dolby Vision metadata.
+newDolbyVision ::
+  DolbyVision
+newDolbyVision =
+  DolbyVision'
+    { l6Metadata = Prelude.Nothing,
+      l6Mode = Prelude.Nothing,
+      mapping = Prelude.Nothing,
+      profile = Prelude.Nothing
+    }
+
+-- | Use these settings when you set DolbyVisionLevel6Mode to SPECIFY to
+-- override the MaxCLL and MaxFALL values in your input with new values.
+dolbyVision_l6Metadata :: Lens.Lens' DolbyVision (Prelude.Maybe DolbyVisionLevel6Metadata)
+dolbyVision_l6Metadata = Lens.lens (\DolbyVision' {l6Metadata} -> l6Metadata) (\s@DolbyVision' {} a -> s {l6Metadata = a} :: DolbyVision)
+
+-- | Use Dolby Vision Mode to choose how the service will handle Dolby Vision
+-- MaxCLL and MaxFALL properies.
+dolbyVision_l6Mode :: Lens.Lens' DolbyVision (Prelude.Maybe DolbyVisionLevel6Mode)
+dolbyVision_l6Mode = Lens.lens (\DolbyVision' {l6Mode} -> l6Mode) (\s@DolbyVision' {} a -> s {l6Mode = a} :: DolbyVision)
+
+-- | Required when you set Dolby Vision Profile to Profile 8.1. When you set
+-- Content mapping to None, content mapping is not applied to the
+-- HDR10-compatible signal. Depending on the source peak nit level,
+-- clipping might occur on HDR devices without Dolby Vision. When you set
+-- Content mapping to HDR10 1000, the transcoder creates a 1,000 nits peak
+-- HDR10-compatible signal by applying static content mapping to the
+-- source. This mode is speed-optimized for PQ10 sources with metadata that
+-- is created from analysis. For graded Dolby Vision content, be aware that
+-- creative intent might not be guaranteed with extreme 1,000 nits trims.
+dolbyVision_mapping :: Lens.Lens' DolbyVision (Prelude.Maybe DolbyVisionMapping)
+dolbyVision_mapping = Lens.lens (\DolbyVision' {mapping} -> mapping) (\s@DolbyVision' {} a -> s {mapping = a} :: DolbyVision)
+
+-- | Required when you enable Dolby Vision. Use Profile 5 to include
+-- frame-interleaved Dolby Vision metadata in your output. Your input must
+-- include Dolby Vision metadata or an HDR10 YUV color space. Use Profile
+-- 8.1 to include frame-interleaved Dolby Vision metadata and HDR10
+-- metadata in your output. Your input must include Dolby Vision metadata.
+dolbyVision_profile :: Lens.Lens' DolbyVision (Prelude.Maybe DolbyVisionProfile)
+dolbyVision_profile = Lens.lens (\DolbyVision' {profile} -> profile) (\s@DolbyVision' {} a -> s {profile = a} :: DolbyVision)
+
+instance Data.FromJSON DolbyVision where
+  parseJSON =
+    Data.withObject
+      "DolbyVision"
+      ( \x ->
+          DolbyVision'
+            Prelude.<$> (x Data..:? "l6Metadata")
+            Prelude.<*> (x Data..:? "l6Mode")
+            Prelude.<*> (x Data..:? "mapping")
+            Prelude.<*> (x Data..:? "profile")
+      )
+
+instance Prelude.Hashable DolbyVision where
+  hashWithSalt _salt DolbyVision' {..} =
+    _salt
+      `Prelude.hashWithSalt` l6Metadata
+      `Prelude.hashWithSalt` l6Mode
+      `Prelude.hashWithSalt` mapping
+      `Prelude.hashWithSalt` profile
+
+instance Prelude.NFData DolbyVision where
+  rnf DolbyVision' {..} =
+    Prelude.rnf l6Metadata
+      `Prelude.seq` Prelude.rnf l6Mode
+      `Prelude.seq` Prelude.rnf mapping
+      `Prelude.seq` Prelude.rnf profile
+
+instance Data.ToJSON DolbyVision where
+  toJSON DolbyVision' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("l6Metadata" Data..=) Prelude.<$> l6Metadata,
+            ("l6Mode" Data..=) Prelude.<$> l6Mode,
+            ("mapping" Data..=) Prelude.<$> mapping,
+            ("profile" Data..=) Prelude.<$> profile
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/DolbyVisionLevel6Metadata.hs b/gen/Amazonka/MediaConvert/Types/DolbyVisionLevel6Metadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DolbyVisionLevel6Metadata.hs
@@ -0,0 +1,104 @@
+{-# 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.DolbyVisionLevel6Metadata
+-- 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.DolbyVisionLevel6Metadata where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use these settings when you set DolbyVisionLevel6Mode to SPECIFY to
+-- override the MaxCLL and MaxFALL values in your input with new values.
+--
+-- /See:/ 'newDolbyVisionLevel6Metadata' smart constructor.
+data DolbyVisionLevel6Metadata = DolbyVisionLevel6Metadata'
+  { -- | Maximum Content Light Level. Static HDR metadata that corresponds to the
+    -- brightest pixel in the entire stream. Measured in nits.
+    maxCll :: Prelude.Maybe Prelude.Natural,
+    -- | Maximum Frame-Average Light Level. Static HDR metadata that corresponds
+    -- to the highest frame-average brightness in the entire stream. Measured
+    -- in nits.
+    maxFall :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DolbyVisionLevel6Metadata' 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:
+--
+-- 'maxCll', 'dolbyVisionLevel6Metadata_maxCll' - Maximum Content Light Level. Static HDR metadata that corresponds to the
+-- brightest pixel in the entire stream. Measured in nits.
+--
+-- 'maxFall', 'dolbyVisionLevel6Metadata_maxFall' - Maximum Frame-Average Light Level. Static HDR metadata that corresponds
+-- to the highest frame-average brightness in the entire stream. Measured
+-- in nits.
+newDolbyVisionLevel6Metadata ::
+  DolbyVisionLevel6Metadata
+newDolbyVisionLevel6Metadata =
+  DolbyVisionLevel6Metadata'
+    { maxCll =
+        Prelude.Nothing,
+      maxFall = Prelude.Nothing
+    }
+
+-- | Maximum Content Light Level. Static HDR metadata that corresponds to the
+-- brightest pixel in the entire stream. Measured in nits.
+dolbyVisionLevel6Metadata_maxCll :: Lens.Lens' DolbyVisionLevel6Metadata (Prelude.Maybe Prelude.Natural)
+dolbyVisionLevel6Metadata_maxCll = Lens.lens (\DolbyVisionLevel6Metadata' {maxCll} -> maxCll) (\s@DolbyVisionLevel6Metadata' {} a -> s {maxCll = a} :: DolbyVisionLevel6Metadata)
+
+-- | Maximum Frame-Average Light Level. Static HDR metadata that corresponds
+-- to the highest frame-average brightness in the entire stream. Measured
+-- in nits.
+dolbyVisionLevel6Metadata_maxFall :: Lens.Lens' DolbyVisionLevel6Metadata (Prelude.Maybe Prelude.Natural)
+dolbyVisionLevel6Metadata_maxFall = Lens.lens (\DolbyVisionLevel6Metadata' {maxFall} -> maxFall) (\s@DolbyVisionLevel6Metadata' {} a -> s {maxFall = a} :: DolbyVisionLevel6Metadata)
+
+instance Data.FromJSON DolbyVisionLevel6Metadata where
+  parseJSON =
+    Data.withObject
+      "DolbyVisionLevel6Metadata"
+      ( \x ->
+          DolbyVisionLevel6Metadata'
+            Prelude.<$> (x Data..:? "maxCll")
+            Prelude.<*> (x Data..:? "maxFall")
+      )
+
+instance Prelude.Hashable DolbyVisionLevel6Metadata where
+  hashWithSalt _salt DolbyVisionLevel6Metadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxCll
+      `Prelude.hashWithSalt` maxFall
+
+instance Prelude.NFData DolbyVisionLevel6Metadata where
+  rnf DolbyVisionLevel6Metadata' {..} =
+    Prelude.rnf maxCll
+      `Prelude.seq` Prelude.rnf maxFall
+
+instance Data.ToJSON DolbyVisionLevel6Metadata where
+  toJSON DolbyVisionLevel6Metadata' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxCll" Data..=) Prelude.<$> maxCll,
+            ("maxFall" Data..=) Prelude.<$> maxFall
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/DolbyVisionLevel6Mode.hs b/gen/Amazonka/MediaConvert/Types/DolbyVisionLevel6Mode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DolbyVisionLevel6Mode.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DolbyVisionLevel6Mode
+-- 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.DolbyVisionLevel6Mode
+  ( DolbyVisionLevel6Mode
+      ( ..,
+        DolbyVisionLevel6Mode_PASSTHROUGH,
+        DolbyVisionLevel6Mode_RECALCULATE,
+        DolbyVisionLevel6Mode_SPECIFY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Dolby Vision Mode to choose how the service will handle Dolby Vision
+-- MaxCLL and MaxFALL properies.
+newtype DolbyVisionLevel6Mode = DolbyVisionLevel6Mode'
+  { fromDolbyVisionLevel6Mode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DolbyVisionLevel6Mode_PASSTHROUGH :: DolbyVisionLevel6Mode
+pattern DolbyVisionLevel6Mode_PASSTHROUGH = DolbyVisionLevel6Mode' "PASSTHROUGH"
+
+pattern DolbyVisionLevel6Mode_RECALCULATE :: DolbyVisionLevel6Mode
+pattern DolbyVisionLevel6Mode_RECALCULATE = DolbyVisionLevel6Mode' "RECALCULATE"
+
+pattern DolbyVisionLevel6Mode_SPECIFY :: DolbyVisionLevel6Mode
+pattern DolbyVisionLevel6Mode_SPECIFY = DolbyVisionLevel6Mode' "SPECIFY"
+
+{-# COMPLETE
+  DolbyVisionLevel6Mode_PASSTHROUGH,
+  DolbyVisionLevel6Mode_RECALCULATE,
+  DolbyVisionLevel6Mode_SPECIFY,
+  DolbyVisionLevel6Mode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DolbyVisionMapping.hs b/gen/Amazonka/MediaConvert/Types/DolbyVisionMapping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DolbyVisionMapping.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DolbyVisionMapping
+-- 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.DolbyVisionMapping
+  ( DolbyVisionMapping
+      ( ..,
+        DolbyVisionMapping_HDR10_1000,
+        DolbyVisionMapping_HDR10_NOMAP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set Dolby Vision Profile to Profile 8.1. When you set
+-- Content mapping to None, content mapping is not applied to the
+-- HDR10-compatible signal. Depending on the source peak nit level,
+-- clipping might occur on HDR devices without Dolby Vision. When you set
+-- Content mapping to HDR10 1000, the transcoder creates a 1,000 nits peak
+-- HDR10-compatible signal by applying static content mapping to the
+-- source. This mode is speed-optimized for PQ10 sources with metadata that
+-- is created from analysis. For graded Dolby Vision content, be aware that
+-- creative intent might not be guaranteed with extreme 1,000 nits trims.
+newtype DolbyVisionMapping = DolbyVisionMapping'
+  { fromDolbyVisionMapping ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DolbyVisionMapping_HDR10_1000 :: DolbyVisionMapping
+pattern DolbyVisionMapping_HDR10_1000 = DolbyVisionMapping' "HDR10_1000"
+
+pattern DolbyVisionMapping_HDR10_NOMAP :: DolbyVisionMapping
+pattern DolbyVisionMapping_HDR10_NOMAP = DolbyVisionMapping' "HDR10_NOMAP"
+
+{-# COMPLETE
+  DolbyVisionMapping_HDR10_1000,
+  DolbyVisionMapping_HDR10_NOMAP,
+  DolbyVisionMapping'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DolbyVisionProfile.hs b/gen/Amazonka/MediaConvert/Types/DolbyVisionProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DolbyVisionProfile.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DolbyVisionProfile
+-- 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.DolbyVisionProfile
+  ( DolbyVisionProfile
+      ( ..,
+        DolbyVisionProfile_PROFILE_5,
+        DolbyVisionProfile_PROFILE_8_1
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you enable Dolby Vision. Use Profile 5 to include
+-- frame-interleaved Dolby Vision metadata in your output. Your input must
+-- include Dolby Vision metadata or an HDR10 YUV color space. Use Profile
+-- 8.1 to include frame-interleaved Dolby Vision metadata and HDR10
+-- metadata in your output. Your input must include Dolby Vision metadata.
+newtype DolbyVisionProfile = DolbyVisionProfile'
+  { fromDolbyVisionProfile ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DolbyVisionProfile_PROFILE_5 :: DolbyVisionProfile
+pattern DolbyVisionProfile_PROFILE_5 = DolbyVisionProfile' "PROFILE_5"
+
+pattern DolbyVisionProfile_PROFILE_8_1 :: DolbyVisionProfile
+pattern DolbyVisionProfile_PROFILE_8_1 = DolbyVisionProfile' "PROFILE_8_1"
+
+{-# COMPLETE
+  DolbyVisionProfile_PROFILE_5,
+  DolbyVisionProfile_PROFILE_8_1,
+  DolbyVisionProfile'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DropFrameTimecode.hs b/gen/Amazonka/MediaConvert/Types/DropFrameTimecode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DropFrameTimecode.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DropFrameTimecode
+-- 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.DropFrameTimecode
+  ( DropFrameTimecode
+      ( ..,
+        DropFrameTimecode_DISABLED,
+        DropFrameTimecode_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Applies only to 29.97 fps outputs. When this feature is enabled, the
+-- service will use drop-frame timecode on outputs. If it is not possible
+-- to use drop-frame timecode, the system will fall back to non-drop-frame.
+-- This setting is enabled by default when Timecode insertion
+-- (TimecodeInsertion) is enabled.
+newtype DropFrameTimecode = DropFrameTimecode'
+  { fromDropFrameTimecode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DropFrameTimecode_DISABLED :: DropFrameTimecode
+pattern DropFrameTimecode_DISABLED = DropFrameTimecode' "DISABLED"
+
+pattern DropFrameTimecode_ENABLED :: DropFrameTimecode
+pattern DropFrameTimecode_ENABLED = DropFrameTimecode' "ENABLED"
+
+{-# COMPLETE
+  DropFrameTimecode_DISABLED,
+  DropFrameTimecode_ENABLED,
+  DropFrameTimecode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DvbNitSettings.hs b/gen/Amazonka/MediaConvert/Types/DvbNitSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbNitSettings.hs
@@ -0,0 +1,116 @@
+{-# 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.DvbNitSettings
+-- 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.DvbNitSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use these settings to insert a DVB Network Information Table (NIT) in
+-- the transport stream of this output. When you work directly in your JSON
+-- job specification, include this object only when your job has a
+-- transport stream output and the container settings contain the object
+-- M2tsSettings.
+--
+-- /See:/ 'newDvbNitSettings' smart constructor.
+data DvbNitSettings = DvbNitSettings'
+  { -- | The numeric value placed in the Network Information Table (NIT).
+    networkId :: Prelude.Maybe Prelude.Natural,
+    -- | The network name text placed in the network_name_descriptor inside the
+    -- Network Information Table. Maximum length is 256 characters.
+    networkName :: Prelude.Maybe Prelude.Text,
+    -- | The number of milliseconds between instances of this table in the output
+    -- transport stream.
+    nitInterval :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DvbNitSettings' 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:
+--
+-- 'networkId', 'dvbNitSettings_networkId' - The numeric value placed in the Network Information Table (NIT).
+--
+-- 'networkName', 'dvbNitSettings_networkName' - The network name text placed in the network_name_descriptor inside the
+-- Network Information Table. Maximum length is 256 characters.
+--
+-- 'nitInterval', 'dvbNitSettings_nitInterval' - The number of milliseconds between instances of this table in the output
+-- transport stream.
+newDvbNitSettings ::
+  DvbNitSettings
+newDvbNitSettings =
+  DvbNitSettings'
+    { networkId = Prelude.Nothing,
+      networkName = Prelude.Nothing,
+      nitInterval = Prelude.Nothing
+    }
+
+-- | The numeric value placed in the Network Information Table (NIT).
+dvbNitSettings_networkId :: Lens.Lens' DvbNitSettings (Prelude.Maybe Prelude.Natural)
+dvbNitSettings_networkId = Lens.lens (\DvbNitSettings' {networkId} -> networkId) (\s@DvbNitSettings' {} a -> s {networkId = a} :: DvbNitSettings)
+
+-- | The network name text placed in the network_name_descriptor inside the
+-- Network Information Table. Maximum length is 256 characters.
+dvbNitSettings_networkName :: Lens.Lens' DvbNitSettings (Prelude.Maybe Prelude.Text)
+dvbNitSettings_networkName = Lens.lens (\DvbNitSettings' {networkName} -> networkName) (\s@DvbNitSettings' {} a -> s {networkName = a} :: DvbNitSettings)
+
+-- | The number of milliseconds between instances of this table in the output
+-- transport stream.
+dvbNitSettings_nitInterval :: Lens.Lens' DvbNitSettings (Prelude.Maybe Prelude.Natural)
+dvbNitSettings_nitInterval = Lens.lens (\DvbNitSettings' {nitInterval} -> nitInterval) (\s@DvbNitSettings' {} a -> s {nitInterval = a} :: DvbNitSettings)
+
+instance Data.FromJSON DvbNitSettings where
+  parseJSON =
+    Data.withObject
+      "DvbNitSettings"
+      ( \x ->
+          DvbNitSettings'
+            Prelude.<$> (x Data..:? "networkId")
+            Prelude.<*> (x Data..:? "networkName")
+            Prelude.<*> (x Data..:? "nitInterval")
+      )
+
+instance Prelude.Hashable DvbNitSettings where
+  hashWithSalt _salt DvbNitSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` networkId
+      `Prelude.hashWithSalt` networkName
+      `Prelude.hashWithSalt` nitInterval
+
+instance Prelude.NFData DvbNitSettings where
+  rnf DvbNitSettings' {..} =
+    Prelude.rnf networkId
+      `Prelude.seq` Prelude.rnf networkName
+      `Prelude.seq` Prelude.rnf nitInterval
+
+instance Data.ToJSON DvbNitSettings where
+  toJSON DvbNitSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("networkId" Data..=) Prelude.<$> networkId,
+            ("networkName" Data..=) Prelude.<$> networkName,
+            ("nitInterval" Data..=) Prelude.<$> nitInterval
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/DvbSdtSettings.hs b/gen/Amazonka/MediaConvert/Types/DvbSdtSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbSdtSettings.hs
@@ -0,0 +1,152 @@
+{-# 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.DvbSdtSettings
+-- 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.DvbSdtSettings 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.OutputSdt
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use these settings to insert a DVB Service Description Table (SDT) in
+-- the transport stream of this output. When you work directly in your JSON
+-- job specification, include this object only when your job has a
+-- transport stream output and the container settings contain the object
+-- M2tsSettings.
+--
+-- /See:/ 'newDvbSdtSettings' smart constructor.
+data DvbSdtSettings = DvbSdtSettings'
+  { -- | Selects method of inserting SDT information into output stream. \"Follow
+    -- input SDT\" copies SDT information from input stream to output stream.
+    -- \"Follow input SDT if present\" copies SDT information from input stream
+    -- to output stream if SDT information is present in the input, otherwise
+    -- it will fall back on the user-defined values. Enter \"SDT Manually\"
+    -- means user will enter the SDT information. \"No SDT\" means output
+    -- stream will not contain SDT information.
+    outputSdt :: Prelude.Maybe OutputSdt,
+    -- | The number of milliseconds between instances of this table in the output
+    -- transport stream.
+    sdtInterval :: Prelude.Maybe Prelude.Natural,
+    -- | The service name placed in the service_descriptor in the Service
+    -- Description Table. Maximum length is 256 characters.
+    serviceName :: Prelude.Maybe Prelude.Text,
+    -- | The service provider name placed in the service_descriptor in the
+    -- Service Description Table. Maximum length is 256 characters.
+    serviceProviderName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DvbSdtSettings' 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:
+--
+-- 'outputSdt', 'dvbSdtSettings_outputSdt' - Selects method of inserting SDT information into output stream. \"Follow
+-- input SDT\" copies SDT information from input stream to output stream.
+-- \"Follow input SDT if present\" copies SDT information from input stream
+-- to output stream if SDT information is present in the input, otherwise
+-- it will fall back on the user-defined values. Enter \"SDT Manually\"
+-- means user will enter the SDT information. \"No SDT\" means output
+-- stream will not contain SDT information.
+--
+-- 'sdtInterval', 'dvbSdtSettings_sdtInterval' - The number of milliseconds between instances of this table in the output
+-- transport stream.
+--
+-- 'serviceName', 'dvbSdtSettings_serviceName' - The service name placed in the service_descriptor in the Service
+-- Description Table. Maximum length is 256 characters.
+--
+-- 'serviceProviderName', 'dvbSdtSettings_serviceProviderName' - The service provider name placed in the service_descriptor in the
+-- Service Description Table. Maximum length is 256 characters.
+newDvbSdtSettings ::
+  DvbSdtSettings
+newDvbSdtSettings =
+  DvbSdtSettings'
+    { outputSdt = Prelude.Nothing,
+      sdtInterval = Prelude.Nothing,
+      serviceName = Prelude.Nothing,
+      serviceProviderName = Prelude.Nothing
+    }
+
+-- | Selects method of inserting SDT information into output stream. \"Follow
+-- input SDT\" copies SDT information from input stream to output stream.
+-- \"Follow input SDT if present\" copies SDT information from input stream
+-- to output stream if SDT information is present in the input, otherwise
+-- it will fall back on the user-defined values. Enter \"SDT Manually\"
+-- means user will enter the SDT information. \"No SDT\" means output
+-- stream will not contain SDT information.
+dvbSdtSettings_outputSdt :: Lens.Lens' DvbSdtSettings (Prelude.Maybe OutputSdt)
+dvbSdtSettings_outputSdt = Lens.lens (\DvbSdtSettings' {outputSdt} -> outputSdt) (\s@DvbSdtSettings' {} a -> s {outputSdt = a} :: DvbSdtSettings)
+
+-- | The number of milliseconds between instances of this table in the output
+-- transport stream.
+dvbSdtSettings_sdtInterval :: Lens.Lens' DvbSdtSettings (Prelude.Maybe Prelude.Natural)
+dvbSdtSettings_sdtInterval = Lens.lens (\DvbSdtSettings' {sdtInterval} -> sdtInterval) (\s@DvbSdtSettings' {} a -> s {sdtInterval = a} :: DvbSdtSettings)
+
+-- | The service name placed in the service_descriptor in the Service
+-- Description Table. Maximum length is 256 characters.
+dvbSdtSettings_serviceName :: Lens.Lens' DvbSdtSettings (Prelude.Maybe Prelude.Text)
+dvbSdtSettings_serviceName = Lens.lens (\DvbSdtSettings' {serviceName} -> serviceName) (\s@DvbSdtSettings' {} a -> s {serviceName = a} :: DvbSdtSettings)
+
+-- | The service provider name placed in the service_descriptor in the
+-- Service Description Table. Maximum length is 256 characters.
+dvbSdtSettings_serviceProviderName :: Lens.Lens' DvbSdtSettings (Prelude.Maybe Prelude.Text)
+dvbSdtSettings_serviceProviderName = Lens.lens (\DvbSdtSettings' {serviceProviderName} -> serviceProviderName) (\s@DvbSdtSettings' {} a -> s {serviceProviderName = a} :: DvbSdtSettings)
+
+instance Data.FromJSON DvbSdtSettings where
+  parseJSON =
+    Data.withObject
+      "DvbSdtSettings"
+      ( \x ->
+          DvbSdtSettings'
+            Prelude.<$> (x Data..:? "outputSdt")
+            Prelude.<*> (x Data..:? "sdtInterval")
+            Prelude.<*> (x Data..:? "serviceName")
+            Prelude.<*> (x Data..:? "serviceProviderName")
+      )
+
+instance Prelude.Hashable DvbSdtSettings where
+  hashWithSalt _salt DvbSdtSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` outputSdt
+      `Prelude.hashWithSalt` sdtInterval
+      `Prelude.hashWithSalt` serviceName
+      `Prelude.hashWithSalt` serviceProviderName
+
+instance Prelude.NFData DvbSdtSettings where
+  rnf DvbSdtSettings' {..} =
+    Prelude.rnf outputSdt
+      `Prelude.seq` Prelude.rnf sdtInterval
+      `Prelude.seq` Prelude.rnf serviceName
+      `Prelude.seq` Prelude.rnf serviceProviderName
+
+instance Data.ToJSON DvbSdtSettings where
+  toJSON DvbSdtSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("outputSdt" Data..=) Prelude.<$> outputSdt,
+            ("sdtInterval" Data..=) Prelude.<$> sdtInterval,
+            ("serviceName" Data..=) Prelude.<$> serviceName,
+            ("serviceProviderName" Data..=)
+              Prelude.<$> serviceProviderName
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/DvbSubDestinationSettings.hs b/gen/Amazonka/MediaConvert/Types/DvbSubDestinationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbSubDestinationSettings.hs
@@ -0,0 +1,867 @@
+{-# 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.DvbSubDestinationSettings
+-- 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.DvbSubDestinationSettings 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.DvbSubSubtitleFallbackFont
+import Amazonka.MediaConvert.Types.DvbSubtitleAlignment
+import Amazonka.MediaConvert.Types.DvbSubtitleApplyFontColor
+import Amazonka.MediaConvert.Types.DvbSubtitleBackgroundColor
+import Amazonka.MediaConvert.Types.DvbSubtitleFontColor
+import Amazonka.MediaConvert.Types.DvbSubtitleOutlineColor
+import Amazonka.MediaConvert.Types.DvbSubtitleShadowColor
+import Amazonka.MediaConvert.Types.DvbSubtitleStylePassthrough
+import Amazonka.MediaConvert.Types.DvbSubtitleTeletextSpacing
+import Amazonka.MediaConvert.Types.DvbSubtitlingType
+import Amazonka.MediaConvert.Types.DvbddsHandling
+import Amazonka.MediaConvert.Types.FontScript
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to DVB-Sub captions. Set up DVB-Sub captions in the
+-- same output as your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/dvb-sub-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to
+-- DVB_SUB.
+--
+-- /See:/ 'newDvbSubDestinationSettings' smart constructor.
+data DvbSubDestinationSettings = DvbSubDestinationSettings'
+  { -- | Specify the alignment of your captions. If no explicit x_position is
+    -- provided, setting alignment to centered will placethe captions at the
+    -- bottom center of the output. Similarly, setting a left alignment
+    -- willalign captions to the bottom left of the output. If x and y
+    -- positions are given in conjunction with the alignment parameter, the
+    -- font will be justified (either left or centered) relative to those
+    -- coordinates. Within your job settings, all of your DVB-Sub settings must
+    -- be identical.
+    alignment :: Prelude.Maybe DvbSubtitleAlignment,
+    -- | Ignore this setting unless Style Passthrough (StylePassthrough) is set
+    -- to Enabled and Font color (FontColor) set to Black, Yellow, Red, Green,
+    -- Blue, or Hex. Use Apply font color (ApplyFontColor) for additional font
+    -- color controls. When you choose White text only (WHITE_TEXT_ONLY), or
+    -- leave blank, your font color setting only applies to white text in your
+    -- input captions. For example, if your font color setting is Yellow, and
+    -- your input captions have red and white text, your output captions will
+    -- have red and yellow text. When you choose ALL_TEXT, your font color
+    -- setting applies to all of your output captions text.
+    applyFontColor :: Prelude.Maybe DvbSubtitleApplyFontColor,
+    -- | Specify the color of the rectangle behind the captions. Leave background
+    -- color (BackgroundColor) blank and set Style passthrough
+    -- (StylePassthrough) to enabled to use the background color data from your
+    -- input captions, if present.
+    backgroundColor :: Prelude.Maybe DvbSubtitleBackgroundColor,
+    -- | Specify the opacity of the background rectangle. Enter a value from 0 to
+    -- 255, where 0 is transparent and 255 is opaque. If Style passthrough
+    -- (StylePassthrough) is set to enabled, leave blank to pass through the
+    -- background style information in your input captions to your output
+    -- captions. If Style passthrough is set to disabled, leave blank to use a
+    -- value of 0 and remove all backgrounds from your output captions. Within
+    -- your job settings, all of your DVB-Sub settings must be identical.
+    backgroundOpacity :: Prelude.Maybe Prelude.Natural,
+    -- | Specify how MediaConvert handles the display definition segment (DDS).
+    -- Keep the default, None (NONE), to exclude the DDS from this set of
+    -- captions. Choose No display window (NO_DISPLAY_WINDOW) to have
+    -- MediaConvert include the DDS but not include display window data. In
+    -- this case, MediaConvert writes that information to the page composition
+    -- segment (PCS) instead. Choose Specify (SPECIFIED) to have MediaConvert
+    -- set up the display window based on the values that you specify in
+    -- related job settings. For video resolutions that are 576 pixels or
+    -- smaller in height, MediaConvert doesn\'t include the DDS, regardless of
+    -- the value you choose for DDS handling (ddsHandling). In this case, it
+    -- doesn\'t write the display window data to the PCS either. Related
+    -- settings: Use the settings DDS x-coordinate (ddsXCoordinate) and DDS
+    -- y-coordinate (ddsYCoordinate) to specify the offset between the top left
+    -- corner of the display window and the top left corner of the video frame.
+    -- All burn-in and DVB-Sub font settings must match.
+    ddsHandling :: Prelude.Maybe DvbddsHandling,
+    -- | Use this setting, along with DDS y-coordinate (ddsYCoordinate), to
+    -- specify the upper left corner of the display definition segment (DDS)
+    -- display window. With this setting, specify the distance, in pixels,
+    -- between the left side of the frame and the left side of the DDS display
+    -- window. Keep the default value, 0, to have MediaConvert automatically
+    -- choose this offset. Related setting: When you use this setting, you must
+    -- set DDS handling (ddsHandling) to a value other than None (NONE).
+    -- MediaConvert uses these values to determine whether to write page
+    -- position data to the DDS or to the page composition segment (PCS). All
+    -- burn-in and DVB-Sub font settings must match.
+    ddsXCoordinate :: Prelude.Maybe Prelude.Natural,
+    -- | Use this setting, along with DDS x-coordinate (ddsXCoordinate), to
+    -- specify the upper left corner of the display definition segment (DDS)
+    -- display window. With this setting, specify the distance, in pixels,
+    -- between the top of the frame and the top of the DDS display window. Keep
+    -- the default value, 0, to have MediaConvert automatically choose this
+    -- offset. Related setting: When you use this setting, you must set DDS
+    -- handling (ddsHandling) to a value other than None (NONE). MediaConvert
+    -- uses these values to determine whether to write page position data to
+    -- the DDS or to the page composition segment (PCS). All burn-in and
+    -- DVB-Sub font settings must match.
+    ddsYCoordinate :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the font that you want the service to use for your burn in
+    -- captions when your input captions specify a font that MediaConvert
+    -- doesn\'t support. When you set Fallback font (FallbackFont) to best
+    -- match (BEST_MATCH), or leave blank, MediaConvert uses a supported font
+    -- that most closely matches the font that your input captions specify.
+    -- When there are multiple unsupported fonts in your input captions,
+    -- MediaConvert matches each font with the supported font that matches
+    -- best. When you explicitly choose a replacement font, MediaConvert uses
+    -- that font to replace all unsupported fonts from your input.
+    fallbackFont :: Prelude.Maybe DvbSubSubtitleFallbackFont,
+    -- | Specify the color of the captions text. Leave Font color (FontColor)
+    -- blank and set Style passthrough (StylePassthrough) to enabled to use the
+    -- font color data from your input captions, if present. Within your job
+    -- settings, all of your DVB-Sub settings must be identical.
+    fontColor :: Prelude.Maybe DvbSubtitleFontColor,
+    -- | Specify the opacity of the burned-in captions. 255 is opaque; 0 is
+    -- transparent. Within your job settings, all of your DVB-Sub settings must
+    -- be identical.
+    fontOpacity :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the Font resolution (FontResolution) in DPI (dots per inch).
+    -- Within your job settings, all of your DVB-Sub settings must be
+    -- identical.
+    fontResolution :: Prelude.Maybe Prelude.Natural,
+    -- | Set Font script (FontScript) to Automatically determined (AUTOMATIC), or
+    -- leave blank, to automatically determine the font script in your input
+    -- captions. Otherwise, set to Simplified Chinese (HANS) or Traditional
+    -- Chinese (HANT) if your input font script uses Simplified or Traditional
+    -- Chinese. Within your job settings, all of your DVB-Sub settings must be
+    -- identical.
+    fontScript :: Prelude.Maybe FontScript,
+    -- | Specify the Font size (FontSize) in pixels. Must be a positive integer.
+    -- Set to 0, or leave blank, for automatic font size. Within your job
+    -- settings, all of your DVB-Sub settings must be identical.
+    fontSize :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the height, in pixels, of this set of DVB-Sub captions. The
+    -- default value is 576 pixels. Related setting: When you use this setting,
+    -- you must set DDS handling (ddsHandling) to a value other than None
+    -- (NONE). All burn-in and DVB-Sub font settings must match.
+    height :: Prelude.Maybe Prelude.Natural,
+    -- | Ignore this setting unless your Font color is set to Hex. Enter either
+    -- six or eight hexidecimal digits, representing red, green, and blue, with
+    -- two optional extra digits for alpha. For example a value of 1122AABB is
+    -- a red value of 0x11, a green value of 0x22, a blue value of 0xAA, and an
+    -- alpha value of 0xBB.
+    hexFontColor :: Prelude.Maybe Prelude.Text,
+    -- | Specify font outline color. Leave Outline color (OutlineColor) blank and
+    -- set Style passthrough (StylePassthrough) to enabled to use the font
+    -- outline color data from your input captions, if present. Within your job
+    -- settings, all of your DVB-Sub settings must be identical.
+    outlineColor :: Prelude.Maybe DvbSubtitleOutlineColor,
+    -- | Specify the Outline size (OutlineSize) of the caption text, in pixels.
+    -- Leave Outline size blank and set Style passthrough (StylePassthrough) to
+    -- enabled to use the outline size data from your input captions, if
+    -- present. Within your job settings, all of your DVB-Sub settings must be
+    -- identical.
+    outlineSize :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the color of the shadow cast by the captions. Leave Shadow color
+    -- (ShadowColor) blank and set Style passthrough (StylePassthrough) to
+    -- enabled to use the shadow color data from your input captions, if
+    -- present. Within your job settings, all of your DVB-Sub settings must be
+    -- identical.
+    shadowColor :: Prelude.Maybe DvbSubtitleShadowColor,
+    -- | Specify the opacity of the shadow. Enter a value from 0 to 255, where 0
+    -- is transparent and 255 is opaque. If Style passthrough
+    -- (StylePassthrough) is set to Enabled, leave Shadow opacity
+    -- (ShadowOpacity) blank to pass through the shadow style information in
+    -- your input captions to your output captions. If Style passthrough is set
+    -- to disabled, leave blank to use a value of 0 and remove all shadows from
+    -- your output captions. Within your job settings, all of your DVB-Sub
+    -- settings must be identical.
+    shadowOpacity :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the horizontal offset of the shadow, relative to the captions in
+    -- pixels. A value of -2 would result in a shadow offset 2 pixels to the
+    -- left. Within your job settings, all of your DVB-Sub settings must be
+    -- identical.
+    shadowXOffset :: Prelude.Maybe Prelude.Int,
+    -- | Specify the vertical offset of the shadow relative to the captions in
+    -- pixels. A value of -2 would result in a shadow offset 2 pixels above the
+    -- text. Leave Shadow y-offset (ShadowYOffset) blank and set Style
+    -- passthrough (StylePassthrough) to enabled to use the shadow y-offset
+    -- data from your input captions, if present. Within your job settings, all
+    -- of your DVB-Sub settings must be identical.
+    shadowYOffset :: Prelude.Maybe Prelude.Int,
+    -- | Set Style passthrough (StylePassthrough) to ENABLED to use the available
+    -- style, color, and position information from your input captions.
+    -- MediaConvert uses default settings for any missing style and position
+    -- information in your input captions. Set Style passthrough to DISABLED,
+    -- or leave blank, to ignore the style and position information from your
+    -- input captions and use default settings: white text with black
+    -- outlining, bottom-center positioning, and automatic sizing. Whether you
+    -- set Style passthrough to enabled or not, you can also choose to manually
+    -- override any of the individual style and position settings.
+    stylePassthrough :: Prelude.Maybe DvbSubtitleStylePassthrough,
+    -- | Specify whether your DVB subtitles are standard or for hearing impaired.
+    -- Choose hearing impaired if your subtitles include audio descriptions and
+    -- dialogue. Choose standard if your subtitles include only dialogue.
+    subtitlingType :: Prelude.Maybe DvbSubtitlingType,
+    -- | Specify whether the Text spacing (TeletextSpacing) in your captions is
+    -- set by the captions grid, or varies depending on letter width. Choose
+    -- fixed grid (FIXED_GRID) to conform to the spacing specified in the
+    -- captions file more accurately. Choose proportional (PROPORTIONAL) to
+    -- make the text easier to read for closed captions. Within your job
+    -- settings, all of your DVB-Sub settings must be identical.
+    teletextSpacing :: Prelude.Maybe DvbSubtitleTeletextSpacing,
+    -- | Specify the width, in pixels, of this set of DVB-Sub captions. The
+    -- default value is 720 pixels. Related setting: When you use this setting,
+    -- you must set DDS handling (ddsHandling) to a value other than None
+    -- (NONE). All burn-in and DVB-Sub font settings must match.
+    width :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the horizontal position (XPosition) of the captions, relative to
+    -- the left side of the outputin pixels. A value of 10 would result in the
+    -- captions starting 10 pixels from the left ofthe output. If no explicit
+    -- x_position is provided, the horizontal caption position will
+    -- bedetermined by the alignment parameter. Within your job settings, all
+    -- of your DVB-Sub settings must be identical.
+    xPosition :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the vertical position (YPosition) of the captions, relative to
+    -- the top of the output in pixels. A value of 10 would result in the
+    -- captions starting 10 pixels from the top of the output. If no explicit
+    -- y_position is provided, the caption will be positioned towards the
+    -- bottom of the output. Within your job settings, all of your DVB-Sub
+    -- settings must be identical.
+    yPosition :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DvbSubDestinationSettings' 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:
+--
+-- 'alignment', 'dvbSubDestinationSettings_alignment' - Specify the alignment of your captions. If no explicit x_position is
+-- provided, setting alignment to centered will placethe captions at the
+-- bottom center of the output. Similarly, setting a left alignment
+-- willalign captions to the bottom left of the output. If x and y
+-- positions are given in conjunction with the alignment parameter, the
+-- font will be justified (either left or centered) relative to those
+-- coordinates. Within your job settings, all of your DVB-Sub settings must
+-- be identical.
+--
+-- 'applyFontColor', 'dvbSubDestinationSettings_applyFontColor' - Ignore this setting unless Style Passthrough (StylePassthrough) is set
+-- to Enabled and Font color (FontColor) set to Black, Yellow, Red, Green,
+-- Blue, or Hex. Use Apply font color (ApplyFontColor) for additional font
+-- color controls. When you choose White text only (WHITE_TEXT_ONLY), or
+-- leave blank, your font color setting only applies to white text in your
+-- input captions. For example, if your font color setting is Yellow, and
+-- your input captions have red and white text, your output captions will
+-- have red and yellow text. When you choose ALL_TEXT, your font color
+-- setting applies to all of your output captions text.
+--
+-- 'backgroundColor', 'dvbSubDestinationSettings_backgroundColor' - Specify the color of the rectangle behind the captions. Leave background
+-- color (BackgroundColor) blank and set Style passthrough
+-- (StylePassthrough) to enabled to use the background color data from your
+-- input captions, if present.
+--
+-- 'backgroundOpacity', 'dvbSubDestinationSettings_backgroundOpacity' - Specify the opacity of the background rectangle. Enter a value from 0 to
+-- 255, where 0 is transparent and 255 is opaque. If Style passthrough
+-- (StylePassthrough) is set to enabled, leave blank to pass through the
+-- background style information in your input captions to your output
+-- captions. If Style passthrough is set to disabled, leave blank to use a
+-- value of 0 and remove all backgrounds from your output captions. Within
+-- your job settings, all of your DVB-Sub settings must be identical.
+--
+-- 'ddsHandling', 'dvbSubDestinationSettings_ddsHandling' - Specify how MediaConvert handles the display definition segment (DDS).
+-- Keep the default, None (NONE), to exclude the DDS from this set of
+-- captions. Choose No display window (NO_DISPLAY_WINDOW) to have
+-- MediaConvert include the DDS but not include display window data. In
+-- this case, MediaConvert writes that information to the page composition
+-- segment (PCS) instead. Choose Specify (SPECIFIED) to have MediaConvert
+-- set up the display window based on the values that you specify in
+-- related job settings. For video resolutions that are 576 pixels or
+-- smaller in height, MediaConvert doesn\'t include the DDS, regardless of
+-- the value you choose for DDS handling (ddsHandling). In this case, it
+-- doesn\'t write the display window data to the PCS either. Related
+-- settings: Use the settings DDS x-coordinate (ddsXCoordinate) and DDS
+-- y-coordinate (ddsYCoordinate) to specify the offset between the top left
+-- corner of the display window and the top left corner of the video frame.
+-- All burn-in and DVB-Sub font settings must match.
+--
+-- 'ddsXCoordinate', 'dvbSubDestinationSettings_ddsXCoordinate' - Use this setting, along with DDS y-coordinate (ddsYCoordinate), to
+-- specify the upper left corner of the display definition segment (DDS)
+-- display window. With this setting, specify the distance, in pixels,
+-- between the left side of the frame and the left side of the DDS display
+-- window. Keep the default value, 0, to have MediaConvert automatically
+-- choose this offset. Related setting: When you use this setting, you must
+-- set DDS handling (ddsHandling) to a value other than None (NONE).
+-- MediaConvert uses these values to determine whether to write page
+-- position data to the DDS or to the page composition segment (PCS). All
+-- burn-in and DVB-Sub font settings must match.
+--
+-- 'ddsYCoordinate', 'dvbSubDestinationSettings_ddsYCoordinate' - Use this setting, along with DDS x-coordinate (ddsXCoordinate), to
+-- specify the upper left corner of the display definition segment (DDS)
+-- display window. With this setting, specify the distance, in pixels,
+-- between the top of the frame and the top of the DDS display window. Keep
+-- the default value, 0, to have MediaConvert automatically choose this
+-- offset. Related setting: When you use this setting, you must set DDS
+-- handling (ddsHandling) to a value other than None (NONE). MediaConvert
+-- uses these values to determine whether to write page position data to
+-- the DDS or to the page composition segment (PCS). All burn-in and
+-- DVB-Sub font settings must match.
+--
+-- 'fallbackFont', 'dvbSubDestinationSettings_fallbackFont' - Specify the font that you want the service to use for your burn in
+-- captions when your input captions specify a font that MediaConvert
+-- doesn\'t support. When you set Fallback font (FallbackFont) to best
+-- match (BEST_MATCH), or leave blank, MediaConvert uses a supported font
+-- that most closely matches the font that your input captions specify.
+-- When there are multiple unsupported fonts in your input captions,
+-- MediaConvert matches each font with the supported font that matches
+-- best. When you explicitly choose a replacement font, MediaConvert uses
+-- that font to replace all unsupported fonts from your input.
+--
+-- 'fontColor', 'dvbSubDestinationSettings_fontColor' - Specify the color of the captions text. Leave Font color (FontColor)
+-- blank and set Style passthrough (StylePassthrough) to enabled to use the
+-- font color data from your input captions, if present. Within your job
+-- settings, all of your DVB-Sub settings must be identical.
+--
+-- 'fontOpacity', 'dvbSubDestinationSettings_fontOpacity' - Specify the opacity of the burned-in captions. 255 is opaque; 0 is
+-- transparent. Within your job settings, all of your DVB-Sub settings must
+-- be identical.
+--
+-- 'fontResolution', 'dvbSubDestinationSettings_fontResolution' - Specify the Font resolution (FontResolution) in DPI (dots per inch).
+-- Within your job settings, all of your DVB-Sub settings must be
+-- identical.
+--
+-- 'fontScript', 'dvbSubDestinationSettings_fontScript' - Set Font script (FontScript) to Automatically determined (AUTOMATIC), or
+-- leave blank, to automatically determine the font script in your input
+-- captions. Otherwise, set to Simplified Chinese (HANS) or Traditional
+-- Chinese (HANT) if your input font script uses Simplified or Traditional
+-- Chinese. Within your job settings, all of your DVB-Sub settings must be
+-- identical.
+--
+-- 'fontSize', 'dvbSubDestinationSettings_fontSize' - Specify the Font size (FontSize) in pixels. Must be a positive integer.
+-- Set to 0, or leave blank, for automatic font size. Within your job
+-- settings, all of your DVB-Sub settings must be identical.
+--
+-- 'height', 'dvbSubDestinationSettings_height' - Specify the height, in pixels, of this set of DVB-Sub captions. The
+-- default value is 576 pixels. Related setting: When you use this setting,
+-- you must set DDS handling (ddsHandling) to a value other than None
+-- (NONE). All burn-in and DVB-Sub font settings must match.
+--
+-- 'hexFontColor', 'dvbSubDestinationSettings_hexFontColor' - Ignore this setting unless your Font color is set to Hex. Enter either
+-- six or eight hexidecimal digits, representing red, green, and blue, with
+-- two optional extra digits for alpha. For example a value of 1122AABB is
+-- a red value of 0x11, a green value of 0x22, a blue value of 0xAA, and an
+-- alpha value of 0xBB.
+--
+-- 'outlineColor', 'dvbSubDestinationSettings_outlineColor' - Specify font outline color. Leave Outline color (OutlineColor) blank and
+-- set Style passthrough (StylePassthrough) to enabled to use the font
+-- outline color data from your input captions, if present. Within your job
+-- settings, all of your DVB-Sub settings must be identical.
+--
+-- 'outlineSize', 'dvbSubDestinationSettings_outlineSize' - Specify the Outline size (OutlineSize) of the caption text, in pixels.
+-- Leave Outline size blank and set Style passthrough (StylePassthrough) to
+-- enabled to use the outline size data from your input captions, if
+-- present. Within your job settings, all of your DVB-Sub settings must be
+-- identical.
+--
+-- 'shadowColor', 'dvbSubDestinationSettings_shadowColor' - Specify the color of the shadow cast by the captions. Leave Shadow color
+-- (ShadowColor) blank and set Style passthrough (StylePassthrough) to
+-- enabled to use the shadow color data from your input captions, if
+-- present. Within your job settings, all of your DVB-Sub settings must be
+-- identical.
+--
+-- 'shadowOpacity', 'dvbSubDestinationSettings_shadowOpacity' - Specify the opacity of the shadow. Enter a value from 0 to 255, where 0
+-- is transparent and 255 is opaque. If Style passthrough
+-- (StylePassthrough) is set to Enabled, leave Shadow opacity
+-- (ShadowOpacity) blank to pass through the shadow style information in
+-- your input captions to your output captions. If Style passthrough is set
+-- to disabled, leave blank to use a value of 0 and remove all shadows from
+-- your output captions. Within your job settings, all of your DVB-Sub
+-- settings must be identical.
+--
+-- 'shadowXOffset', 'dvbSubDestinationSettings_shadowXOffset' - Specify the horizontal offset of the shadow, relative to the captions in
+-- pixels. A value of -2 would result in a shadow offset 2 pixels to the
+-- left. Within your job settings, all of your DVB-Sub settings must be
+-- identical.
+--
+-- 'shadowYOffset', 'dvbSubDestinationSettings_shadowYOffset' - Specify the vertical offset of the shadow relative to the captions in
+-- pixels. A value of -2 would result in a shadow offset 2 pixels above the
+-- text. Leave Shadow y-offset (ShadowYOffset) blank and set Style
+-- passthrough (StylePassthrough) to enabled to use the shadow y-offset
+-- data from your input captions, if present. Within your job settings, all
+-- of your DVB-Sub settings must be identical.
+--
+-- 'stylePassthrough', 'dvbSubDestinationSettings_stylePassthrough' - Set Style passthrough (StylePassthrough) to ENABLED to use the available
+-- style, color, and position information from your input captions.
+-- MediaConvert uses default settings for any missing style and position
+-- information in your input captions. Set Style passthrough to DISABLED,
+-- or leave blank, to ignore the style and position information from your
+-- input captions and use default settings: white text with black
+-- outlining, bottom-center positioning, and automatic sizing. Whether you
+-- set Style passthrough to enabled or not, you can also choose to manually
+-- override any of the individual style and position settings.
+--
+-- 'subtitlingType', 'dvbSubDestinationSettings_subtitlingType' - Specify whether your DVB subtitles are standard or for hearing impaired.
+-- Choose hearing impaired if your subtitles include audio descriptions and
+-- dialogue. Choose standard if your subtitles include only dialogue.
+--
+-- 'teletextSpacing', 'dvbSubDestinationSettings_teletextSpacing' - Specify whether the Text spacing (TeletextSpacing) in your captions is
+-- set by the captions grid, or varies depending on letter width. Choose
+-- fixed grid (FIXED_GRID) to conform to the spacing specified in the
+-- captions file more accurately. Choose proportional (PROPORTIONAL) to
+-- make the text easier to read for closed captions. Within your job
+-- settings, all of your DVB-Sub settings must be identical.
+--
+-- 'width', 'dvbSubDestinationSettings_width' - Specify the width, in pixels, of this set of DVB-Sub captions. The
+-- default value is 720 pixels. Related setting: When you use this setting,
+-- you must set DDS handling (ddsHandling) to a value other than None
+-- (NONE). All burn-in and DVB-Sub font settings must match.
+--
+-- 'xPosition', 'dvbSubDestinationSettings_xPosition' - Specify the horizontal position (XPosition) of the captions, relative to
+-- the left side of the outputin pixels. A value of 10 would result in the
+-- captions starting 10 pixels from the left ofthe output. If no explicit
+-- x_position is provided, the horizontal caption position will
+-- bedetermined by the alignment parameter. Within your job settings, all
+-- of your DVB-Sub settings must be identical.
+--
+-- 'yPosition', 'dvbSubDestinationSettings_yPosition' - Specify the vertical position (YPosition) of the captions, relative to
+-- the top of the output in pixels. A value of 10 would result in the
+-- captions starting 10 pixels from the top of the output. If no explicit
+-- y_position is provided, the caption will be positioned towards the
+-- bottom of the output. Within your job settings, all of your DVB-Sub
+-- settings must be identical.
+newDvbSubDestinationSettings ::
+  DvbSubDestinationSettings
+newDvbSubDestinationSettings =
+  DvbSubDestinationSettings'
+    { alignment =
+        Prelude.Nothing,
+      applyFontColor = Prelude.Nothing,
+      backgroundColor = Prelude.Nothing,
+      backgroundOpacity = Prelude.Nothing,
+      ddsHandling = Prelude.Nothing,
+      ddsXCoordinate = Prelude.Nothing,
+      ddsYCoordinate = Prelude.Nothing,
+      fallbackFont = Prelude.Nothing,
+      fontColor = Prelude.Nothing,
+      fontOpacity = Prelude.Nothing,
+      fontResolution = Prelude.Nothing,
+      fontScript = Prelude.Nothing,
+      fontSize = Prelude.Nothing,
+      height = Prelude.Nothing,
+      hexFontColor = Prelude.Nothing,
+      outlineColor = Prelude.Nothing,
+      outlineSize = Prelude.Nothing,
+      shadowColor = Prelude.Nothing,
+      shadowOpacity = Prelude.Nothing,
+      shadowXOffset = Prelude.Nothing,
+      shadowYOffset = Prelude.Nothing,
+      stylePassthrough = Prelude.Nothing,
+      subtitlingType = Prelude.Nothing,
+      teletextSpacing = Prelude.Nothing,
+      width = Prelude.Nothing,
+      xPosition = Prelude.Nothing,
+      yPosition = Prelude.Nothing
+    }
+
+-- | Specify the alignment of your captions. If no explicit x_position is
+-- provided, setting alignment to centered will placethe captions at the
+-- bottom center of the output. Similarly, setting a left alignment
+-- willalign captions to the bottom left of the output. If x and y
+-- positions are given in conjunction with the alignment parameter, the
+-- font will be justified (either left or centered) relative to those
+-- coordinates. Within your job settings, all of your DVB-Sub settings must
+-- be identical.
+dvbSubDestinationSettings_alignment :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe DvbSubtitleAlignment)
+dvbSubDestinationSettings_alignment = Lens.lens (\DvbSubDestinationSettings' {alignment} -> alignment) (\s@DvbSubDestinationSettings' {} a -> s {alignment = a} :: DvbSubDestinationSettings)
+
+-- | Ignore this setting unless Style Passthrough (StylePassthrough) is set
+-- to Enabled and Font color (FontColor) set to Black, Yellow, Red, Green,
+-- Blue, or Hex. Use Apply font color (ApplyFontColor) for additional font
+-- color controls. When you choose White text only (WHITE_TEXT_ONLY), or
+-- leave blank, your font color setting only applies to white text in your
+-- input captions. For example, if your font color setting is Yellow, and
+-- your input captions have red and white text, your output captions will
+-- have red and yellow text. When you choose ALL_TEXT, your font color
+-- setting applies to all of your output captions text.
+dvbSubDestinationSettings_applyFontColor :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe DvbSubtitleApplyFontColor)
+dvbSubDestinationSettings_applyFontColor = Lens.lens (\DvbSubDestinationSettings' {applyFontColor} -> applyFontColor) (\s@DvbSubDestinationSettings' {} a -> s {applyFontColor = a} :: DvbSubDestinationSettings)
+
+-- | Specify the color of the rectangle behind the captions. Leave background
+-- color (BackgroundColor) blank and set Style passthrough
+-- (StylePassthrough) to enabled to use the background color data from your
+-- input captions, if present.
+dvbSubDestinationSettings_backgroundColor :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe DvbSubtitleBackgroundColor)
+dvbSubDestinationSettings_backgroundColor = Lens.lens (\DvbSubDestinationSettings' {backgroundColor} -> backgroundColor) (\s@DvbSubDestinationSettings' {} a -> s {backgroundColor = a} :: DvbSubDestinationSettings)
+
+-- | Specify the opacity of the background rectangle. Enter a value from 0 to
+-- 255, where 0 is transparent and 255 is opaque. If Style passthrough
+-- (StylePassthrough) is set to enabled, leave blank to pass through the
+-- background style information in your input captions to your output
+-- captions. If Style passthrough is set to disabled, leave blank to use a
+-- value of 0 and remove all backgrounds from your output captions. Within
+-- your job settings, all of your DVB-Sub settings must be identical.
+dvbSubDestinationSettings_backgroundOpacity :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Natural)
+dvbSubDestinationSettings_backgroundOpacity = Lens.lens (\DvbSubDestinationSettings' {backgroundOpacity} -> backgroundOpacity) (\s@DvbSubDestinationSettings' {} a -> s {backgroundOpacity = a} :: DvbSubDestinationSettings)
+
+-- | Specify how MediaConvert handles the display definition segment (DDS).
+-- Keep the default, None (NONE), to exclude the DDS from this set of
+-- captions. Choose No display window (NO_DISPLAY_WINDOW) to have
+-- MediaConvert include the DDS but not include display window data. In
+-- this case, MediaConvert writes that information to the page composition
+-- segment (PCS) instead. Choose Specify (SPECIFIED) to have MediaConvert
+-- set up the display window based on the values that you specify in
+-- related job settings. For video resolutions that are 576 pixels or
+-- smaller in height, MediaConvert doesn\'t include the DDS, regardless of
+-- the value you choose for DDS handling (ddsHandling). In this case, it
+-- doesn\'t write the display window data to the PCS either. Related
+-- settings: Use the settings DDS x-coordinate (ddsXCoordinate) and DDS
+-- y-coordinate (ddsYCoordinate) to specify the offset between the top left
+-- corner of the display window and the top left corner of the video frame.
+-- All burn-in and DVB-Sub font settings must match.
+dvbSubDestinationSettings_ddsHandling :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe DvbddsHandling)
+dvbSubDestinationSettings_ddsHandling = Lens.lens (\DvbSubDestinationSettings' {ddsHandling} -> ddsHandling) (\s@DvbSubDestinationSettings' {} a -> s {ddsHandling = a} :: DvbSubDestinationSettings)
+
+-- | Use this setting, along with DDS y-coordinate (ddsYCoordinate), to
+-- specify the upper left corner of the display definition segment (DDS)
+-- display window. With this setting, specify the distance, in pixels,
+-- between the left side of the frame and the left side of the DDS display
+-- window. Keep the default value, 0, to have MediaConvert automatically
+-- choose this offset. Related setting: When you use this setting, you must
+-- set DDS handling (ddsHandling) to a value other than None (NONE).
+-- MediaConvert uses these values to determine whether to write page
+-- position data to the DDS or to the page composition segment (PCS). All
+-- burn-in and DVB-Sub font settings must match.
+dvbSubDestinationSettings_ddsXCoordinate :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Natural)
+dvbSubDestinationSettings_ddsXCoordinate = Lens.lens (\DvbSubDestinationSettings' {ddsXCoordinate} -> ddsXCoordinate) (\s@DvbSubDestinationSettings' {} a -> s {ddsXCoordinate = a} :: DvbSubDestinationSettings)
+
+-- | Use this setting, along with DDS x-coordinate (ddsXCoordinate), to
+-- specify the upper left corner of the display definition segment (DDS)
+-- display window. With this setting, specify the distance, in pixels,
+-- between the top of the frame and the top of the DDS display window. Keep
+-- the default value, 0, to have MediaConvert automatically choose this
+-- offset. Related setting: When you use this setting, you must set DDS
+-- handling (ddsHandling) to a value other than None (NONE). MediaConvert
+-- uses these values to determine whether to write page position data to
+-- the DDS or to the page composition segment (PCS). All burn-in and
+-- DVB-Sub font settings must match.
+dvbSubDestinationSettings_ddsYCoordinate :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Natural)
+dvbSubDestinationSettings_ddsYCoordinate = Lens.lens (\DvbSubDestinationSettings' {ddsYCoordinate} -> ddsYCoordinate) (\s@DvbSubDestinationSettings' {} a -> s {ddsYCoordinate = a} :: DvbSubDestinationSettings)
+
+-- | Specify the font that you want the service to use for your burn in
+-- captions when your input captions specify a font that MediaConvert
+-- doesn\'t support. When you set Fallback font (FallbackFont) to best
+-- match (BEST_MATCH), or leave blank, MediaConvert uses a supported font
+-- that most closely matches the font that your input captions specify.
+-- When there are multiple unsupported fonts in your input captions,
+-- MediaConvert matches each font with the supported font that matches
+-- best. When you explicitly choose a replacement font, MediaConvert uses
+-- that font to replace all unsupported fonts from your input.
+dvbSubDestinationSettings_fallbackFont :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe DvbSubSubtitleFallbackFont)
+dvbSubDestinationSettings_fallbackFont = Lens.lens (\DvbSubDestinationSettings' {fallbackFont} -> fallbackFont) (\s@DvbSubDestinationSettings' {} a -> s {fallbackFont = a} :: DvbSubDestinationSettings)
+
+-- | Specify the color of the captions text. Leave Font color (FontColor)
+-- blank and set Style passthrough (StylePassthrough) to enabled to use the
+-- font color data from your input captions, if present. Within your job
+-- settings, all of your DVB-Sub settings must be identical.
+dvbSubDestinationSettings_fontColor :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe DvbSubtitleFontColor)
+dvbSubDestinationSettings_fontColor = Lens.lens (\DvbSubDestinationSettings' {fontColor} -> fontColor) (\s@DvbSubDestinationSettings' {} a -> s {fontColor = a} :: DvbSubDestinationSettings)
+
+-- | Specify the opacity of the burned-in captions. 255 is opaque; 0 is
+-- transparent. Within your job settings, all of your DVB-Sub settings must
+-- be identical.
+dvbSubDestinationSettings_fontOpacity :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Natural)
+dvbSubDestinationSettings_fontOpacity = Lens.lens (\DvbSubDestinationSettings' {fontOpacity} -> fontOpacity) (\s@DvbSubDestinationSettings' {} a -> s {fontOpacity = a} :: DvbSubDestinationSettings)
+
+-- | Specify the Font resolution (FontResolution) in DPI (dots per inch).
+-- Within your job settings, all of your DVB-Sub settings must be
+-- identical.
+dvbSubDestinationSettings_fontResolution :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Natural)
+dvbSubDestinationSettings_fontResolution = Lens.lens (\DvbSubDestinationSettings' {fontResolution} -> fontResolution) (\s@DvbSubDestinationSettings' {} a -> s {fontResolution = a} :: DvbSubDestinationSettings)
+
+-- | Set Font script (FontScript) to Automatically determined (AUTOMATIC), or
+-- leave blank, to automatically determine the font script in your input
+-- captions. Otherwise, set to Simplified Chinese (HANS) or Traditional
+-- Chinese (HANT) if your input font script uses Simplified or Traditional
+-- Chinese. Within your job settings, all of your DVB-Sub settings must be
+-- identical.
+dvbSubDestinationSettings_fontScript :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe FontScript)
+dvbSubDestinationSettings_fontScript = Lens.lens (\DvbSubDestinationSettings' {fontScript} -> fontScript) (\s@DvbSubDestinationSettings' {} a -> s {fontScript = a} :: DvbSubDestinationSettings)
+
+-- | Specify the Font size (FontSize) in pixels. Must be a positive integer.
+-- Set to 0, or leave blank, for automatic font size. Within your job
+-- settings, all of your DVB-Sub settings must be identical.
+dvbSubDestinationSettings_fontSize :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Natural)
+dvbSubDestinationSettings_fontSize = Lens.lens (\DvbSubDestinationSettings' {fontSize} -> fontSize) (\s@DvbSubDestinationSettings' {} a -> s {fontSize = a} :: DvbSubDestinationSettings)
+
+-- | Specify the height, in pixels, of this set of DVB-Sub captions. The
+-- default value is 576 pixels. Related setting: When you use this setting,
+-- you must set DDS handling (ddsHandling) to a value other than None
+-- (NONE). All burn-in and DVB-Sub font settings must match.
+dvbSubDestinationSettings_height :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Natural)
+dvbSubDestinationSettings_height = Lens.lens (\DvbSubDestinationSettings' {height} -> height) (\s@DvbSubDestinationSettings' {} a -> s {height = a} :: DvbSubDestinationSettings)
+
+-- | Ignore this setting unless your Font color is set to Hex. Enter either
+-- six or eight hexidecimal digits, representing red, green, and blue, with
+-- two optional extra digits for alpha. For example a value of 1122AABB is
+-- a red value of 0x11, a green value of 0x22, a blue value of 0xAA, and an
+-- alpha value of 0xBB.
+dvbSubDestinationSettings_hexFontColor :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Text)
+dvbSubDestinationSettings_hexFontColor = Lens.lens (\DvbSubDestinationSettings' {hexFontColor} -> hexFontColor) (\s@DvbSubDestinationSettings' {} a -> s {hexFontColor = a} :: DvbSubDestinationSettings)
+
+-- | Specify font outline color. Leave Outline color (OutlineColor) blank and
+-- set Style passthrough (StylePassthrough) to enabled to use the font
+-- outline color data from your input captions, if present. Within your job
+-- settings, all of your DVB-Sub settings must be identical.
+dvbSubDestinationSettings_outlineColor :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe DvbSubtitleOutlineColor)
+dvbSubDestinationSettings_outlineColor = Lens.lens (\DvbSubDestinationSettings' {outlineColor} -> outlineColor) (\s@DvbSubDestinationSettings' {} a -> s {outlineColor = a} :: DvbSubDestinationSettings)
+
+-- | Specify the Outline size (OutlineSize) of the caption text, in pixels.
+-- Leave Outline size blank and set Style passthrough (StylePassthrough) to
+-- enabled to use the outline size data from your input captions, if
+-- present. Within your job settings, all of your DVB-Sub settings must be
+-- identical.
+dvbSubDestinationSettings_outlineSize :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Natural)
+dvbSubDestinationSettings_outlineSize = Lens.lens (\DvbSubDestinationSettings' {outlineSize} -> outlineSize) (\s@DvbSubDestinationSettings' {} a -> s {outlineSize = a} :: DvbSubDestinationSettings)
+
+-- | Specify the color of the shadow cast by the captions. Leave Shadow color
+-- (ShadowColor) blank and set Style passthrough (StylePassthrough) to
+-- enabled to use the shadow color data from your input captions, if
+-- present. Within your job settings, all of your DVB-Sub settings must be
+-- identical.
+dvbSubDestinationSettings_shadowColor :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe DvbSubtitleShadowColor)
+dvbSubDestinationSettings_shadowColor = Lens.lens (\DvbSubDestinationSettings' {shadowColor} -> shadowColor) (\s@DvbSubDestinationSettings' {} a -> s {shadowColor = a} :: DvbSubDestinationSettings)
+
+-- | Specify the opacity of the shadow. Enter a value from 0 to 255, where 0
+-- is transparent and 255 is opaque. If Style passthrough
+-- (StylePassthrough) is set to Enabled, leave Shadow opacity
+-- (ShadowOpacity) blank to pass through the shadow style information in
+-- your input captions to your output captions. If Style passthrough is set
+-- to disabled, leave blank to use a value of 0 and remove all shadows from
+-- your output captions. Within your job settings, all of your DVB-Sub
+-- settings must be identical.
+dvbSubDestinationSettings_shadowOpacity :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Natural)
+dvbSubDestinationSettings_shadowOpacity = Lens.lens (\DvbSubDestinationSettings' {shadowOpacity} -> shadowOpacity) (\s@DvbSubDestinationSettings' {} a -> s {shadowOpacity = a} :: DvbSubDestinationSettings)
+
+-- | Specify the horizontal offset of the shadow, relative to the captions in
+-- pixels. A value of -2 would result in a shadow offset 2 pixels to the
+-- left. Within your job settings, all of your DVB-Sub settings must be
+-- identical.
+dvbSubDestinationSettings_shadowXOffset :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Int)
+dvbSubDestinationSettings_shadowXOffset = Lens.lens (\DvbSubDestinationSettings' {shadowXOffset} -> shadowXOffset) (\s@DvbSubDestinationSettings' {} a -> s {shadowXOffset = a} :: DvbSubDestinationSettings)
+
+-- | Specify the vertical offset of the shadow relative to the captions in
+-- pixels. A value of -2 would result in a shadow offset 2 pixels above the
+-- text. Leave Shadow y-offset (ShadowYOffset) blank and set Style
+-- passthrough (StylePassthrough) to enabled to use the shadow y-offset
+-- data from your input captions, if present. Within your job settings, all
+-- of your DVB-Sub settings must be identical.
+dvbSubDestinationSettings_shadowYOffset :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Int)
+dvbSubDestinationSettings_shadowYOffset = Lens.lens (\DvbSubDestinationSettings' {shadowYOffset} -> shadowYOffset) (\s@DvbSubDestinationSettings' {} a -> s {shadowYOffset = a} :: DvbSubDestinationSettings)
+
+-- | Set Style passthrough (StylePassthrough) to ENABLED to use the available
+-- style, color, and position information from your input captions.
+-- MediaConvert uses default settings for any missing style and position
+-- information in your input captions. Set Style passthrough to DISABLED,
+-- or leave blank, to ignore the style and position information from your
+-- input captions and use default settings: white text with black
+-- outlining, bottom-center positioning, and automatic sizing. Whether you
+-- set Style passthrough to enabled or not, you can also choose to manually
+-- override any of the individual style and position settings.
+dvbSubDestinationSettings_stylePassthrough :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe DvbSubtitleStylePassthrough)
+dvbSubDestinationSettings_stylePassthrough = Lens.lens (\DvbSubDestinationSettings' {stylePassthrough} -> stylePassthrough) (\s@DvbSubDestinationSettings' {} a -> s {stylePassthrough = a} :: DvbSubDestinationSettings)
+
+-- | Specify whether your DVB subtitles are standard or for hearing impaired.
+-- Choose hearing impaired if your subtitles include audio descriptions and
+-- dialogue. Choose standard if your subtitles include only dialogue.
+dvbSubDestinationSettings_subtitlingType :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe DvbSubtitlingType)
+dvbSubDestinationSettings_subtitlingType = Lens.lens (\DvbSubDestinationSettings' {subtitlingType} -> subtitlingType) (\s@DvbSubDestinationSettings' {} a -> s {subtitlingType = a} :: DvbSubDestinationSettings)
+
+-- | Specify whether the Text spacing (TeletextSpacing) in your captions is
+-- set by the captions grid, or varies depending on letter width. Choose
+-- fixed grid (FIXED_GRID) to conform to the spacing specified in the
+-- captions file more accurately. Choose proportional (PROPORTIONAL) to
+-- make the text easier to read for closed captions. Within your job
+-- settings, all of your DVB-Sub settings must be identical.
+dvbSubDestinationSettings_teletextSpacing :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe DvbSubtitleTeletextSpacing)
+dvbSubDestinationSettings_teletextSpacing = Lens.lens (\DvbSubDestinationSettings' {teletextSpacing} -> teletextSpacing) (\s@DvbSubDestinationSettings' {} a -> s {teletextSpacing = a} :: DvbSubDestinationSettings)
+
+-- | Specify the width, in pixels, of this set of DVB-Sub captions. The
+-- default value is 720 pixels. Related setting: When you use this setting,
+-- you must set DDS handling (ddsHandling) to a value other than None
+-- (NONE). All burn-in and DVB-Sub font settings must match.
+dvbSubDestinationSettings_width :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Natural)
+dvbSubDestinationSettings_width = Lens.lens (\DvbSubDestinationSettings' {width} -> width) (\s@DvbSubDestinationSettings' {} a -> s {width = a} :: DvbSubDestinationSettings)
+
+-- | Specify the horizontal position (XPosition) of the captions, relative to
+-- the left side of the outputin pixels. A value of 10 would result in the
+-- captions starting 10 pixels from the left ofthe output. If no explicit
+-- x_position is provided, the horizontal caption position will
+-- bedetermined by the alignment parameter. Within your job settings, all
+-- of your DVB-Sub settings must be identical.
+dvbSubDestinationSettings_xPosition :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Natural)
+dvbSubDestinationSettings_xPosition = Lens.lens (\DvbSubDestinationSettings' {xPosition} -> xPosition) (\s@DvbSubDestinationSettings' {} a -> s {xPosition = a} :: DvbSubDestinationSettings)
+
+-- | Specify the vertical position (YPosition) of the captions, relative to
+-- the top of the output in pixels. A value of 10 would result in the
+-- captions starting 10 pixels from the top of the output. If no explicit
+-- y_position is provided, the caption will be positioned towards the
+-- bottom of the output. Within your job settings, all of your DVB-Sub
+-- settings must be identical.
+dvbSubDestinationSettings_yPosition :: Lens.Lens' DvbSubDestinationSettings (Prelude.Maybe Prelude.Natural)
+dvbSubDestinationSettings_yPosition = Lens.lens (\DvbSubDestinationSettings' {yPosition} -> yPosition) (\s@DvbSubDestinationSettings' {} a -> s {yPosition = a} :: DvbSubDestinationSettings)
+
+instance Data.FromJSON DvbSubDestinationSettings where
+  parseJSON =
+    Data.withObject
+      "DvbSubDestinationSettings"
+      ( \x ->
+          DvbSubDestinationSettings'
+            Prelude.<$> (x Data..:? "alignment")
+            Prelude.<*> (x Data..:? "applyFontColor")
+            Prelude.<*> (x Data..:? "backgroundColor")
+            Prelude.<*> (x Data..:? "backgroundOpacity")
+            Prelude.<*> (x Data..:? "ddsHandling")
+            Prelude.<*> (x Data..:? "ddsXCoordinate")
+            Prelude.<*> (x Data..:? "ddsYCoordinate")
+            Prelude.<*> (x Data..:? "fallbackFont")
+            Prelude.<*> (x Data..:? "fontColor")
+            Prelude.<*> (x Data..:? "fontOpacity")
+            Prelude.<*> (x Data..:? "fontResolution")
+            Prelude.<*> (x Data..:? "fontScript")
+            Prelude.<*> (x Data..:? "fontSize")
+            Prelude.<*> (x Data..:? "height")
+            Prelude.<*> (x Data..:? "hexFontColor")
+            Prelude.<*> (x Data..:? "outlineColor")
+            Prelude.<*> (x Data..:? "outlineSize")
+            Prelude.<*> (x Data..:? "shadowColor")
+            Prelude.<*> (x Data..:? "shadowOpacity")
+            Prelude.<*> (x Data..:? "shadowXOffset")
+            Prelude.<*> (x Data..:? "shadowYOffset")
+            Prelude.<*> (x Data..:? "stylePassthrough")
+            Prelude.<*> (x Data..:? "subtitlingType")
+            Prelude.<*> (x Data..:? "teletextSpacing")
+            Prelude.<*> (x Data..:? "width")
+            Prelude.<*> (x Data..:? "xPosition")
+            Prelude.<*> (x Data..:? "yPosition")
+      )
+
+instance Prelude.Hashable DvbSubDestinationSettings where
+  hashWithSalt _salt DvbSubDestinationSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` alignment
+      `Prelude.hashWithSalt` applyFontColor
+      `Prelude.hashWithSalt` backgroundColor
+      `Prelude.hashWithSalt` backgroundOpacity
+      `Prelude.hashWithSalt` ddsHandling
+      `Prelude.hashWithSalt` ddsXCoordinate
+      `Prelude.hashWithSalt` ddsYCoordinate
+      `Prelude.hashWithSalt` fallbackFont
+      `Prelude.hashWithSalt` fontColor
+      `Prelude.hashWithSalt` fontOpacity
+      `Prelude.hashWithSalt` fontResolution
+      `Prelude.hashWithSalt` fontScript
+      `Prelude.hashWithSalt` fontSize
+      `Prelude.hashWithSalt` height
+      `Prelude.hashWithSalt` hexFontColor
+      `Prelude.hashWithSalt` outlineColor
+      `Prelude.hashWithSalt` outlineSize
+      `Prelude.hashWithSalt` shadowColor
+      `Prelude.hashWithSalt` shadowOpacity
+      `Prelude.hashWithSalt` shadowXOffset
+      `Prelude.hashWithSalt` shadowYOffset
+      `Prelude.hashWithSalt` stylePassthrough
+      `Prelude.hashWithSalt` subtitlingType
+      `Prelude.hashWithSalt` teletextSpacing
+      `Prelude.hashWithSalt` width
+      `Prelude.hashWithSalt` xPosition
+      `Prelude.hashWithSalt` yPosition
+
+instance Prelude.NFData DvbSubDestinationSettings where
+  rnf DvbSubDestinationSettings' {..} =
+    Prelude.rnf alignment
+      `Prelude.seq` Prelude.rnf applyFontColor
+      `Prelude.seq` Prelude.rnf backgroundColor
+      `Prelude.seq` Prelude.rnf backgroundOpacity
+      `Prelude.seq` Prelude.rnf ddsHandling
+      `Prelude.seq` Prelude.rnf ddsXCoordinate
+      `Prelude.seq` Prelude.rnf ddsYCoordinate
+      `Prelude.seq` Prelude.rnf fallbackFont
+      `Prelude.seq` Prelude.rnf fontColor
+      `Prelude.seq` Prelude.rnf fontOpacity
+      `Prelude.seq` Prelude.rnf fontResolution
+      `Prelude.seq` Prelude.rnf fontScript
+      `Prelude.seq` Prelude.rnf fontSize
+      `Prelude.seq` Prelude.rnf height
+      `Prelude.seq` Prelude.rnf hexFontColor
+      `Prelude.seq` Prelude.rnf outlineColor
+      `Prelude.seq` Prelude.rnf outlineSize
+      `Prelude.seq` Prelude.rnf shadowColor
+      `Prelude.seq` Prelude.rnf shadowOpacity
+      `Prelude.seq` Prelude.rnf shadowXOffset
+      `Prelude.seq` Prelude.rnf shadowYOffset
+      `Prelude.seq` Prelude.rnf
+        stylePassthrough
+      `Prelude.seq` Prelude.rnf
+        subtitlingType
+      `Prelude.seq` Prelude.rnf
+        teletextSpacing
+      `Prelude.seq` Prelude.rnf width
+      `Prelude.seq` Prelude.rnf
+        xPosition
+      `Prelude.seq` Prelude.rnf
+        yPosition
+
+instance Data.ToJSON DvbSubDestinationSettings where
+  toJSON DvbSubDestinationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("alignment" Data..=) Prelude.<$> alignment,
+            ("applyFontColor" Data..=)
+              Prelude.<$> applyFontColor,
+            ("backgroundColor" Data..=)
+              Prelude.<$> backgroundColor,
+            ("backgroundOpacity" Data..=)
+              Prelude.<$> backgroundOpacity,
+            ("ddsHandling" Data..=) Prelude.<$> ddsHandling,
+            ("ddsXCoordinate" Data..=)
+              Prelude.<$> ddsXCoordinate,
+            ("ddsYCoordinate" Data..=)
+              Prelude.<$> ddsYCoordinate,
+            ("fallbackFont" Data..=) Prelude.<$> fallbackFont,
+            ("fontColor" Data..=) Prelude.<$> fontColor,
+            ("fontOpacity" Data..=) Prelude.<$> fontOpacity,
+            ("fontResolution" Data..=)
+              Prelude.<$> fontResolution,
+            ("fontScript" Data..=) Prelude.<$> fontScript,
+            ("fontSize" Data..=) Prelude.<$> fontSize,
+            ("height" Data..=) Prelude.<$> height,
+            ("hexFontColor" Data..=) Prelude.<$> hexFontColor,
+            ("outlineColor" Data..=) Prelude.<$> outlineColor,
+            ("outlineSize" Data..=) Prelude.<$> outlineSize,
+            ("shadowColor" Data..=) Prelude.<$> shadowColor,
+            ("shadowOpacity" Data..=) Prelude.<$> shadowOpacity,
+            ("shadowXOffset" Data..=) Prelude.<$> shadowXOffset,
+            ("shadowYOffset" Data..=) Prelude.<$> shadowYOffset,
+            ("stylePassthrough" Data..=)
+              Prelude.<$> stylePassthrough,
+            ("subtitlingType" Data..=)
+              Prelude.<$> subtitlingType,
+            ("teletextSpacing" Data..=)
+              Prelude.<$> teletextSpacing,
+            ("width" Data..=) Prelude.<$> width,
+            ("xPosition" Data..=) Prelude.<$> xPosition,
+            ("yPosition" Data..=) Prelude.<$> yPosition
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/DvbSubSourceSettings.hs b/gen/Amazonka/MediaConvert/Types/DvbSubSourceSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbSubSourceSettings.hs
@@ -0,0 +1,78 @@
+{-# 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.DvbSubSourceSettings
+-- 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.DvbSubSourceSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | DVB Sub Source Settings
+--
+-- /See:/ 'newDvbSubSourceSettings' smart constructor.
+data DvbSubSourceSettings = DvbSubSourceSettings'
+  { -- | When using DVB-Sub with Burn-In or SMPTE-TT, use this PID for the source
+    -- content. Unused for DVB-Sub passthrough. All DVB-Sub content is passed
+    -- through, regardless of selectors.
+    pid :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DvbSubSourceSettings' 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:
+--
+-- 'pid', 'dvbSubSourceSettings_pid' - When using DVB-Sub with Burn-In or SMPTE-TT, use this PID for the source
+-- content. Unused for DVB-Sub passthrough. All DVB-Sub content is passed
+-- through, regardless of selectors.
+newDvbSubSourceSettings ::
+  DvbSubSourceSettings
+newDvbSubSourceSettings =
+  DvbSubSourceSettings' {pid = Prelude.Nothing}
+
+-- | When using DVB-Sub with Burn-In or SMPTE-TT, use this PID for the source
+-- content. Unused for DVB-Sub passthrough. All DVB-Sub content is passed
+-- through, regardless of selectors.
+dvbSubSourceSettings_pid :: Lens.Lens' DvbSubSourceSettings (Prelude.Maybe Prelude.Natural)
+dvbSubSourceSettings_pid = Lens.lens (\DvbSubSourceSettings' {pid} -> pid) (\s@DvbSubSourceSettings' {} a -> s {pid = a} :: DvbSubSourceSettings)
+
+instance Data.FromJSON DvbSubSourceSettings where
+  parseJSON =
+    Data.withObject
+      "DvbSubSourceSettings"
+      ( \x ->
+          DvbSubSourceSettings' Prelude.<$> (x Data..:? "pid")
+      )
+
+instance Prelude.Hashable DvbSubSourceSettings where
+  hashWithSalt _salt DvbSubSourceSettings' {..} =
+    _salt `Prelude.hashWithSalt` pid
+
+instance Prelude.NFData DvbSubSourceSettings where
+  rnf DvbSubSourceSettings' {..} = Prelude.rnf pid
+
+instance Data.ToJSON DvbSubSourceSettings where
+  toJSON DvbSubSourceSettings' {..} =
+    Data.object
+      (Prelude.catMaybes [("pid" Data..=) Prelude.<$> pid])
diff --git a/gen/Amazonka/MediaConvert/Types/DvbSubSubtitleFallbackFont.hs b/gen/Amazonka/MediaConvert/Types/DvbSubSubtitleFallbackFont.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbSubSubtitleFallbackFont.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DvbSubSubtitleFallbackFont
+-- 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.DvbSubSubtitleFallbackFont
+  ( DvbSubSubtitleFallbackFont
+      ( ..,
+        DvbSubSubtitleFallbackFont_BEST_MATCH,
+        DvbSubSubtitleFallbackFont_MONOSPACED_SANSSERIF,
+        DvbSubSubtitleFallbackFont_MONOSPACED_SERIF,
+        DvbSubSubtitleFallbackFont_PROPORTIONAL_SANSSERIF,
+        DvbSubSubtitleFallbackFont_PROPORTIONAL_SERIF
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the font that you want the service to use for your burn in
+-- captions when your input captions specify a font that MediaConvert
+-- doesn\'t support. When you set Fallback font (FallbackFont) to best
+-- match (BEST_MATCH), or leave blank, MediaConvert uses a supported font
+-- that most closely matches the font that your input captions specify.
+-- When there are multiple unsupported fonts in your input captions,
+-- MediaConvert matches each font with the supported font that matches
+-- best. When you explicitly choose a replacement font, MediaConvert uses
+-- that font to replace all unsupported fonts from your input.
+newtype DvbSubSubtitleFallbackFont = DvbSubSubtitleFallbackFont'
+  { fromDvbSubSubtitleFallbackFont ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DvbSubSubtitleFallbackFont_BEST_MATCH :: DvbSubSubtitleFallbackFont
+pattern DvbSubSubtitleFallbackFont_BEST_MATCH = DvbSubSubtitleFallbackFont' "BEST_MATCH"
+
+pattern DvbSubSubtitleFallbackFont_MONOSPACED_SANSSERIF :: DvbSubSubtitleFallbackFont
+pattern DvbSubSubtitleFallbackFont_MONOSPACED_SANSSERIF = DvbSubSubtitleFallbackFont' "MONOSPACED_SANSSERIF"
+
+pattern DvbSubSubtitleFallbackFont_MONOSPACED_SERIF :: DvbSubSubtitleFallbackFont
+pattern DvbSubSubtitleFallbackFont_MONOSPACED_SERIF = DvbSubSubtitleFallbackFont' "MONOSPACED_SERIF"
+
+pattern DvbSubSubtitleFallbackFont_PROPORTIONAL_SANSSERIF :: DvbSubSubtitleFallbackFont
+pattern DvbSubSubtitleFallbackFont_PROPORTIONAL_SANSSERIF = DvbSubSubtitleFallbackFont' "PROPORTIONAL_SANSSERIF"
+
+pattern DvbSubSubtitleFallbackFont_PROPORTIONAL_SERIF :: DvbSubSubtitleFallbackFont
+pattern DvbSubSubtitleFallbackFont_PROPORTIONAL_SERIF = DvbSubSubtitleFallbackFont' "PROPORTIONAL_SERIF"
+
+{-# COMPLETE
+  DvbSubSubtitleFallbackFont_BEST_MATCH,
+  DvbSubSubtitleFallbackFont_MONOSPACED_SANSSERIF,
+  DvbSubSubtitleFallbackFont_MONOSPACED_SERIF,
+  DvbSubSubtitleFallbackFont_PROPORTIONAL_SANSSERIF,
+  DvbSubSubtitleFallbackFont_PROPORTIONAL_SERIF,
+  DvbSubSubtitleFallbackFont'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DvbSubtitleAlignment.hs b/gen/Amazonka/MediaConvert/Types/DvbSubtitleAlignment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbSubtitleAlignment.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DvbSubtitleAlignment
+-- 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.DvbSubtitleAlignment
+  ( DvbSubtitleAlignment
+      ( ..,
+        DvbSubtitleAlignment_AUTO,
+        DvbSubtitleAlignment_CENTERED,
+        DvbSubtitleAlignment_LEFT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the alignment of your captions. If no explicit x_position is
+-- provided, setting alignment to centered will placethe captions at the
+-- bottom center of the output. Similarly, setting a left alignment
+-- willalign captions to the bottom left of the output. If x and y
+-- positions are given in conjunction with the alignment parameter, the
+-- font will be justified (either left or centered) relative to those
+-- coordinates. Within your job settings, all of your DVB-Sub settings must
+-- be identical.
+newtype DvbSubtitleAlignment = DvbSubtitleAlignment'
+  { fromDvbSubtitleAlignment ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DvbSubtitleAlignment_AUTO :: DvbSubtitleAlignment
+pattern DvbSubtitleAlignment_AUTO = DvbSubtitleAlignment' "AUTO"
+
+pattern DvbSubtitleAlignment_CENTERED :: DvbSubtitleAlignment
+pattern DvbSubtitleAlignment_CENTERED = DvbSubtitleAlignment' "CENTERED"
+
+pattern DvbSubtitleAlignment_LEFT :: DvbSubtitleAlignment
+pattern DvbSubtitleAlignment_LEFT = DvbSubtitleAlignment' "LEFT"
+
+{-# COMPLETE
+  DvbSubtitleAlignment_AUTO,
+  DvbSubtitleAlignment_CENTERED,
+  DvbSubtitleAlignment_LEFT,
+  DvbSubtitleAlignment'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DvbSubtitleApplyFontColor.hs b/gen/Amazonka/MediaConvert/Types/DvbSubtitleApplyFontColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbSubtitleApplyFontColor.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DvbSubtitleApplyFontColor
+-- 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.DvbSubtitleApplyFontColor
+  ( DvbSubtitleApplyFontColor
+      ( ..,
+        DvbSubtitleApplyFontColor_ALL_TEXT,
+        DvbSubtitleApplyFontColor_WHITE_TEXT_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless Style Passthrough (StylePassthrough) is set
+-- to Enabled and Font color (FontColor) set to Black, Yellow, Red, Green,
+-- Blue, or Hex. Use Apply font color (ApplyFontColor) for additional font
+-- color controls. When you choose White text only (WHITE_TEXT_ONLY), or
+-- leave blank, your font color setting only applies to white text in your
+-- input captions. For example, if your font color setting is Yellow, and
+-- your input captions have red and white text, your output captions will
+-- have red and yellow text. When you choose ALL_TEXT, your font color
+-- setting applies to all of your output captions text.
+newtype DvbSubtitleApplyFontColor = DvbSubtitleApplyFontColor'
+  { fromDvbSubtitleApplyFontColor ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DvbSubtitleApplyFontColor_ALL_TEXT :: DvbSubtitleApplyFontColor
+pattern DvbSubtitleApplyFontColor_ALL_TEXT = DvbSubtitleApplyFontColor' "ALL_TEXT"
+
+pattern DvbSubtitleApplyFontColor_WHITE_TEXT_ONLY :: DvbSubtitleApplyFontColor
+pattern DvbSubtitleApplyFontColor_WHITE_TEXT_ONLY = DvbSubtitleApplyFontColor' "WHITE_TEXT_ONLY"
+
+{-# COMPLETE
+  DvbSubtitleApplyFontColor_ALL_TEXT,
+  DvbSubtitleApplyFontColor_WHITE_TEXT_ONLY,
+  DvbSubtitleApplyFontColor'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DvbSubtitleBackgroundColor.hs b/gen/Amazonka/MediaConvert/Types/DvbSubtitleBackgroundColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbSubtitleBackgroundColor.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DvbSubtitleBackgroundColor
+-- 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.DvbSubtitleBackgroundColor
+  ( DvbSubtitleBackgroundColor
+      ( ..,
+        DvbSubtitleBackgroundColor_AUTO,
+        DvbSubtitleBackgroundColor_BLACK,
+        DvbSubtitleBackgroundColor_NONE,
+        DvbSubtitleBackgroundColor_WHITE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the color of the rectangle behind the captions. Leave background
+-- color (BackgroundColor) blank and set Style passthrough
+-- (StylePassthrough) to enabled to use the background color data from your
+-- input captions, if present.
+newtype DvbSubtitleBackgroundColor = DvbSubtitleBackgroundColor'
+  { fromDvbSubtitleBackgroundColor ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DvbSubtitleBackgroundColor_AUTO :: DvbSubtitleBackgroundColor
+pattern DvbSubtitleBackgroundColor_AUTO = DvbSubtitleBackgroundColor' "AUTO"
+
+pattern DvbSubtitleBackgroundColor_BLACK :: DvbSubtitleBackgroundColor
+pattern DvbSubtitleBackgroundColor_BLACK = DvbSubtitleBackgroundColor' "BLACK"
+
+pattern DvbSubtitleBackgroundColor_NONE :: DvbSubtitleBackgroundColor
+pattern DvbSubtitleBackgroundColor_NONE = DvbSubtitleBackgroundColor' "NONE"
+
+pattern DvbSubtitleBackgroundColor_WHITE :: DvbSubtitleBackgroundColor
+pattern DvbSubtitleBackgroundColor_WHITE = DvbSubtitleBackgroundColor' "WHITE"
+
+{-# COMPLETE
+  DvbSubtitleBackgroundColor_AUTO,
+  DvbSubtitleBackgroundColor_BLACK,
+  DvbSubtitleBackgroundColor_NONE,
+  DvbSubtitleBackgroundColor_WHITE,
+  DvbSubtitleBackgroundColor'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DvbSubtitleFontColor.hs b/gen/Amazonka/MediaConvert/Types/DvbSubtitleFontColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbSubtitleFontColor.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DvbSubtitleFontColor
+-- 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.DvbSubtitleFontColor
+  ( DvbSubtitleFontColor
+      ( ..,
+        DvbSubtitleFontColor_AUTO,
+        DvbSubtitleFontColor_BLACK,
+        DvbSubtitleFontColor_BLUE,
+        DvbSubtitleFontColor_GREEN,
+        DvbSubtitleFontColor_HEX,
+        DvbSubtitleFontColor_RED,
+        DvbSubtitleFontColor_WHITE,
+        DvbSubtitleFontColor_YELLOW
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the color of the captions text. Leave Font color (FontColor)
+-- blank and set Style passthrough (StylePassthrough) to enabled to use the
+-- font color data from your input captions, if present. Within your job
+-- settings, all of your DVB-Sub settings must be identical.
+newtype DvbSubtitleFontColor = DvbSubtitleFontColor'
+  { fromDvbSubtitleFontColor ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DvbSubtitleFontColor_AUTO :: DvbSubtitleFontColor
+pattern DvbSubtitleFontColor_AUTO = DvbSubtitleFontColor' "AUTO"
+
+pattern DvbSubtitleFontColor_BLACK :: DvbSubtitleFontColor
+pattern DvbSubtitleFontColor_BLACK = DvbSubtitleFontColor' "BLACK"
+
+pattern DvbSubtitleFontColor_BLUE :: DvbSubtitleFontColor
+pattern DvbSubtitleFontColor_BLUE = DvbSubtitleFontColor' "BLUE"
+
+pattern DvbSubtitleFontColor_GREEN :: DvbSubtitleFontColor
+pattern DvbSubtitleFontColor_GREEN = DvbSubtitleFontColor' "GREEN"
+
+pattern DvbSubtitleFontColor_HEX :: DvbSubtitleFontColor
+pattern DvbSubtitleFontColor_HEX = DvbSubtitleFontColor' "HEX"
+
+pattern DvbSubtitleFontColor_RED :: DvbSubtitleFontColor
+pattern DvbSubtitleFontColor_RED = DvbSubtitleFontColor' "RED"
+
+pattern DvbSubtitleFontColor_WHITE :: DvbSubtitleFontColor
+pattern DvbSubtitleFontColor_WHITE = DvbSubtitleFontColor' "WHITE"
+
+pattern DvbSubtitleFontColor_YELLOW :: DvbSubtitleFontColor
+pattern DvbSubtitleFontColor_YELLOW = DvbSubtitleFontColor' "YELLOW"
+
+{-# COMPLETE
+  DvbSubtitleFontColor_AUTO,
+  DvbSubtitleFontColor_BLACK,
+  DvbSubtitleFontColor_BLUE,
+  DvbSubtitleFontColor_GREEN,
+  DvbSubtitleFontColor_HEX,
+  DvbSubtitleFontColor_RED,
+  DvbSubtitleFontColor_WHITE,
+  DvbSubtitleFontColor_YELLOW,
+  DvbSubtitleFontColor'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DvbSubtitleOutlineColor.hs b/gen/Amazonka/MediaConvert/Types/DvbSubtitleOutlineColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbSubtitleOutlineColor.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DvbSubtitleOutlineColor
+-- 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.DvbSubtitleOutlineColor
+  ( DvbSubtitleOutlineColor
+      ( ..,
+        DvbSubtitleOutlineColor_AUTO,
+        DvbSubtitleOutlineColor_BLACK,
+        DvbSubtitleOutlineColor_BLUE,
+        DvbSubtitleOutlineColor_GREEN,
+        DvbSubtitleOutlineColor_RED,
+        DvbSubtitleOutlineColor_WHITE,
+        DvbSubtitleOutlineColor_YELLOW
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify font outline color. Leave Outline color (OutlineColor) blank and
+-- set Style passthrough (StylePassthrough) to enabled to use the font
+-- outline color data from your input captions, if present. Within your job
+-- settings, all of your DVB-Sub settings must be identical.
+newtype DvbSubtitleOutlineColor = DvbSubtitleOutlineColor'
+  { fromDvbSubtitleOutlineColor ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DvbSubtitleOutlineColor_AUTO :: DvbSubtitleOutlineColor
+pattern DvbSubtitleOutlineColor_AUTO = DvbSubtitleOutlineColor' "AUTO"
+
+pattern DvbSubtitleOutlineColor_BLACK :: DvbSubtitleOutlineColor
+pattern DvbSubtitleOutlineColor_BLACK = DvbSubtitleOutlineColor' "BLACK"
+
+pattern DvbSubtitleOutlineColor_BLUE :: DvbSubtitleOutlineColor
+pattern DvbSubtitleOutlineColor_BLUE = DvbSubtitleOutlineColor' "BLUE"
+
+pattern DvbSubtitleOutlineColor_GREEN :: DvbSubtitleOutlineColor
+pattern DvbSubtitleOutlineColor_GREEN = DvbSubtitleOutlineColor' "GREEN"
+
+pattern DvbSubtitleOutlineColor_RED :: DvbSubtitleOutlineColor
+pattern DvbSubtitleOutlineColor_RED = DvbSubtitleOutlineColor' "RED"
+
+pattern DvbSubtitleOutlineColor_WHITE :: DvbSubtitleOutlineColor
+pattern DvbSubtitleOutlineColor_WHITE = DvbSubtitleOutlineColor' "WHITE"
+
+pattern DvbSubtitleOutlineColor_YELLOW :: DvbSubtitleOutlineColor
+pattern DvbSubtitleOutlineColor_YELLOW = DvbSubtitleOutlineColor' "YELLOW"
+
+{-# COMPLETE
+  DvbSubtitleOutlineColor_AUTO,
+  DvbSubtitleOutlineColor_BLACK,
+  DvbSubtitleOutlineColor_BLUE,
+  DvbSubtitleOutlineColor_GREEN,
+  DvbSubtitleOutlineColor_RED,
+  DvbSubtitleOutlineColor_WHITE,
+  DvbSubtitleOutlineColor_YELLOW,
+  DvbSubtitleOutlineColor'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DvbSubtitleShadowColor.hs b/gen/Amazonka/MediaConvert/Types/DvbSubtitleShadowColor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbSubtitleShadowColor.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DvbSubtitleShadowColor
+-- 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.DvbSubtitleShadowColor
+  ( DvbSubtitleShadowColor
+      ( ..,
+        DvbSubtitleShadowColor_AUTO,
+        DvbSubtitleShadowColor_BLACK,
+        DvbSubtitleShadowColor_NONE,
+        DvbSubtitleShadowColor_WHITE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the color of the shadow cast by the captions. Leave Shadow color
+-- (ShadowColor) blank and set Style passthrough (StylePassthrough) to
+-- enabled to use the shadow color data from your input captions, if
+-- present. Within your job settings, all of your DVB-Sub settings must be
+-- identical.
+newtype DvbSubtitleShadowColor = DvbSubtitleShadowColor'
+  { fromDvbSubtitleShadowColor ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DvbSubtitleShadowColor_AUTO :: DvbSubtitleShadowColor
+pattern DvbSubtitleShadowColor_AUTO = DvbSubtitleShadowColor' "AUTO"
+
+pattern DvbSubtitleShadowColor_BLACK :: DvbSubtitleShadowColor
+pattern DvbSubtitleShadowColor_BLACK = DvbSubtitleShadowColor' "BLACK"
+
+pattern DvbSubtitleShadowColor_NONE :: DvbSubtitleShadowColor
+pattern DvbSubtitleShadowColor_NONE = DvbSubtitleShadowColor' "NONE"
+
+pattern DvbSubtitleShadowColor_WHITE :: DvbSubtitleShadowColor
+pattern DvbSubtitleShadowColor_WHITE = DvbSubtitleShadowColor' "WHITE"
+
+{-# COMPLETE
+  DvbSubtitleShadowColor_AUTO,
+  DvbSubtitleShadowColor_BLACK,
+  DvbSubtitleShadowColor_NONE,
+  DvbSubtitleShadowColor_WHITE,
+  DvbSubtitleShadowColor'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DvbSubtitleStylePassthrough.hs b/gen/Amazonka/MediaConvert/Types/DvbSubtitleStylePassthrough.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbSubtitleStylePassthrough.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DvbSubtitleStylePassthrough
+-- 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.DvbSubtitleStylePassthrough
+  ( DvbSubtitleStylePassthrough
+      ( ..,
+        DvbSubtitleStylePassthrough_DISABLED,
+        DvbSubtitleStylePassthrough_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Set Style passthrough (StylePassthrough) to ENABLED to use the available
+-- style, color, and position information from your input captions.
+-- MediaConvert uses default settings for any missing style and position
+-- information in your input captions. Set Style passthrough to DISABLED,
+-- or leave blank, to ignore the style and position information from your
+-- input captions and use default settings: white text with black
+-- outlining, bottom-center positioning, and automatic sizing. Whether you
+-- set Style passthrough to enabled or not, you can also choose to manually
+-- override any of the individual style and position settings.
+newtype DvbSubtitleStylePassthrough = DvbSubtitleStylePassthrough'
+  { fromDvbSubtitleStylePassthrough ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DvbSubtitleStylePassthrough_DISABLED :: DvbSubtitleStylePassthrough
+pattern DvbSubtitleStylePassthrough_DISABLED = DvbSubtitleStylePassthrough' "DISABLED"
+
+pattern DvbSubtitleStylePassthrough_ENABLED :: DvbSubtitleStylePassthrough
+pattern DvbSubtitleStylePassthrough_ENABLED = DvbSubtitleStylePassthrough' "ENABLED"
+
+{-# COMPLETE
+  DvbSubtitleStylePassthrough_DISABLED,
+  DvbSubtitleStylePassthrough_ENABLED,
+  DvbSubtitleStylePassthrough'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DvbSubtitleTeletextSpacing.hs b/gen/Amazonka/MediaConvert/Types/DvbSubtitleTeletextSpacing.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbSubtitleTeletextSpacing.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DvbSubtitleTeletextSpacing
+-- 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.DvbSubtitleTeletextSpacing
+  ( DvbSubtitleTeletextSpacing
+      ( ..,
+        DvbSubtitleTeletextSpacing_AUTO,
+        DvbSubtitleTeletextSpacing_FIXED_GRID,
+        DvbSubtitleTeletextSpacing_PROPORTIONAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether the Text spacing (TeletextSpacing) in your captions is
+-- set by the captions grid, or varies depending on letter width. Choose
+-- fixed grid (FIXED_GRID) to conform to the spacing specified in the
+-- captions file more accurately. Choose proportional (PROPORTIONAL) to
+-- make the text easier to read for closed captions. Within your job
+-- settings, all of your DVB-Sub settings must be identical.
+newtype DvbSubtitleTeletextSpacing = DvbSubtitleTeletextSpacing'
+  { fromDvbSubtitleTeletextSpacing ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DvbSubtitleTeletextSpacing_AUTO :: DvbSubtitleTeletextSpacing
+pattern DvbSubtitleTeletextSpacing_AUTO = DvbSubtitleTeletextSpacing' "AUTO"
+
+pattern DvbSubtitleTeletextSpacing_FIXED_GRID :: DvbSubtitleTeletextSpacing
+pattern DvbSubtitleTeletextSpacing_FIXED_GRID = DvbSubtitleTeletextSpacing' "FIXED_GRID"
+
+pattern DvbSubtitleTeletextSpacing_PROPORTIONAL :: DvbSubtitleTeletextSpacing
+pattern DvbSubtitleTeletextSpacing_PROPORTIONAL = DvbSubtitleTeletextSpacing' "PROPORTIONAL"
+
+{-# COMPLETE
+  DvbSubtitleTeletextSpacing_AUTO,
+  DvbSubtitleTeletextSpacing_FIXED_GRID,
+  DvbSubtitleTeletextSpacing_PROPORTIONAL,
+  DvbSubtitleTeletextSpacing'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DvbSubtitlingType.hs b/gen/Amazonka/MediaConvert/Types/DvbSubtitlingType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbSubtitlingType.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DvbSubtitlingType
+-- 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.DvbSubtitlingType
+  ( DvbSubtitlingType
+      ( ..,
+        DvbSubtitlingType_HEARING_IMPAIRED,
+        DvbSubtitlingType_STANDARD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether your DVB subtitles are standard or for hearing impaired.
+-- Choose hearing impaired if your subtitles include audio descriptions and
+-- dialogue. Choose standard if your subtitles include only dialogue.
+newtype DvbSubtitlingType = DvbSubtitlingType'
+  { fromDvbSubtitlingType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DvbSubtitlingType_HEARING_IMPAIRED :: DvbSubtitlingType
+pattern DvbSubtitlingType_HEARING_IMPAIRED = DvbSubtitlingType' "HEARING_IMPAIRED"
+
+pattern DvbSubtitlingType_STANDARD :: DvbSubtitlingType
+pattern DvbSubtitlingType_STANDARD = DvbSubtitlingType' "STANDARD"
+
+{-# COMPLETE
+  DvbSubtitlingType_HEARING_IMPAIRED,
+  DvbSubtitlingType_STANDARD,
+  DvbSubtitlingType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/DvbTdtSettings.hs b/gen/Amazonka/MediaConvert/Types/DvbTdtSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbTdtSettings.hs
@@ -0,0 +1,82 @@
+{-# 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.DvbTdtSettings
+-- 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.DvbTdtSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use these settings to insert a DVB Time and Date Table (TDT) in the
+-- transport stream of this output. When you work directly in your JSON job
+-- specification, include this object only when your job has a transport
+-- stream output and the container settings contain the object
+-- M2tsSettings.
+--
+-- /See:/ 'newDvbTdtSettings' smart constructor.
+data DvbTdtSettings = DvbTdtSettings'
+  { -- | The number of milliseconds between instances of this table in the output
+    -- transport stream.
+    tdtInterval :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DvbTdtSettings' 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:
+--
+-- 'tdtInterval', 'dvbTdtSettings_tdtInterval' - The number of milliseconds between instances of this table in the output
+-- transport stream.
+newDvbTdtSettings ::
+  DvbTdtSettings
+newDvbTdtSettings =
+  DvbTdtSettings' {tdtInterval = Prelude.Nothing}
+
+-- | The number of milliseconds between instances of this table in the output
+-- transport stream.
+dvbTdtSettings_tdtInterval :: Lens.Lens' DvbTdtSettings (Prelude.Maybe Prelude.Natural)
+dvbTdtSettings_tdtInterval = Lens.lens (\DvbTdtSettings' {tdtInterval} -> tdtInterval) (\s@DvbTdtSettings' {} a -> s {tdtInterval = a} :: DvbTdtSettings)
+
+instance Data.FromJSON DvbTdtSettings where
+  parseJSON =
+    Data.withObject
+      "DvbTdtSettings"
+      ( \x ->
+          DvbTdtSettings'
+            Prelude.<$> (x Data..:? "tdtInterval")
+      )
+
+instance Prelude.Hashable DvbTdtSettings where
+  hashWithSalt _salt DvbTdtSettings' {..} =
+    _salt `Prelude.hashWithSalt` tdtInterval
+
+instance Prelude.NFData DvbTdtSettings where
+  rnf DvbTdtSettings' {..} = Prelude.rnf tdtInterval
+
+instance Data.ToJSON DvbTdtSettings where
+  toJSON DvbTdtSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("tdtInterval" Data..=) Prelude.<$> tdtInterval]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/DvbddsHandling.hs b/gen/Amazonka/MediaConvert/Types/DvbddsHandling.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/DvbddsHandling.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.DvbddsHandling
+-- 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.DvbddsHandling
+  ( DvbddsHandling
+      ( ..,
+        DvbddsHandling_NONE,
+        DvbddsHandling_NO_DISPLAY_WINDOW,
+        DvbddsHandling_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify how MediaConvert handles the display definition segment (DDS).
+-- Keep the default, None (NONE), to exclude the DDS from this set of
+-- captions. Choose No display window (NO_DISPLAY_WINDOW) to have
+-- MediaConvert include the DDS but not include display window data. In
+-- this case, MediaConvert writes that information to the page composition
+-- segment (PCS) instead. Choose Specify (SPECIFIED) to have MediaConvert
+-- set up the display window based on the values that you specify in
+-- related job settings. For video resolutions that are 576 pixels or
+-- smaller in height, MediaConvert doesn\'t include the DDS, regardless of
+-- the value you choose for DDS handling (ddsHandling). In this case, it
+-- doesn\'t write the display window data to the PCS either. Related
+-- settings: Use the settings DDS x-coordinate (ddsXCoordinate) and DDS
+-- y-coordinate (ddsYCoordinate) to specify the offset between the top left
+-- corner of the display window and the top left corner of the video frame.
+-- All burn-in and DVB-Sub font settings must match.
+newtype DvbddsHandling = DvbddsHandling'
+  { fromDvbddsHandling ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DvbddsHandling_NONE :: DvbddsHandling
+pattern DvbddsHandling_NONE = DvbddsHandling' "NONE"
+
+pattern DvbddsHandling_NO_DISPLAY_WINDOW :: DvbddsHandling
+pattern DvbddsHandling_NO_DISPLAY_WINDOW = DvbddsHandling' "NO_DISPLAY_WINDOW"
+
+pattern DvbddsHandling_SPECIFIED :: DvbddsHandling
+pattern DvbddsHandling_SPECIFIED = DvbddsHandling' "SPECIFIED"
+
+{-# COMPLETE
+  DvbddsHandling_NONE,
+  DvbddsHandling_NO_DISPLAY_WINDOW,
+  DvbddsHandling_SPECIFIED,
+  DvbddsHandling'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3AtmosBitstreamMode.hs b/gen/Amazonka/MediaConvert/Types/Eac3AtmosBitstreamMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3AtmosBitstreamMode.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3AtmosBitstreamMode
+-- 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.Eac3AtmosBitstreamMode
+  ( Eac3AtmosBitstreamMode
+      ( ..,
+        Eac3AtmosBitstreamMode_COMPLETE_MAIN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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).
+newtype Eac3AtmosBitstreamMode = Eac3AtmosBitstreamMode'
+  { fromEac3AtmosBitstreamMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3AtmosBitstreamMode_COMPLETE_MAIN :: Eac3AtmosBitstreamMode
+pattern Eac3AtmosBitstreamMode_COMPLETE_MAIN = Eac3AtmosBitstreamMode' "COMPLETE_MAIN"
+
+{-# COMPLETE
+  Eac3AtmosBitstreamMode_COMPLETE_MAIN,
+  Eac3AtmosBitstreamMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3AtmosCodingMode.hs b/gen/Amazonka/MediaConvert/Types/Eac3AtmosCodingMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3AtmosCodingMode.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3AtmosCodingMode
+-- 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.Eac3AtmosCodingMode
+  ( Eac3AtmosCodingMode
+      ( ..,
+        Eac3AtmosCodingMode_CODING_MODE_5_1_4,
+        Eac3AtmosCodingMode_CODING_MODE_7_1_4,
+        Eac3AtmosCodingMode_CODING_MODE_9_1_6,
+        Eac3AtmosCodingMode_CODING_MODE_AUTO
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The coding mode for Dolby Digital Plus JOC (Atmos).
+newtype Eac3AtmosCodingMode = Eac3AtmosCodingMode'
+  { fromEac3AtmosCodingMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3AtmosCodingMode_CODING_MODE_5_1_4 :: Eac3AtmosCodingMode
+pattern Eac3AtmosCodingMode_CODING_MODE_5_1_4 = Eac3AtmosCodingMode' "CODING_MODE_5_1_4"
+
+pattern Eac3AtmosCodingMode_CODING_MODE_7_1_4 :: Eac3AtmosCodingMode
+pattern Eac3AtmosCodingMode_CODING_MODE_7_1_4 = Eac3AtmosCodingMode' "CODING_MODE_7_1_4"
+
+pattern Eac3AtmosCodingMode_CODING_MODE_9_1_6 :: Eac3AtmosCodingMode
+pattern Eac3AtmosCodingMode_CODING_MODE_9_1_6 = Eac3AtmosCodingMode' "CODING_MODE_9_1_6"
+
+pattern Eac3AtmosCodingMode_CODING_MODE_AUTO :: Eac3AtmosCodingMode
+pattern Eac3AtmosCodingMode_CODING_MODE_AUTO = Eac3AtmosCodingMode' "CODING_MODE_AUTO"
+
+{-# COMPLETE
+  Eac3AtmosCodingMode_CODING_MODE_5_1_4,
+  Eac3AtmosCodingMode_CODING_MODE_7_1_4,
+  Eac3AtmosCodingMode_CODING_MODE_9_1_6,
+  Eac3AtmosCodingMode_CODING_MODE_AUTO,
+  Eac3AtmosCodingMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3AtmosDialogueIntelligence.hs b/gen/Amazonka/MediaConvert/Types/Eac3AtmosDialogueIntelligence.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3AtmosDialogueIntelligence.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3AtmosDialogueIntelligence
+-- 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.Eac3AtmosDialogueIntelligence
+  ( Eac3AtmosDialogueIntelligence
+      ( ..,
+        Eac3AtmosDialogueIntelligence_DISABLED,
+        Eac3AtmosDialogueIntelligence_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enable Dolby Dialogue Intelligence to adjust loudness based on dialogue
+-- analysis.
+newtype Eac3AtmosDialogueIntelligence = Eac3AtmosDialogueIntelligence'
+  { fromEac3AtmosDialogueIntelligence ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3AtmosDialogueIntelligence_DISABLED :: Eac3AtmosDialogueIntelligence
+pattern Eac3AtmosDialogueIntelligence_DISABLED = Eac3AtmosDialogueIntelligence' "DISABLED"
+
+pattern Eac3AtmosDialogueIntelligence_ENABLED :: Eac3AtmosDialogueIntelligence
+pattern Eac3AtmosDialogueIntelligence_ENABLED = Eac3AtmosDialogueIntelligence' "ENABLED"
+
+{-# COMPLETE
+  Eac3AtmosDialogueIntelligence_DISABLED,
+  Eac3AtmosDialogueIntelligence_ENABLED,
+  Eac3AtmosDialogueIntelligence'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3AtmosDownmixControl.hs b/gen/Amazonka/MediaConvert/Types/Eac3AtmosDownmixControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3AtmosDownmixControl.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3AtmosDownmixControl
+-- 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.Eac3AtmosDownmixControl
+  ( Eac3AtmosDownmixControl
+      ( ..,
+        Eac3AtmosDownmixControl_INITIALIZE_FROM_SOURCE,
+        Eac3AtmosDownmixControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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.
+newtype Eac3AtmosDownmixControl = Eac3AtmosDownmixControl'
+  { fromEac3AtmosDownmixControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3AtmosDownmixControl_INITIALIZE_FROM_SOURCE :: Eac3AtmosDownmixControl
+pattern Eac3AtmosDownmixControl_INITIALIZE_FROM_SOURCE = Eac3AtmosDownmixControl' "INITIALIZE_FROM_SOURCE"
+
+pattern Eac3AtmosDownmixControl_SPECIFIED :: Eac3AtmosDownmixControl
+pattern Eac3AtmosDownmixControl_SPECIFIED = Eac3AtmosDownmixControl' "SPECIFIED"
+
+{-# COMPLETE
+  Eac3AtmosDownmixControl_INITIALIZE_FROM_SOURCE,
+  Eac3AtmosDownmixControl_SPECIFIED,
+  Eac3AtmosDownmixControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3AtmosDynamicRangeCompressionLine.hs b/gen/Amazonka/MediaConvert/Types/Eac3AtmosDynamicRangeCompressionLine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3AtmosDynamicRangeCompressionLine.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3AtmosDynamicRangeCompressionLine
+-- 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.Eac3AtmosDynamicRangeCompressionLine
+  ( Eac3AtmosDynamicRangeCompressionLine
+      ( ..,
+        Eac3AtmosDynamicRangeCompressionLine_FILM_LIGHT,
+        Eac3AtmosDynamicRangeCompressionLine_FILM_STANDARD,
+        Eac3AtmosDynamicRangeCompressionLine_MUSIC_LIGHT,
+        Eac3AtmosDynamicRangeCompressionLine_MUSIC_STANDARD,
+        Eac3AtmosDynamicRangeCompressionLine_NONE,
+        Eac3AtmosDynamicRangeCompressionLine_SPEECH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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.
+newtype Eac3AtmosDynamicRangeCompressionLine = Eac3AtmosDynamicRangeCompressionLine'
+  { fromEac3AtmosDynamicRangeCompressionLine ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3AtmosDynamicRangeCompressionLine_FILM_LIGHT :: Eac3AtmosDynamicRangeCompressionLine
+pattern Eac3AtmosDynamicRangeCompressionLine_FILM_LIGHT = Eac3AtmosDynamicRangeCompressionLine' "FILM_LIGHT"
+
+pattern Eac3AtmosDynamicRangeCompressionLine_FILM_STANDARD :: Eac3AtmosDynamicRangeCompressionLine
+pattern Eac3AtmosDynamicRangeCompressionLine_FILM_STANDARD = Eac3AtmosDynamicRangeCompressionLine' "FILM_STANDARD"
+
+pattern Eac3AtmosDynamicRangeCompressionLine_MUSIC_LIGHT :: Eac3AtmosDynamicRangeCompressionLine
+pattern Eac3AtmosDynamicRangeCompressionLine_MUSIC_LIGHT = Eac3AtmosDynamicRangeCompressionLine' "MUSIC_LIGHT"
+
+pattern Eac3AtmosDynamicRangeCompressionLine_MUSIC_STANDARD :: Eac3AtmosDynamicRangeCompressionLine
+pattern Eac3AtmosDynamicRangeCompressionLine_MUSIC_STANDARD = Eac3AtmosDynamicRangeCompressionLine' "MUSIC_STANDARD"
+
+pattern Eac3AtmosDynamicRangeCompressionLine_NONE :: Eac3AtmosDynamicRangeCompressionLine
+pattern Eac3AtmosDynamicRangeCompressionLine_NONE = Eac3AtmosDynamicRangeCompressionLine' "NONE"
+
+pattern Eac3AtmosDynamicRangeCompressionLine_SPEECH :: Eac3AtmosDynamicRangeCompressionLine
+pattern Eac3AtmosDynamicRangeCompressionLine_SPEECH = Eac3AtmosDynamicRangeCompressionLine' "SPEECH"
+
+{-# COMPLETE
+  Eac3AtmosDynamicRangeCompressionLine_FILM_LIGHT,
+  Eac3AtmosDynamicRangeCompressionLine_FILM_STANDARD,
+  Eac3AtmosDynamicRangeCompressionLine_MUSIC_LIGHT,
+  Eac3AtmosDynamicRangeCompressionLine_MUSIC_STANDARD,
+  Eac3AtmosDynamicRangeCompressionLine_NONE,
+  Eac3AtmosDynamicRangeCompressionLine_SPEECH,
+  Eac3AtmosDynamicRangeCompressionLine'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3AtmosDynamicRangeCompressionRf.hs b/gen/Amazonka/MediaConvert/Types/Eac3AtmosDynamicRangeCompressionRf.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3AtmosDynamicRangeCompressionRf.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3AtmosDynamicRangeCompressionRf
+-- 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.Eac3AtmosDynamicRangeCompressionRf
+  ( Eac3AtmosDynamicRangeCompressionRf
+      ( ..,
+        Eac3AtmosDynamicRangeCompressionRf_FILM_LIGHT,
+        Eac3AtmosDynamicRangeCompressionRf_FILM_STANDARD,
+        Eac3AtmosDynamicRangeCompressionRf_MUSIC_LIGHT,
+        Eac3AtmosDynamicRangeCompressionRf_MUSIC_STANDARD,
+        Eac3AtmosDynamicRangeCompressionRf_NONE,
+        Eac3AtmosDynamicRangeCompressionRf_SPEECH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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.
+newtype Eac3AtmosDynamicRangeCompressionRf = Eac3AtmosDynamicRangeCompressionRf'
+  { fromEac3AtmosDynamicRangeCompressionRf ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3AtmosDynamicRangeCompressionRf_FILM_LIGHT :: Eac3AtmosDynamicRangeCompressionRf
+pattern Eac3AtmosDynamicRangeCompressionRf_FILM_LIGHT = Eac3AtmosDynamicRangeCompressionRf' "FILM_LIGHT"
+
+pattern Eac3AtmosDynamicRangeCompressionRf_FILM_STANDARD :: Eac3AtmosDynamicRangeCompressionRf
+pattern Eac3AtmosDynamicRangeCompressionRf_FILM_STANDARD = Eac3AtmosDynamicRangeCompressionRf' "FILM_STANDARD"
+
+pattern Eac3AtmosDynamicRangeCompressionRf_MUSIC_LIGHT :: Eac3AtmosDynamicRangeCompressionRf
+pattern Eac3AtmosDynamicRangeCompressionRf_MUSIC_LIGHT = Eac3AtmosDynamicRangeCompressionRf' "MUSIC_LIGHT"
+
+pattern Eac3AtmosDynamicRangeCompressionRf_MUSIC_STANDARD :: Eac3AtmosDynamicRangeCompressionRf
+pattern Eac3AtmosDynamicRangeCompressionRf_MUSIC_STANDARD = Eac3AtmosDynamicRangeCompressionRf' "MUSIC_STANDARD"
+
+pattern Eac3AtmosDynamicRangeCompressionRf_NONE :: Eac3AtmosDynamicRangeCompressionRf
+pattern Eac3AtmosDynamicRangeCompressionRf_NONE = Eac3AtmosDynamicRangeCompressionRf' "NONE"
+
+pattern Eac3AtmosDynamicRangeCompressionRf_SPEECH :: Eac3AtmosDynamicRangeCompressionRf
+pattern Eac3AtmosDynamicRangeCompressionRf_SPEECH = Eac3AtmosDynamicRangeCompressionRf' "SPEECH"
+
+{-# COMPLETE
+  Eac3AtmosDynamicRangeCompressionRf_FILM_LIGHT,
+  Eac3AtmosDynamicRangeCompressionRf_FILM_STANDARD,
+  Eac3AtmosDynamicRangeCompressionRf_MUSIC_LIGHT,
+  Eac3AtmosDynamicRangeCompressionRf_MUSIC_STANDARD,
+  Eac3AtmosDynamicRangeCompressionRf_NONE,
+  Eac3AtmosDynamicRangeCompressionRf_SPEECH,
+  Eac3AtmosDynamicRangeCompressionRf'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3AtmosDynamicRangeControl.hs b/gen/Amazonka/MediaConvert/Types/Eac3AtmosDynamicRangeControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3AtmosDynamicRangeControl.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3AtmosDynamicRangeControl
+-- 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.Eac3AtmosDynamicRangeControl
+  ( Eac3AtmosDynamicRangeControl
+      ( ..,
+        Eac3AtmosDynamicRangeControl_INITIALIZE_FROM_SOURCE,
+        Eac3AtmosDynamicRangeControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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.
+newtype Eac3AtmosDynamicRangeControl = Eac3AtmosDynamicRangeControl'
+  { fromEac3AtmosDynamicRangeControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3AtmosDynamicRangeControl_INITIALIZE_FROM_SOURCE :: Eac3AtmosDynamicRangeControl
+pattern Eac3AtmosDynamicRangeControl_INITIALIZE_FROM_SOURCE = Eac3AtmosDynamicRangeControl' "INITIALIZE_FROM_SOURCE"
+
+pattern Eac3AtmosDynamicRangeControl_SPECIFIED :: Eac3AtmosDynamicRangeControl
+pattern Eac3AtmosDynamicRangeControl_SPECIFIED = Eac3AtmosDynamicRangeControl' "SPECIFIED"
+
+{-# COMPLETE
+  Eac3AtmosDynamicRangeControl_INITIALIZE_FROM_SOURCE,
+  Eac3AtmosDynamicRangeControl_SPECIFIED,
+  Eac3AtmosDynamicRangeControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3AtmosMeteringMode.hs b/gen/Amazonka/MediaConvert/Types/Eac3AtmosMeteringMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3AtmosMeteringMode.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3AtmosMeteringMode
+-- 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.Eac3AtmosMeteringMode
+  ( Eac3AtmosMeteringMode
+      ( ..,
+        Eac3AtmosMeteringMode_ITU_BS_1770_1,
+        Eac3AtmosMeteringMode_ITU_BS_1770_2,
+        Eac3AtmosMeteringMode_ITU_BS_1770_3,
+        Eac3AtmosMeteringMode_ITU_BS_1770_4,
+        Eac3AtmosMeteringMode_LEQ_A
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose how the service meters the loudness of your audio.
+newtype Eac3AtmosMeteringMode = Eac3AtmosMeteringMode'
+  { fromEac3AtmosMeteringMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3AtmosMeteringMode_ITU_BS_1770_1 :: Eac3AtmosMeteringMode
+pattern Eac3AtmosMeteringMode_ITU_BS_1770_1 = Eac3AtmosMeteringMode' "ITU_BS_1770_1"
+
+pattern Eac3AtmosMeteringMode_ITU_BS_1770_2 :: Eac3AtmosMeteringMode
+pattern Eac3AtmosMeteringMode_ITU_BS_1770_2 = Eac3AtmosMeteringMode' "ITU_BS_1770_2"
+
+pattern Eac3AtmosMeteringMode_ITU_BS_1770_3 :: Eac3AtmosMeteringMode
+pattern Eac3AtmosMeteringMode_ITU_BS_1770_3 = Eac3AtmosMeteringMode' "ITU_BS_1770_3"
+
+pattern Eac3AtmosMeteringMode_ITU_BS_1770_4 :: Eac3AtmosMeteringMode
+pattern Eac3AtmosMeteringMode_ITU_BS_1770_4 = Eac3AtmosMeteringMode' "ITU_BS_1770_4"
+
+pattern Eac3AtmosMeteringMode_LEQ_A :: Eac3AtmosMeteringMode
+pattern Eac3AtmosMeteringMode_LEQ_A = Eac3AtmosMeteringMode' "LEQ_A"
+
+{-# COMPLETE
+  Eac3AtmosMeteringMode_ITU_BS_1770_1,
+  Eac3AtmosMeteringMode_ITU_BS_1770_2,
+  Eac3AtmosMeteringMode_ITU_BS_1770_3,
+  Eac3AtmosMeteringMode_ITU_BS_1770_4,
+  Eac3AtmosMeteringMode_LEQ_A,
+  Eac3AtmosMeteringMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3AtmosSettings.hs b/gen/Amazonka/MediaConvert/Types/Eac3AtmosSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3AtmosSettings.hs
@@ -0,0 +1,574 @@
+{-# 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-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.Eac3AtmosSettings 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.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'
+  { -- | 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.
+    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).
+    bitstreamMode :: Prelude.Maybe Eac3AtmosBitstreamMode,
+    -- | The coding mode for Dolby Digital Plus JOC (Atmos).
+    codingMode :: Prelude.Maybe Eac3AtmosCodingMode,
+    -- | Enable Dolby Dialogue Intelligence to adjust loudness based on dialogue
+    -- analysis.
+    dialogueIntelligence :: Prelude.Maybe Eac3AtmosDialogueIntelligence,
+    -- | 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.
+    downmixControl :: Prelude.Maybe Eac3AtmosDownmixControl,
+    -- | 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.
+    dynamicRangeCompressionLine :: Prelude.Maybe Eac3AtmosDynamicRangeCompressionLine,
+    -- | 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.
+    dynamicRangeCompressionRf :: Prelude.Maybe Eac3AtmosDynamicRangeCompressionRf,
+    -- | 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.
+    dynamicRangeControl :: Prelude.Maybe Eac3AtmosDynamicRangeControl,
+    -- | 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).
+    loRoCenterMixLevel :: 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).
+    loRoSurroundMixLevel :: 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).
+    ltRtCenterMixLevel :: Prelude.Maybe Prelude.Double,
+    -- | 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).
+    ltRtSurroundMixLevel :: Prelude.Maybe Prelude.Double,
+    -- | Choose how the service meters the loudness of your audio.
+    meteringMode :: Prelude.Maybe Eac3AtmosMeteringMode,
+    -- | This value is always 48000. It represents the sample rate in Hz.
+    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%
+    speechThreshold :: Prelude.Maybe Prelude.Natural,
+    -- | 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).
+    stereoDownmix :: Prelude.Maybe Eac3AtmosStereoDownmix,
+    -- | Specify whether your input audio has an additional center rear surround
+    -- channel matrix encoded into your left and right surround channels.
+    surroundExMode :: Prelude.Maybe Eac3AtmosSurroundExMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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:
+--
+-- '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.
+--
+-- '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).
+--
+-- 'codingMode', 'eac3AtmosSettings_codingMode' - The coding mode for Dolby Digital Plus JOC (Atmos).
+--
+-- 'dialogueIntelligence', 'eac3AtmosSettings_dialogueIntelligence' - Enable Dolby Dialogue Intelligence to adjust loudness based on dialogue
+-- analysis.
+--
+-- '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.
+--
+-- '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.
+--
+-- '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.
+--
+-- '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.
+--
+-- '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).
+--
+-- '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).
+--
+-- '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).
+--
+-- '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).
+--
+-- 'meteringMode', 'eac3AtmosSettings_meteringMode' - Choose how the service meters the loudness of your audio.
+--
+-- '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%
+--
+-- '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).
+--
+-- 'surroundExMode', 'eac3AtmosSettings_surroundExMode' - Specify whether your input audio has an additional center rear surround
+-- channel matrix encoded into your left and right surround channels.
+newEac3AtmosSettings ::
+  Eac3AtmosSettings
+newEac3AtmosSettings =
+  Eac3AtmosSettings'
+    { bitrate = Prelude.Nothing,
+      bitstreamMode = Prelude.Nothing,
+      codingMode = Prelude.Nothing,
+      dialogueIntelligence = Prelude.Nothing,
+      downmixControl = Prelude.Nothing,
+      dynamicRangeCompressionLine = Prelude.Nothing,
+      dynamicRangeCompressionRf = Prelude.Nothing,
+      dynamicRangeControl = Prelude.Nothing,
+      loRoCenterMixLevel = Prelude.Nothing,
+      loRoSurroundMixLevel = Prelude.Nothing,
+      ltRtCenterMixLevel = Prelude.Nothing,
+      ltRtSurroundMixLevel = Prelude.Nothing,
+      meteringMode = Prelude.Nothing,
+      sampleRate = Prelude.Nothing,
+      speechThreshold = Prelude.Nothing,
+      stereoDownmix = Prelude.Nothing,
+      surroundExMode = Prelude.Nothing
+    }
+
+-- | 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 = Lens.lens (\Eac3AtmosSettings' {bitrate} -> bitrate) (\s@Eac3AtmosSettings' {} a -> s {bitrate = 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 = Lens.lens (\Eac3AtmosSettings' {bitstreamMode} -> bitstreamMode) (\s@Eac3AtmosSettings' {} a -> s {bitstreamMode = a} :: Eac3AtmosSettings)
+
+-- | The coding mode for Dolby Digital Plus JOC (Atmos).
+eac3AtmosSettings_codingMode :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosCodingMode)
+eac3AtmosSettings_codingMode = Lens.lens (\Eac3AtmosSettings' {codingMode} -> codingMode) (\s@Eac3AtmosSettings' {} a -> s {codingMode = a} :: Eac3AtmosSettings)
+
+-- | Enable Dolby Dialogue Intelligence to adjust loudness based on dialogue
+-- analysis.
+eac3AtmosSettings_dialogueIntelligence :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosDialogueIntelligence)
+eac3AtmosSettings_dialogueIntelligence = Lens.lens (\Eac3AtmosSettings' {dialogueIntelligence} -> dialogueIntelligence) (\s@Eac3AtmosSettings' {} a -> s {dialogueIntelligence = 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 = Lens.lens (\Eac3AtmosSettings' {downmixControl} -> downmixControl) (\s@Eac3AtmosSettings' {} a -> s {downmixControl = 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 = Lens.lens (\Eac3AtmosSettings' {dynamicRangeCompressionLine} -> dynamicRangeCompressionLine) (\s@Eac3AtmosSettings' {} a -> s {dynamicRangeCompressionLine = 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 = Lens.lens (\Eac3AtmosSettings' {dynamicRangeCompressionRf} -> dynamicRangeCompressionRf) (\s@Eac3AtmosSettings' {} a -> s {dynamicRangeCompressionRf = 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 = Lens.lens (\Eac3AtmosSettings' {dynamicRangeControl} -> dynamicRangeControl) (\s@Eac3AtmosSettings' {} a -> s {dynamicRangeControl = 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 = Lens.lens (\Eac3AtmosSettings' {loRoCenterMixLevel} -> loRoCenterMixLevel) (\s@Eac3AtmosSettings' {} a -> s {loRoCenterMixLevel = 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 = Lens.lens (\Eac3AtmosSettings' {loRoSurroundMixLevel} -> loRoSurroundMixLevel) (\s@Eac3AtmosSettings' {} a -> s {loRoSurroundMixLevel = 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 = Lens.lens (\Eac3AtmosSettings' {ltRtCenterMixLevel} -> ltRtCenterMixLevel) (\s@Eac3AtmosSettings' {} a -> s {ltRtCenterMixLevel = 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 = Lens.lens (\Eac3AtmosSettings' {ltRtSurroundMixLevel} -> ltRtSurroundMixLevel) (\s@Eac3AtmosSettings' {} a -> s {ltRtSurroundMixLevel = a} :: Eac3AtmosSettings)
+
+-- | Choose how the service meters the loudness of your audio.
+eac3AtmosSettings_meteringMode :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosMeteringMode)
+eac3AtmosSettings_meteringMode = Lens.lens (\Eac3AtmosSettings' {meteringMode} -> meteringMode) (\s@Eac3AtmosSettings' {} a -> s {meteringMode = 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 = Lens.lens (\Eac3AtmosSettings' {sampleRate} -> sampleRate) (\s@Eac3AtmosSettings' {} a -> s {sampleRate = 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 = Lens.lens (\Eac3AtmosSettings' {speechThreshold} -> speechThreshold) (\s@Eac3AtmosSettings' {} a -> s {speechThreshold = a} :: 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_stereoDownmix :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosStereoDownmix)
+eac3AtmosSettings_stereoDownmix = Lens.lens (\Eac3AtmosSettings' {stereoDownmix} -> stereoDownmix) (\s@Eac3AtmosSettings' {} a -> s {stereoDownmix = 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 = Lens.lens (\Eac3AtmosSettings' {surroundExMode} -> surroundExMode) (\s@Eac3AtmosSettings' {} a -> s {surroundExMode = a} :: Eac3AtmosSettings)
+
+instance Data.FromJSON Eac3AtmosSettings where
+  parseJSON =
+    Data.withObject
+      "Eac3AtmosSettings"
+      ( \x ->
+          Eac3AtmosSettings'
+            Prelude.<$> (x Data..:? "bitrate")
+            Prelude.<*> (x Data..:? "bitstreamMode")
+            Prelude.<*> (x Data..:? "codingMode")
+            Prelude.<*> (x Data..:? "dialogueIntelligence")
+            Prelude.<*> (x Data..:? "downmixControl")
+            Prelude.<*> (x Data..:? "dynamicRangeCompressionLine")
+            Prelude.<*> (x Data..:? "dynamicRangeCompressionRf")
+            Prelude.<*> (x Data..:? "dynamicRangeControl")
+            Prelude.<*> (x Data..:? "loRoCenterMixLevel")
+            Prelude.<*> (x Data..:? "loRoSurroundMixLevel")
+            Prelude.<*> (x Data..:? "ltRtCenterMixLevel")
+            Prelude.<*> (x Data..:? "ltRtSurroundMixLevel")
+            Prelude.<*> (x Data..:? "meteringMode")
+            Prelude.<*> (x Data..:? "sampleRate")
+            Prelude.<*> (x Data..:? "speechThreshold")
+            Prelude.<*> (x Data..:? "stereoDownmix")
+            Prelude.<*> (x Data..:? "surroundExMode")
+      )
+
+instance Prelude.Hashable Eac3AtmosSettings where
+  hashWithSalt _salt Eac3AtmosSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` bitrate
+      `Prelude.hashWithSalt` bitstreamMode
+      `Prelude.hashWithSalt` codingMode
+      `Prelude.hashWithSalt` dialogueIntelligence
+      `Prelude.hashWithSalt` downmixControl
+      `Prelude.hashWithSalt` dynamicRangeCompressionLine
+      `Prelude.hashWithSalt` dynamicRangeCompressionRf
+      `Prelude.hashWithSalt` dynamicRangeControl
+      `Prelude.hashWithSalt` loRoCenterMixLevel
+      `Prelude.hashWithSalt` loRoSurroundMixLevel
+      `Prelude.hashWithSalt` ltRtCenterMixLevel
+      `Prelude.hashWithSalt` ltRtSurroundMixLevel
+      `Prelude.hashWithSalt` meteringMode
+      `Prelude.hashWithSalt` sampleRate
+      `Prelude.hashWithSalt` speechThreshold
+      `Prelude.hashWithSalt` stereoDownmix
+      `Prelude.hashWithSalt` surroundExMode
+
+instance Prelude.NFData Eac3AtmosSettings where
+  rnf Eac3AtmosSettings' {..} =
+    Prelude.rnf bitrate
+      `Prelude.seq` Prelude.rnf bitstreamMode
+      `Prelude.seq` Prelude.rnf codingMode
+      `Prelude.seq` Prelude.rnf dialogueIntelligence
+      `Prelude.seq` Prelude.rnf downmixControl
+      `Prelude.seq` Prelude.rnf dynamicRangeCompressionLine
+      `Prelude.seq` Prelude.rnf dynamicRangeCompressionRf
+      `Prelude.seq` Prelude.rnf dynamicRangeControl
+      `Prelude.seq` Prelude.rnf loRoCenterMixLevel
+      `Prelude.seq` Prelude.rnf loRoSurroundMixLevel
+      `Prelude.seq` Prelude.rnf ltRtCenterMixLevel
+      `Prelude.seq` Prelude.rnf ltRtSurroundMixLevel
+      `Prelude.seq` Prelude.rnf meteringMode
+      `Prelude.seq` Prelude.rnf sampleRate
+      `Prelude.seq` Prelude.rnf speechThreshold
+      `Prelude.seq` Prelude.rnf stereoDownmix
+      `Prelude.seq` Prelude.rnf surroundExMode
+
+instance Data.ToJSON Eac3AtmosSettings where
+  toJSON Eac3AtmosSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bitrate" Data..=) Prelude.<$> bitrate,
+            ("bitstreamMode" Data..=) Prelude.<$> bitstreamMode,
+            ("codingMode" Data..=) Prelude.<$> codingMode,
+            ("dialogueIntelligence" Data..=)
+              Prelude.<$> dialogueIntelligence,
+            ("downmixControl" Data..=)
+              Prelude.<$> downmixControl,
+            ("dynamicRangeCompressionLine" Data..=)
+              Prelude.<$> dynamicRangeCompressionLine,
+            ("dynamicRangeCompressionRf" Data..=)
+              Prelude.<$> dynamicRangeCompressionRf,
+            ("dynamicRangeControl" Data..=)
+              Prelude.<$> dynamicRangeControl,
+            ("loRoCenterMixLevel" Data..=)
+              Prelude.<$> loRoCenterMixLevel,
+            ("loRoSurroundMixLevel" Data..=)
+              Prelude.<$> loRoSurroundMixLevel,
+            ("ltRtCenterMixLevel" Data..=)
+              Prelude.<$> ltRtCenterMixLevel,
+            ("ltRtSurroundMixLevel" Data..=)
+              Prelude.<$> ltRtSurroundMixLevel,
+            ("meteringMode" Data..=) Prelude.<$> meteringMode,
+            ("sampleRate" Data..=) Prelude.<$> sampleRate,
+            ("speechThreshold" Data..=)
+              Prelude.<$> speechThreshold,
+            ("stereoDownmix" Data..=) Prelude.<$> stereoDownmix,
+            ("surroundExMode" Data..=)
+              Prelude.<$> surroundExMode
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3AtmosStereoDownmix.hs b/gen/Amazonka/MediaConvert/Types/Eac3AtmosStereoDownmix.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3AtmosStereoDownmix.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3AtmosStereoDownmix
+-- 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.Eac3AtmosStereoDownmix
+  ( Eac3AtmosStereoDownmix
+      ( ..,
+        Eac3AtmosStereoDownmix_DPL2,
+        Eac3AtmosStereoDownmix_NOT_INDICATED,
+        Eac3AtmosStereoDownmix_STEREO,
+        Eac3AtmosStereoDownmix_SURROUND
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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).
+newtype Eac3AtmosStereoDownmix = Eac3AtmosStereoDownmix'
+  { fromEac3AtmosStereoDownmix ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3AtmosStereoDownmix_DPL2 :: Eac3AtmosStereoDownmix
+pattern Eac3AtmosStereoDownmix_DPL2 = Eac3AtmosStereoDownmix' "DPL2"
+
+pattern Eac3AtmosStereoDownmix_NOT_INDICATED :: Eac3AtmosStereoDownmix
+pattern Eac3AtmosStereoDownmix_NOT_INDICATED = Eac3AtmosStereoDownmix' "NOT_INDICATED"
+
+pattern Eac3AtmosStereoDownmix_STEREO :: Eac3AtmosStereoDownmix
+pattern Eac3AtmosStereoDownmix_STEREO = Eac3AtmosStereoDownmix' "STEREO"
+
+pattern Eac3AtmosStereoDownmix_SURROUND :: Eac3AtmosStereoDownmix
+pattern Eac3AtmosStereoDownmix_SURROUND = Eac3AtmosStereoDownmix' "SURROUND"
+
+{-# COMPLETE
+  Eac3AtmosStereoDownmix_DPL2,
+  Eac3AtmosStereoDownmix_NOT_INDICATED,
+  Eac3AtmosStereoDownmix_STEREO,
+  Eac3AtmosStereoDownmix_SURROUND,
+  Eac3AtmosStereoDownmix'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3AtmosSurroundExMode.hs b/gen/Amazonka/MediaConvert/Types/Eac3AtmosSurroundExMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3AtmosSurroundExMode.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3AtmosSurroundExMode
+-- 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.Eac3AtmosSurroundExMode
+  ( Eac3AtmosSurroundExMode
+      ( ..,
+        Eac3AtmosSurroundExMode_DISABLED,
+        Eac3AtmosSurroundExMode_ENABLED,
+        Eac3AtmosSurroundExMode_NOT_INDICATED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether your input audio has an additional center rear surround
+-- channel matrix encoded into your left and right surround channels.
+newtype Eac3AtmosSurroundExMode = Eac3AtmosSurroundExMode'
+  { fromEac3AtmosSurroundExMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3AtmosSurroundExMode_DISABLED :: Eac3AtmosSurroundExMode
+pattern Eac3AtmosSurroundExMode_DISABLED = Eac3AtmosSurroundExMode' "DISABLED"
+
+pattern Eac3AtmosSurroundExMode_ENABLED :: Eac3AtmosSurroundExMode
+pattern Eac3AtmosSurroundExMode_ENABLED = Eac3AtmosSurroundExMode' "ENABLED"
+
+pattern Eac3AtmosSurroundExMode_NOT_INDICATED :: Eac3AtmosSurroundExMode
+pattern Eac3AtmosSurroundExMode_NOT_INDICATED = Eac3AtmosSurroundExMode' "NOT_INDICATED"
+
+{-# COMPLETE
+  Eac3AtmosSurroundExMode_DISABLED,
+  Eac3AtmosSurroundExMode_ENABLED,
+  Eac3AtmosSurroundExMode_NOT_INDICATED,
+  Eac3AtmosSurroundExMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3AttenuationControl.hs b/gen/Amazonka/MediaConvert/Types/Eac3AttenuationControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3AttenuationControl.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3AttenuationControl
+-- 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.Eac3AttenuationControl
+  ( Eac3AttenuationControl
+      ( ..,
+        Eac3AttenuationControl_ATTENUATE_3_DB,
+        Eac3AttenuationControl_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If set to ATTENUATE_3_DB, applies a 3 dB attenuation to the surround
+-- channels. Only used for 3\/2 coding mode.
+newtype Eac3AttenuationControl = Eac3AttenuationControl'
+  { fromEac3AttenuationControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3AttenuationControl_ATTENUATE_3_DB :: Eac3AttenuationControl
+pattern Eac3AttenuationControl_ATTENUATE_3_DB = Eac3AttenuationControl' "ATTENUATE_3_DB"
+
+pattern Eac3AttenuationControl_NONE :: Eac3AttenuationControl
+pattern Eac3AttenuationControl_NONE = Eac3AttenuationControl' "NONE"
+
+{-# COMPLETE
+  Eac3AttenuationControl_ATTENUATE_3_DB,
+  Eac3AttenuationControl_NONE,
+  Eac3AttenuationControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3BitstreamMode.hs b/gen/Amazonka/MediaConvert/Types/Eac3BitstreamMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3BitstreamMode.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3BitstreamMode
+-- 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.Eac3BitstreamMode
+  ( Eac3BitstreamMode
+      ( ..,
+        Eac3BitstreamMode_COMMENTARY,
+        Eac3BitstreamMode_COMPLETE_MAIN,
+        Eac3BitstreamMode_EMERGENCY,
+        Eac3BitstreamMode_HEARING_IMPAIRED,
+        Eac3BitstreamMode_VISUALLY_IMPAIRED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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).
+newtype Eac3BitstreamMode = Eac3BitstreamMode'
+  { fromEac3BitstreamMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3BitstreamMode_COMMENTARY :: Eac3BitstreamMode
+pattern Eac3BitstreamMode_COMMENTARY = Eac3BitstreamMode' "COMMENTARY"
+
+pattern Eac3BitstreamMode_COMPLETE_MAIN :: Eac3BitstreamMode
+pattern Eac3BitstreamMode_COMPLETE_MAIN = Eac3BitstreamMode' "COMPLETE_MAIN"
+
+pattern Eac3BitstreamMode_EMERGENCY :: Eac3BitstreamMode
+pattern Eac3BitstreamMode_EMERGENCY = Eac3BitstreamMode' "EMERGENCY"
+
+pattern Eac3BitstreamMode_HEARING_IMPAIRED :: Eac3BitstreamMode
+pattern Eac3BitstreamMode_HEARING_IMPAIRED = Eac3BitstreamMode' "HEARING_IMPAIRED"
+
+pattern Eac3BitstreamMode_VISUALLY_IMPAIRED :: Eac3BitstreamMode
+pattern Eac3BitstreamMode_VISUALLY_IMPAIRED = Eac3BitstreamMode' "VISUALLY_IMPAIRED"
+
+{-# COMPLETE
+  Eac3BitstreamMode_COMMENTARY,
+  Eac3BitstreamMode_COMPLETE_MAIN,
+  Eac3BitstreamMode_EMERGENCY,
+  Eac3BitstreamMode_HEARING_IMPAIRED,
+  Eac3BitstreamMode_VISUALLY_IMPAIRED,
+  Eac3BitstreamMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3CodingMode.hs b/gen/Amazonka/MediaConvert/Types/Eac3CodingMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3CodingMode.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3CodingMode
+-- 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.Eac3CodingMode
+  ( Eac3CodingMode
+      ( ..,
+        Eac3CodingMode_CODING_MODE_1_0,
+        Eac3CodingMode_CODING_MODE_2_0,
+        Eac3CodingMode_CODING_MODE_3_2
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Dolby Digital Plus coding mode. Determines number of channels.
+newtype Eac3CodingMode = Eac3CodingMode'
+  { fromEac3CodingMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3CodingMode_CODING_MODE_1_0 :: Eac3CodingMode
+pattern Eac3CodingMode_CODING_MODE_1_0 = Eac3CodingMode' "CODING_MODE_1_0"
+
+pattern Eac3CodingMode_CODING_MODE_2_0 :: Eac3CodingMode
+pattern Eac3CodingMode_CODING_MODE_2_0 = Eac3CodingMode' "CODING_MODE_2_0"
+
+pattern Eac3CodingMode_CODING_MODE_3_2 :: Eac3CodingMode
+pattern Eac3CodingMode_CODING_MODE_3_2 = Eac3CodingMode' "CODING_MODE_3_2"
+
+{-# COMPLETE
+  Eac3CodingMode_CODING_MODE_1_0,
+  Eac3CodingMode_CODING_MODE_2_0,
+  Eac3CodingMode_CODING_MODE_3_2,
+  Eac3CodingMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3DcFilter.hs b/gen/Amazonka/MediaConvert/Types/Eac3DcFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3DcFilter.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3DcFilter
+-- 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.Eac3DcFilter
+  ( Eac3DcFilter
+      ( ..,
+        Eac3DcFilter_DISABLED,
+        Eac3DcFilter_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Activates a DC highpass filter for all input channels.
+newtype Eac3DcFilter = Eac3DcFilter'
+  { fromEac3DcFilter ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3DcFilter_DISABLED :: Eac3DcFilter
+pattern Eac3DcFilter_DISABLED = Eac3DcFilter' "DISABLED"
+
+pattern Eac3DcFilter_ENABLED :: Eac3DcFilter
+pattern Eac3DcFilter_ENABLED = Eac3DcFilter' "ENABLED"
+
+{-# COMPLETE
+  Eac3DcFilter_DISABLED,
+  Eac3DcFilter_ENABLED,
+  Eac3DcFilter'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3DynamicRangeCompressionLine.hs b/gen/Amazonka/MediaConvert/Types/Eac3DynamicRangeCompressionLine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3DynamicRangeCompressionLine.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3DynamicRangeCompressionLine
+-- 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.Eac3DynamicRangeCompressionLine
+  ( Eac3DynamicRangeCompressionLine
+      ( ..,
+        Eac3DynamicRangeCompressionLine_FILM_LIGHT,
+        Eac3DynamicRangeCompressionLine_FILM_STANDARD,
+        Eac3DynamicRangeCompressionLine_MUSIC_LIGHT,
+        Eac3DynamicRangeCompressionLine_MUSIC_STANDARD,
+        Eac3DynamicRangeCompressionLine_NONE,
+        Eac3DynamicRangeCompressionLine_SPEECH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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.
+newtype Eac3DynamicRangeCompressionLine = Eac3DynamicRangeCompressionLine'
+  { fromEac3DynamicRangeCompressionLine ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3DynamicRangeCompressionLine_FILM_LIGHT :: Eac3DynamicRangeCompressionLine
+pattern Eac3DynamicRangeCompressionLine_FILM_LIGHT = Eac3DynamicRangeCompressionLine' "FILM_LIGHT"
+
+pattern Eac3DynamicRangeCompressionLine_FILM_STANDARD :: Eac3DynamicRangeCompressionLine
+pattern Eac3DynamicRangeCompressionLine_FILM_STANDARD = Eac3DynamicRangeCompressionLine' "FILM_STANDARD"
+
+pattern Eac3DynamicRangeCompressionLine_MUSIC_LIGHT :: Eac3DynamicRangeCompressionLine
+pattern Eac3DynamicRangeCompressionLine_MUSIC_LIGHT = Eac3DynamicRangeCompressionLine' "MUSIC_LIGHT"
+
+pattern Eac3DynamicRangeCompressionLine_MUSIC_STANDARD :: Eac3DynamicRangeCompressionLine
+pattern Eac3DynamicRangeCompressionLine_MUSIC_STANDARD = Eac3DynamicRangeCompressionLine' "MUSIC_STANDARD"
+
+pattern Eac3DynamicRangeCompressionLine_NONE :: Eac3DynamicRangeCompressionLine
+pattern Eac3DynamicRangeCompressionLine_NONE = Eac3DynamicRangeCompressionLine' "NONE"
+
+pattern Eac3DynamicRangeCompressionLine_SPEECH :: Eac3DynamicRangeCompressionLine
+pattern Eac3DynamicRangeCompressionLine_SPEECH = Eac3DynamicRangeCompressionLine' "SPEECH"
+
+{-# COMPLETE
+  Eac3DynamicRangeCompressionLine_FILM_LIGHT,
+  Eac3DynamicRangeCompressionLine_FILM_STANDARD,
+  Eac3DynamicRangeCompressionLine_MUSIC_LIGHT,
+  Eac3DynamicRangeCompressionLine_MUSIC_STANDARD,
+  Eac3DynamicRangeCompressionLine_NONE,
+  Eac3DynamicRangeCompressionLine_SPEECH,
+  Eac3DynamicRangeCompressionLine'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3DynamicRangeCompressionRf.hs b/gen/Amazonka/MediaConvert/Types/Eac3DynamicRangeCompressionRf.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3DynamicRangeCompressionRf.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3DynamicRangeCompressionRf
+-- 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.Eac3DynamicRangeCompressionRf
+  ( Eac3DynamicRangeCompressionRf
+      ( ..,
+        Eac3DynamicRangeCompressionRf_FILM_LIGHT,
+        Eac3DynamicRangeCompressionRf_FILM_STANDARD,
+        Eac3DynamicRangeCompressionRf_MUSIC_LIGHT,
+        Eac3DynamicRangeCompressionRf_MUSIC_STANDARD,
+        Eac3DynamicRangeCompressionRf_NONE,
+        Eac3DynamicRangeCompressionRf_SPEECH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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.
+newtype Eac3DynamicRangeCompressionRf = Eac3DynamicRangeCompressionRf'
+  { fromEac3DynamicRangeCompressionRf ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3DynamicRangeCompressionRf_FILM_LIGHT :: Eac3DynamicRangeCompressionRf
+pattern Eac3DynamicRangeCompressionRf_FILM_LIGHT = Eac3DynamicRangeCompressionRf' "FILM_LIGHT"
+
+pattern Eac3DynamicRangeCompressionRf_FILM_STANDARD :: Eac3DynamicRangeCompressionRf
+pattern Eac3DynamicRangeCompressionRf_FILM_STANDARD = Eac3DynamicRangeCompressionRf' "FILM_STANDARD"
+
+pattern Eac3DynamicRangeCompressionRf_MUSIC_LIGHT :: Eac3DynamicRangeCompressionRf
+pattern Eac3DynamicRangeCompressionRf_MUSIC_LIGHT = Eac3DynamicRangeCompressionRf' "MUSIC_LIGHT"
+
+pattern Eac3DynamicRangeCompressionRf_MUSIC_STANDARD :: Eac3DynamicRangeCompressionRf
+pattern Eac3DynamicRangeCompressionRf_MUSIC_STANDARD = Eac3DynamicRangeCompressionRf' "MUSIC_STANDARD"
+
+pattern Eac3DynamicRangeCompressionRf_NONE :: Eac3DynamicRangeCompressionRf
+pattern Eac3DynamicRangeCompressionRf_NONE = Eac3DynamicRangeCompressionRf' "NONE"
+
+pattern Eac3DynamicRangeCompressionRf_SPEECH :: Eac3DynamicRangeCompressionRf
+pattern Eac3DynamicRangeCompressionRf_SPEECH = Eac3DynamicRangeCompressionRf' "SPEECH"
+
+{-# COMPLETE
+  Eac3DynamicRangeCompressionRf_FILM_LIGHT,
+  Eac3DynamicRangeCompressionRf_FILM_STANDARD,
+  Eac3DynamicRangeCompressionRf_MUSIC_LIGHT,
+  Eac3DynamicRangeCompressionRf_MUSIC_STANDARD,
+  Eac3DynamicRangeCompressionRf_NONE,
+  Eac3DynamicRangeCompressionRf_SPEECH,
+  Eac3DynamicRangeCompressionRf'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3LfeControl.hs b/gen/Amazonka/MediaConvert/Types/Eac3LfeControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3LfeControl.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3LfeControl
+-- 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.Eac3LfeControl
+  ( Eac3LfeControl
+      ( ..,
+        Eac3LfeControl_LFE,
+        Eac3LfeControl_NO_LFE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When encoding 3\/2 audio, controls whether the LFE channel is enabled
+newtype Eac3LfeControl = Eac3LfeControl'
+  { fromEac3LfeControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3LfeControl_LFE :: Eac3LfeControl
+pattern Eac3LfeControl_LFE = Eac3LfeControl' "LFE"
+
+pattern Eac3LfeControl_NO_LFE :: Eac3LfeControl
+pattern Eac3LfeControl_NO_LFE = Eac3LfeControl' "NO_LFE"
+
+{-# COMPLETE
+  Eac3LfeControl_LFE,
+  Eac3LfeControl_NO_LFE,
+  Eac3LfeControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3LfeFilter.hs b/gen/Amazonka/MediaConvert/Types/Eac3LfeFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3LfeFilter.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3LfeFilter
+-- 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.Eac3LfeFilter
+  ( Eac3LfeFilter
+      ( ..,
+        Eac3LfeFilter_DISABLED,
+        Eac3LfeFilter_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Applies a 120Hz lowpass filter to the LFE channel prior to encoding.
+-- Only valid with 3_2_LFE coding mode.
+newtype Eac3LfeFilter = Eac3LfeFilter'
+  { fromEac3LfeFilter ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3LfeFilter_DISABLED :: Eac3LfeFilter
+pattern Eac3LfeFilter_DISABLED = Eac3LfeFilter' "DISABLED"
+
+pattern Eac3LfeFilter_ENABLED :: Eac3LfeFilter
+pattern Eac3LfeFilter_ENABLED = Eac3LfeFilter' "ENABLED"
+
+{-# COMPLETE
+  Eac3LfeFilter_DISABLED,
+  Eac3LfeFilter_ENABLED,
+  Eac3LfeFilter'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3MetadataControl.hs b/gen/Amazonka/MediaConvert/Types/Eac3MetadataControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3MetadataControl.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3MetadataControl
+-- 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.Eac3MetadataControl
+  ( Eac3MetadataControl
+      ( ..,
+        Eac3MetadataControl_FOLLOW_INPUT,
+        Eac3MetadataControl_USE_CONFIGURED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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.
+newtype Eac3MetadataControl = Eac3MetadataControl'
+  { fromEac3MetadataControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3MetadataControl_FOLLOW_INPUT :: Eac3MetadataControl
+pattern Eac3MetadataControl_FOLLOW_INPUT = Eac3MetadataControl' "FOLLOW_INPUT"
+
+pattern Eac3MetadataControl_USE_CONFIGURED :: Eac3MetadataControl
+pattern Eac3MetadataControl_USE_CONFIGURED = Eac3MetadataControl' "USE_CONFIGURED"
+
+{-# COMPLETE
+  Eac3MetadataControl_FOLLOW_INPUT,
+  Eac3MetadataControl_USE_CONFIGURED,
+  Eac3MetadataControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3PassthroughControl.hs b/gen/Amazonka/MediaConvert/Types/Eac3PassthroughControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3PassthroughControl.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3PassthroughControl
+-- 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.Eac3PassthroughControl
+  ( Eac3PassthroughControl
+      ( ..,
+        Eac3PassthroughControl_NO_PASSTHROUGH,
+        Eac3PassthroughControl_WHEN_POSSIBLE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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.
+newtype Eac3PassthroughControl = Eac3PassthroughControl'
+  { fromEac3PassthroughControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3PassthroughControl_NO_PASSTHROUGH :: Eac3PassthroughControl
+pattern Eac3PassthroughControl_NO_PASSTHROUGH = Eac3PassthroughControl' "NO_PASSTHROUGH"
+
+pattern Eac3PassthroughControl_WHEN_POSSIBLE :: Eac3PassthroughControl
+pattern Eac3PassthroughControl_WHEN_POSSIBLE = Eac3PassthroughControl' "WHEN_POSSIBLE"
+
+{-# COMPLETE
+  Eac3PassthroughControl_NO_PASSTHROUGH,
+  Eac3PassthroughControl_WHEN_POSSIBLE,
+  Eac3PassthroughControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3PhaseControl.hs b/gen/Amazonka/MediaConvert/Types/Eac3PhaseControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3PhaseControl.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3PhaseControl
+-- 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.Eac3PhaseControl
+  ( Eac3PhaseControl
+      ( ..,
+        Eac3PhaseControl_NO_SHIFT,
+        Eac3PhaseControl_SHIFT_90_DEGREES
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Controls the amount of phase-shift applied to the surround channels.
+-- Only used for 3\/2 coding mode.
+newtype Eac3PhaseControl = Eac3PhaseControl'
+  { fromEac3PhaseControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3PhaseControl_NO_SHIFT :: Eac3PhaseControl
+pattern Eac3PhaseControl_NO_SHIFT = Eac3PhaseControl' "NO_SHIFT"
+
+pattern Eac3PhaseControl_SHIFT_90_DEGREES :: Eac3PhaseControl
+pattern Eac3PhaseControl_SHIFT_90_DEGREES = Eac3PhaseControl' "SHIFT_90_DEGREES"
+
+{-# COMPLETE
+  Eac3PhaseControl_NO_SHIFT,
+  Eac3PhaseControl_SHIFT_90_DEGREES,
+  Eac3PhaseControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3Settings.hs b/gen/Amazonka/MediaConvert/Types/Eac3Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3Settings.hs
@@ -0,0 +1,581 @@
+{-# 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.
+    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.
+    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).
+    bitstreamMode :: Prelude.Maybe Eac3BitstreamMode,
+    -- | Dolby Digital Plus coding mode. Determines number of channels.
+    codingMode :: Prelude.Maybe Eac3CodingMode,
+    -- | Activates a DC highpass filter for all input channels.
+    dcFilter :: Prelude.Maybe Eac3DcFilter,
+    -- | Sets the dialnorm for the output. If blank and input audio is Dolby
+    -- Digital Plus, dialnorm will be passed through.
+    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.
+    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.
+    dynamicRangeCompressionRf :: Prelude.Maybe Eac3DynamicRangeCompressionRf,
+    -- | When encoding 3\/2 audio, controls whether the LFE channel is enabled
+    lfeControl :: Prelude.Maybe Eac3LfeControl,
+    -- | Applies a 120Hz lowpass filter to the LFE channel prior to encoding.
+    -- Only valid with 3_2_LFE coding mode.
+    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).
+    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).
+    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).
+    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).
+    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.
+    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.
+    passthroughControl :: Prelude.Maybe Eac3PassthroughControl,
+    -- | Controls the amount of phase-shift applied to the surround channels.
+    -- Only used for 3\/2 coding mode.
+    phaseControl :: Prelude.Maybe Eac3PhaseControl,
+    -- | This value is always 48000. It represents the sample rate in Hz.
+    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).
+    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.
+    surroundExMode :: Prelude.Maybe Eac3SurroundExMode,
+    -- | When encoding 2\/0 audio, sets whether Dolby Surround is matrix encoded
+    -- into the two channels.
+    surroundMode :: Prelude.Maybe Eac3SurroundMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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'
+    { attenuationControl = Prelude.Nothing,
+      bitrate = Prelude.Nothing,
+      bitstreamMode = Prelude.Nothing,
+      codingMode = Prelude.Nothing,
+      dcFilter = Prelude.Nothing,
+      dialnorm = Prelude.Nothing,
+      dynamicRangeCompressionLine = Prelude.Nothing,
+      dynamicRangeCompressionRf = Prelude.Nothing,
+      lfeControl = Prelude.Nothing,
+      lfeFilter = Prelude.Nothing,
+      loRoCenterMixLevel = Prelude.Nothing,
+      loRoSurroundMixLevel = Prelude.Nothing,
+      ltRtCenterMixLevel = Prelude.Nothing,
+      ltRtSurroundMixLevel = Prelude.Nothing,
+      metadataControl = Prelude.Nothing,
+      passthroughControl = Prelude.Nothing,
+      phaseControl = Prelude.Nothing,
+      sampleRate = Prelude.Nothing,
+      stereoDownmix = Prelude.Nothing,
+      surroundExMode = Prelude.Nothing,
+      surroundMode = 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.lens (\Eac3Settings' {attenuationControl} -> attenuationControl) (\s@Eac3Settings' {} a -> s {attenuationControl = 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.lens (\Eac3Settings' {bitrate} -> bitrate) (\s@Eac3Settings' {} a -> s {bitrate = 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.lens (\Eac3Settings' {bitstreamMode} -> bitstreamMode) (\s@Eac3Settings' {} a -> s {bitstreamMode = a} :: Eac3Settings)
+
+-- | Dolby Digital Plus coding mode. Determines number of channels.
+eac3Settings_codingMode :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3CodingMode)
+eac3Settings_codingMode = Lens.lens (\Eac3Settings' {codingMode} -> codingMode) (\s@Eac3Settings' {} a -> s {codingMode = a} :: Eac3Settings)
+
+-- | Activates a DC highpass filter for all input channels.
+eac3Settings_dcFilter :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3DcFilter)
+eac3Settings_dcFilter = Lens.lens (\Eac3Settings' {dcFilter} -> dcFilter) (\s@Eac3Settings' {} a -> s {dcFilter = 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.lens (\Eac3Settings' {dialnorm} -> dialnorm) (\s@Eac3Settings' {} a -> s {dialnorm = 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.lens (\Eac3Settings' {dynamicRangeCompressionLine} -> dynamicRangeCompressionLine) (\s@Eac3Settings' {} a -> s {dynamicRangeCompressionLine = 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.lens (\Eac3Settings' {dynamicRangeCompressionRf} -> dynamicRangeCompressionRf) (\s@Eac3Settings' {} a -> s {dynamicRangeCompressionRf = 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.lens (\Eac3Settings' {lfeControl} -> lfeControl) (\s@Eac3Settings' {} a -> s {lfeControl = 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.lens (\Eac3Settings' {lfeFilter} -> lfeFilter) (\s@Eac3Settings' {} a -> s {lfeFilter = 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.lens (\Eac3Settings' {loRoCenterMixLevel} -> loRoCenterMixLevel) (\s@Eac3Settings' {} a -> s {loRoCenterMixLevel = 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.lens (\Eac3Settings' {loRoSurroundMixLevel} -> loRoSurroundMixLevel) (\s@Eac3Settings' {} a -> s {loRoSurroundMixLevel = 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.lens (\Eac3Settings' {ltRtCenterMixLevel} -> ltRtCenterMixLevel) (\s@Eac3Settings' {} a -> s {ltRtCenterMixLevel = 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.lens (\Eac3Settings' {ltRtSurroundMixLevel} -> ltRtSurroundMixLevel) (\s@Eac3Settings' {} a -> s {ltRtSurroundMixLevel = 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.lens (\Eac3Settings' {metadataControl} -> metadataControl) (\s@Eac3Settings' {} a -> s {metadataControl = 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.lens (\Eac3Settings' {passthroughControl} -> passthroughControl) (\s@Eac3Settings' {} a -> s {passthroughControl = 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.lens (\Eac3Settings' {phaseControl} -> phaseControl) (\s@Eac3Settings' {} a -> s {phaseControl = 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.lens (\Eac3Settings' {sampleRate} -> sampleRate) (\s@Eac3Settings' {} a -> s {sampleRate = 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.lens (\Eac3Settings' {stereoDownmix} -> stereoDownmix) (\s@Eac3Settings' {} a -> s {stereoDownmix = 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.lens (\Eac3Settings' {surroundExMode} -> surroundExMode) (\s@Eac3Settings' {} a -> s {surroundExMode = 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.lens (\Eac3Settings' {surroundMode} -> surroundMode) (\s@Eac3Settings' {} a -> s {surroundMode = a} :: Eac3Settings)
+
+instance Data.FromJSON Eac3Settings where
+  parseJSON =
+    Data.withObject
+      "Eac3Settings"
+      ( \x ->
+          Eac3Settings'
+            Prelude.<$> (x Data..:? "attenuationControl")
+            Prelude.<*> (x Data..:? "bitrate")
+            Prelude.<*> (x Data..:? "bitstreamMode")
+            Prelude.<*> (x Data..:? "codingMode")
+            Prelude.<*> (x Data..:? "dcFilter")
+            Prelude.<*> (x Data..:? "dialnorm")
+            Prelude.<*> (x Data..:? "dynamicRangeCompressionLine")
+            Prelude.<*> (x Data..:? "dynamicRangeCompressionRf")
+            Prelude.<*> (x Data..:? "lfeControl")
+            Prelude.<*> (x Data..:? "lfeFilter")
+            Prelude.<*> (x Data..:? "loRoCenterMixLevel")
+            Prelude.<*> (x Data..:? "loRoSurroundMixLevel")
+            Prelude.<*> (x Data..:? "ltRtCenterMixLevel")
+            Prelude.<*> (x Data..:? "ltRtSurroundMixLevel")
+            Prelude.<*> (x Data..:? "metadataControl")
+            Prelude.<*> (x Data..:? "passthroughControl")
+            Prelude.<*> (x Data..:? "phaseControl")
+            Prelude.<*> (x Data..:? "sampleRate")
+            Prelude.<*> (x Data..:? "stereoDownmix")
+            Prelude.<*> (x Data..:? "surroundExMode")
+            Prelude.<*> (x Data..:? "surroundMode")
+      )
+
+instance Prelude.Hashable Eac3Settings where
+  hashWithSalt _salt Eac3Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` attenuationControl
+      `Prelude.hashWithSalt` bitrate
+      `Prelude.hashWithSalt` bitstreamMode
+      `Prelude.hashWithSalt` codingMode
+      `Prelude.hashWithSalt` dcFilter
+      `Prelude.hashWithSalt` dialnorm
+      `Prelude.hashWithSalt` dynamicRangeCompressionLine
+      `Prelude.hashWithSalt` dynamicRangeCompressionRf
+      `Prelude.hashWithSalt` lfeControl
+      `Prelude.hashWithSalt` lfeFilter
+      `Prelude.hashWithSalt` loRoCenterMixLevel
+      `Prelude.hashWithSalt` loRoSurroundMixLevel
+      `Prelude.hashWithSalt` ltRtCenterMixLevel
+      `Prelude.hashWithSalt` ltRtSurroundMixLevel
+      `Prelude.hashWithSalt` metadataControl
+      `Prelude.hashWithSalt` passthroughControl
+      `Prelude.hashWithSalt` phaseControl
+      `Prelude.hashWithSalt` sampleRate
+      `Prelude.hashWithSalt` stereoDownmix
+      `Prelude.hashWithSalt` surroundExMode
+      `Prelude.hashWithSalt` surroundMode
+
+instance Prelude.NFData Eac3Settings where
+  rnf Eac3Settings' {..} =
+    Prelude.rnf attenuationControl
+      `Prelude.seq` Prelude.rnf bitrate
+      `Prelude.seq` Prelude.rnf bitstreamMode
+      `Prelude.seq` Prelude.rnf codingMode
+      `Prelude.seq` Prelude.rnf dcFilter
+      `Prelude.seq` Prelude.rnf dialnorm
+      `Prelude.seq` Prelude.rnf dynamicRangeCompressionLine
+      `Prelude.seq` Prelude.rnf dynamicRangeCompressionRf
+      `Prelude.seq` Prelude.rnf lfeControl
+      `Prelude.seq` Prelude.rnf lfeFilter
+      `Prelude.seq` Prelude.rnf loRoCenterMixLevel
+      `Prelude.seq` Prelude.rnf loRoSurroundMixLevel
+      `Prelude.seq` Prelude.rnf ltRtCenterMixLevel
+      `Prelude.seq` Prelude.rnf ltRtSurroundMixLevel
+      `Prelude.seq` Prelude.rnf metadataControl
+      `Prelude.seq` Prelude.rnf passthroughControl
+      `Prelude.seq` Prelude.rnf phaseControl
+      `Prelude.seq` Prelude.rnf sampleRate
+      `Prelude.seq` Prelude.rnf stereoDownmix
+      `Prelude.seq` Prelude.rnf surroundExMode
+      `Prelude.seq` Prelude.rnf surroundMode
+
+instance Data.ToJSON Eac3Settings where
+  toJSON Eac3Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("attenuationControl" Data..=)
+              Prelude.<$> attenuationControl,
+            ("bitrate" Data..=) Prelude.<$> bitrate,
+            ("bitstreamMode" Data..=) Prelude.<$> bitstreamMode,
+            ("codingMode" Data..=) Prelude.<$> codingMode,
+            ("dcFilter" Data..=) Prelude.<$> dcFilter,
+            ("dialnorm" Data..=) Prelude.<$> dialnorm,
+            ("dynamicRangeCompressionLine" Data..=)
+              Prelude.<$> dynamicRangeCompressionLine,
+            ("dynamicRangeCompressionRf" Data..=)
+              Prelude.<$> dynamicRangeCompressionRf,
+            ("lfeControl" Data..=) Prelude.<$> lfeControl,
+            ("lfeFilter" Data..=) Prelude.<$> lfeFilter,
+            ("loRoCenterMixLevel" Data..=)
+              Prelude.<$> loRoCenterMixLevel,
+            ("loRoSurroundMixLevel" Data..=)
+              Prelude.<$> loRoSurroundMixLevel,
+            ("ltRtCenterMixLevel" Data..=)
+              Prelude.<$> ltRtCenterMixLevel,
+            ("ltRtSurroundMixLevel" Data..=)
+              Prelude.<$> ltRtSurroundMixLevel,
+            ("metadataControl" Data..=)
+              Prelude.<$> metadataControl,
+            ("passthroughControl" Data..=)
+              Prelude.<$> passthroughControl,
+            ("phaseControl" Data..=) Prelude.<$> phaseControl,
+            ("sampleRate" Data..=) Prelude.<$> sampleRate,
+            ("stereoDownmix" Data..=) Prelude.<$> stereoDownmix,
+            ("surroundExMode" Data..=)
+              Prelude.<$> surroundExMode,
+            ("surroundMode" Data..=) Prelude.<$> surroundMode
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3StereoDownmix.hs b/gen/Amazonka/MediaConvert/Types/Eac3StereoDownmix.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3StereoDownmix.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3StereoDownmix
+-- 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.Eac3StereoDownmix
+  ( Eac3StereoDownmix
+      ( ..,
+        Eac3StereoDownmix_DPL2,
+        Eac3StereoDownmix_LO_RO,
+        Eac3StereoDownmix_LT_RT,
+        Eac3StereoDownmix_NOT_INDICATED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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).
+newtype Eac3StereoDownmix = Eac3StereoDownmix'
+  { fromEac3StereoDownmix ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3StereoDownmix_DPL2 :: Eac3StereoDownmix
+pattern Eac3StereoDownmix_DPL2 = Eac3StereoDownmix' "DPL2"
+
+pattern Eac3StereoDownmix_LO_RO :: Eac3StereoDownmix
+pattern Eac3StereoDownmix_LO_RO = Eac3StereoDownmix' "LO_RO"
+
+pattern Eac3StereoDownmix_LT_RT :: Eac3StereoDownmix
+pattern Eac3StereoDownmix_LT_RT = Eac3StereoDownmix' "LT_RT"
+
+pattern Eac3StereoDownmix_NOT_INDICATED :: Eac3StereoDownmix
+pattern Eac3StereoDownmix_NOT_INDICATED = Eac3StereoDownmix' "NOT_INDICATED"
+
+{-# COMPLETE
+  Eac3StereoDownmix_DPL2,
+  Eac3StereoDownmix_LO_RO,
+  Eac3StereoDownmix_LT_RT,
+  Eac3StereoDownmix_NOT_INDICATED,
+  Eac3StereoDownmix'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3SurroundExMode.hs b/gen/Amazonka/MediaConvert/Types/Eac3SurroundExMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3SurroundExMode.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3SurroundExMode
+-- 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.Eac3SurroundExMode
+  ( Eac3SurroundExMode
+      ( ..,
+        Eac3SurroundExMode_DISABLED,
+        Eac3SurroundExMode_ENABLED,
+        Eac3SurroundExMode_NOT_INDICATED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When encoding 3\/2 audio, sets whether an extra center back surround
+-- channel is matrix encoded into the left and right surround channels.
+newtype Eac3SurroundExMode = Eac3SurroundExMode'
+  { fromEac3SurroundExMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3SurroundExMode_DISABLED :: Eac3SurroundExMode
+pattern Eac3SurroundExMode_DISABLED = Eac3SurroundExMode' "DISABLED"
+
+pattern Eac3SurroundExMode_ENABLED :: Eac3SurroundExMode
+pattern Eac3SurroundExMode_ENABLED = Eac3SurroundExMode' "ENABLED"
+
+pattern Eac3SurroundExMode_NOT_INDICATED :: Eac3SurroundExMode
+pattern Eac3SurroundExMode_NOT_INDICATED = Eac3SurroundExMode' "NOT_INDICATED"
+
+{-# COMPLETE
+  Eac3SurroundExMode_DISABLED,
+  Eac3SurroundExMode_ENABLED,
+  Eac3SurroundExMode_NOT_INDICATED,
+  Eac3SurroundExMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Eac3SurroundMode.hs b/gen/Amazonka/MediaConvert/Types/Eac3SurroundMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Eac3SurroundMode.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Eac3SurroundMode
+-- 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.Eac3SurroundMode
+  ( Eac3SurroundMode
+      ( ..,
+        Eac3SurroundMode_DISABLED,
+        Eac3SurroundMode_ENABLED,
+        Eac3SurroundMode_NOT_INDICATED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When encoding 2\/0 audio, sets whether Dolby Surround is matrix encoded
+-- into the two channels.
+newtype Eac3SurroundMode = Eac3SurroundMode'
+  { fromEac3SurroundMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Eac3SurroundMode_DISABLED :: Eac3SurroundMode
+pattern Eac3SurroundMode_DISABLED = Eac3SurroundMode' "DISABLED"
+
+pattern Eac3SurroundMode_ENABLED :: Eac3SurroundMode
+pattern Eac3SurroundMode_ENABLED = Eac3SurroundMode' "ENABLED"
+
+pattern Eac3SurroundMode_NOT_INDICATED :: Eac3SurroundMode
+pattern Eac3SurroundMode_NOT_INDICATED = Eac3SurroundMode' "NOT_INDICATED"
+
+{-# COMPLETE
+  Eac3SurroundMode_DISABLED,
+  Eac3SurroundMode_ENABLED,
+  Eac3SurroundMode_NOT_INDICATED,
+  Eac3SurroundMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/EmbeddedConvert608To708.hs b/gen/Amazonka/MediaConvert/Types/EmbeddedConvert608To708.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/EmbeddedConvert608To708.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.EmbeddedConvert608To708
+-- 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.EmbeddedConvert608To708
+  ( EmbeddedConvert608To708
+      ( ..,
+        EmbeddedConvert608To708_DISABLED,
+        EmbeddedConvert608To708_UPCONVERT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether this set of input captions appears in your outputs in
+-- both 608 and 708 format. If you choose Upconvert (UPCONVERT),
+-- MediaConvert includes the captions data in two ways: it passes the 608
+-- data through using the 608 compatibility bytes fields of the 708
+-- wrapper, and it also translates the 608 data into 708.
+newtype EmbeddedConvert608To708 = EmbeddedConvert608To708'
+  { fromEmbeddedConvert608To708 ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern EmbeddedConvert608To708_DISABLED :: EmbeddedConvert608To708
+pattern EmbeddedConvert608To708_DISABLED = EmbeddedConvert608To708' "DISABLED"
+
+pattern EmbeddedConvert608To708_UPCONVERT :: EmbeddedConvert608To708
+pattern EmbeddedConvert608To708_UPCONVERT = EmbeddedConvert608To708' "UPCONVERT"
+
+{-# COMPLETE
+  EmbeddedConvert608To708_DISABLED,
+  EmbeddedConvert608To708_UPCONVERT,
+  EmbeddedConvert608To708'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/EmbeddedDestinationSettings.hs b/gen/Amazonka/MediaConvert/Types/EmbeddedDestinationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/EmbeddedDestinationSettings.hs
@@ -0,0 +1,147 @@
+{-# 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.EmbeddedDestinationSettings
+-- 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.EmbeddedDestinationSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to CEA\/EIA-608 and CEA\/EIA-708 (also called embedded
+-- or ancillary) captions. Set up embedded captions in the same output as
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/embedded-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to
+-- EMBEDDED, EMBEDDED_PLUS_SCTE20, or SCTE20_PLUS_EMBEDDED.
+--
+-- /See:/ 'newEmbeddedDestinationSettings' smart constructor.
+data EmbeddedDestinationSettings = EmbeddedDestinationSettings'
+  { -- | Ignore this setting unless your input captions are SCC format and your
+    -- output captions are embedded in the video stream. Specify a CC number
+    -- for each captions channel in this output. If you have two channels,
+    -- choose CC numbers that aren\'t in the same field. For example, choose 1
+    -- and 3. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/dual-scc-to-embedded.
+    destination608ChannelNumber :: Prelude.Maybe Prelude.Natural,
+    -- | Ignore this setting unless your input captions are SCC format and you
+    -- want both 608 and 708 captions embedded in your output stream.
+    -- Optionally, specify the 708 service number for each output captions
+    -- channel. Choose a different number for each channel. To use this
+    -- setting, also set Force 608 to 708 upconvert (Convert608To708) to
+    -- Upconvert (UPCONVERT) in your input captions selector settings. If you
+    -- choose to upconvert but don\'t specify a 708 service number,
+    -- MediaConvert uses the number that you specify for CC channel number
+    -- (destination608ChannelNumber) for the 708 service number. For more
+    -- information, see
+    -- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/dual-scc-to-embedded.
+    destination708ServiceNumber :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EmbeddedDestinationSettings' 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:
+--
+-- 'destination608ChannelNumber', 'embeddedDestinationSettings_destination608ChannelNumber' - Ignore this setting unless your input captions are SCC format and your
+-- output captions are embedded in the video stream. Specify a CC number
+-- for each captions channel in this output. If you have two channels,
+-- choose CC numbers that aren\'t in the same field. For example, choose 1
+-- and 3. For more information, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/dual-scc-to-embedded.
+--
+-- 'destination708ServiceNumber', 'embeddedDestinationSettings_destination708ServiceNumber' - Ignore this setting unless your input captions are SCC format and you
+-- want both 608 and 708 captions embedded in your output stream.
+-- Optionally, specify the 708 service number for each output captions
+-- channel. Choose a different number for each channel. To use this
+-- setting, also set Force 608 to 708 upconvert (Convert608To708) to
+-- Upconvert (UPCONVERT) in your input captions selector settings. If you
+-- choose to upconvert but don\'t specify a 708 service number,
+-- MediaConvert uses the number that you specify for CC channel number
+-- (destination608ChannelNumber) for the 708 service number. For more
+-- information, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/dual-scc-to-embedded.
+newEmbeddedDestinationSettings ::
+  EmbeddedDestinationSettings
+newEmbeddedDestinationSettings =
+  EmbeddedDestinationSettings'
+    { destination608ChannelNumber =
+        Prelude.Nothing,
+      destination708ServiceNumber = Prelude.Nothing
+    }
+
+-- | Ignore this setting unless your input captions are SCC format and your
+-- output captions are embedded in the video stream. Specify a CC number
+-- for each captions channel in this output. If you have two channels,
+-- choose CC numbers that aren\'t in the same field. For example, choose 1
+-- and 3. For more information, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/dual-scc-to-embedded.
+embeddedDestinationSettings_destination608ChannelNumber :: Lens.Lens' EmbeddedDestinationSettings (Prelude.Maybe Prelude.Natural)
+embeddedDestinationSettings_destination608ChannelNumber = Lens.lens (\EmbeddedDestinationSettings' {destination608ChannelNumber} -> destination608ChannelNumber) (\s@EmbeddedDestinationSettings' {} a -> s {destination608ChannelNumber = a} :: EmbeddedDestinationSettings)
+
+-- | Ignore this setting unless your input captions are SCC format and you
+-- want both 608 and 708 captions embedded in your output stream.
+-- Optionally, specify the 708 service number for each output captions
+-- channel. Choose a different number for each channel. To use this
+-- setting, also set Force 608 to 708 upconvert (Convert608To708) to
+-- Upconvert (UPCONVERT) in your input captions selector settings. If you
+-- choose to upconvert but don\'t specify a 708 service number,
+-- MediaConvert uses the number that you specify for CC channel number
+-- (destination608ChannelNumber) for the 708 service number. For more
+-- information, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/dual-scc-to-embedded.
+embeddedDestinationSettings_destination708ServiceNumber :: Lens.Lens' EmbeddedDestinationSettings (Prelude.Maybe Prelude.Natural)
+embeddedDestinationSettings_destination708ServiceNumber = Lens.lens (\EmbeddedDestinationSettings' {destination708ServiceNumber} -> destination708ServiceNumber) (\s@EmbeddedDestinationSettings' {} a -> s {destination708ServiceNumber = a} :: EmbeddedDestinationSettings)
+
+instance Data.FromJSON EmbeddedDestinationSettings where
+  parseJSON =
+    Data.withObject
+      "EmbeddedDestinationSettings"
+      ( \x ->
+          EmbeddedDestinationSettings'
+            Prelude.<$> (x Data..:? "destination608ChannelNumber")
+            Prelude.<*> (x Data..:? "destination708ServiceNumber")
+      )
+
+instance Prelude.Hashable EmbeddedDestinationSettings where
+  hashWithSalt _salt EmbeddedDestinationSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` destination608ChannelNumber
+      `Prelude.hashWithSalt` destination708ServiceNumber
+
+instance Prelude.NFData EmbeddedDestinationSettings where
+  rnf EmbeddedDestinationSettings' {..} =
+    Prelude.rnf destination608ChannelNumber
+      `Prelude.seq` Prelude.rnf destination708ServiceNumber
+
+instance Data.ToJSON EmbeddedDestinationSettings where
+  toJSON EmbeddedDestinationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("destination608ChannelNumber" Data..=)
+              Prelude.<$> destination608ChannelNumber,
+            ("destination708ServiceNumber" Data..=)
+              Prelude.<$> destination708ServiceNumber
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/EmbeddedSourceSettings.hs b/gen/Amazonka/MediaConvert/Types/EmbeddedSourceSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/EmbeddedSourceSettings.hs
@@ -0,0 +1,153 @@
+{-# 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.EmbeddedSourceSettings
+-- 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.EmbeddedSourceSettings 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.EmbeddedConvert608To708
+import Amazonka.MediaConvert.Types.EmbeddedTerminateCaptions
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for embedded captions Source
+--
+-- /See:/ 'newEmbeddedSourceSettings' smart constructor.
+data EmbeddedSourceSettings = EmbeddedSourceSettings'
+  { -- | Specify whether this set of input captions appears in your outputs in
+    -- both 608 and 708 format. If you choose Upconvert (UPCONVERT),
+    -- MediaConvert includes the captions data in two ways: it passes the 608
+    -- data through using the 608 compatibility bytes fields of the 708
+    -- wrapper, and it also translates the 608 data into 708.
+    convert608To708 :: Prelude.Maybe EmbeddedConvert608To708,
+    -- | Specifies the 608\/708 channel number within the video track from which
+    -- to extract captions. Unused for passthrough.
+    source608ChannelNumber :: Prelude.Maybe Prelude.Natural,
+    -- | Specifies the video track index used for extracting captions. The system
+    -- only supports one input video track, so this should always be set to
+    -- \'1\'.
+    source608TrackNumber :: Prelude.Maybe Prelude.Natural,
+    -- | By default, the service terminates any unterminated captions at the end
+    -- of each input. If you want the caption to continue onto your next input,
+    -- disable this setting.
+    terminateCaptions :: Prelude.Maybe EmbeddedTerminateCaptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EmbeddedSourceSettings' 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:
+--
+-- 'convert608To708', 'embeddedSourceSettings_convert608To708' - Specify whether this set of input captions appears in your outputs in
+-- both 608 and 708 format. If you choose Upconvert (UPCONVERT),
+-- MediaConvert includes the captions data in two ways: it passes the 608
+-- data through using the 608 compatibility bytes fields of the 708
+-- wrapper, and it also translates the 608 data into 708.
+--
+-- 'source608ChannelNumber', 'embeddedSourceSettings_source608ChannelNumber' - Specifies the 608\/708 channel number within the video track from which
+-- to extract captions. Unused for passthrough.
+--
+-- 'source608TrackNumber', 'embeddedSourceSettings_source608TrackNumber' - Specifies the video track index used for extracting captions. The system
+-- only supports one input video track, so this should always be set to
+-- \'1\'.
+--
+-- 'terminateCaptions', 'embeddedSourceSettings_terminateCaptions' - By default, the service terminates any unterminated captions at the end
+-- of each input. If you want the caption to continue onto your next input,
+-- disable this setting.
+newEmbeddedSourceSettings ::
+  EmbeddedSourceSettings
+newEmbeddedSourceSettings =
+  EmbeddedSourceSettings'
+    { convert608To708 =
+        Prelude.Nothing,
+      source608ChannelNumber = Prelude.Nothing,
+      source608TrackNumber = Prelude.Nothing,
+      terminateCaptions = Prelude.Nothing
+    }
+
+-- | Specify whether this set of input captions appears in your outputs in
+-- both 608 and 708 format. If you choose Upconvert (UPCONVERT),
+-- MediaConvert includes the captions data in two ways: it passes the 608
+-- data through using the 608 compatibility bytes fields of the 708
+-- wrapper, and it also translates the 608 data into 708.
+embeddedSourceSettings_convert608To708 :: Lens.Lens' EmbeddedSourceSettings (Prelude.Maybe EmbeddedConvert608To708)
+embeddedSourceSettings_convert608To708 = Lens.lens (\EmbeddedSourceSettings' {convert608To708} -> convert608To708) (\s@EmbeddedSourceSettings' {} a -> s {convert608To708 = a} :: EmbeddedSourceSettings)
+
+-- | Specifies the 608\/708 channel number within the video track from which
+-- to extract captions. Unused for passthrough.
+embeddedSourceSettings_source608ChannelNumber :: Lens.Lens' EmbeddedSourceSettings (Prelude.Maybe Prelude.Natural)
+embeddedSourceSettings_source608ChannelNumber = Lens.lens (\EmbeddedSourceSettings' {source608ChannelNumber} -> source608ChannelNumber) (\s@EmbeddedSourceSettings' {} a -> s {source608ChannelNumber = a} :: EmbeddedSourceSettings)
+
+-- | Specifies the video track index used for extracting captions. The system
+-- only supports one input video track, so this should always be set to
+-- \'1\'.
+embeddedSourceSettings_source608TrackNumber :: Lens.Lens' EmbeddedSourceSettings (Prelude.Maybe Prelude.Natural)
+embeddedSourceSettings_source608TrackNumber = Lens.lens (\EmbeddedSourceSettings' {source608TrackNumber} -> source608TrackNumber) (\s@EmbeddedSourceSettings' {} a -> s {source608TrackNumber = a} :: EmbeddedSourceSettings)
+
+-- | By default, the service terminates any unterminated captions at the end
+-- of each input. If you want the caption to continue onto your next input,
+-- disable this setting.
+embeddedSourceSettings_terminateCaptions :: Lens.Lens' EmbeddedSourceSettings (Prelude.Maybe EmbeddedTerminateCaptions)
+embeddedSourceSettings_terminateCaptions = Lens.lens (\EmbeddedSourceSettings' {terminateCaptions} -> terminateCaptions) (\s@EmbeddedSourceSettings' {} a -> s {terminateCaptions = a} :: EmbeddedSourceSettings)
+
+instance Data.FromJSON EmbeddedSourceSettings where
+  parseJSON =
+    Data.withObject
+      "EmbeddedSourceSettings"
+      ( \x ->
+          EmbeddedSourceSettings'
+            Prelude.<$> (x Data..:? "convert608To708")
+            Prelude.<*> (x Data..:? "source608ChannelNumber")
+            Prelude.<*> (x Data..:? "source608TrackNumber")
+            Prelude.<*> (x Data..:? "terminateCaptions")
+      )
+
+instance Prelude.Hashable EmbeddedSourceSettings where
+  hashWithSalt _salt EmbeddedSourceSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` convert608To708
+      `Prelude.hashWithSalt` source608ChannelNumber
+      `Prelude.hashWithSalt` source608TrackNumber
+      `Prelude.hashWithSalt` terminateCaptions
+
+instance Prelude.NFData EmbeddedSourceSettings where
+  rnf EmbeddedSourceSettings' {..} =
+    Prelude.rnf convert608To708
+      `Prelude.seq` Prelude.rnf source608ChannelNumber
+      `Prelude.seq` Prelude.rnf source608TrackNumber
+      `Prelude.seq` Prelude.rnf terminateCaptions
+
+instance Data.ToJSON EmbeddedSourceSettings where
+  toJSON EmbeddedSourceSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("convert608To708" Data..=)
+              Prelude.<$> convert608To708,
+            ("source608ChannelNumber" Data..=)
+              Prelude.<$> source608ChannelNumber,
+            ("source608TrackNumber" Data..=)
+              Prelude.<$> source608TrackNumber,
+            ("terminateCaptions" Data..=)
+              Prelude.<$> terminateCaptions
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/EmbeddedTerminateCaptions.hs b/gen/Amazonka/MediaConvert/Types/EmbeddedTerminateCaptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/EmbeddedTerminateCaptions.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.EmbeddedTerminateCaptions
+-- 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.EmbeddedTerminateCaptions
+  ( EmbeddedTerminateCaptions
+      ( ..,
+        EmbeddedTerminateCaptions_DISABLED,
+        EmbeddedTerminateCaptions_END_OF_INPUT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | By default, the service terminates any unterminated captions at the end
+-- of each input. If you want the caption to continue onto your next input,
+-- disable this setting.
+newtype EmbeddedTerminateCaptions = EmbeddedTerminateCaptions'
+  { fromEmbeddedTerminateCaptions ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern EmbeddedTerminateCaptions_DISABLED :: EmbeddedTerminateCaptions
+pattern EmbeddedTerminateCaptions_DISABLED = EmbeddedTerminateCaptions' "DISABLED"
+
+pattern EmbeddedTerminateCaptions_END_OF_INPUT :: EmbeddedTerminateCaptions
+pattern EmbeddedTerminateCaptions_END_OF_INPUT = EmbeddedTerminateCaptions' "END_OF_INPUT"
+
+{-# COMPLETE
+  EmbeddedTerminateCaptions_DISABLED,
+  EmbeddedTerminateCaptions_END_OF_INPUT,
+  EmbeddedTerminateCaptions'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/EmbeddedTimecodeOverride.hs b/gen/Amazonka/MediaConvert/Types/EmbeddedTimecodeOverride.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/EmbeddedTimecodeOverride.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.EmbeddedTimecodeOverride
+-- 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.EmbeddedTimecodeOverride
+  ( EmbeddedTimecodeOverride
+      ( ..,
+        EmbeddedTimecodeOverride_NONE,
+        EmbeddedTimecodeOverride_USE_MDPM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Set Embedded timecode override (embeddedTimecodeOverride) to Use MDPM
+-- (USE_MDPM) when your AVCHD input contains timecode tag data in the
+-- Modified Digital Video Pack Metadata (MDPM). When you do, we recommend
+-- you also set Timecode source (inputTimecodeSource) to Embedded
+-- (EMBEDDED). Leave Embedded timecode override blank, or set to None
+-- (NONE), when your input does not contain MDPM timecode.
+newtype EmbeddedTimecodeOverride = EmbeddedTimecodeOverride'
+  { fromEmbeddedTimecodeOverride ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern EmbeddedTimecodeOverride_NONE :: EmbeddedTimecodeOverride
+pattern EmbeddedTimecodeOverride_NONE = EmbeddedTimecodeOverride' "NONE"
+
+pattern EmbeddedTimecodeOverride_USE_MDPM :: EmbeddedTimecodeOverride
+pattern EmbeddedTimecodeOverride_USE_MDPM = EmbeddedTimecodeOverride' "USE_MDPM"
+
+{-# COMPLETE
+  EmbeddedTimecodeOverride_NONE,
+  EmbeddedTimecodeOverride_USE_MDPM,
+  EmbeddedTimecodeOverride'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Endpoint.hs b/gen/Amazonka/MediaConvert/Types/Endpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Endpoint.hs
@@ -0,0 +1,64 @@
+{-# 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.Endpoint
+-- 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.Endpoint where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes an account-specific API endpoint.
+--
+-- /See:/ 'newEndpoint' smart constructor.
+data Endpoint = Endpoint'
+  { -- | URL of endpoint
+    url :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Endpoint' 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:
+--
+-- 'url', 'endpoint_url' - URL of endpoint
+newEndpoint ::
+  Endpoint
+newEndpoint = Endpoint' {url = Prelude.Nothing}
+
+-- | URL of endpoint
+endpoint_url :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
+endpoint_url = Lens.lens (\Endpoint' {url} -> url) (\s@Endpoint' {} a -> s {url = a} :: Endpoint)
+
+instance Data.FromJSON Endpoint where
+  parseJSON =
+    Data.withObject
+      "Endpoint"
+      (\x -> Endpoint' Prelude.<$> (x Data..:? "url"))
+
+instance Prelude.Hashable Endpoint where
+  hashWithSalt _salt Endpoint' {..} =
+    _salt `Prelude.hashWithSalt` url
+
+instance Prelude.NFData Endpoint where
+  rnf Endpoint' {..} = Prelude.rnf url
diff --git a/gen/Amazonka/MediaConvert/Types/EsamManifestConfirmConditionNotification.hs b/gen/Amazonka/MediaConvert/Types/EsamManifestConfirmConditionNotification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/EsamManifestConfirmConditionNotification.hs
@@ -0,0 +1,103 @@
+{-# 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.EsamManifestConfirmConditionNotification
+-- 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.EsamManifestConfirmConditionNotification where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | ESAM ManifestConfirmConditionNotification defined by
+-- OC-SP-ESAM-API-I03-131025.
+--
+-- /See:/ 'newEsamManifestConfirmConditionNotification' smart constructor.
+data EsamManifestConfirmConditionNotification = EsamManifestConfirmConditionNotification'
+  { -- | Provide your ESAM ManifestConfirmConditionNotification XML document
+    -- inside your JSON job settings. Form the XML document as per
+    -- OC-SP-ESAM-API-I03-131025. The transcoder will use the Manifest
+    -- Conditioning instructions in the message that you supply.
+    mccXml :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EsamManifestConfirmConditionNotification' 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:
+--
+-- 'mccXml', 'esamManifestConfirmConditionNotification_mccXml' - Provide your ESAM ManifestConfirmConditionNotification XML document
+-- inside your JSON job settings. Form the XML document as per
+-- OC-SP-ESAM-API-I03-131025. The transcoder will use the Manifest
+-- Conditioning instructions in the message that you supply.
+newEsamManifestConfirmConditionNotification ::
+  EsamManifestConfirmConditionNotification
+newEsamManifestConfirmConditionNotification =
+  EsamManifestConfirmConditionNotification'
+    { mccXml =
+        Prelude.Nothing
+    }
+
+-- | Provide your ESAM ManifestConfirmConditionNotification XML document
+-- inside your JSON job settings. Form the XML document as per
+-- OC-SP-ESAM-API-I03-131025. The transcoder will use the Manifest
+-- Conditioning instructions in the message that you supply.
+esamManifestConfirmConditionNotification_mccXml :: Lens.Lens' EsamManifestConfirmConditionNotification (Prelude.Maybe Prelude.Text)
+esamManifestConfirmConditionNotification_mccXml = Lens.lens (\EsamManifestConfirmConditionNotification' {mccXml} -> mccXml) (\s@EsamManifestConfirmConditionNotification' {} a -> s {mccXml = a} :: EsamManifestConfirmConditionNotification)
+
+instance
+  Data.FromJSON
+    EsamManifestConfirmConditionNotification
+  where
+  parseJSON =
+    Data.withObject
+      "EsamManifestConfirmConditionNotification"
+      ( \x ->
+          EsamManifestConfirmConditionNotification'
+            Prelude.<$> (x Data..:? "mccXml")
+      )
+
+instance
+  Prelude.Hashable
+    EsamManifestConfirmConditionNotification
+  where
+  hashWithSalt
+    _salt
+    EsamManifestConfirmConditionNotification' {..} =
+      _salt `Prelude.hashWithSalt` mccXml
+
+instance
+  Prelude.NFData
+    EsamManifestConfirmConditionNotification
+  where
+  rnf EsamManifestConfirmConditionNotification' {..} =
+    Prelude.rnf mccXml
+
+instance
+  Data.ToJSON
+    EsamManifestConfirmConditionNotification
+  where
+  toJSON EsamManifestConfirmConditionNotification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("mccXml" Data..=) Prelude.<$> mccXml]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/EsamSettings.hs b/gen/Amazonka/MediaConvert/Types/EsamSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/EsamSettings.hs
@@ -0,0 +1,137 @@
+{-# 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.EsamSettings
+-- 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.EsamSettings 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.EsamManifestConfirmConditionNotification
+import Amazonka.MediaConvert.Types.EsamSignalProcessingNotification
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for Event Signaling And Messaging (ESAM). If you don\'t do ad
+-- insertion, you can ignore these settings.
+--
+-- /See:/ 'newEsamSettings' smart constructor.
+data EsamSettings = EsamSettings'
+  { -- | Specifies an ESAM ManifestConfirmConditionNotification XML as per
+    -- OC-SP-ESAM-API-I03-131025. The transcoder uses the manifest conditioning
+    -- instructions that you provide in the setting MCC XML (mccXml).
+    manifestConfirmConditionNotification :: Prelude.Maybe EsamManifestConfirmConditionNotification,
+    -- | Specifies the stream distance, in milliseconds, between the SCTE 35
+    -- messages that the transcoder places and the splice points that they
+    -- refer to. If the time between the start of the asset and the SCTE-35
+    -- message is less than this value, then the transcoder places the SCTE-35
+    -- marker at the beginning of the stream.
+    responseSignalPreroll :: Prelude.Maybe Prelude.Natural,
+    -- | Specifies an ESAM SignalProcessingNotification XML as per
+    -- OC-SP-ESAM-API-I03-131025. The transcoder uses the signal processing
+    -- instructions that you provide in the setting SCC XML (sccXml).
+    signalProcessingNotification :: Prelude.Maybe EsamSignalProcessingNotification
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EsamSettings' 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:
+--
+-- 'manifestConfirmConditionNotification', 'esamSettings_manifestConfirmConditionNotification' - Specifies an ESAM ManifestConfirmConditionNotification XML as per
+-- OC-SP-ESAM-API-I03-131025. The transcoder uses the manifest conditioning
+-- instructions that you provide in the setting MCC XML (mccXml).
+--
+-- 'responseSignalPreroll', 'esamSettings_responseSignalPreroll' - Specifies the stream distance, in milliseconds, between the SCTE 35
+-- messages that the transcoder places and the splice points that they
+-- refer to. If the time between the start of the asset and the SCTE-35
+-- message is less than this value, then the transcoder places the SCTE-35
+-- marker at the beginning of the stream.
+--
+-- 'signalProcessingNotification', 'esamSettings_signalProcessingNotification' - Specifies an ESAM SignalProcessingNotification XML as per
+-- OC-SP-ESAM-API-I03-131025. The transcoder uses the signal processing
+-- instructions that you provide in the setting SCC XML (sccXml).
+newEsamSettings ::
+  EsamSettings
+newEsamSettings =
+  EsamSettings'
+    { manifestConfirmConditionNotification =
+        Prelude.Nothing,
+      responseSignalPreroll = Prelude.Nothing,
+      signalProcessingNotification = Prelude.Nothing
+    }
+
+-- | Specifies an ESAM ManifestConfirmConditionNotification XML as per
+-- OC-SP-ESAM-API-I03-131025. The transcoder uses the manifest conditioning
+-- instructions that you provide in the setting MCC XML (mccXml).
+esamSettings_manifestConfirmConditionNotification :: Lens.Lens' EsamSettings (Prelude.Maybe EsamManifestConfirmConditionNotification)
+esamSettings_manifestConfirmConditionNotification = Lens.lens (\EsamSettings' {manifestConfirmConditionNotification} -> manifestConfirmConditionNotification) (\s@EsamSettings' {} a -> s {manifestConfirmConditionNotification = a} :: EsamSettings)
+
+-- | Specifies the stream distance, in milliseconds, between the SCTE 35
+-- messages that the transcoder places and the splice points that they
+-- refer to. If the time between the start of the asset and the SCTE-35
+-- message is less than this value, then the transcoder places the SCTE-35
+-- marker at the beginning of the stream.
+esamSettings_responseSignalPreroll :: Lens.Lens' EsamSettings (Prelude.Maybe Prelude.Natural)
+esamSettings_responseSignalPreroll = Lens.lens (\EsamSettings' {responseSignalPreroll} -> responseSignalPreroll) (\s@EsamSettings' {} a -> s {responseSignalPreroll = a} :: EsamSettings)
+
+-- | Specifies an ESAM SignalProcessingNotification XML as per
+-- OC-SP-ESAM-API-I03-131025. The transcoder uses the signal processing
+-- instructions that you provide in the setting SCC XML (sccXml).
+esamSettings_signalProcessingNotification :: Lens.Lens' EsamSettings (Prelude.Maybe EsamSignalProcessingNotification)
+esamSettings_signalProcessingNotification = Lens.lens (\EsamSettings' {signalProcessingNotification} -> signalProcessingNotification) (\s@EsamSettings' {} a -> s {signalProcessingNotification = a} :: EsamSettings)
+
+instance Data.FromJSON EsamSettings where
+  parseJSON =
+    Data.withObject
+      "EsamSettings"
+      ( \x ->
+          EsamSettings'
+            Prelude.<$> (x Data..:? "manifestConfirmConditionNotification")
+            Prelude.<*> (x Data..:? "responseSignalPreroll")
+            Prelude.<*> (x Data..:? "signalProcessingNotification")
+      )
+
+instance Prelude.Hashable EsamSettings where
+  hashWithSalt _salt EsamSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` manifestConfirmConditionNotification
+      `Prelude.hashWithSalt` responseSignalPreroll
+      `Prelude.hashWithSalt` signalProcessingNotification
+
+instance Prelude.NFData EsamSettings where
+  rnf EsamSettings' {..} =
+    Prelude.rnf manifestConfirmConditionNotification
+      `Prelude.seq` Prelude.rnf responseSignalPreroll
+      `Prelude.seq` Prelude.rnf signalProcessingNotification
+
+instance Data.ToJSON EsamSettings where
+  toJSON EsamSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("manifestConfirmConditionNotification" Data..=)
+              Prelude.<$> manifestConfirmConditionNotification,
+            ("responseSignalPreroll" Data..=)
+              Prelude.<$> responseSignalPreroll,
+            ("signalProcessingNotification" Data..=)
+              Prelude.<$> signalProcessingNotification
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/EsamSignalProcessingNotification.hs b/gen/Amazonka/MediaConvert/Types/EsamSignalProcessingNotification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/EsamSignalProcessingNotification.hs
@@ -0,0 +1,118 @@
+{-# 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.EsamSignalProcessingNotification
+-- 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.EsamSignalProcessingNotification where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | ESAM SignalProcessingNotification data defined by
+-- OC-SP-ESAM-API-I03-131025.
+--
+-- /See:/ 'newEsamSignalProcessingNotification' smart constructor.
+data EsamSignalProcessingNotification = EsamSignalProcessingNotification'
+  { -- | Provide your ESAM SignalProcessingNotification XML document inside your
+    -- JSON job settings. Form the XML document as per
+    -- OC-SP-ESAM-API-I03-131025. The transcoder will use the signal processing
+    -- instructions in the message that you supply. Provide your ESAM
+    -- SignalProcessingNotification XML document inside your JSON job settings.
+    -- For your MPEG2-TS file outputs, if you want the service to place SCTE-35
+    -- markers at the insertion points you specify in the XML document, you
+    -- must also enable SCTE-35 ESAM (scte35Esam). Note that you can either
+    -- specify an ESAM XML document or enable SCTE-35 passthrough. You can\'t
+    -- do both.
+    sccXml :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EsamSignalProcessingNotification' 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:
+--
+-- 'sccXml', 'esamSignalProcessingNotification_sccXml' - Provide your ESAM SignalProcessingNotification XML document inside your
+-- JSON job settings. Form the XML document as per
+-- OC-SP-ESAM-API-I03-131025. The transcoder will use the signal processing
+-- instructions in the message that you supply. Provide your ESAM
+-- SignalProcessingNotification XML document inside your JSON job settings.
+-- For your MPEG2-TS file outputs, if you want the service to place SCTE-35
+-- markers at the insertion points you specify in the XML document, you
+-- must also enable SCTE-35 ESAM (scte35Esam). Note that you can either
+-- specify an ESAM XML document or enable SCTE-35 passthrough. You can\'t
+-- do both.
+newEsamSignalProcessingNotification ::
+  EsamSignalProcessingNotification
+newEsamSignalProcessingNotification =
+  EsamSignalProcessingNotification'
+    { sccXml =
+        Prelude.Nothing
+    }
+
+-- | Provide your ESAM SignalProcessingNotification XML document inside your
+-- JSON job settings. Form the XML document as per
+-- OC-SP-ESAM-API-I03-131025. The transcoder will use the signal processing
+-- instructions in the message that you supply. Provide your ESAM
+-- SignalProcessingNotification XML document inside your JSON job settings.
+-- For your MPEG2-TS file outputs, if you want the service to place SCTE-35
+-- markers at the insertion points you specify in the XML document, you
+-- must also enable SCTE-35 ESAM (scte35Esam). Note that you can either
+-- specify an ESAM XML document or enable SCTE-35 passthrough. You can\'t
+-- do both.
+esamSignalProcessingNotification_sccXml :: Lens.Lens' EsamSignalProcessingNotification (Prelude.Maybe Prelude.Text)
+esamSignalProcessingNotification_sccXml = Lens.lens (\EsamSignalProcessingNotification' {sccXml} -> sccXml) (\s@EsamSignalProcessingNotification' {} a -> s {sccXml = a} :: EsamSignalProcessingNotification)
+
+instance
+  Data.FromJSON
+    EsamSignalProcessingNotification
+  where
+  parseJSON =
+    Data.withObject
+      "EsamSignalProcessingNotification"
+      ( \x ->
+          EsamSignalProcessingNotification'
+            Prelude.<$> (x Data..:? "sccXml")
+      )
+
+instance
+  Prelude.Hashable
+    EsamSignalProcessingNotification
+  where
+  hashWithSalt
+    _salt
+    EsamSignalProcessingNotification' {..} =
+      _salt `Prelude.hashWithSalt` sccXml
+
+instance
+  Prelude.NFData
+    EsamSignalProcessingNotification
+  where
+  rnf EsamSignalProcessingNotification' {..} =
+    Prelude.rnf sccXml
+
+instance Data.ToJSON EsamSignalProcessingNotification where
+  toJSON EsamSignalProcessingNotification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("sccXml" Data..=) Prelude.<$> sccXml]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/ExtendedDataServices.hs b/gen/Amazonka/MediaConvert/Types/ExtendedDataServices.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ExtendedDataServices.hs
@@ -0,0 +1,113 @@
+{-# 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.ExtendedDataServices
+-- 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.ExtendedDataServices 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.CopyProtectionAction
+import Amazonka.MediaConvert.Types.VchipAction
+import qualified Amazonka.Prelude as Prelude
+
+-- | If your source content has EIA-608 Line 21 Data Services, enable this
+-- feature to specify what MediaConvert does with the Extended Data
+-- Services (XDS) packets. You can choose to pass through XDS packets, or
+-- remove them from the output. For more information about XDS, see EIA-608
+-- Line Data Services, section 9.5.1.5 05h Content Advisory.
+--
+-- /See:/ 'newExtendedDataServices' smart constructor.
+data ExtendedDataServices = ExtendedDataServices'
+  { -- | The action to take on copy and redistribution control XDS packets. If
+    -- you select PASSTHROUGH, packets will not be changed. If you select
+    -- STRIP, any packets will be removed in output captions.
+    copyProtectionAction :: Prelude.Maybe CopyProtectionAction,
+    -- | The action to take on content advisory XDS packets. If you select
+    -- PASSTHROUGH, packets will not be changed. If you select STRIP, any
+    -- packets will be removed in output captions.
+    vchipAction :: Prelude.Maybe VchipAction
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExtendedDataServices' 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:
+--
+-- 'copyProtectionAction', 'extendedDataServices_copyProtectionAction' - The action to take on copy and redistribution control XDS packets. If
+-- you select PASSTHROUGH, packets will not be changed. If you select
+-- STRIP, any packets will be removed in output captions.
+--
+-- 'vchipAction', 'extendedDataServices_vchipAction' - The action to take on content advisory XDS packets. If you select
+-- PASSTHROUGH, packets will not be changed. If you select STRIP, any
+-- packets will be removed in output captions.
+newExtendedDataServices ::
+  ExtendedDataServices
+newExtendedDataServices =
+  ExtendedDataServices'
+    { copyProtectionAction =
+        Prelude.Nothing,
+      vchipAction = Prelude.Nothing
+    }
+
+-- | The action to take on copy and redistribution control XDS packets. If
+-- you select PASSTHROUGH, packets will not be changed. If you select
+-- STRIP, any packets will be removed in output captions.
+extendedDataServices_copyProtectionAction :: Lens.Lens' ExtendedDataServices (Prelude.Maybe CopyProtectionAction)
+extendedDataServices_copyProtectionAction = Lens.lens (\ExtendedDataServices' {copyProtectionAction} -> copyProtectionAction) (\s@ExtendedDataServices' {} a -> s {copyProtectionAction = a} :: ExtendedDataServices)
+
+-- | The action to take on content advisory XDS packets. If you select
+-- PASSTHROUGH, packets will not be changed. If you select STRIP, any
+-- packets will be removed in output captions.
+extendedDataServices_vchipAction :: Lens.Lens' ExtendedDataServices (Prelude.Maybe VchipAction)
+extendedDataServices_vchipAction = Lens.lens (\ExtendedDataServices' {vchipAction} -> vchipAction) (\s@ExtendedDataServices' {} a -> s {vchipAction = a} :: ExtendedDataServices)
+
+instance Data.FromJSON ExtendedDataServices where
+  parseJSON =
+    Data.withObject
+      "ExtendedDataServices"
+      ( \x ->
+          ExtendedDataServices'
+            Prelude.<$> (x Data..:? "copyProtectionAction")
+            Prelude.<*> (x Data..:? "vchipAction")
+      )
+
+instance Prelude.Hashable ExtendedDataServices where
+  hashWithSalt _salt ExtendedDataServices' {..} =
+    _salt
+      `Prelude.hashWithSalt` copyProtectionAction
+      `Prelude.hashWithSalt` vchipAction
+
+instance Prelude.NFData ExtendedDataServices where
+  rnf ExtendedDataServices' {..} =
+    Prelude.rnf copyProtectionAction
+      `Prelude.seq` Prelude.rnf vchipAction
+
+instance Data.ToJSON ExtendedDataServices where
+  toJSON ExtendedDataServices' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("copyProtectionAction" Data..=)
+              Prelude.<$> copyProtectionAction,
+            ("vchipAction" Data..=) Prelude.<$> vchipAction
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/F4vMoovPlacement.hs b/gen/Amazonka/MediaConvert/Types/F4vMoovPlacement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/F4vMoovPlacement.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.F4vMoovPlacement
+-- 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.F4vMoovPlacement
+  ( F4vMoovPlacement
+      ( ..,
+        F4vMoovPlacement_NORMAL,
+        F4vMoovPlacement_PROGRESSIVE_DOWNLOAD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If set to PROGRESSIVE_DOWNLOAD, the MOOV atom is relocated to the
+-- beginning of the archive as required for progressive downloading.
+-- Otherwise it is placed normally at the end.
+newtype F4vMoovPlacement = F4vMoovPlacement'
+  { fromF4vMoovPlacement ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern F4vMoovPlacement_NORMAL :: F4vMoovPlacement
+pattern F4vMoovPlacement_NORMAL = F4vMoovPlacement' "NORMAL"
+
+pattern F4vMoovPlacement_PROGRESSIVE_DOWNLOAD :: F4vMoovPlacement
+pattern F4vMoovPlacement_PROGRESSIVE_DOWNLOAD = F4vMoovPlacement' "PROGRESSIVE_DOWNLOAD"
+
+{-# COMPLETE
+  F4vMoovPlacement_NORMAL,
+  F4vMoovPlacement_PROGRESSIVE_DOWNLOAD,
+  F4vMoovPlacement'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/F4vSettings.hs b/gen/Amazonka/MediaConvert/Types/F4vSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/F4vSettings.hs
@@ -0,0 +1,84 @@
+{-# 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.F4vSettings
+-- 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.F4vSettings 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.F4vMoovPlacement
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for F4v container
+--
+-- /See:/ 'newF4vSettings' smart constructor.
+data F4vSettings = F4vSettings'
+  { -- | If set to PROGRESSIVE_DOWNLOAD, the MOOV atom is relocated to the
+    -- beginning of the archive as required for progressive downloading.
+    -- Otherwise it is placed normally at the end.
+    moovPlacement :: Prelude.Maybe F4vMoovPlacement
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'F4vSettings' 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:
+--
+-- 'moovPlacement', 'f4vSettings_moovPlacement' - If set to PROGRESSIVE_DOWNLOAD, the MOOV atom is relocated to the
+-- beginning of the archive as required for progressive downloading.
+-- Otherwise it is placed normally at the end.
+newF4vSettings ::
+  F4vSettings
+newF4vSettings =
+  F4vSettings' {moovPlacement = Prelude.Nothing}
+
+-- | If set to PROGRESSIVE_DOWNLOAD, the MOOV atom is relocated to the
+-- beginning of the archive as required for progressive downloading.
+-- Otherwise it is placed normally at the end.
+f4vSettings_moovPlacement :: Lens.Lens' F4vSettings (Prelude.Maybe F4vMoovPlacement)
+f4vSettings_moovPlacement = Lens.lens (\F4vSettings' {moovPlacement} -> moovPlacement) (\s@F4vSettings' {} a -> s {moovPlacement = a} :: F4vSettings)
+
+instance Data.FromJSON F4vSettings where
+  parseJSON =
+    Data.withObject
+      "F4vSettings"
+      ( \x ->
+          F4vSettings'
+            Prelude.<$> (x Data..:? "moovPlacement")
+      )
+
+instance Prelude.Hashable F4vSettings where
+  hashWithSalt _salt F4vSettings' {..} =
+    _salt `Prelude.hashWithSalt` moovPlacement
+
+instance Prelude.NFData F4vSettings where
+  rnf F4vSettings' {..} = Prelude.rnf moovPlacement
+
+instance Data.ToJSON F4vSettings where
+  toJSON F4vSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("moovPlacement" Data..=)
+              Prelude.<$> moovPlacement
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/FileGroupSettings.hs b/gen/Amazonka/MediaConvert/Types/FileGroupSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/FileGroupSettings.hs
@@ -0,0 +1,114 @@
+{-# 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.FileGroupSettings
+-- 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.FileGroupSettings 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.DestinationSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to your File output group. MediaConvert uses this group
+-- of settings to generate a single standalone file, rather than a
+-- streaming package. When you work directly in your JSON job
+-- specification, include this object and any required children when you
+-- set Type, under OutputGroupSettings, to FILE_GROUP_SETTINGS.
+--
+-- /See:/ 'newFileGroupSettings' smart constructor.
+data FileGroupSettings = FileGroupSettings'
+  { -- | Use Destination (Destination) to specify the S3 output location and the
+    -- output filename base. Destination accepts format identifiers. If you do
+    -- not specify the base filename in the URI, the service will use the
+    -- filename of the input file. If your job has multiple inputs, the service
+    -- uses the filename of the first input file.
+    destination :: Prelude.Maybe Prelude.Text,
+    -- | Settings associated with the destination. Will vary based on the type of
+    -- destination
+    destinationSettings :: Prelude.Maybe DestinationSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileGroupSettings' 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:
+--
+-- 'destination', 'fileGroupSettings_destination' - Use Destination (Destination) to specify the S3 output location and the
+-- output filename base. Destination accepts format identifiers. If you do
+-- not specify the base filename in the URI, the service will use the
+-- filename of the input file. If your job has multiple inputs, the service
+-- uses the filename of the first input file.
+--
+-- 'destinationSettings', 'fileGroupSettings_destinationSettings' - Settings associated with the destination. Will vary based on the type of
+-- destination
+newFileGroupSettings ::
+  FileGroupSettings
+newFileGroupSettings =
+  FileGroupSettings'
+    { destination = Prelude.Nothing,
+      destinationSettings = Prelude.Nothing
+    }
+
+-- | Use Destination (Destination) to specify the S3 output location and the
+-- output filename base. Destination accepts format identifiers. If you do
+-- not specify the base filename in the URI, the service will use the
+-- filename of the input file. If your job has multiple inputs, the service
+-- uses the filename of the first input file.
+fileGroupSettings_destination :: Lens.Lens' FileGroupSettings (Prelude.Maybe Prelude.Text)
+fileGroupSettings_destination = Lens.lens (\FileGroupSettings' {destination} -> destination) (\s@FileGroupSettings' {} a -> s {destination = a} :: FileGroupSettings)
+
+-- | Settings associated with the destination. Will vary based on the type of
+-- destination
+fileGroupSettings_destinationSettings :: Lens.Lens' FileGroupSettings (Prelude.Maybe DestinationSettings)
+fileGroupSettings_destinationSettings = Lens.lens (\FileGroupSettings' {destinationSettings} -> destinationSettings) (\s@FileGroupSettings' {} a -> s {destinationSettings = a} :: FileGroupSettings)
+
+instance Data.FromJSON FileGroupSettings where
+  parseJSON =
+    Data.withObject
+      "FileGroupSettings"
+      ( \x ->
+          FileGroupSettings'
+            Prelude.<$> (x Data..:? "destination")
+            Prelude.<*> (x Data..:? "destinationSettings")
+      )
+
+instance Prelude.Hashable FileGroupSettings where
+  hashWithSalt _salt FileGroupSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` destination
+      `Prelude.hashWithSalt` destinationSettings
+
+instance Prelude.NFData FileGroupSettings where
+  rnf FileGroupSettings' {..} =
+    Prelude.rnf destination
+      `Prelude.seq` Prelude.rnf destinationSettings
+
+instance Data.ToJSON FileGroupSettings where
+  toJSON FileGroupSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("destination" Data..=) Prelude.<$> destination,
+            ("destinationSettings" Data..=)
+              Prelude.<$> destinationSettings
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/FileSourceConvert608To708.hs b/gen/Amazonka/MediaConvert/Types/FileSourceConvert608To708.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/FileSourceConvert608To708.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.FileSourceConvert608To708
+-- 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.FileSourceConvert608To708
+  ( FileSourceConvert608To708
+      ( ..,
+        FileSourceConvert608To708_DISABLED,
+        FileSourceConvert608To708_UPCONVERT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether this set of input captions appears in your outputs in
+-- both 608 and 708 format. If you choose Upconvert (UPCONVERT),
+-- MediaConvert includes the captions data in two ways: it passes the 608
+-- data through using the 608 compatibility bytes fields of the 708
+-- wrapper, and it also translates the 608 data into 708.
+newtype FileSourceConvert608To708 = FileSourceConvert608To708'
+  { fromFileSourceConvert608To708 ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern FileSourceConvert608To708_DISABLED :: FileSourceConvert608To708
+pattern FileSourceConvert608To708_DISABLED = FileSourceConvert608To708' "DISABLED"
+
+pattern FileSourceConvert608To708_UPCONVERT :: FileSourceConvert608To708
+pattern FileSourceConvert608To708_UPCONVERT = FileSourceConvert608To708' "UPCONVERT"
+
+{-# COMPLETE
+  FileSourceConvert608To708_DISABLED,
+  FileSourceConvert608To708_UPCONVERT,
+  FileSourceConvert608To708'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/FileSourceSettings.hs b/gen/Amazonka/MediaConvert/Types/FileSourceSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/FileSourceSettings.hs
@@ -0,0 +1,234 @@
+{-# 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.FileSourceSettings
+-- 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.FileSourceSettings 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.CaptionSourceFramerate
+import Amazonka.MediaConvert.Types.FileSourceConvert608To708
+import Amazonka.MediaConvert.Types.FileSourceTimeDeltaUnits
+import qualified Amazonka.Prelude as Prelude
+
+-- | If your input captions are SCC, SMI, SRT, STL, TTML, WebVTT, or IMSC 1.1
+-- in an xml file, specify the URI of the input caption source file. If
+-- your caption source is IMSC in an IMF package, use TrackSourceSettings
+-- instead of FileSoureSettings.
+--
+-- /See:/ 'newFileSourceSettings' smart constructor.
+data FileSourceSettings = FileSourceSettings'
+  { -- | Specify whether this set of input captions appears in your outputs in
+    -- both 608 and 708 format. If you choose Upconvert (UPCONVERT),
+    -- MediaConvert includes the captions data in two ways: it passes the 608
+    -- data through using the 608 compatibility bytes fields of the 708
+    -- wrapper, and it also translates the 608 data into 708.
+    convert608To708 :: Prelude.Maybe FileSourceConvert608To708,
+    -- | Ignore this setting unless your input captions format is SCC. To have
+    -- the service compensate for differing frame rates between your input
+    -- captions and input video, specify the frame rate of the captions file.
+    -- Specify this value as a fraction. When you work directly in your JSON
+    -- job specification, use the settings framerateNumerator and
+    -- framerateDenominator. For example, you might specify 24 \/ 1 for 24 fps,
+    -- 25 \/ 1 for 25 fps, 24000 \/ 1001 for 23.976 fps, or 30000 \/ 1001 for
+    -- 29.97 fps.
+    framerate :: Prelude.Maybe CaptionSourceFramerate,
+    -- | External caption file used for loading captions. Accepted file
+    -- extensions are \'scc\', \'ttml\', \'dfxp\', \'stl\', \'srt\', \'xml\',
+    -- \'smi\', \'webvtt\', and \'vtt\'.
+    sourceFile :: Prelude.Maybe Prelude.Text,
+    -- | Optional. Use this setting when you need to adjust the sync between your
+    -- sidecar captions and your video. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/time-delta-use-cases.html.
+    -- Enter a positive or negative number to modify the times in the captions
+    -- file. For example, type 15 to add 15 seconds to all the times in the
+    -- captions file. Type -5 to subtract 5 seconds from the times in the
+    -- captions file. You can optionally specify your time delta in
+    -- milliseconds instead of seconds. When you do so, set the related
+    -- setting, Time delta units (TimeDeltaUnits) to Milliseconds
+    -- (MILLISECONDS). Note that, when you specify a time delta for
+    -- timecode-based caption sources, such as SCC and STL, and your time delta
+    -- isn\'t a multiple of the input frame rate, MediaConvert snaps the
+    -- captions to the nearest frame. For example, when your input video frame
+    -- rate is 25 fps and you specify 1010ms for time delta, MediaConvert
+    -- delays your captions by 1000 ms.
+    timeDelta :: Prelude.Maybe Prelude.Int,
+    -- | When you use the setting Time delta (TimeDelta) to adjust the sync
+    -- between your sidecar captions and your video, use this setting to
+    -- specify the units for the delta that you specify. When you don\'t
+    -- specify a value for Time delta units (TimeDeltaUnits), MediaConvert uses
+    -- seconds by default.
+    timeDeltaUnits :: Prelude.Maybe FileSourceTimeDeltaUnits
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileSourceSettings' 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:
+--
+-- 'convert608To708', 'fileSourceSettings_convert608To708' - Specify whether this set of input captions appears in your outputs in
+-- both 608 and 708 format. If you choose Upconvert (UPCONVERT),
+-- MediaConvert includes the captions data in two ways: it passes the 608
+-- data through using the 608 compatibility bytes fields of the 708
+-- wrapper, and it also translates the 608 data into 708.
+--
+-- 'framerate', 'fileSourceSettings_framerate' - Ignore this setting unless your input captions format is SCC. To have
+-- the service compensate for differing frame rates between your input
+-- captions and input video, specify the frame rate of the captions file.
+-- Specify this value as a fraction. When you work directly in your JSON
+-- job specification, use the settings framerateNumerator and
+-- framerateDenominator. For example, you might specify 24 \/ 1 for 24 fps,
+-- 25 \/ 1 for 25 fps, 24000 \/ 1001 for 23.976 fps, or 30000 \/ 1001 for
+-- 29.97 fps.
+--
+-- 'sourceFile', 'fileSourceSettings_sourceFile' - External caption file used for loading captions. Accepted file
+-- extensions are \'scc\', \'ttml\', \'dfxp\', \'stl\', \'srt\', \'xml\',
+-- \'smi\', \'webvtt\', and \'vtt\'.
+--
+-- 'timeDelta', 'fileSourceSettings_timeDelta' - Optional. Use this setting when you need to adjust the sync between your
+-- sidecar captions and your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/time-delta-use-cases.html.
+-- Enter a positive or negative number to modify the times in the captions
+-- file. For example, type 15 to add 15 seconds to all the times in the
+-- captions file. Type -5 to subtract 5 seconds from the times in the
+-- captions file. You can optionally specify your time delta in
+-- milliseconds instead of seconds. When you do so, set the related
+-- setting, Time delta units (TimeDeltaUnits) to Milliseconds
+-- (MILLISECONDS). Note that, when you specify a time delta for
+-- timecode-based caption sources, such as SCC and STL, and your time delta
+-- isn\'t a multiple of the input frame rate, MediaConvert snaps the
+-- captions to the nearest frame. For example, when your input video frame
+-- rate is 25 fps and you specify 1010ms for time delta, MediaConvert
+-- delays your captions by 1000 ms.
+--
+-- 'timeDeltaUnits', 'fileSourceSettings_timeDeltaUnits' - When you use the setting Time delta (TimeDelta) to adjust the sync
+-- between your sidecar captions and your video, use this setting to
+-- specify the units for the delta that you specify. When you don\'t
+-- specify a value for Time delta units (TimeDeltaUnits), MediaConvert uses
+-- seconds by default.
+newFileSourceSettings ::
+  FileSourceSettings
+newFileSourceSettings =
+  FileSourceSettings'
+    { convert608To708 =
+        Prelude.Nothing,
+      framerate = Prelude.Nothing,
+      sourceFile = Prelude.Nothing,
+      timeDelta = Prelude.Nothing,
+      timeDeltaUnits = Prelude.Nothing
+    }
+
+-- | Specify whether this set of input captions appears in your outputs in
+-- both 608 and 708 format. If you choose Upconvert (UPCONVERT),
+-- MediaConvert includes the captions data in two ways: it passes the 608
+-- data through using the 608 compatibility bytes fields of the 708
+-- wrapper, and it also translates the 608 data into 708.
+fileSourceSettings_convert608To708 :: Lens.Lens' FileSourceSettings (Prelude.Maybe FileSourceConvert608To708)
+fileSourceSettings_convert608To708 = Lens.lens (\FileSourceSettings' {convert608To708} -> convert608To708) (\s@FileSourceSettings' {} a -> s {convert608To708 = a} :: FileSourceSettings)
+
+-- | Ignore this setting unless your input captions format is SCC. To have
+-- the service compensate for differing frame rates between your input
+-- captions and input video, specify the frame rate of the captions file.
+-- Specify this value as a fraction. When you work directly in your JSON
+-- job specification, use the settings framerateNumerator and
+-- framerateDenominator. For example, you might specify 24 \/ 1 for 24 fps,
+-- 25 \/ 1 for 25 fps, 24000 \/ 1001 for 23.976 fps, or 30000 \/ 1001 for
+-- 29.97 fps.
+fileSourceSettings_framerate :: Lens.Lens' FileSourceSettings (Prelude.Maybe CaptionSourceFramerate)
+fileSourceSettings_framerate = Lens.lens (\FileSourceSettings' {framerate} -> framerate) (\s@FileSourceSettings' {} a -> s {framerate = a} :: FileSourceSettings)
+
+-- | External caption file used for loading captions. Accepted file
+-- extensions are \'scc\', \'ttml\', \'dfxp\', \'stl\', \'srt\', \'xml\',
+-- \'smi\', \'webvtt\', and \'vtt\'.
+fileSourceSettings_sourceFile :: Lens.Lens' FileSourceSettings (Prelude.Maybe Prelude.Text)
+fileSourceSettings_sourceFile = Lens.lens (\FileSourceSettings' {sourceFile} -> sourceFile) (\s@FileSourceSettings' {} a -> s {sourceFile = a} :: FileSourceSettings)
+
+-- | Optional. Use this setting when you need to adjust the sync between your
+-- sidecar captions and your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/time-delta-use-cases.html.
+-- Enter a positive or negative number to modify the times in the captions
+-- file. For example, type 15 to add 15 seconds to all the times in the
+-- captions file. Type -5 to subtract 5 seconds from the times in the
+-- captions file. You can optionally specify your time delta in
+-- milliseconds instead of seconds. When you do so, set the related
+-- setting, Time delta units (TimeDeltaUnits) to Milliseconds
+-- (MILLISECONDS). Note that, when you specify a time delta for
+-- timecode-based caption sources, such as SCC and STL, and your time delta
+-- isn\'t a multiple of the input frame rate, MediaConvert snaps the
+-- captions to the nearest frame. For example, when your input video frame
+-- rate is 25 fps and you specify 1010ms for time delta, MediaConvert
+-- delays your captions by 1000 ms.
+fileSourceSettings_timeDelta :: Lens.Lens' FileSourceSettings (Prelude.Maybe Prelude.Int)
+fileSourceSettings_timeDelta = Lens.lens (\FileSourceSettings' {timeDelta} -> timeDelta) (\s@FileSourceSettings' {} a -> s {timeDelta = a} :: FileSourceSettings)
+
+-- | When you use the setting Time delta (TimeDelta) to adjust the sync
+-- between your sidecar captions and your video, use this setting to
+-- specify the units for the delta that you specify. When you don\'t
+-- specify a value for Time delta units (TimeDeltaUnits), MediaConvert uses
+-- seconds by default.
+fileSourceSettings_timeDeltaUnits :: Lens.Lens' FileSourceSettings (Prelude.Maybe FileSourceTimeDeltaUnits)
+fileSourceSettings_timeDeltaUnits = Lens.lens (\FileSourceSettings' {timeDeltaUnits} -> timeDeltaUnits) (\s@FileSourceSettings' {} a -> s {timeDeltaUnits = a} :: FileSourceSettings)
+
+instance Data.FromJSON FileSourceSettings where
+  parseJSON =
+    Data.withObject
+      "FileSourceSettings"
+      ( \x ->
+          FileSourceSettings'
+            Prelude.<$> (x Data..:? "convert608To708")
+            Prelude.<*> (x Data..:? "framerate")
+            Prelude.<*> (x Data..:? "sourceFile")
+            Prelude.<*> (x Data..:? "timeDelta")
+            Prelude.<*> (x Data..:? "timeDeltaUnits")
+      )
+
+instance Prelude.Hashable FileSourceSettings where
+  hashWithSalt _salt FileSourceSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` convert608To708
+      `Prelude.hashWithSalt` framerate
+      `Prelude.hashWithSalt` sourceFile
+      `Prelude.hashWithSalt` timeDelta
+      `Prelude.hashWithSalt` timeDeltaUnits
+
+instance Prelude.NFData FileSourceSettings where
+  rnf FileSourceSettings' {..} =
+    Prelude.rnf convert608To708
+      `Prelude.seq` Prelude.rnf framerate
+      `Prelude.seq` Prelude.rnf sourceFile
+      `Prelude.seq` Prelude.rnf timeDelta
+      `Prelude.seq` Prelude.rnf timeDeltaUnits
+
+instance Data.ToJSON FileSourceSettings where
+  toJSON FileSourceSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("convert608To708" Data..=)
+              Prelude.<$> convert608To708,
+            ("framerate" Data..=) Prelude.<$> framerate,
+            ("sourceFile" Data..=) Prelude.<$> sourceFile,
+            ("timeDelta" Data..=) Prelude.<$> timeDelta,
+            ("timeDeltaUnits" Data..=)
+              Prelude.<$> timeDeltaUnits
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/FileSourceTimeDeltaUnits.hs b/gen/Amazonka/MediaConvert/Types/FileSourceTimeDeltaUnits.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/FileSourceTimeDeltaUnits.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.FileSourceTimeDeltaUnits
+-- 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.FileSourceTimeDeltaUnits
+  ( FileSourceTimeDeltaUnits
+      ( ..,
+        FileSourceTimeDeltaUnits_MILLISECONDS,
+        FileSourceTimeDeltaUnits_SECONDS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you use the setting Time delta (TimeDelta) to adjust the sync
+-- between your sidecar captions and your video, use this setting to
+-- specify the units for the delta that you specify. When you don\'t
+-- specify a value for Time delta units (TimeDeltaUnits), MediaConvert uses
+-- seconds by default.
+newtype FileSourceTimeDeltaUnits = FileSourceTimeDeltaUnits'
+  { fromFileSourceTimeDeltaUnits ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern FileSourceTimeDeltaUnits_MILLISECONDS :: FileSourceTimeDeltaUnits
+pattern FileSourceTimeDeltaUnits_MILLISECONDS = FileSourceTimeDeltaUnits' "MILLISECONDS"
+
+pattern FileSourceTimeDeltaUnits_SECONDS :: FileSourceTimeDeltaUnits
+pattern FileSourceTimeDeltaUnits_SECONDS = FileSourceTimeDeltaUnits' "SECONDS"
+
+{-# COMPLETE
+  FileSourceTimeDeltaUnits_MILLISECONDS,
+  FileSourceTimeDeltaUnits_SECONDS,
+  FileSourceTimeDeltaUnits'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/FontScript.hs b/gen/Amazonka/MediaConvert/Types/FontScript.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/FontScript.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.FontScript
+-- 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.FontScript
+  ( FontScript
+      ( ..,
+        FontScript_AUTOMATIC,
+        FontScript_HANS,
+        FontScript_HANT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provide the font script, using an ISO 15924 script code, if the
+-- LanguageCode is not sufficient for determining the script type. Where
+-- LanguageCode or CustomLanguageCode is sufficient, use \"AUTOMATIC\" or
+-- leave unset.
+newtype FontScript = FontScript'
+  { fromFontScript ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern FontScript_AUTOMATIC :: FontScript
+pattern FontScript_AUTOMATIC = FontScript' "AUTOMATIC"
+
+pattern FontScript_HANS :: FontScript
+pattern FontScript_HANS = FontScript' "HANS"
+
+pattern FontScript_HANT :: FontScript
+pattern FontScript_HANT = FontScript' "HANT"
+
+{-# COMPLETE
+  FontScript_AUTOMATIC,
+  FontScript_HANS,
+  FontScript_HANT,
+  FontScript'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ForceIncludeRenditionSize.hs b/gen/Amazonka/MediaConvert/Types/ForceIncludeRenditionSize.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ForceIncludeRenditionSize.hs
@@ -0,0 +1,110 @@
+{-# 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.ForceIncludeRenditionSize
+-- 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.ForceIncludeRenditionSize where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Force include renditions to specify one or more resolutions to
+-- include your ABR stack. * (Recommended) To optimize automated ABR,
+-- specify as few resolutions as possible. * (Required) The number of
+-- resolutions that you specify must be equal to, or less than, the Max
+-- renditions setting. * If you specify a Min top rendition size rule,
+-- specify at least one resolution that is equal to, or greater than, Min
+-- top rendition size. * If you specify a Min bottom rendition size rule,
+-- only specify resolutions that are equal to, or greater than, Min bottom
+-- rendition size. * If you specify a Force include renditions rule, do not
+-- specify a separate rule for Allowed renditions. * Note: The ABR stack
+-- may include other resolutions that you do not specify here, depending on
+-- the Max renditions setting.
+--
+-- /See:/ 'newForceIncludeRenditionSize' smart constructor.
+data ForceIncludeRenditionSize = ForceIncludeRenditionSize'
+  { -- | Use Height to define the video resolution height, in pixels, for this
+    -- rule.
+    height :: Prelude.Maybe Prelude.Natural,
+    -- | Use Width to define the video resolution width, in pixels, for this
+    -- rule.
+    width :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ForceIncludeRenditionSize' 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:
+--
+-- 'height', 'forceIncludeRenditionSize_height' - Use Height to define the video resolution height, in pixels, for this
+-- rule.
+--
+-- 'width', 'forceIncludeRenditionSize_width' - Use Width to define the video resolution width, in pixels, for this
+-- rule.
+newForceIncludeRenditionSize ::
+  ForceIncludeRenditionSize
+newForceIncludeRenditionSize =
+  ForceIncludeRenditionSize'
+    { height =
+        Prelude.Nothing,
+      width = Prelude.Nothing
+    }
+
+-- | Use Height to define the video resolution height, in pixels, for this
+-- rule.
+forceIncludeRenditionSize_height :: Lens.Lens' ForceIncludeRenditionSize (Prelude.Maybe Prelude.Natural)
+forceIncludeRenditionSize_height = Lens.lens (\ForceIncludeRenditionSize' {height} -> height) (\s@ForceIncludeRenditionSize' {} a -> s {height = a} :: ForceIncludeRenditionSize)
+
+-- | Use Width to define the video resolution width, in pixels, for this
+-- rule.
+forceIncludeRenditionSize_width :: Lens.Lens' ForceIncludeRenditionSize (Prelude.Maybe Prelude.Natural)
+forceIncludeRenditionSize_width = Lens.lens (\ForceIncludeRenditionSize' {width} -> width) (\s@ForceIncludeRenditionSize' {} a -> s {width = a} :: ForceIncludeRenditionSize)
+
+instance Data.FromJSON ForceIncludeRenditionSize where
+  parseJSON =
+    Data.withObject
+      "ForceIncludeRenditionSize"
+      ( \x ->
+          ForceIncludeRenditionSize'
+            Prelude.<$> (x Data..:? "height")
+            Prelude.<*> (x Data..:? "width")
+      )
+
+instance Prelude.Hashable ForceIncludeRenditionSize where
+  hashWithSalt _salt ForceIncludeRenditionSize' {..} =
+    _salt
+      `Prelude.hashWithSalt` height
+      `Prelude.hashWithSalt` width
+
+instance Prelude.NFData ForceIncludeRenditionSize where
+  rnf ForceIncludeRenditionSize' {..} =
+    Prelude.rnf height `Prelude.seq` Prelude.rnf width
+
+instance Data.ToJSON ForceIncludeRenditionSize where
+  toJSON ForceIncludeRenditionSize' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("height" Data..=) Prelude.<$> height,
+            ("width" Data..=) Prelude.<$> width
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/FrameCaptureSettings.hs b/gen/Amazonka/MediaConvert/Types/FrameCaptureSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/FrameCaptureSettings.hs
@@ -0,0 +1,153 @@
+{-# 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.FrameCaptureSettings
+-- 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.FrameCaptureSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value FRAME_CAPTURE.
+--
+-- /See:/ 'newFrameCaptureSettings' smart constructor.
+data FrameCaptureSettings = FrameCaptureSettings'
+  { -- | Frame capture will encode the first frame of the output stream, then one
+    -- frame every framerateDenominator\/framerateNumerator seconds. For
+    -- example, settings of framerateNumerator = 1 and framerateDenominator = 3
+    -- (a rate of 1\/3 frame per second) will capture the first frame, then 1
+    -- frame every 3s. Files will be named as filename.n.jpg where n is the
+    -- 0-based sequence number of each Capture.
+    framerateDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | Frame capture will encode the first frame of the output stream, then one
+    -- frame every framerateDenominator\/framerateNumerator seconds. For
+    -- example, settings of framerateNumerator = 1 and framerateDenominator = 3
+    -- (a rate of 1\/3 frame per second) will capture the first frame, then 1
+    -- frame every 3s. Files will be named as filename.NNNNNNN.jpg where N is
+    -- the 0-based frame sequence number zero padded to 7 decimal places.
+    framerateNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | Maximum number of captures (encoded jpg output files).
+    maxCaptures :: Prelude.Maybe Prelude.Natural,
+    -- | JPEG Quality - a higher value equals higher quality.
+    quality :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FrameCaptureSettings' 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:
+--
+-- 'framerateDenominator', 'frameCaptureSettings_framerateDenominator' - Frame capture will encode the first frame of the output stream, then one
+-- frame every framerateDenominator\/framerateNumerator seconds. For
+-- example, settings of framerateNumerator = 1 and framerateDenominator = 3
+-- (a rate of 1\/3 frame per second) will capture the first frame, then 1
+-- frame every 3s. Files will be named as filename.n.jpg where n is the
+-- 0-based sequence number of each Capture.
+--
+-- 'framerateNumerator', 'frameCaptureSettings_framerateNumerator' - Frame capture will encode the first frame of the output stream, then one
+-- frame every framerateDenominator\/framerateNumerator seconds. For
+-- example, settings of framerateNumerator = 1 and framerateDenominator = 3
+-- (a rate of 1\/3 frame per second) will capture the first frame, then 1
+-- frame every 3s. Files will be named as filename.NNNNNNN.jpg where N is
+-- the 0-based frame sequence number zero padded to 7 decimal places.
+--
+-- 'maxCaptures', 'frameCaptureSettings_maxCaptures' - Maximum number of captures (encoded jpg output files).
+--
+-- 'quality', 'frameCaptureSettings_quality' - JPEG Quality - a higher value equals higher quality.
+newFrameCaptureSettings ::
+  FrameCaptureSettings
+newFrameCaptureSettings =
+  FrameCaptureSettings'
+    { framerateDenominator =
+        Prelude.Nothing,
+      framerateNumerator = Prelude.Nothing,
+      maxCaptures = Prelude.Nothing,
+      quality = Prelude.Nothing
+    }
+
+-- | Frame capture will encode the first frame of the output stream, then one
+-- frame every framerateDenominator\/framerateNumerator seconds. For
+-- example, settings of framerateNumerator = 1 and framerateDenominator = 3
+-- (a rate of 1\/3 frame per second) will capture the first frame, then 1
+-- frame every 3s. Files will be named as filename.n.jpg where n is the
+-- 0-based sequence number of each Capture.
+frameCaptureSettings_framerateDenominator :: Lens.Lens' FrameCaptureSettings (Prelude.Maybe Prelude.Natural)
+frameCaptureSettings_framerateDenominator = Lens.lens (\FrameCaptureSettings' {framerateDenominator} -> framerateDenominator) (\s@FrameCaptureSettings' {} a -> s {framerateDenominator = a} :: FrameCaptureSettings)
+
+-- | Frame capture will encode the first frame of the output stream, then one
+-- frame every framerateDenominator\/framerateNumerator seconds. For
+-- example, settings of framerateNumerator = 1 and framerateDenominator = 3
+-- (a rate of 1\/3 frame per second) will capture the first frame, then 1
+-- frame every 3s. Files will be named as filename.NNNNNNN.jpg where N is
+-- the 0-based frame sequence number zero padded to 7 decimal places.
+frameCaptureSettings_framerateNumerator :: Lens.Lens' FrameCaptureSettings (Prelude.Maybe Prelude.Natural)
+frameCaptureSettings_framerateNumerator = Lens.lens (\FrameCaptureSettings' {framerateNumerator} -> framerateNumerator) (\s@FrameCaptureSettings' {} a -> s {framerateNumerator = a} :: FrameCaptureSettings)
+
+-- | Maximum number of captures (encoded jpg output files).
+frameCaptureSettings_maxCaptures :: Lens.Lens' FrameCaptureSettings (Prelude.Maybe Prelude.Natural)
+frameCaptureSettings_maxCaptures = Lens.lens (\FrameCaptureSettings' {maxCaptures} -> maxCaptures) (\s@FrameCaptureSettings' {} a -> s {maxCaptures = a} :: FrameCaptureSettings)
+
+-- | JPEG Quality - a higher value equals higher quality.
+frameCaptureSettings_quality :: Lens.Lens' FrameCaptureSettings (Prelude.Maybe Prelude.Natural)
+frameCaptureSettings_quality = Lens.lens (\FrameCaptureSettings' {quality} -> quality) (\s@FrameCaptureSettings' {} a -> s {quality = a} :: FrameCaptureSettings)
+
+instance Data.FromJSON FrameCaptureSettings where
+  parseJSON =
+    Data.withObject
+      "FrameCaptureSettings"
+      ( \x ->
+          FrameCaptureSettings'
+            Prelude.<$> (x Data..:? "framerateDenominator")
+            Prelude.<*> (x Data..:? "framerateNumerator")
+            Prelude.<*> (x Data..:? "maxCaptures")
+            Prelude.<*> (x Data..:? "quality")
+      )
+
+instance Prelude.Hashable FrameCaptureSettings where
+  hashWithSalt _salt FrameCaptureSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` framerateDenominator
+      `Prelude.hashWithSalt` framerateNumerator
+      `Prelude.hashWithSalt` maxCaptures
+      `Prelude.hashWithSalt` quality
+
+instance Prelude.NFData FrameCaptureSettings where
+  rnf FrameCaptureSettings' {..} =
+    Prelude.rnf framerateDenominator
+      `Prelude.seq` Prelude.rnf framerateNumerator
+      `Prelude.seq` Prelude.rnf maxCaptures
+      `Prelude.seq` Prelude.rnf quality
+
+instance Data.ToJSON FrameCaptureSettings where
+  toJSON FrameCaptureSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("framerateDenominator" Data..=)
+              Prelude.<$> framerateDenominator,
+            ("framerateNumerator" Data..=)
+              Prelude.<$> framerateNumerator,
+            ("maxCaptures" Data..=) Prelude.<$> maxCaptures,
+            ("quality" Data..=) Prelude.<$> quality
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/H264AdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/H264AdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264AdaptiveQuantization.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264AdaptiveQuantization
+-- 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.H264AdaptiveQuantization
+  ( H264AdaptiveQuantization
+      ( ..,
+        H264AdaptiveQuantization_AUTO,
+        H264AdaptiveQuantization_HIGH,
+        H264AdaptiveQuantization_HIGHER,
+        H264AdaptiveQuantization_LOW,
+        H264AdaptiveQuantization_MAX,
+        H264AdaptiveQuantization_MEDIUM,
+        H264AdaptiveQuantization_OFF
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Keep the default value, Auto (AUTO), for this setting to have
+-- MediaConvert automatically apply the best types of quantization for your
+-- video content. When you want to apply your quantization settings
+-- manually, you must set H264AdaptiveQuantization to a value other than
+-- Auto (AUTO). Use this setting to specify the strength of any adaptive
+-- quantization filters that you enable. If you don\'t want MediaConvert to
+-- do any adaptive quantization in this transcode, set Adaptive
+-- quantization (H264AdaptiveQuantization) to Off (OFF). Related settings:
+-- The value that you choose here applies to the following settings:
+-- H264FlickerAdaptiveQuantization, H264SpatialAdaptiveQuantization, and
+-- H264TemporalAdaptiveQuantization.
+newtype H264AdaptiveQuantization = H264AdaptiveQuantization'
+  { fromH264AdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264AdaptiveQuantization_AUTO :: H264AdaptiveQuantization
+pattern H264AdaptiveQuantization_AUTO = H264AdaptiveQuantization' "AUTO"
+
+pattern H264AdaptiveQuantization_HIGH :: H264AdaptiveQuantization
+pattern H264AdaptiveQuantization_HIGH = H264AdaptiveQuantization' "HIGH"
+
+pattern H264AdaptiveQuantization_HIGHER :: H264AdaptiveQuantization
+pattern H264AdaptiveQuantization_HIGHER = H264AdaptiveQuantization' "HIGHER"
+
+pattern H264AdaptiveQuantization_LOW :: H264AdaptiveQuantization
+pattern H264AdaptiveQuantization_LOW = H264AdaptiveQuantization' "LOW"
+
+pattern H264AdaptiveQuantization_MAX :: H264AdaptiveQuantization
+pattern H264AdaptiveQuantization_MAX = H264AdaptiveQuantization' "MAX"
+
+pattern H264AdaptiveQuantization_MEDIUM :: H264AdaptiveQuantization
+pattern H264AdaptiveQuantization_MEDIUM = H264AdaptiveQuantization' "MEDIUM"
+
+pattern H264AdaptiveQuantization_OFF :: H264AdaptiveQuantization
+pattern H264AdaptiveQuantization_OFF = H264AdaptiveQuantization' "OFF"
+
+{-# COMPLETE
+  H264AdaptiveQuantization_AUTO,
+  H264AdaptiveQuantization_HIGH,
+  H264AdaptiveQuantization_HIGHER,
+  H264AdaptiveQuantization_LOW,
+  H264AdaptiveQuantization_MAX,
+  H264AdaptiveQuantization_MEDIUM,
+  H264AdaptiveQuantization_OFF,
+  H264AdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264CodecLevel.hs b/gen/Amazonka/MediaConvert/Types/H264CodecLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264CodecLevel.hs
@@ -0,0 +1,148 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264CodecLevel
+-- 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.H264CodecLevel
+  ( H264CodecLevel
+      ( ..,
+        H264CodecLevel_AUTO,
+        H264CodecLevel_LEVEL_1,
+        H264CodecLevel_LEVEL_1_1,
+        H264CodecLevel_LEVEL_1_2,
+        H264CodecLevel_LEVEL_1_3,
+        H264CodecLevel_LEVEL_2,
+        H264CodecLevel_LEVEL_2_1,
+        H264CodecLevel_LEVEL_2_2,
+        H264CodecLevel_LEVEL_3,
+        H264CodecLevel_LEVEL_3_1,
+        H264CodecLevel_LEVEL_3_2,
+        H264CodecLevel_LEVEL_4,
+        H264CodecLevel_LEVEL_4_1,
+        H264CodecLevel_LEVEL_4_2,
+        H264CodecLevel_LEVEL_5,
+        H264CodecLevel_LEVEL_5_1,
+        H264CodecLevel_LEVEL_5_2
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify an H.264 level that is consistent with your output video
+-- settings. If you aren\'t sure what level to specify, choose Auto (AUTO).
+newtype H264CodecLevel = H264CodecLevel'
+  { fromH264CodecLevel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264CodecLevel_AUTO :: H264CodecLevel
+pattern H264CodecLevel_AUTO = H264CodecLevel' "AUTO"
+
+pattern H264CodecLevel_LEVEL_1 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_1 = H264CodecLevel' "LEVEL_1"
+
+pattern H264CodecLevel_LEVEL_1_1 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_1_1 = H264CodecLevel' "LEVEL_1_1"
+
+pattern H264CodecLevel_LEVEL_1_2 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_1_2 = H264CodecLevel' "LEVEL_1_2"
+
+pattern H264CodecLevel_LEVEL_1_3 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_1_3 = H264CodecLevel' "LEVEL_1_3"
+
+pattern H264CodecLevel_LEVEL_2 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_2 = H264CodecLevel' "LEVEL_2"
+
+pattern H264CodecLevel_LEVEL_2_1 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_2_1 = H264CodecLevel' "LEVEL_2_1"
+
+pattern H264CodecLevel_LEVEL_2_2 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_2_2 = H264CodecLevel' "LEVEL_2_2"
+
+pattern H264CodecLevel_LEVEL_3 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_3 = H264CodecLevel' "LEVEL_3"
+
+pattern H264CodecLevel_LEVEL_3_1 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_3_1 = H264CodecLevel' "LEVEL_3_1"
+
+pattern H264CodecLevel_LEVEL_3_2 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_3_2 = H264CodecLevel' "LEVEL_3_2"
+
+pattern H264CodecLevel_LEVEL_4 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_4 = H264CodecLevel' "LEVEL_4"
+
+pattern H264CodecLevel_LEVEL_4_1 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_4_1 = H264CodecLevel' "LEVEL_4_1"
+
+pattern H264CodecLevel_LEVEL_4_2 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_4_2 = H264CodecLevel' "LEVEL_4_2"
+
+pattern H264CodecLevel_LEVEL_5 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_5 = H264CodecLevel' "LEVEL_5"
+
+pattern H264CodecLevel_LEVEL_5_1 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_5_1 = H264CodecLevel' "LEVEL_5_1"
+
+pattern H264CodecLevel_LEVEL_5_2 :: H264CodecLevel
+pattern H264CodecLevel_LEVEL_5_2 = H264CodecLevel' "LEVEL_5_2"
+
+{-# COMPLETE
+  H264CodecLevel_AUTO,
+  H264CodecLevel_LEVEL_1,
+  H264CodecLevel_LEVEL_1_1,
+  H264CodecLevel_LEVEL_1_2,
+  H264CodecLevel_LEVEL_1_3,
+  H264CodecLevel_LEVEL_2,
+  H264CodecLevel_LEVEL_2_1,
+  H264CodecLevel_LEVEL_2_2,
+  H264CodecLevel_LEVEL_3,
+  H264CodecLevel_LEVEL_3_1,
+  H264CodecLevel_LEVEL_3_2,
+  H264CodecLevel_LEVEL_4,
+  H264CodecLevel_LEVEL_4_1,
+  H264CodecLevel_LEVEL_4_2,
+  H264CodecLevel_LEVEL_5,
+  H264CodecLevel_LEVEL_5_1,
+  H264CodecLevel_LEVEL_5_2,
+  H264CodecLevel'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264CodecProfile.hs b/gen/Amazonka/MediaConvert/Types/H264CodecProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264CodecProfile.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264CodecProfile
+-- 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.H264CodecProfile
+  ( H264CodecProfile
+      ( ..,
+        H264CodecProfile_BASELINE,
+        H264CodecProfile_HIGH,
+        H264CodecProfile_HIGH_10BIT,
+        H264CodecProfile_HIGH_422,
+        H264CodecProfile_HIGH_422_10BIT,
+        H264CodecProfile_MAIN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | H.264 Profile. High 4:2:2 and 10-bit profiles are only available with
+-- the AVC-I License.
+newtype H264CodecProfile = H264CodecProfile'
+  { fromH264CodecProfile ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264CodecProfile_BASELINE :: H264CodecProfile
+pattern H264CodecProfile_BASELINE = H264CodecProfile' "BASELINE"
+
+pattern H264CodecProfile_HIGH :: H264CodecProfile
+pattern H264CodecProfile_HIGH = H264CodecProfile' "HIGH"
+
+pattern H264CodecProfile_HIGH_10BIT :: H264CodecProfile
+pattern H264CodecProfile_HIGH_10BIT = H264CodecProfile' "HIGH_10BIT"
+
+pattern H264CodecProfile_HIGH_422 :: H264CodecProfile
+pattern H264CodecProfile_HIGH_422 = H264CodecProfile' "HIGH_422"
+
+pattern H264CodecProfile_HIGH_422_10BIT :: H264CodecProfile
+pattern H264CodecProfile_HIGH_422_10BIT = H264CodecProfile' "HIGH_422_10BIT"
+
+pattern H264CodecProfile_MAIN :: H264CodecProfile
+pattern H264CodecProfile_MAIN = H264CodecProfile' "MAIN"
+
+{-# COMPLETE
+  H264CodecProfile_BASELINE,
+  H264CodecProfile_HIGH,
+  H264CodecProfile_HIGH_10BIT,
+  H264CodecProfile_HIGH_422,
+  H264CodecProfile_HIGH_422_10BIT,
+  H264CodecProfile_MAIN,
+  H264CodecProfile'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264DynamicSubGop.hs b/gen/Amazonka/MediaConvert/Types/H264DynamicSubGop.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264DynamicSubGop.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264DynamicSubGop
+-- 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.H264DynamicSubGop
+  ( H264DynamicSubGop
+      ( ..,
+        H264DynamicSubGop_ADAPTIVE,
+        H264DynamicSubGop_STATIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose Adaptive to improve subjective video quality for high-motion
+-- content. This will cause the service to use fewer B-frames (which infer
+-- information based on other frames) for high-motion portions of the video
+-- and more B-frames for low-motion portions. The maximum number of
+-- B-frames is limited by the value you provide for the setting B frames
+-- between reference frames (numberBFramesBetweenReferenceFrames).
+newtype H264DynamicSubGop = H264DynamicSubGop'
+  { fromH264DynamicSubGop ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264DynamicSubGop_ADAPTIVE :: H264DynamicSubGop
+pattern H264DynamicSubGop_ADAPTIVE = H264DynamicSubGop' "ADAPTIVE"
+
+pattern H264DynamicSubGop_STATIC :: H264DynamicSubGop
+pattern H264DynamicSubGop_STATIC = H264DynamicSubGop' "STATIC"
+
+{-# COMPLETE
+  H264DynamicSubGop_ADAPTIVE,
+  H264DynamicSubGop_STATIC,
+  H264DynamicSubGop'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264EntropyEncoding.hs b/gen/Amazonka/MediaConvert/Types/H264EntropyEncoding.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264EntropyEncoding.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264EntropyEncoding
+-- 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.H264EntropyEncoding
+  ( H264EntropyEncoding
+      ( ..,
+        H264EntropyEncoding_CABAC,
+        H264EntropyEncoding_CAVLC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Entropy encoding mode. Use CABAC (must be in Main or High profile) or
+-- CAVLC.
+newtype H264EntropyEncoding = H264EntropyEncoding'
+  { fromH264EntropyEncoding ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264EntropyEncoding_CABAC :: H264EntropyEncoding
+pattern H264EntropyEncoding_CABAC = H264EntropyEncoding' "CABAC"
+
+pattern H264EntropyEncoding_CAVLC :: H264EntropyEncoding
+pattern H264EntropyEncoding_CAVLC = H264EntropyEncoding' "CAVLC"
+
+{-# COMPLETE
+  H264EntropyEncoding_CABAC,
+  H264EntropyEncoding_CAVLC,
+  H264EntropyEncoding'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264FieldEncoding.hs b/gen/Amazonka/MediaConvert/Types/H264FieldEncoding.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264FieldEncoding.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264FieldEncoding
+-- 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.H264FieldEncoding
+  ( H264FieldEncoding
+      ( ..,
+        H264FieldEncoding_FORCE_FIELD,
+        H264FieldEncoding_MBAFF,
+        H264FieldEncoding_PAFF
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The video encoding method for your MPEG-4 AVC output. Keep the default
+-- value, PAFF, to have MediaConvert use PAFF encoding for interlaced
+-- outputs. Choose Force field (FORCE_FIELD) to disable PAFF encoding and
+-- create separate interlaced fields. Choose MBAFF to disable PAFF and have
+-- MediaConvert use MBAFF encoding for interlaced outputs.
+newtype H264FieldEncoding = H264FieldEncoding'
+  { fromH264FieldEncoding ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264FieldEncoding_FORCE_FIELD :: H264FieldEncoding
+pattern H264FieldEncoding_FORCE_FIELD = H264FieldEncoding' "FORCE_FIELD"
+
+pattern H264FieldEncoding_MBAFF :: H264FieldEncoding
+pattern H264FieldEncoding_MBAFF = H264FieldEncoding' "MBAFF"
+
+pattern H264FieldEncoding_PAFF :: H264FieldEncoding
+pattern H264FieldEncoding_PAFF = H264FieldEncoding' "PAFF"
+
+{-# COMPLETE
+  H264FieldEncoding_FORCE_FIELD,
+  H264FieldEncoding_MBAFF,
+  H264FieldEncoding_PAFF,
+  H264FieldEncoding'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264FlickerAdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/H264FlickerAdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264FlickerAdaptiveQuantization.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264FlickerAdaptiveQuantization
+-- 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.H264FlickerAdaptiveQuantization
+  ( H264FlickerAdaptiveQuantization
+      ( ..,
+        H264FlickerAdaptiveQuantization_DISABLED,
+        H264FlickerAdaptiveQuantization_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Only use this setting when you change the default value, AUTO, for the
+-- setting H264AdaptiveQuantization. When you keep all defaults, excluding
+-- H264AdaptiveQuantization and all other adaptive quantization from your
+-- JSON job specification, MediaConvert automatically applies the best
+-- types of quantization for your video content. When you set
+-- H264AdaptiveQuantization to a value other than AUTO, the default value
+-- for H264FlickerAdaptiveQuantization is Disabled (DISABLED). Change this
+-- value to Enabled (ENABLED) to reduce I-frame pop. I-frame pop appears as
+-- a visual flicker that can arise when the encoder saves bits by copying
+-- some macroblocks many times from frame to frame, and then refreshes them
+-- at the I-frame. When you enable this setting, the encoder updates these
+-- macroblocks slightly more often to smooth out the flicker. To manually
+-- enable or disable H264FlickerAdaptiveQuantization, you must set Adaptive
+-- quantization (H264AdaptiveQuantization) to a value other than AUTO.
+newtype H264FlickerAdaptiveQuantization = H264FlickerAdaptiveQuantization'
+  { fromH264FlickerAdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264FlickerAdaptiveQuantization_DISABLED :: H264FlickerAdaptiveQuantization
+pattern H264FlickerAdaptiveQuantization_DISABLED = H264FlickerAdaptiveQuantization' "DISABLED"
+
+pattern H264FlickerAdaptiveQuantization_ENABLED :: H264FlickerAdaptiveQuantization
+pattern H264FlickerAdaptiveQuantization_ENABLED = H264FlickerAdaptiveQuantization' "ENABLED"
+
+{-# COMPLETE
+  H264FlickerAdaptiveQuantization_DISABLED,
+  H264FlickerAdaptiveQuantization_ENABLED,
+  H264FlickerAdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264FramerateControl.hs b/gen/Amazonka/MediaConvert/Types/H264FramerateControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264FramerateControl.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264FramerateControl
+-- 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.H264FramerateControl
+  ( H264FramerateControl
+      ( ..,
+        H264FramerateControl_INITIALIZE_FROM_SOURCE,
+        H264FramerateControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+newtype H264FramerateControl = H264FramerateControl'
+  { fromH264FramerateControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264FramerateControl_INITIALIZE_FROM_SOURCE :: H264FramerateControl
+pattern H264FramerateControl_INITIALIZE_FROM_SOURCE = H264FramerateControl' "INITIALIZE_FROM_SOURCE"
+
+pattern H264FramerateControl_SPECIFIED :: H264FramerateControl
+pattern H264FramerateControl_SPECIFIED = H264FramerateControl' "SPECIFIED"
+
+{-# COMPLETE
+  H264FramerateControl_INITIALIZE_FROM_SOURCE,
+  H264FramerateControl_SPECIFIED,
+  H264FramerateControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264FramerateConversionAlgorithm.hs b/gen/Amazonka/MediaConvert/Types/H264FramerateConversionAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264FramerateConversionAlgorithm.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264FramerateConversionAlgorithm
+-- 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.H264FramerateConversionAlgorithm
+  ( H264FramerateConversionAlgorithm
+      ( ..,
+        H264FramerateConversionAlgorithm_DUPLICATE_DROP,
+        H264FramerateConversionAlgorithm_FRAMEFORMER,
+        H264FramerateConversionAlgorithm_INTERPOLATE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+newtype H264FramerateConversionAlgorithm = H264FramerateConversionAlgorithm'
+  { fromH264FramerateConversionAlgorithm ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264FramerateConversionAlgorithm_DUPLICATE_DROP :: H264FramerateConversionAlgorithm
+pattern H264FramerateConversionAlgorithm_DUPLICATE_DROP = H264FramerateConversionAlgorithm' "DUPLICATE_DROP"
+
+pattern H264FramerateConversionAlgorithm_FRAMEFORMER :: H264FramerateConversionAlgorithm
+pattern H264FramerateConversionAlgorithm_FRAMEFORMER = H264FramerateConversionAlgorithm' "FRAMEFORMER"
+
+pattern H264FramerateConversionAlgorithm_INTERPOLATE :: H264FramerateConversionAlgorithm
+pattern H264FramerateConversionAlgorithm_INTERPOLATE = H264FramerateConversionAlgorithm' "INTERPOLATE"
+
+{-# COMPLETE
+  H264FramerateConversionAlgorithm_DUPLICATE_DROP,
+  H264FramerateConversionAlgorithm_FRAMEFORMER,
+  H264FramerateConversionAlgorithm_INTERPOLATE,
+  H264FramerateConversionAlgorithm'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264GopBReference.hs b/gen/Amazonka/MediaConvert/Types/H264GopBReference.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264GopBReference.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264GopBReference
+-- 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.H264GopBReference
+  ( H264GopBReference
+      ( ..,
+        H264GopBReference_DISABLED,
+        H264GopBReference_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If enable, use reference B frames for GOP structures that have B frames
+-- > 1.
+newtype H264GopBReference = H264GopBReference'
+  { fromH264GopBReference ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264GopBReference_DISABLED :: H264GopBReference
+pattern H264GopBReference_DISABLED = H264GopBReference' "DISABLED"
+
+pattern H264GopBReference_ENABLED :: H264GopBReference
+pattern H264GopBReference_ENABLED = H264GopBReference' "ENABLED"
+
+{-# COMPLETE
+  H264GopBReference_DISABLED,
+  H264GopBReference_ENABLED,
+  H264GopBReference'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264GopSizeUnits.hs b/gen/Amazonka/MediaConvert/Types/H264GopSizeUnits.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264GopSizeUnits.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264GopSizeUnits
+-- 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.H264GopSizeUnits
+  ( H264GopSizeUnits
+      ( ..,
+        H264GopSizeUnits_AUTO,
+        H264GopSizeUnits_FRAMES,
+        H264GopSizeUnits_SECONDS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify how the transcoder determines GOP size for this output. We
+-- recommend that you have the transcoder automatically choose this value
+-- for you based on characteristics of your input video. To enable this
+-- automatic behavior, choose Auto (AUTO) and and leave GOP size (GopSize)
+-- blank. By default, if you don\'t specify GOP mode control
+-- (GopSizeUnits), MediaConvert will use automatic behavior. If your output
+-- group specifies HLS, DASH, or CMAF, set GOP mode control to Auto and
+-- leave GOP size blank in each output in your output group. To explicitly
+-- specify the GOP length, choose Specified, frames (FRAMES) or Specified,
+-- seconds (SECONDS) and then provide the GOP length in the related setting
+-- GOP size (GopSize).
+newtype H264GopSizeUnits = H264GopSizeUnits'
+  { fromH264GopSizeUnits ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264GopSizeUnits_AUTO :: H264GopSizeUnits
+pattern H264GopSizeUnits_AUTO = H264GopSizeUnits' "AUTO"
+
+pattern H264GopSizeUnits_FRAMES :: H264GopSizeUnits
+pattern H264GopSizeUnits_FRAMES = H264GopSizeUnits' "FRAMES"
+
+pattern H264GopSizeUnits_SECONDS :: H264GopSizeUnits
+pattern H264GopSizeUnits_SECONDS = H264GopSizeUnits' "SECONDS"
+
+{-# COMPLETE
+  H264GopSizeUnits_AUTO,
+  H264GopSizeUnits_FRAMES,
+  H264GopSizeUnits_SECONDS,
+  H264GopSizeUnits'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264InterlaceMode.hs b/gen/Amazonka/MediaConvert/Types/H264InterlaceMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264InterlaceMode.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264InterlaceMode
+-- 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.H264InterlaceMode
+  ( H264InterlaceMode
+      ( ..,
+        H264InterlaceMode_BOTTOM_FIELD,
+        H264InterlaceMode_FOLLOW_BOTTOM_FIELD,
+        H264InterlaceMode_FOLLOW_TOP_FIELD,
+        H264InterlaceMode_PROGRESSIVE,
+        H264InterlaceMode_TOP_FIELD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+newtype H264InterlaceMode = H264InterlaceMode'
+  { fromH264InterlaceMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264InterlaceMode_BOTTOM_FIELD :: H264InterlaceMode
+pattern H264InterlaceMode_BOTTOM_FIELD = H264InterlaceMode' "BOTTOM_FIELD"
+
+pattern H264InterlaceMode_FOLLOW_BOTTOM_FIELD :: H264InterlaceMode
+pattern H264InterlaceMode_FOLLOW_BOTTOM_FIELD = H264InterlaceMode' "FOLLOW_BOTTOM_FIELD"
+
+pattern H264InterlaceMode_FOLLOW_TOP_FIELD :: H264InterlaceMode
+pattern H264InterlaceMode_FOLLOW_TOP_FIELD = H264InterlaceMode' "FOLLOW_TOP_FIELD"
+
+pattern H264InterlaceMode_PROGRESSIVE :: H264InterlaceMode
+pattern H264InterlaceMode_PROGRESSIVE = H264InterlaceMode' "PROGRESSIVE"
+
+pattern H264InterlaceMode_TOP_FIELD :: H264InterlaceMode
+pattern H264InterlaceMode_TOP_FIELD = H264InterlaceMode' "TOP_FIELD"
+
+{-# COMPLETE
+  H264InterlaceMode_BOTTOM_FIELD,
+  H264InterlaceMode_FOLLOW_BOTTOM_FIELD,
+  H264InterlaceMode_FOLLOW_TOP_FIELD,
+  H264InterlaceMode_PROGRESSIVE,
+  H264InterlaceMode_TOP_FIELD,
+  H264InterlaceMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264ParControl.hs b/gen/Amazonka/MediaConvert/Types/H264ParControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264ParControl.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264ParControl
+-- 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.H264ParControl
+  ( H264ParControl
+      ( ..,
+        H264ParControl_INITIALIZE_FROM_SOURCE,
+        H264ParControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+newtype H264ParControl = H264ParControl'
+  { fromH264ParControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264ParControl_INITIALIZE_FROM_SOURCE :: H264ParControl
+pattern H264ParControl_INITIALIZE_FROM_SOURCE = H264ParControl' "INITIALIZE_FROM_SOURCE"
+
+pattern H264ParControl_SPECIFIED :: H264ParControl
+pattern H264ParControl_SPECIFIED = H264ParControl' "SPECIFIED"
+
+{-# COMPLETE
+  H264ParControl_INITIALIZE_FROM_SOURCE,
+  H264ParControl_SPECIFIED,
+  H264ParControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264QualityTuningLevel.hs b/gen/Amazonka/MediaConvert/Types/H264QualityTuningLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264QualityTuningLevel.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264QualityTuningLevel
+-- 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.H264QualityTuningLevel
+  ( H264QualityTuningLevel
+      ( ..,
+        H264QualityTuningLevel_MULTI_PASS_HQ,
+        H264QualityTuningLevel_SINGLE_PASS,
+        H264QualityTuningLevel_SINGLE_PASS_HQ
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+newtype H264QualityTuningLevel = H264QualityTuningLevel'
+  { fromH264QualityTuningLevel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264QualityTuningLevel_MULTI_PASS_HQ :: H264QualityTuningLevel
+pattern H264QualityTuningLevel_MULTI_PASS_HQ = H264QualityTuningLevel' "MULTI_PASS_HQ"
+
+pattern H264QualityTuningLevel_SINGLE_PASS :: H264QualityTuningLevel
+pattern H264QualityTuningLevel_SINGLE_PASS = H264QualityTuningLevel' "SINGLE_PASS"
+
+pattern H264QualityTuningLevel_SINGLE_PASS_HQ :: H264QualityTuningLevel
+pattern H264QualityTuningLevel_SINGLE_PASS_HQ = H264QualityTuningLevel' "SINGLE_PASS_HQ"
+
+{-# COMPLETE
+  H264QualityTuningLevel_MULTI_PASS_HQ,
+  H264QualityTuningLevel_SINGLE_PASS,
+  H264QualityTuningLevel_SINGLE_PASS_HQ,
+  H264QualityTuningLevel'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264QvbrSettings.hs b/gen/Amazonka/MediaConvert/Types/H264QvbrSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264QvbrSettings.hs
@@ -0,0 +1,181 @@
+{-# 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.H264QvbrSettings
+-- 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.H264QvbrSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for quality-defined variable bitrate encoding with the H.264
+-- codec. Use these settings only when you set QVBR for Rate control mode
+-- (RateControlMode).
+--
+-- /See:/ 'newH264QvbrSettings' smart constructor.
+data H264QvbrSettings = H264QvbrSettings'
+  { -- | Use this setting only when Rate control mode is QVBR and Quality tuning
+    -- level is Multi-pass HQ. For Max average bitrate values suited to the
+    -- complexity of your input video, the service limits the average bitrate
+    -- of the video part of this output to the value that you choose. That is,
+    -- the total size of the video element is less than or equal to the value
+    -- you set multiplied by the number of seconds of encoded output.
+    maxAverageBitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Use this setting only when you set Rate control mode (RateControlMode)
+    -- to QVBR. Specify the target quality level for this output. MediaConvert
+    -- determines the right number of bits to use for each part of the video to
+    -- maintain the video quality that you specify. When you keep the default
+    -- value, AUTO, MediaConvert picks a quality level for you, based on
+    -- characteristics of your input video. If you prefer to specify a quality
+    -- level, specify a number from 1 through 10. Use higher numbers for
+    -- greater quality. Level 10 results in nearly lossless compression. The
+    -- quality level for most broadcast-quality transcodes is between 6 and 9.
+    -- Optionally, to specify a value between whole numbers, also provide a
+    -- value for the setting qvbrQualityLevelFineTune. For example, if you want
+    -- your QVBR quality level to be 7.33, set qvbrQualityLevel to 7 and set
+    -- qvbrQualityLevelFineTune to .33.
+    qvbrQualityLevel :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Specify a value here to set the QVBR quality to a level that
+    -- is between whole numbers. For example, if you want your QVBR quality
+    -- level to be 7.33, set qvbrQualityLevel to 7 and set
+    -- qvbrQualityLevelFineTune to .33. MediaConvert rounds your QVBR quality
+    -- level to the nearest third of a whole number. For example, if you set
+    -- qvbrQualityLevel to 7 and you set qvbrQualityLevelFineTune to .25, your
+    -- actual QVBR quality level is 7.33.
+    qvbrQualityLevelFineTune :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'H264QvbrSettings' 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:
+--
+-- 'maxAverageBitrate', 'h264QvbrSettings_maxAverageBitrate' - Use this setting only when Rate control mode is QVBR and Quality tuning
+-- level is Multi-pass HQ. For Max average bitrate values suited to the
+-- complexity of your input video, the service limits the average bitrate
+-- of the video part of this output to the value that you choose. That is,
+-- the total size of the video element is less than or equal to the value
+-- you set multiplied by the number of seconds of encoded output.
+--
+-- 'qvbrQualityLevel', 'h264QvbrSettings_qvbrQualityLevel' - Use this setting only when you set Rate control mode (RateControlMode)
+-- to QVBR. Specify the target quality level for this output. MediaConvert
+-- determines the right number of bits to use for each part of the video to
+-- maintain the video quality that you specify. When you keep the default
+-- value, AUTO, MediaConvert picks a quality level for you, based on
+-- characteristics of your input video. If you prefer to specify a quality
+-- level, specify a number from 1 through 10. Use higher numbers for
+-- greater quality. Level 10 results in nearly lossless compression. The
+-- quality level for most broadcast-quality transcodes is between 6 and 9.
+-- Optionally, to specify a value between whole numbers, also provide a
+-- value for the setting qvbrQualityLevelFineTune. For example, if you want
+-- your QVBR quality level to be 7.33, set qvbrQualityLevel to 7 and set
+-- qvbrQualityLevelFineTune to .33.
+--
+-- 'qvbrQualityLevelFineTune', 'h264QvbrSettings_qvbrQualityLevelFineTune' - Optional. Specify a value here to set the QVBR quality to a level that
+-- is between whole numbers. For example, if you want your QVBR quality
+-- level to be 7.33, set qvbrQualityLevel to 7 and set
+-- qvbrQualityLevelFineTune to .33. MediaConvert rounds your QVBR quality
+-- level to the nearest third of a whole number. For example, if you set
+-- qvbrQualityLevel to 7 and you set qvbrQualityLevelFineTune to .25, your
+-- actual QVBR quality level is 7.33.
+newH264QvbrSettings ::
+  H264QvbrSettings
+newH264QvbrSettings =
+  H264QvbrSettings'
+    { maxAverageBitrate =
+        Prelude.Nothing,
+      qvbrQualityLevel = Prelude.Nothing,
+      qvbrQualityLevelFineTune = Prelude.Nothing
+    }
+
+-- | Use this setting only when Rate control mode is QVBR and Quality tuning
+-- level is Multi-pass HQ. For Max average bitrate values suited to the
+-- complexity of your input video, the service limits the average bitrate
+-- of the video part of this output to the value that you choose. That is,
+-- the total size of the video element is less than or equal to the value
+-- you set multiplied by the number of seconds of encoded output.
+h264QvbrSettings_maxAverageBitrate :: Lens.Lens' H264QvbrSettings (Prelude.Maybe Prelude.Natural)
+h264QvbrSettings_maxAverageBitrate = Lens.lens (\H264QvbrSettings' {maxAverageBitrate} -> maxAverageBitrate) (\s@H264QvbrSettings' {} a -> s {maxAverageBitrate = a} :: H264QvbrSettings)
+
+-- | Use this setting only when you set Rate control mode (RateControlMode)
+-- to QVBR. Specify the target quality level for this output. MediaConvert
+-- determines the right number of bits to use for each part of the video to
+-- maintain the video quality that you specify. When you keep the default
+-- value, AUTO, MediaConvert picks a quality level for you, based on
+-- characteristics of your input video. If you prefer to specify a quality
+-- level, specify a number from 1 through 10. Use higher numbers for
+-- greater quality. Level 10 results in nearly lossless compression. The
+-- quality level for most broadcast-quality transcodes is between 6 and 9.
+-- Optionally, to specify a value between whole numbers, also provide a
+-- value for the setting qvbrQualityLevelFineTune. For example, if you want
+-- your QVBR quality level to be 7.33, set qvbrQualityLevel to 7 and set
+-- qvbrQualityLevelFineTune to .33.
+h264QvbrSettings_qvbrQualityLevel :: Lens.Lens' H264QvbrSettings (Prelude.Maybe Prelude.Natural)
+h264QvbrSettings_qvbrQualityLevel = Lens.lens (\H264QvbrSettings' {qvbrQualityLevel} -> qvbrQualityLevel) (\s@H264QvbrSettings' {} a -> s {qvbrQualityLevel = a} :: H264QvbrSettings)
+
+-- | Optional. Specify a value here to set the QVBR quality to a level that
+-- is between whole numbers. For example, if you want your QVBR quality
+-- level to be 7.33, set qvbrQualityLevel to 7 and set
+-- qvbrQualityLevelFineTune to .33. MediaConvert rounds your QVBR quality
+-- level to the nearest third of a whole number. For example, if you set
+-- qvbrQualityLevel to 7 and you set qvbrQualityLevelFineTune to .25, your
+-- actual QVBR quality level is 7.33.
+h264QvbrSettings_qvbrQualityLevelFineTune :: Lens.Lens' H264QvbrSettings (Prelude.Maybe Prelude.Double)
+h264QvbrSettings_qvbrQualityLevelFineTune = Lens.lens (\H264QvbrSettings' {qvbrQualityLevelFineTune} -> qvbrQualityLevelFineTune) (\s@H264QvbrSettings' {} a -> s {qvbrQualityLevelFineTune = a} :: H264QvbrSettings)
+
+instance Data.FromJSON H264QvbrSettings where
+  parseJSON =
+    Data.withObject
+      "H264QvbrSettings"
+      ( \x ->
+          H264QvbrSettings'
+            Prelude.<$> (x Data..:? "maxAverageBitrate")
+            Prelude.<*> (x Data..:? "qvbrQualityLevel")
+            Prelude.<*> (x Data..:? "qvbrQualityLevelFineTune")
+      )
+
+instance Prelude.Hashable H264QvbrSettings where
+  hashWithSalt _salt H264QvbrSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxAverageBitrate
+      `Prelude.hashWithSalt` qvbrQualityLevel
+      `Prelude.hashWithSalt` qvbrQualityLevelFineTune
+
+instance Prelude.NFData H264QvbrSettings where
+  rnf H264QvbrSettings' {..} =
+    Prelude.rnf maxAverageBitrate
+      `Prelude.seq` Prelude.rnf qvbrQualityLevel
+      `Prelude.seq` Prelude.rnf qvbrQualityLevelFineTune
+
+instance Data.ToJSON H264QvbrSettings where
+  toJSON H264QvbrSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxAverageBitrate" Data..=)
+              Prelude.<$> maxAverageBitrate,
+            ("qvbrQualityLevel" Data..=)
+              Prelude.<$> qvbrQualityLevel,
+            ("qvbrQualityLevelFineTune" Data..=)
+              Prelude.<$> qvbrQualityLevelFineTune
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/H264RateControlMode.hs b/gen/Amazonka/MediaConvert/Types/H264RateControlMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264RateControlMode.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264RateControlMode
+-- 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.H264RateControlMode
+  ( H264RateControlMode
+      ( ..,
+        H264RateControlMode_CBR,
+        H264RateControlMode_QVBR,
+        H264RateControlMode_VBR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting to specify whether this output has a variable bitrate
+-- (VBR), constant bitrate (CBR) or quality-defined variable bitrate
+-- (QVBR).
+newtype H264RateControlMode = H264RateControlMode'
+  { fromH264RateControlMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264RateControlMode_CBR :: H264RateControlMode
+pattern H264RateControlMode_CBR = H264RateControlMode' "CBR"
+
+pattern H264RateControlMode_QVBR :: H264RateControlMode
+pattern H264RateControlMode_QVBR = H264RateControlMode' "QVBR"
+
+pattern H264RateControlMode_VBR :: H264RateControlMode
+pattern H264RateControlMode_VBR = H264RateControlMode' "VBR"
+
+{-# COMPLETE
+  H264RateControlMode_CBR,
+  H264RateControlMode_QVBR,
+  H264RateControlMode_VBR,
+  H264RateControlMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264RepeatPps.hs b/gen/Amazonka/MediaConvert/Types/H264RepeatPps.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264RepeatPps.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264RepeatPps
+-- 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.H264RepeatPps
+  ( H264RepeatPps
+      ( ..,
+        H264RepeatPps_DISABLED,
+        H264RepeatPps_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Places a PPS header on each encoded picture, even if repeated.
+newtype H264RepeatPps = H264RepeatPps'
+  { fromH264RepeatPps ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264RepeatPps_DISABLED :: H264RepeatPps
+pattern H264RepeatPps_DISABLED = H264RepeatPps' "DISABLED"
+
+pattern H264RepeatPps_ENABLED :: H264RepeatPps
+pattern H264RepeatPps_ENABLED = H264RepeatPps' "ENABLED"
+
+{-# COMPLETE
+  H264RepeatPps_DISABLED,
+  H264RepeatPps_ENABLED,
+  H264RepeatPps'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264ScanTypeConversionMode.hs b/gen/Amazonka/MediaConvert/Types/H264ScanTypeConversionMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264ScanTypeConversionMode.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264ScanTypeConversionMode
+-- 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.H264ScanTypeConversionMode
+  ( H264ScanTypeConversionMode
+      ( ..,
+        H264ScanTypeConversionMode_INTERLACED,
+        H264ScanTypeConversionMode_INTERLACED_OPTIMIZE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+newtype H264ScanTypeConversionMode = H264ScanTypeConversionMode'
+  { fromH264ScanTypeConversionMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264ScanTypeConversionMode_INTERLACED :: H264ScanTypeConversionMode
+pattern H264ScanTypeConversionMode_INTERLACED = H264ScanTypeConversionMode' "INTERLACED"
+
+pattern H264ScanTypeConversionMode_INTERLACED_OPTIMIZE :: H264ScanTypeConversionMode
+pattern H264ScanTypeConversionMode_INTERLACED_OPTIMIZE = H264ScanTypeConversionMode' "INTERLACED_OPTIMIZE"
+
+{-# COMPLETE
+  H264ScanTypeConversionMode_INTERLACED,
+  H264ScanTypeConversionMode_INTERLACED_OPTIMIZE,
+  H264ScanTypeConversionMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264SceneChangeDetect.hs b/gen/Amazonka/MediaConvert/Types/H264SceneChangeDetect.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264SceneChangeDetect.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264SceneChangeDetect
+-- 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.H264SceneChangeDetect
+  ( H264SceneChangeDetect
+      ( ..,
+        H264SceneChangeDetect_DISABLED,
+        H264SceneChangeDetect_ENABLED,
+        H264SceneChangeDetect_TRANSITION_DETECTION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enable this setting to insert I-frames at scene changes that the service
+-- automatically detects. This improves video quality and is enabled by
+-- default. If this output uses QVBR, choose Transition detection
+-- (TRANSITION_DETECTION) for further video quality improvement. For more
+-- information about QVBR, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/cbr-vbr-qvbr.
+newtype H264SceneChangeDetect = H264SceneChangeDetect'
+  { fromH264SceneChangeDetect ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264SceneChangeDetect_DISABLED :: H264SceneChangeDetect
+pattern H264SceneChangeDetect_DISABLED = H264SceneChangeDetect' "DISABLED"
+
+pattern H264SceneChangeDetect_ENABLED :: H264SceneChangeDetect
+pattern H264SceneChangeDetect_ENABLED = H264SceneChangeDetect' "ENABLED"
+
+pattern H264SceneChangeDetect_TRANSITION_DETECTION :: H264SceneChangeDetect
+pattern H264SceneChangeDetect_TRANSITION_DETECTION = H264SceneChangeDetect' "TRANSITION_DETECTION"
+
+{-# COMPLETE
+  H264SceneChangeDetect_DISABLED,
+  H264SceneChangeDetect_ENABLED,
+  H264SceneChangeDetect_TRANSITION_DETECTION,
+  H264SceneChangeDetect'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264Settings.hs b/gen/Amazonka/MediaConvert/Types/H264Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264Settings.hs
@@ -0,0 +1,1449 @@
+{-# 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.H264Settings
+-- 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.H264Settings 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.H264AdaptiveQuantization
+import Amazonka.MediaConvert.Types.H264CodecLevel
+import Amazonka.MediaConvert.Types.H264CodecProfile
+import Amazonka.MediaConvert.Types.H264DynamicSubGop
+import Amazonka.MediaConvert.Types.H264EntropyEncoding
+import Amazonka.MediaConvert.Types.H264FieldEncoding
+import Amazonka.MediaConvert.Types.H264FlickerAdaptiveQuantization
+import Amazonka.MediaConvert.Types.H264FramerateControl
+import Amazonka.MediaConvert.Types.H264FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.H264GopBReference
+import Amazonka.MediaConvert.Types.H264GopSizeUnits
+import Amazonka.MediaConvert.Types.H264InterlaceMode
+import Amazonka.MediaConvert.Types.H264ParControl
+import Amazonka.MediaConvert.Types.H264QualityTuningLevel
+import Amazonka.MediaConvert.Types.H264QvbrSettings
+import Amazonka.MediaConvert.Types.H264RateControlMode
+import Amazonka.MediaConvert.Types.H264RepeatPps
+import Amazonka.MediaConvert.Types.H264ScanTypeConversionMode
+import Amazonka.MediaConvert.Types.H264SceneChangeDetect
+import Amazonka.MediaConvert.Types.H264SlowPal
+import Amazonka.MediaConvert.Types.H264SpatialAdaptiveQuantization
+import Amazonka.MediaConvert.Types.H264Syntax
+import Amazonka.MediaConvert.Types.H264Telecine
+import Amazonka.MediaConvert.Types.H264TemporalAdaptiveQuantization
+import Amazonka.MediaConvert.Types.H264UnregisteredSeiTimecode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value H_264.
+--
+-- /See:/ 'newH264Settings' smart constructor.
+data H264Settings = H264Settings'
+  { -- | Keep the default value, Auto (AUTO), for this setting to have
+    -- MediaConvert automatically apply the best types of quantization for your
+    -- video content. When you want to apply your quantization settings
+    -- manually, you must set H264AdaptiveQuantization to a value other than
+    -- Auto (AUTO). Use this setting to specify the strength of any adaptive
+    -- quantization filters that you enable. If you don\'t want MediaConvert to
+    -- do any adaptive quantization in this transcode, set Adaptive
+    -- quantization (H264AdaptiveQuantization) to Off (OFF). Related settings:
+    -- The value that you choose here applies to the following settings:
+    -- H264FlickerAdaptiveQuantization, H264SpatialAdaptiveQuantization, and
+    -- H264TemporalAdaptiveQuantization.
+    adaptiveQuantization :: Prelude.Maybe H264AdaptiveQuantization,
+    -- | Specify the average bitrate in bits per second. Required for VBR and
+    -- CBR. For MS Smooth outputs, bitrates must be unique when rounded down to
+    -- the nearest multiple of 1000.
+    bitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Specify an H.264 level that is consistent with your output video
+    -- settings. If you aren\'t sure what level to specify, choose Auto (AUTO).
+    codecLevel :: Prelude.Maybe H264CodecLevel,
+    -- | H.264 Profile. High 4:2:2 and 10-bit profiles are only available with
+    -- the AVC-I License.
+    codecProfile :: Prelude.Maybe H264CodecProfile,
+    -- | Choose Adaptive to improve subjective video quality for high-motion
+    -- content. This will cause the service to use fewer B-frames (which infer
+    -- information based on other frames) for high-motion portions of the video
+    -- and more B-frames for low-motion portions. The maximum number of
+    -- B-frames is limited by the value you provide for the setting B frames
+    -- between reference frames (numberBFramesBetweenReferenceFrames).
+    dynamicSubGop :: Prelude.Maybe H264DynamicSubGop,
+    -- | Entropy encoding mode. Use CABAC (must be in Main or High profile) or
+    -- CAVLC.
+    entropyEncoding :: Prelude.Maybe H264EntropyEncoding,
+    -- | The video encoding method for your MPEG-4 AVC output. Keep the default
+    -- value, PAFF, to have MediaConvert use PAFF encoding for interlaced
+    -- outputs. Choose Force field (FORCE_FIELD) to disable PAFF encoding and
+    -- create separate interlaced fields. Choose MBAFF to disable PAFF and have
+    -- MediaConvert use MBAFF encoding for interlaced outputs.
+    fieldEncoding :: Prelude.Maybe H264FieldEncoding,
+    -- | Only use this setting when you change the default value, AUTO, for the
+    -- setting H264AdaptiveQuantization. When you keep all defaults, excluding
+    -- H264AdaptiveQuantization and all other adaptive quantization from your
+    -- JSON job specification, MediaConvert automatically applies the best
+    -- types of quantization for your video content. When you set
+    -- H264AdaptiveQuantization to a value other than AUTO, the default value
+    -- for H264FlickerAdaptiveQuantization is Disabled (DISABLED). Change this
+    -- value to Enabled (ENABLED) to reduce I-frame pop. I-frame pop appears as
+    -- a visual flicker that can arise when the encoder saves bits by copying
+    -- some macroblocks many times from frame to frame, and then refreshes them
+    -- at the I-frame. When you enable this setting, the encoder updates these
+    -- macroblocks slightly more often to smooth out the flicker. To manually
+    -- enable or disable H264FlickerAdaptiveQuantization, you must set Adaptive
+    -- quantization (H264AdaptiveQuantization) to a value other than AUTO.
+    flickerAdaptiveQuantization :: Prelude.Maybe H264FlickerAdaptiveQuantization,
+    -- | If you are using the console, use the Framerate setting to specify the
+    -- frame rate for this output. If you want to keep the same frame rate as
+    -- the input video, choose Follow source. If you want to do frame rate
+    -- conversion, choose a frame rate from the dropdown list or choose Custom.
+    -- The framerates shown in the dropdown list are decimal approximations of
+    -- fractions. If you choose Custom, specify your frame rate as a fraction.
+    -- If you are creating your transcoding job specification as a JSON file
+    -- without the console, use FramerateControl to specify which value the
+    -- service uses for the frame rate for this output. Choose
+    -- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+    -- from the input. Choose SPECIFIED if you want the service to use the
+    -- frame rate you specify in the settings FramerateNumerator and
+    -- FramerateDenominator.
+    framerateControl :: Prelude.Maybe H264FramerateControl,
+    -- | Choose the method that you want MediaConvert to use when increasing or
+    -- decreasing the frame rate. We recommend using drop duplicate
+    -- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+    -- 30 fps. For numerically complex conversions, you can use interpolate
+    -- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+    -- might introduce undesirable video artifacts. For complex frame rate
+    -- conversions, especially if your source video has already been converted
+    -- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+    -- motion-compensated interpolation. FrameFormer chooses the best
+    -- conversion method frame by frame. Note that using FrameFormer increases
+    -- the transcoding time and incurs a significant add-on cost.
+    framerateConversionAlgorithm :: Prelude.Maybe H264FramerateConversionAlgorithm,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+    -- fraction. In this example, use 1001 for the value of
+    -- FramerateDenominator. When you use the console for transcode jobs that
+    -- use frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+    -- fraction. In this example, use 24000 for the value of
+    -- FramerateNumerator. When you use the console for transcode jobs that use
+    -- frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | If enable, use reference B frames for GOP structures that have B frames
+    -- > 1.
+    gopBReference :: Prelude.Maybe H264GopBReference,
+    -- | Specify the relative frequency of open to closed GOPs in this output.
+    -- For example, if you want to allow four open GOPs and then require a
+    -- closed GOP, set this value to 5. We recommend that you have the
+    -- transcoder automatically choose this value for you based on
+    -- characteristics of your input video. To enable this automatic behavior,
+    -- keep the default value by leaving this setting out of your JSON job
+    -- specification. In the console, do this by keeping the default empty
+    -- value. If you do explicitly specify a value, for segmented outputs,
+    -- don\'t set this value to 0.
+    gopClosedCadence :: Prelude.Maybe Prelude.Natural,
+    -- | Use this setting only when you set GOP mode control (GopSizeUnits) to
+    -- Specified, frames (FRAMES) or Specified, seconds (SECONDS). Specify the
+    -- GOP length using a whole number of frames or a decimal value of seconds.
+    -- MediaConvert will interpret this value as frames or seconds depending on
+    -- the value you choose for GOP mode control (GopSizeUnits). If you want to
+    -- allow MediaConvert to automatically determine GOP size, leave GOP size
+    -- blank and set GOP mode control to Auto (AUTO). If your output group
+    -- specifies HLS, DASH, or CMAF, leave GOP size blank and set GOP mode
+    -- control to Auto in each output in your output group.
+    gopSize :: Prelude.Maybe Prelude.Double,
+    -- | Specify how the transcoder determines GOP size for this output. We
+    -- recommend that you have the transcoder automatically choose this value
+    -- for you based on characteristics of your input video. To enable this
+    -- automatic behavior, choose Auto (AUTO) and and leave GOP size (GopSize)
+    -- blank. By default, if you don\'t specify GOP mode control
+    -- (GopSizeUnits), MediaConvert will use automatic behavior. If your output
+    -- group specifies HLS, DASH, or CMAF, set GOP mode control to Auto and
+    -- leave GOP size blank in each output in your output group. To explicitly
+    -- specify the GOP length, choose Specified, frames (FRAMES) or Specified,
+    -- seconds (SECONDS) and then provide the GOP length in the related setting
+    -- GOP size (GopSize).
+    gopSizeUnits :: Prelude.Maybe H264GopSizeUnits,
+    -- | If your downstream systems have strict buffer requirements: Specify the
+    -- minimum percentage of the HRD buffer that\'s available at the end of
+    -- each encoded video segment. For the best video quality: Set to 0 or
+    -- leave blank to automatically determine the final buffer fill percentage.
+    hrdBufferFinalFillPercentage :: Prelude.Maybe Prelude.Natural,
+    -- | Percentage of the buffer that should initially be filled (HRD buffer
+    -- model).
+    hrdBufferInitialFillPercentage :: Prelude.Maybe Prelude.Natural,
+    -- | Size of buffer (HRD buffer model) in bits. For example, enter five
+    -- megabits as 5000000.
+    hrdBufferSize :: Prelude.Maybe Prelude.Natural,
+    -- | Choose the scan line type for the output. Keep the default value,
+    -- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+    -- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+    -- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+    -- the same field polarity throughout. Use Follow, default top
+    -- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+    -- produce outputs with the same field polarity as the source. For jobs
+    -- that have multiple inputs, the output field polarity might change over
+    -- the course of the output. Follow behavior depends on the input scan
+    -- type. If the source is interlaced, the output will be interlaced with
+    -- the same polarity as the source. If the source is progressive, the
+    -- output will be interlaced with top field bottom field first, depending
+    -- on which of the Follow options you choose.
+    interlaceMode :: Prelude.Maybe H264InterlaceMode,
+    -- | Maximum bitrate in bits\/second. For example, enter five megabits per
+    -- second as 5000000. Required when Rate control mode is QVBR.
+    maxBitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Use this setting only when you also enable Scene change detection
+    -- (SceneChangeDetect). This setting determines how the encoder manages the
+    -- spacing between I-frames that it inserts as part of the I-frame cadence
+    -- and the I-frames that it inserts for Scene change detection. We
+    -- recommend that you have the transcoder automatically choose this value
+    -- for you based on characteristics of your input video. To enable this
+    -- automatic behavior, keep the default value by leaving this setting out
+    -- of your JSON job specification. In the console, do this by keeping the
+    -- default empty value. When you explicitly specify a value for this
+    -- setting, the encoder determines whether to skip a cadence-driven I-frame
+    -- by the value you set. For example, if you set Min I interval
+    -- (minIInterval) to 5 and a cadence-driven I-frame would fall within 5
+    -- frames of a scene-change I-frame, then the encoder skips the
+    -- cadence-driven I-frame. In this way, one GOP is shrunk slightly and one
+    -- GOP is stretched slightly. When the cadence-driven I-frames are farther
+    -- from the scene-change I-frame than the value you set, then the encoder
+    -- leaves all I-frames in place and the GOPs surrounding the scene change
+    -- are smaller than the usual cadence GOPs.
+    minIInterval :: Prelude.Maybe Prelude.Natural,
+    -- | This setting to determines the number of B-frames that MediaConvert puts
+    -- between reference frames in this output. We recommend that you use
+    -- automatic behavior to allow the transcoder to choose the best value
+    -- based on characteristics of your input video. In the console, choose
+    -- AUTO to select this automatic behavior. When you manually edit your JSON
+    -- job specification, leave this setting out to choose automatic behavior.
+    -- When you want to specify this number explicitly, choose a whole number
+    -- from 0 through 7.
+    numberBFramesBetweenReferenceFrames :: Prelude.Maybe Prelude.Natural,
+    -- | Number of reference frames to use. The encoder may use more than
+    -- requested if using B-frames and\/or interlaced encoding.
+    numberReferenceFrames :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Specify how the service determines the pixel aspect ratio
+    -- (PAR) for this output. The default behavior, Follow source
+    -- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+    -- output. To specify a different PAR in the console, choose any value
+    -- other than Follow source. To specify a different PAR by editing the JSON
+    -- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+    -- setting, you must also specify values for the parNumerator and
+    -- parDenominator settings.
+    parControl :: Prelude.Maybe H264ParControl,
+    -- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+    -- the console, this corresponds to any value other than Follow source.
+    -- When you specify an output pixel aspect ratio (PAR) that is different
+    -- from your input video PAR, provide your output PAR as a ratio. For
+    -- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+    -- In this example, the value for parDenominator is 33.
+    parDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+    -- the console, this corresponds to any value other than Follow source.
+    -- When you specify an output pixel aspect ratio (PAR) that is different
+    -- from your input video PAR, provide your output PAR as a ratio. For
+    -- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+    -- In this example, the value for parNumerator is 40.
+    parNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+    -- you want to trade off encoding speed for output video quality. The
+    -- default behavior is faster, lower quality, single-pass encoding.
+    qualityTuningLevel :: Prelude.Maybe H264QualityTuningLevel,
+    -- | Settings for quality-defined variable bitrate encoding with the H.265
+    -- codec. Use these settings only when you set QVBR for Rate control mode
+    -- (RateControlMode).
+    qvbrSettings :: Prelude.Maybe H264QvbrSettings,
+    -- | Use this setting to specify whether this output has a variable bitrate
+    -- (VBR), constant bitrate (CBR) or quality-defined variable bitrate
+    -- (QVBR).
+    rateControlMode :: Prelude.Maybe H264RateControlMode,
+    -- | Places a PPS header on each encoded picture, even if repeated.
+    repeatPps :: Prelude.Maybe H264RepeatPps,
+    -- | Use this setting for interlaced outputs, when your output frame rate is
+    -- half of your input frame rate. In this situation, choose Optimized
+    -- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+    -- output. In this case, each progressive frame from the input corresponds
+    -- to an interlaced field in the output. Keep the default value, Basic
+    -- interlacing (INTERLACED), for all other output frame rates. With basic
+    -- interlacing, MediaConvert performs any frame rate conversion first and
+    -- then interlaces the frames. When you choose Optimized interlacing and
+    -- you set your output frame rate to a value that isn\'t suitable for
+    -- optimized interlacing, MediaConvert automatically falls back to basic
+    -- interlacing. Required settings: To use optimized interlacing, you must
+    -- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+    -- optimized interlacing for hard telecine outputs. You must also set
+    -- Interlace mode (interlaceMode) to a value other than Progressive
+    -- (PROGRESSIVE).
+    scanTypeConversionMode :: Prelude.Maybe H264ScanTypeConversionMode,
+    -- | Enable this setting to insert I-frames at scene changes that the service
+    -- automatically detects. This improves video quality and is enabled by
+    -- default. If this output uses QVBR, choose Transition detection
+    -- (TRANSITION_DETECTION) for further video quality improvement. For more
+    -- information about QVBR, see
+    -- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/cbr-vbr-qvbr.
+    sceneChangeDetect :: Prelude.Maybe H264SceneChangeDetect,
+    -- | Number of slices per picture. Must be less than or equal to the number
+    -- of macroblock rows for progressive pictures, and less than or equal to
+    -- half the number of macroblock rows for interlaced pictures.
+    slices :: Prelude.Maybe Prelude.Natural,
+    -- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+    -- per second (fps). Enable slow PAL to create a 25 fps output. When you
+    -- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+    -- resamples your audio to keep it synchronized with the video. Note that
+    -- enabling this setting will slightly reduce the duration of your video.
+    -- Required settings: You must also set Framerate to 25. In your JSON job
+    -- specification, set (framerateControl) to (SPECIFIED),
+    -- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+    slowPal :: Prelude.Maybe H264SlowPal,
+    -- | Ignore this setting unless you need to comply with a specification that
+    -- requires a specific value. If you don\'t have a specification
+    -- requirement, we recommend that you adjust the softness of your output by
+    -- using a lower value for the setting Sharpness (sharpness) or by enabling
+    -- a noise reducer filter (noiseReducerFilter). The Softness (softness)
+    -- setting specifies the quantization matrices that the encoder uses. Keep
+    -- the default value, 0, for flat quantization. Choose the value 1 or 16 to
+    -- use the default JVT softening quantization matricies from the H.264
+    -- specification. Choose a value from 17 to 128 to use planar
+    -- interpolation. Increasing values from 17 to 128 result in increasing
+    -- reduction of high-frequency data. The value 128 results in the softest
+    -- video.
+    softness :: Prelude.Maybe Prelude.Natural,
+    -- | Only use this setting when you change the default value, Auto (AUTO),
+    -- for the setting H264AdaptiveQuantization. When you keep all defaults,
+    -- excluding H264AdaptiveQuantization and all other adaptive quantization
+    -- from your JSON job specification, MediaConvert automatically applies the
+    -- best types of quantization for your video content. When you set
+    -- H264AdaptiveQuantization to a value other than AUTO, the default value
+    -- for H264SpatialAdaptiveQuantization is Enabled (ENABLED). Keep this
+    -- default value to adjust quantization within each frame based on spatial
+    -- variation of content complexity. When you enable this feature, the
+    -- encoder uses fewer bits on areas that can sustain more distortion with
+    -- no noticeable visual degradation and uses more bits on areas where any
+    -- small distortion will be noticeable. For example, complex textured
+    -- blocks are encoded with fewer bits and smooth textured blocks are
+    -- encoded with more bits. Enabling this feature will almost always improve
+    -- your video quality. Note, though, that this feature doesn\'t take into
+    -- account where the viewer\'s attention is likely to be. If viewers are
+    -- likely to be focusing their attention on a part of the screen with a lot
+    -- of complex texture, you might choose to set
+    -- H264SpatialAdaptiveQuantization to Disabled (DISABLED). Related setting:
+    -- When you enable spatial adaptive quantization, set the value for
+    -- Adaptive quantization (H264AdaptiveQuantization) depending on your
+    -- content. For homogeneous content, such as cartoons and video games, set
+    -- it to Low. For content with a wider variety of textures, set it to High
+    -- or Higher. To manually enable or disable
+    -- H264SpatialAdaptiveQuantization, you must set Adaptive quantization
+    -- (H264AdaptiveQuantization) to a value other than AUTO.
+    spatialAdaptiveQuantization :: Prelude.Maybe H264SpatialAdaptiveQuantization,
+    -- | Produces a bitstream compliant with SMPTE RP-2027.
+    syntax :: Prelude.Maybe H264Syntax,
+    -- | When you do frame rate conversion from 23.976 frames per second (fps) to
+    -- 29.97 fps, and your output scan type is interlaced, you can optionally
+    -- enable hard or soft telecine to create a smoother picture. Hard telecine
+    -- (HARD) produces a 29.97i output. Soft telecine (SOFT) produces an output
+    -- with a 23.976 output that signals to the video player device to do the
+    -- conversion during play back. When you keep the default value, None
+    -- (NONE), MediaConvert does a standard frame rate conversion to 29.97
+    -- without doing anything with the field polarity to create a smoother
+    -- picture.
+    telecine :: Prelude.Maybe H264Telecine,
+    -- | Only use this setting when you change the default value, AUTO, for the
+    -- setting H264AdaptiveQuantization. When you keep all defaults, excluding
+    -- H264AdaptiveQuantization and all other adaptive quantization from your
+    -- JSON job specification, MediaConvert automatically applies the best
+    -- types of quantization for your video content. When you set
+    -- H264AdaptiveQuantization to a value other than AUTO, the default value
+    -- for H264TemporalAdaptiveQuantization is Enabled (ENABLED). Keep this
+    -- default value to adjust quantization within each frame based on temporal
+    -- variation of content complexity. When you enable this feature, the
+    -- encoder uses fewer bits on areas of the frame that aren\'t moving and
+    -- uses more bits on complex objects with sharp edges that move a lot. For
+    -- example, this feature improves the readability of text tickers on
+    -- newscasts and scoreboards on sports matches. Enabling this feature will
+    -- almost always improve your video quality. Note, though, that this
+    -- feature doesn\'t take into account where the viewer\'s attention is
+    -- likely to be. If viewers are likely to be focusing their attention on a
+    -- part of the screen that doesn\'t have moving objects with sharp edges,
+    -- such as sports athletes\' faces, you might choose to set
+    -- H264TemporalAdaptiveQuantization to Disabled (DISABLED). Related
+    -- setting: When you enable temporal quantization, adjust the strength of
+    -- the filter with the setting Adaptive quantization
+    -- (adaptiveQuantization). To manually enable or disable
+    -- H264TemporalAdaptiveQuantization, you must set Adaptive quantization
+    -- (H264AdaptiveQuantization) to a value other than AUTO.
+    temporalAdaptiveQuantization :: Prelude.Maybe H264TemporalAdaptiveQuantization,
+    -- | Inserts timecode for each frame as 4 bytes of an unregistered SEI
+    -- message.
+    unregisteredSeiTimecode :: Prelude.Maybe H264UnregisteredSeiTimecode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'H264Settings' 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:
+--
+-- 'adaptiveQuantization', 'h264Settings_adaptiveQuantization' - Keep the default value, Auto (AUTO), for this setting to have
+-- MediaConvert automatically apply the best types of quantization for your
+-- video content. When you want to apply your quantization settings
+-- manually, you must set H264AdaptiveQuantization to a value other than
+-- Auto (AUTO). Use this setting to specify the strength of any adaptive
+-- quantization filters that you enable. If you don\'t want MediaConvert to
+-- do any adaptive quantization in this transcode, set Adaptive
+-- quantization (H264AdaptiveQuantization) to Off (OFF). Related settings:
+-- The value that you choose here applies to the following settings:
+-- H264FlickerAdaptiveQuantization, H264SpatialAdaptiveQuantization, and
+-- H264TemporalAdaptiveQuantization.
+--
+-- 'bitrate', 'h264Settings_bitrate' - Specify the average bitrate in bits per second. Required for VBR and
+-- CBR. For MS Smooth outputs, bitrates must be unique when rounded down to
+-- the nearest multiple of 1000.
+--
+-- 'codecLevel', 'h264Settings_codecLevel' - Specify an H.264 level that is consistent with your output video
+-- settings. If you aren\'t sure what level to specify, choose Auto (AUTO).
+--
+-- 'codecProfile', 'h264Settings_codecProfile' - H.264 Profile. High 4:2:2 and 10-bit profiles are only available with
+-- the AVC-I License.
+--
+-- 'dynamicSubGop', 'h264Settings_dynamicSubGop' - Choose Adaptive to improve subjective video quality for high-motion
+-- content. This will cause the service to use fewer B-frames (which infer
+-- information based on other frames) for high-motion portions of the video
+-- and more B-frames for low-motion portions. The maximum number of
+-- B-frames is limited by the value you provide for the setting B frames
+-- between reference frames (numberBFramesBetweenReferenceFrames).
+--
+-- 'entropyEncoding', 'h264Settings_entropyEncoding' - Entropy encoding mode. Use CABAC (must be in Main or High profile) or
+-- CAVLC.
+--
+-- 'fieldEncoding', 'h264Settings_fieldEncoding' - The video encoding method for your MPEG-4 AVC output. Keep the default
+-- value, PAFF, to have MediaConvert use PAFF encoding for interlaced
+-- outputs. Choose Force field (FORCE_FIELD) to disable PAFF encoding and
+-- create separate interlaced fields. Choose MBAFF to disable PAFF and have
+-- MediaConvert use MBAFF encoding for interlaced outputs.
+--
+-- 'flickerAdaptiveQuantization', 'h264Settings_flickerAdaptiveQuantization' - Only use this setting when you change the default value, AUTO, for the
+-- setting H264AdaptiveQuantization. When you keep all defaults, excluding
+-- H264AdaptiveQuantization and all other adaptive quantization from your
+-- JSON job specification, MediaConvert automatically applies the best
+-- types of quantization for your video content. When you set
+-- H264AdaptiveQuantization to a value other than AUTO, the default value
+-- for H264FlickerAdaptiveQuantization is Disabled (DISABLED). Change this
+-- value to Enabled (ENABLED) to reduce I-frame pop. I-frame pop appears as
+-- a visual flicker that can arise when the encoder saves bits by copying
+-- some macroblocks many times from frame to frame, and then refreshes them
+-- at the I-frame. When you enable this setting, the encoder updates these
+-- macroblocks slightly more often to smooth out the flicker. To manually
+-- enable or disable H264FlickerAdaptiveQuantization, you must set Adaptive
+-- quantization (H264AdaptiveQuantization) to a value other than AUTO.
+--
+-- 'framerateControl', 'h264Settings_framerateControl' - If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+--
+-- 'framerateConversionAlgorithm', 'h264Settings_framerateConversionAlgorithm' - Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+--
+-- 'framerateDenominator', 'h264Settings_framerateDenominator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'framerateNumerator', 'h264Settings_framerateNumerator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'gopBReference', 'h264Settings_gopBReference' - If enable, use reference B frames for GOP structures that have B frames
+-- > 1.
+--
+-- 'gopClosedCadence', 'h264Settings_gopClosedCadence' - Specify the relative frequency of open to closed GOPs in this output.
+-- For example, if you want to allow four open GOPs and then require a
+-- closed GOP, set this value to 5. We recommend that you have the
+-- transcoder automatically choose this value for you based on
+-- characteristics of your input video. To enable this automatic behavior,
+-- keep the default value by leaving this setting out of your JSON job
+-- specification. In the console, do this by keeping the default empty
+-- value. If you do explicitly specify a value, for segmented outputs,
+-- don\'t set this value to 0.
+--
+-- 'gopSize', 'h264Settings_gopSize' - Use this setting only when you set GOP mode control (GopSizeUnits) to
+-- Specified, frames (FRAMES) or Specified, seconds (SECONDS). Specify the
+-- GOP length using a whole number of frames or a decimal value of seconds.
+-- MediaConvert will interpret this value as frames or seconds depending on
+-- the value you choose for GOP mode control (GopSizeUnits). If you want to
+-- allow MediaConvert to automatically determine GOP size, leave GOP size
+-- blank and set GOP mode control to Auto (AUTO). If your output group
+-- specifies HLS, DASH, or CMAF, leave GOP size blank and set GOP mode
+-- control to Auto in each output in your output group.
+--
+-- 'gopSizeUnits', 'h264Settings_gopSizeUnits' - Specify how the transcoder determines GOP size for this output. We
+-- recommend that you have the transcoder automatically choose this value
+-- for you based on characteristics of your input video. To enable this
+-- automatic behavior, choose Auto (AUTO) and and leave GOP size (GopSize)
+-- blank. By default, if you don\'t specify GOP mode control
+-- (GopSizeUnits), MediaConvert will use automatic behavior. If your output
+-- group specifies HLS, DASH, or CMAF, set GOP mode control to Auto and
+-- leave GOP size blank in each output in your output group. To explicitly
+-- specify the GOP length, choose Specified, frames (FRAMES) or Specified,
+-- seconds (SECONDS) and then provide the GOP length in the related setting
+-- GOP size (GopSize).
+--
+-- 'hrdBufferFinalFillPercentage', 'h264Settings_hrdBufferFinalFillPercentage' - If your downstream systems have strict buffer requirements: Specify the
+-- minimum percentage of the HRD buffer that\'s available at the end of
+-- each encoded video segment. For the best video quality: Set to 0 or
+-- leave blank to automatically determine the final buffer fill percentage.
+--
+-- 'hrdBufferInitialFillPercentage', 'h264Settings_hrdBufferInitialFillPercentage' - Percentage of the buffer that should initially be filled (HRD buffer
+-- model).
+--
+-- 'hrdBufferSize', 'h264Settings_hrdBufferSize' - Size of buffer (HRD buffer model) in bits. For example, enter five
+-- megabits as 5000000.
+--
+-- 'interlaceMode', 'h264Settings_interlaceMode' - Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+--
+-- 'maxBitrate', 'h264Settings_maxBitrate' - Maximum bitrate in bits\/second. For example, enter five megabits per
+-- second as 5000000. Required when Rate control mode is QVBR.
+--
+-- 'minIInterval', 'h264Settings_minIInterval' - Use this setting only when you also enable Scene change detection
+-- (SceneChangeDetect). This setting determines how the encoder manages the
+-- spacing between I-frames that it inserts as part of the I-frame cadence
+-- and the I-frames that it inserts for Scene change detection. We
+-- recommend that you have the transcoder automatically choose this value
+-- for you based on characteristics of your input video. To enable this
+-- automatic behavior, keep the default value by leaving this setting out
+-- of your JSON job specification. In the console, do this by keeping the
+-- default empty value. When you explicitly specify a value for this
+-- setting, the encoder determines whether to skip a cadence-driven I-frame
+-- by the value you set. For example, if you set Min I interval
+-- (minIInterval) to 5 and a cadence-driven I-frame would fall within 5
+-- frames of a scene-change I-frame, then the encoder skips the
+-- cadence-driven I-frame. In this way, one GOP is shrunk slightly and one
+-- GOP is stretched slightly. When the cadence-driven I-frames are farther
+-- from the scene-change I-frame than the value you set, then the encoder
+-- leaves all I-frames in place and the GOPs surrounding the scene change
+-- are smaller than the usual cadence GOPs.
+--
+-- 'numberBFramesBetweenReferenceFrames', 'h264Settings_numberBFramesBetweenReferenceFrames' - This setting to determines the number of B-frames that MediaConvert puts
+-- between reference frames in this output. We recommend that you use
+-- automatic behavior to allow the transcoder to choose the best value
+-- based on characteristics of your input video. In the console, choose
+-- AUTO to select this automatic behavior. When you manually edit your JSON
+-- job specification, leave this setting out to choose automatic behavior.
+-- When you want to specify this number explicitly, choose a whole number
+-- from 0 through 7.
+--
+-- 'numberReferenceFrames', 'h264Settings_numberReferenceFrames' - Number of reference frames to use. The encoder may use more than
+-- requested if using B-frames and\/or interlaced encoding.
+--
+-- 'parControl', 'h264Settings_parControl' - Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+--
+-- 'parDenominator', 'h264Settings_parDenominator' - Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parDenominator is 33.
+--
+-- 'parNumerator', 'h264Settings_parNumerator' - Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parNumerator is 40.
+--
+-- 'qualityTuningLevel', 'h264Settings_qualityTuningLevel' - Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+--
+-- 'qvbrSettings', 'h264Settings_qvbrSettings' - Settings for quality-defined variable bitrate encoding with the H.265
+-- codec. Use these settings only when you set QVBR for Rate control mode
+-- (RateControlMode).
+--
+-- 'rateControlMode', 'h264Settings_rateControlMode' - Use this setting to specify whether this output has a variable bitrate
+-- (VBR), constant bitrate (CBR) or quality-defined variable bitrate
+-- (QVBR).
+--
+-- 'repeatPps', 'h264Settings_repeatPps' - Places a PPS header on each encoded picture, even if repeated.
+--
+-- 'scanTypeConversionMode', 'h264Settings_scanTypeConversionMode' - Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+--
+-- 'sceneChangeDetect', 'h264Settings_sceneChangeDetect' - Enable this setting to insert I-frames at scene changes that the service
+-- automatically detects. This improves video quality and is enabled by
+-- default. If this output uses QVBR, choose Transition detection
+-- (TRANSITION_DETECTION) for further video quality improvement. For more
+-- information about QVBR, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/cbr-vbr-qvbr.
+--
+-- 'slices', 'h264Settings_slices' - Number of slices per picture. Must be less than or equal to the number
+-- of macroblock rows for progressive pictures, and less than or equal to
+-- half the number of macroblock rows for interlaced pictures.
+--
+-- 'slowPal', 'h264Settings_slowPal' - Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+--
+-- 'softness', 'h264Settings_softness' - Ignore this setting unless you need to comply with a specification that
+-- requires a specific value. If you don\'t have a specification
+-- requirement, we recommend that you adjust the softness of your output by
+-- using a lower value for the setting Sharpness (sharpness) or by enabling
+-- a noise reducer filter (noiseReducerFilter). The Softness (softness)
+-- setting specifies the quantization matrices that the encoder uses. Keep
+-- the default value, 0, for flat quantization. Choose the value 1 or 16 to
+-- use the default JVT softening quantization matricies from the H.264
+-- specification. Choose a value from 17 to 128 to use planar
+-- interpolation. Increasing values from 17 to 128 result in increasing
+-- reduction of high-frequency data. The value 128 results in the softest
+-- video.
+--
+-- 'spatialAdaptiveQuantization', 'h264Settings_spatialAdaptiveQuantization' - Only use this setting when you change the default value, Auto (AUTO),
+-- for the setting H264AdaptiveQuantization. When you keep all defaults,
+-- excluding H264AdaptiveQuantization and all other adaptive quantization
+-- from your JSON job specification, MediaConvert automatically applies the
+-- best types of quantization for your video content. When you set
+-- H264AdaptiveQuantization to a value other than AUTO, the default value
+-- for H264SpatialAdaptiveQuantization is Enabled (ENABLED). Keep this
+-- default value to adjust quantization within each frame based on spatial
+-- variation of content complexity. When you enable this feature, the
+-- encoder uses fewer bits on areas that can sustain more distortion with
+-- no noticeable visual degradation and uses more bits on areas where any
+-- small distortion will be noticeable. For example, complex textured
+-- blocks are encoded with fewer bits and smooth textured blocks are
+-- encoded with more bits. Enabling this feature will almost always improve
+-- your video quality. Note, though, that this feature doesn\'t take into
+-- account where the viewer\'s attention is likely to be. If viewers are
+-- likely to be focusing their attention on a part of the screen with a lot
+-- of complex texture, you might choose to set
+-- H264SpatialAdaptiveQuantization to Disabled (DISABLED). Related setting:
+-- When you enable spatial adaptive quantization, set the value for
+-- Adaptive quantization (H264AdaptiveQuantization) depending on your
+-- content. For homogeneous content, such as cartoons and video games, set
+-- it to Low. For content with a wider variety of textures, set it to High
+-- or Higher. To manually enable or disable
+-- H264SpatialAdaptiveQuantization, you must set Adaptive quantization
+-- (H264AdaptiveQuantization) to a value other than AUTO.
+--
+-- 'syntax', 'h264Settings_syntax' - Produces a bitstream compliant with SMPTE RP-2027.
+--
+-- 'telecine', 'h264Settings_telecine' - When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard or soft telecine to create a smoother picture. Hard telecine
+-- (HARD) produces a 29.97i output. Soft telecine (SOFT) produces an output
+-- with a 23.976 output that signals to the video player device to do the
+-- conversion during play back. When you keep the default value, None
+-- (NONE), MediaConvert does a standard frame rate conversion to 29.97
+-- without doing anything with the field polarity to create a smoother
+-- picture.
+--
+-- 'temporalAdaptiveQuantization', 'h264Settings_temporalAdaptiveQuantization' - Only use this setting when you change the default value, AUTO, for the
+-- setting H264AdaptiveQuantization. When you keep all defaults, excluding
+-- H264AdaptiveQuantization and all other adaptive quantization from your
+-- JSON job specification, MediaConvert automatically applies the best
+-- types of quantization for your video content. When you set
+-- H264AdaptiveQuantization to a value other than AUTO, the default value
+-- for H264TemporalAdaptiveQuantization is Enabled (ENABLED). Keep this
+-- default value to adjust quantization within each frame based on temporal
+-- variation of content complexity. When you enable this feature, the
+-- encoder uses fewer bits on areas of the frame that aren\'t moving and
+-- uses more bits on complex objects with sharp edges that move a lot. For
+-- example, this feature improves the readability of text tickers on
+-- newscasts and scoreboards on sports matches. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen that doesn\'t have moving objects with sharp edges,
+-- such as sports athletes\' faces, you might choose to set
+-- H264TemporalAdaptiveQuantization to Disabled (DISABLED). Related
+-- setting: When you enable temporal quantization, adjust the strength of
+-- the filter with the setting Adaptive quantization
+-- (adaptiveQuantization). To manually enable or disable
+-- H264TemporalAdaptiveQuantization, you must set Adaptive quantization
+-- (H264AdaptiveQuantization) to a value other than AUTO.
+--
+-- 'unregisteredSeiTimecode', 'h264Settings_unregisteredSeiTimecode' - Inserts timecode for each frame as 4 bytes of an unregistered SEI
+-- message.
+newH264Settings ::
+  H264Settings
+newH264Settings =
+  H264Settings'
+    { adaptiveQuantization =
+        Prelude.Nothing,
+      bitrate = Prelude.Nothing,
+      codecLevel = Prelude.Nothing,
+      codecProfile = Prelude.Nothing,
+      dynamicSubGop = Prelude.Nothing,
+      entropyEncoding = Prelude.Nothing,
+      fieldEncoding = Prelude.Nothing,
+      flickerAdaptiveQuantization = Prelude.Nothing,
+      framerateControl = Prelude.Nothing,
+      framerateConversionAlgorithm = Prelude.Nothing,
+      framerateDenominator = Prelude.Nothing,
+      framerateNumerator = Prelude.Nothing,
+      gopBReference = Prelude.Nothing,
+      gopClosedCadence = Prelude.Nothing,
+      gopSize = Prelude.Nothing,
+      gopSizeUnits = Prelude.Nothing,
+      hrdBufferFinalFillPercentage = Prelude.Nothing,
+      hrdBufferInitialFillPercentage = Prelude.Nothing,
+      hrdBufferSize = Prelude.Nothing,
+      interlaceMode = Prelude.Nothing,
+      maxBitrate = Prelude.Nothing,
+      minIInterval = Prelude.Nothing,
+      numberBFramesBetweenReferenceFrames =
+        Prelude.Nothing,
+      numberReferenceFrames = Prelude.Nothing,
+      parControl = Prelude.Nothing,
+      parDenominator = Prelude.Nothing,
+      parNumerator = Prelude.Nothing,
+      qualityTuningLevel = Prelude.Nothing,
+      qvbrSettings = Prelude.Nothing,
+      rateControlMode = Prelude.Nothing,
+      repeatPps = Prelude.Nothing,
+      scanTypeConversionMode = Prelude.Nothing,
+      sceneChangeDetect = Prelude.Nothing,
+      slices = Prelude.Nothing,
+      slowPal = Prelude.Nothing,
+      softness = Prelude.Nothing,
+      spatialAdaptiveQuantization = Prelude.Nothing,
+      syntax = Prelude.Nothing,
+      telecine = Prelude.Nothing,
+      temporalAdaptiveQuantization = Prelude.Nothing,
+      unregisteredSeiTimecode = Prelude.Nothing
+    }
+
+-- | Keep the default value, Auto (AUTO), for this setting to have
+-- MediaConvert automatically apply the best types of quantization for your
+-- video content. When you want to apply your quantization settings
+-- manually, you must set H264AdaptiveQuantization to a value other than
+-- Auto (AUTO). Use this setting to specify the strength of any adaptive
+-- quantization filters that you enable. If you don\'t want MediaConvert to
+-- do any adaptive quantization in this transcode, set Adaptive
+-- quantization (H264AdaptiveQuantization) to Off (OFF). Related settings:
+-- The value that you choose here applies to the following settings:
+-- H264FlickerAdaptiveQuantization, H264SpatialAdaptiveQuantization, and
+-- H264TemporalAdaptiveQuantization.
+h264Settings_adaptiveQuantization :: Lens.Lens' H264Settings (Prelude.Maybe H264AdaptiveQuantization)
+h264Settings_adaptiveQuantization = Lens.lens (\H264Settings' {adaptiveQuantization} -> adaptiveQuantization) (\s@H264Settings' {} a -> s {adaptiveQuantization = a} :: H264Settings)
+
+-- | Specify the average bitrate in bits per second. Required for VBR and
+-- CBR. For MS Smooth outputs, bitrates must be unique when rounded down to
+-- the nearest multiple of 1000.
+h264Settings_bitrate :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_bitrate = Lens.lens (\H264Settings' {bitrate} -> bitrate) (\s@H264Settings' {} a -> s {bitrate = a} :: H264Settings)
+
+-- | Specify an H.264 level that is consistent with your output video
+-- settings. If you aren\'t sure what level to specify, choose Auto (AUTO).
+h264Settings_codecLevel :: Lens.Lens' H264Settings (Prelude.Maybe H264CodecLevel)
+h264Settings_codecLevel = Lens.lens (\H264Settings' {codecLevel} -> codecLevel) (\s@H264Settings' {} a -> s {codecLevel = a} :: H264Settings)
+
+-- | H.264 Profile. High 4:2:2 and 10-bit profiles are only available with
+-- the AVC-I License.
+h264Settings_codecProfile :: Lens.Lens' H264Settings (Prelude.Maybe H264CodecProfile)
+h264Settings_codecProfile = Lens.lens (\H264Settings' {codecProfile} -> codecProfile) (\s@H264Settings' {} a -> s {codecProfile = a} :: H264Settings)
+
+-- | Choose Adaptive to improve subjective video quality for high-motion
+-- content. This will cause the service to use fewer B-frames (which infer
+-- information based on other frames) for high-motion portions of the video
+-- and more B-frames for low-motion portions. The maximum number of
+-- B-frames is limited by the value you provide for the setting B frames
+-- between reference frames (numberBFramesBetweenReferenceFrames).
+h264Settings_dynamicSubGop :: Lens.Lens' H264Settings (Prelude.Maybe H264DynamicSubGop)
+h264Settings_dynamicSubGop = Lens.lens (\H264Settings' {dynamicSubGop} -> dynamicSubGop) (\s@H264Settings' {} a -> s {dynamicSubGop = a} :: H264Settings)
+
+-- | Entropy encoding mode. Use CABAC (must be in Main or High profile) or
+-- CAVLC.
+h264Settings_entropyEncoding :: Lens.Lens' H264Settings (Prelude.Maybe H264EntropyEncoding)
+h264Settings_entropyEncoding = Lens.lens (\H264Settings' {entropyEncoding} -> entropyEncoding) (\s@H264Settings' {} a -> s {entropyEncoding = a} :: H264Settings)
+
+-- | The video encoding method for your MPEG-4 AVC output. Keep the default
+-- value, PAFF, to have MediaConvert use PAFF encoding for interlaced
+-- outputs. Choose Force field (FORCE_FIELD) to disable PAFF encoding and
+-- create separate interlaced fields. Choose MBAFF to disable PAFF and have
+-- MediaConvert use MBAFF encoding for interlaced outputs.
+h264Settings_fieldEncoding :: Lens.Lens' H264Settings (Prelude.Maybe H264FieldEncoding)
+h264Settings_fieldEncoding = Lens.lens (\H264Settings' {fieldEncoding} -> fieldEncoding) (\s@H264Settings' {} a -> s {fieldEncoding = a} :: H264Settings)
+
+-- | Only use this setting when you change the default value, AUTO, for the
+-- setting H264AdaptiveQuantization. When you keep all defaults, excluding
+-- H264AdaptiveQuantization and all other adaptive quantization from your
+-- JSON job specification, MediaConvert automatically applies the best
+-- types of quantization for your video content. When you set
+-- H264AdaptiveQuantization to a value other than AUTO, the default value
+-- for H264FlickerAdaptiveQuantization is Disabled (DISABLED). Change this
+-- value to Enabled (ENABLED) to reduce I-frame pop. I-frame pop appears as
+-- a visual flicker that can arise when the encoder saves bits by copying
+-- some macroblocks many times from frame to frame, and then refreshes them
+-- at the I-frame. When you enable this setting, the encoder updates these
+-- macroblocks slightly more often to smooth out the flicker. To manually
+-- enable or disable H264FlickerAdaptiveQuantization, you must set Adaptive
+-- quantization (H264AdaptiveQuantization) to a value other than AUTO.
+h264Settings_flickerAdaptiveQuantization :: Lens.Lens' H264Settings (Prelude.Maybe H264FlickerAdaptiveQuantization)
+h264Settings_flickerAdaptiveQuantization = Lens.lens (\H264Settings' {flickerAdaptiveQuantization} -> flickerAdaptiveQuantization) (\s@H264Settings' {} a -> s {flickerAdaptiveQuantization = a} :: H264Settings)
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+h264Settings_framerateControl :: Lens.Lens' H264Settings (Prelude.Maybe H264FramerateControl)
+h264Settings_framerateControl = Lens.lens (\H264Settings' {framerateControl} -> framerateControl) (\s@H264Settings' {} a -> s {framerateControl = a} :: H264Settings)
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+h264Settings_framerateConversionAlgorithm :: Lens.Lens' H264Settings (Prelude.Maybe H264FramerateConversionAlgorithm)
+h264Settings_framerateConversionAlgorithm = Lens.lens (\H264Settings' {framerateConversionAlgorithm} -> framerateConversionAlgorithm) (\s@H264Settings' {} a -> s {framerateConversionAlgorithm = a} :: H264Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+h264Settings_framerateDenominator :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_framerateDenominator = Lens.lens (\H264Settings' {framerateDenominator} -> framerateDenominator) (\s@H264Settings' {} a -> s {framerateDenominator = a} :: H264Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+h264Settings_framerateNumerator :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_framerateNumerator = Lens.lens (\H264Settings' {framerateNumerator} -> framerateNumerator) (\s@H264Settings' {} a -> s {framerateNumerator = a} :: H264Settings)
+
+-- | If enable, use reference B frames for GOP structures that have B frames
+-- > 1.
+h264Settings_gopBReference :: Lens.Lens' H264Settings (Prelude.Maybe H264GopBReference)
+h264Settings_gopBReference = Lens.lens (\H264Settings' {gopBReference} -> gopBReference) (\s@H264Settings' {} a -> s {gopBReference = a} :: H264Settings)
+
+-- | Specify the relative frequency of open to closed GOPs in this output.
+-- For example, if you want to allow four open GOPs and then require a
+-- closed GOP, set this value to 5. We recommend that you have the
+-- transcoder automatically choose this value for you based on
+-- characteristics of your input video. To enable this automatic behavior,
+-- keep the default value by leaving this setting out of your JSON job
+-- specification. In the console, do this by keeping the default empty
+-- value. If you do explicitly specify a value, for segmented outputs,
+-- don\'t set this value to 0.
+h264Settings_gopClosedCadence :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_gopClosedCadence = Lens.lens (\H264Settings' {gopClosedCadence} -> gopClosedCadence) (\s@H264Settings' {} a -> s {gopClosedCadence = a} :: H264Settings)
+
+-- | Use this setting only when you set GOP mode control (GopSizeUnits) to
+-- Specified, frames (FRAMES) or Specified, seconds (SECONDS). Specify the
+-- GOP length using a whole number of frames or a decimal value of seconds.
+-- MediaConvert will interpret this value as frames or seconds depending on
+-- the value you choose for GOP mode control (GopSizeUnits). If you want to
+-- allow MediaConvert to automatically determine GOP size, leave GOP size
+-- blank and set GOP mode control to Auto (AUTO). If your output group
+-- specifies HLS, DASH, or CMAF, leave GOP size blank and set GOP mode
+-- control to Auto in each output in your output group.
+h264Settings_gopSize :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Double)
+h264Settings_gopSize = Lens.lens (\H264Settings' {gopSize} -> gopSize) (\s@H264Settings' {} a -> s {gopSize = a} :: H264Settings)
+
+-- | Specify how the transcoder determines GOP size for this output. We
+-- recommend that you have the transcoder automatically choose this value
+-- for you based on characteristics of your input video. To enable this
+-- automatic behavior, choose Auto (AUTO) and and leave GOP size (GopSize)
+-- blank. By default, if you don\'t specify GOP mode control
+-- (GopSizeUnits), MediaConvert will use automatic behavior. If your output
+-- group specifies HLS, DASH, or CMAF, set GOP mode control to Auto and
+-- leave GOP size blank in each output in your output group. To explicitly
+-- specify the GOP length, choose Specified, frames (FRAMES) or Specified,
+-- seconds (SECONDS) and then provide the GOP length in the related setting
+-- GOP size (GopSize).
+h264Settings_gopSizeUnits :: Lens.Lens' H264Settings (Prelude.Maybe H264GopSizeUnits)
+h264Settings_gopSizeUnits = Lens.lens (\H264Settings' {gopSizeUnits} -> gopSizeUnits) (\s@H264Settings' {} a -> s {gopSizeUnits = a} :: H264Settings)
+
+-- | If your downstream systems have strict buffer requirements: Specify the
+-- minimum percentage of the HRD buffer that\'s available at the end of
+-- each encoded video segment. For the best video quality: Set to 0 or
+-- leave blank to automatically determine the final buffer fill percentage.
+h264Settings_hrdBufferFinalFillPercentage :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_hrdBufferFinalFillPercentage = Lens.lens (\H264Settings' {hrdBufferFinalFillPercentage} -> hrdBufferFinalFillPercentage) (\s@H264Settings' {} a -> s {hrdBufferFinalFillPercentage = a} :: H264Settings)
+
+-- | Percentage of the buffer that should initially be filled (HRD buffer
+-- model).
+h264Settings_hrdBufferInitialFillPercentage :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_hrdBufferInitialFillPercentage = Lens.lens (\H264Settings' {hrdBufferInitialFillPercentage} -> hrdBufferInitialFillPercentage) (\s@H264Settings' {} a -> s {hrdBufferInitialFillPercentage = a} :: H264Settings)
+
+-- | Size of buffer (HRD buffer model) in bits. For example, enter five
+-- megabits as 5000000.
+h264Settings_hrdBufferSize :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_hrdBufferSize = Lens.lens (\H264Settings' {hrdBufferSize} -> hrdBufferSize) (\s@H264Settings' {} a -> s {hrdBufferSize = a} :: H264Settings)
+
+-- | Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+h264Settings_interlaceMode :: Lens.Lens' H264Settings (Prelude.Maybe H264InterlaceMode)
+h264Settings_interlaceMode = Lens.lens (\H264Settings' {interlaceMode} -> interlaceMode) (\s@H264Settings' {} a -> s {interlaceMode = a} :: H264Settings)
+
+-- | Maximum bitrate in bits\/second. For example, enter five megabits per
+-- second as 5000000. Required when Rate control mode is QVBR.
+h264Settings_maxBitrate :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_maxBitrate = Lens.lens (\H264Settings' {maxBitrate} -> maxBitrate) (\s@H264Settings' {} a -> s {maxBitrate = a} :: H264Settings)
+
+-- | Use this setting only when you also enable Scene change detection
+-- (SceneChangeDetect). This setting determines how the encoder manages the
+-- spacing between I-frames that it inserts as part of the I-frame cadence
+-- and the I-frames that it inserts for Scene change detection. We
+-- recommend that you have the transcoder automatically choose this value
+-- for you based on characteristics of your input video. To enable this
+-- automatic behavior, keep the default value by leaving this setting out
+-- of your JSON job specification. In the console, do this by keeping the
+-- default empty value. When you explicitly specify a value for this
+-- setting, the encoder determines whether to skip a cadence-driven I-frame
+-- by the value you set. For example, if you set Min I interval
+-- (minIInterval) to 5 and a cadence-driven I-frame would fall within 5
+-- frames of a scene-change I-frame, then the encoder skips the
+-- cadence-driven I-frame. In this way, one GOP is shrunk slightly and one
+-- GOP is stretched slightly. When the cadence-driven I-frames are farther
+-- from the scene-change I-frame than the value you set, then the encoder
+-- leaves all I-frames in place and the GOPs surrounding the scene change
+-- are smaller than the usual cadence GOPs.
+h264Settings_minIInterval :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_minIInterval = Lens.lens (\H264Settings' {minIInterval} -> minIInterval) (\s@H264Settings' {} a -> s {minIInterval = a} :: H264Settings)
+
+-- | This setting to determines the number of B-frames that MediaConvert puts
+-- between reference frames in this output. We recommend that you use
+-- automatic behavior to allow the transcoder to choose the best value
+-- based on characteristics of your input video. In the console, choose
+-- AUTO to select this automatic behavior. When you manually edit your JSON
+-- job specification, leave this setting out to choose automatic behavior.
+-- When you want to specify this number explicitly, choose a whole number
+-- from 0 through 7.
+h264Settings_numberBFramesBetweenReferenceFrames :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_numberBFramesBetweenReferenceFrames = Lens.lens (\H264Settings' {numberBFramesBetweenReferenceFrames} -> numberBFramesBetweenReferenceFrames) (\s@H264Settings' {} a -> s {numberBFramesBetweenReferenceFrames = a} :: H264Settings)
+
+-- | Number of reference frames to use. The encoder may use more than
+-- requested if using B-frames and\/or interlaced encoding.
+h264Settings_numberReferenceFrames :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_numberReferenceFrames = Lens.lens (\H264Settings' {numberReferenceFrames} -> numberReferenceFrames) (\s@H264Settings' {} a -> s {numberReferenceFrames = a} :: H264Settings)
+
+-- | Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+h264Settings_parControl :: Lens.Lens' H264Settings (Prelude.Maybe H264ParControl)
+h264Settings_parControl = Lens.lens (\H264Settings' {parControl} -> parControl) (\s@H264Settings' {} a -> s {parControl = a} :: H264Settings)
+
+-- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parDenominator is 33.
+h264Settings_parDenominator :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_parDenominator = Lens.lens (\H264Settings' {parDenominator} -> parDenominator) (\s@H264Settings' {} a -> s {parDenominator = a} :: H264Settings)
+
+-- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parNumerator is 40.
+h264Settings_parNumerator :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_parNumerator = Lens.lens (\H264Settings' {parNumerator} -> parNumerator) (\s@H264Settings' {} a -> s {parNumerator = a} :: H264Settings)
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+h264Settings_qualityTuningLevel :: Lens.Lens' H264Settings (Prelude.Maybe H264QualityTuningLevel)
+h264Settings_qualityTuningLevel = Lens.lens (\H264Settings' {qualityTuningLevel} -> qualityTuningLevel) (\s@H264Settings' {} a -> s {qualityTuningLevel = a} :: H264Settings)
+
+-- | Settings for quality-defined variable bitrate encoding with the H.265
+-- codec. Use these settings only when you set QVBR for Rate control mode
+-- (RateControlMode).
+h264Settings_qvbrSettings :: Lens.Lens' H264Settings (Prelude.Maybe H264QvbrSettings)
+h264Settings_qvbrSettings = Lens.lens (\H264Settings' {qvbrSettings} -> qvbrSettings) (\s@H264Settings' {} a -> s {qvbrSettings = a} :: H264Settings)
+
+-- | Use this setting to specify whether this output has a variable bitrate
+-- (VBR), constant bitrate (CBR) or quality-defined variable bitrate
+-- (QVBR).
+h264Settings_rateControlMode :: Lens.Lens' H264Settings (Prelude.Maybe H264RateControlMode)
+h264Settings_rateControlMode = Lens.lens (\H264Settings' {rateControlMode} -> rateControlMode) (\s@H264Settings' {} a -> s {rateControlMode = a} :: H264Settings)
+
+-- | Places a PPS header on each encoded picture, even if repeated.
+h264Settings_repeatPps :: Lens.Lens' H264Settings (Prelude.Maybe H264RepeatPps)
+h264Settings_repeatPps = Lens.lens (\H264Settings' {repeatPps} -> repeatPps) (\s@H264Settings' {} a -> s {repeatPps = a} :: H264Settings)
+
+-- | Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+h264Settings_scanTypeConversionMode :: Lens.Lens' H264Settings (Prelude.Maybe H264ScanTypeConversionMode)
+h264Settings_scanTypeConversionMode = Lens.lens (\H264Settings' {scanTypeConversionMode} -> scanTypeConversionMode) (\s@H264Settings' {} a -> s {scanTypeConversionMode = a} :: H264Settings)
+
+-- | Enable this setting to insert I-frames at scene changes that the service
+-- automatically detects. This improves video quality and is enabled by
+-- default. If this output uses QVBR, choose Transition detection
+-- (TRANSITION_DETECTION) for further video quality improvement. For more
+-- information about QVBR, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/cbr-vbr-qvbr.
+h264Settings_sceneChangeDetect :: Lens.Lens' H264Settings (Prelude.Maybe H264SceneChangeDetect)
+h264Settings_sceneChangeDetect = Lens.lens (\H264Settings' {sceneChangeDetect} -> sceneChangeDetect) (\s@H264Settings' {} a -> s {sceneChangeDetect = a} :: H264Settings)
+
+-- | Number of slices per picture. Must be less than or equal to the number
+-- of macroblock rows for progressive pictures, and less than or equal to
+-- half the number of macroblock rows for interlaced pictures.
+h264Settings_slices :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_slices = Lens.lens (\H264Settings' {slices} -> slices) (\s@H264Settings' {} a -> s {slices = a} :: H264Settings)
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+h264Settings_slowPal :: Lens.Lens' H264Settings (Prelude.Maybe H264SlowPal)
+h264Settings_slowPal = Lens.lens (\H264Settings' {slowPal} -> slowPal) (\s@H264Settings' {} a -> s {slowPal = a} :: H264Settings)
+
+-- | Ignore this setting unless you need to comply with a specification that
+-- requires a specific value. If you don\'t have a specification
+-- requirement, we recommend that you adjust the softness of your output by
+-- using a lower value for the setting Sharpness (sharpness) or by enabling
+-- a noise reducer filter (noiseReducerFilter). The Softness (softness)
+-- setting specifies the quantization matrices that the encoder uses. Keep
+-- the default value, 0, for flat quantization. Choose the value 1 or 16 to
+-- use the default JVT softening quantization matricies from the H.264
+-- specification. Choose a value from 17 to 128 to use planar
+-- interpolation. Increasing values from 17 to 128 result in increasing
+-- reduction of high-frequency data. The value 128 results in the softest
+-- video.
+h264Settings_softness :: Lens.Lens' H264Settings (Prelude.Maybe Prelude.Natural)
+h264Settings_softness = Lens.lens (\H264Settings' {softness} -> softness) (\s@H264Settings' {} a -> s {softness = a} :: H264Settings)
+
+-- | Only use this setting when you change the default value, Auto (AUTO),
+-- for the setting H264AdaptiveQuantization. When you keep all defaults,
+-- excluding H264AdaptiveQuantization and all other adaptive quantization
+-- from your JSON job specification, MediaConvert automatically applies the
+-- best types of quantization for your video content. When you set
+-- H264AdaptiveQuantization to a value other than AUTO, the default value
+-- for H264SpatialAdaptiveQuantization is Enabled (ENABLED). Keep this
+-- default value to adjust quantization within each frame based on spatial
+-- variation of content complexity. When you enable this feature, the
+-- encoder uses fewer bits on areas that can sustain more distortion with
+-- no noticeable visual degradation and uses more bits on areas where any
+-- small distortion will be noticeable. For example, complex textured
+-- blocks are encoded with fewer bits and smooth textured blocks are
+-- encoded with more bits. Enabling this feature will almost always improve
+-- your video quality. Note, though, that this feature doesn\'t take into
+-- account where the viewer\'s attention is likely to be. If viewers are
+-- likely to be focusing their attention on a part of the screen with a lot
+-- of complex texture, you might choose to set
+-- H264SpatialAdaptiveQuantization to Disabled (DISABLED). Related setting:
+-- When you enable spatial adaptive quantization, set the value for
+-- Adaptive quantization (H264AdaptiveQuantization) depending on your
+-- content. For homogeneous content, such as cartoons and video games, set
+-- it to Low. For content with a wider variety of textures, set it to High
+-- or Higher. To manually enable or disable
+-- H264SpatialAdaptiveQuantization, you must set Adaptive quantization
+-- (H264AdaptiveQuantization) to a value other than AUTO.
+h264Settings_spatialAdaptiveQuantization :: Lens.Lens' H264Settings (Prelude.Maybe H264SpatialAdaptiveQuantization)
+h264Settings_spatialAdaptiveQuantization = Lens.lens (\H264Settings' {spatialAdaptiveQuantization} -> spatialAdaptiveQuantization) (\s@H264Settings' {} a -> s {spatialAdaptiveQuantization = a} :: H264Settings)
+
+-- | Produces a bitstream compliant with SMPTE RP-2027.
+h264Settings_syntax :: Lens.Lens' H264Settings (Prelude.Maybe H264Syntax)
+h264Settings_syntax = Lens.lens (\H264Settings' {syntax} -> syntax) (\s@H264Settings' {} a -> s {syntax = a} :: H264Settings)
+
+-- | When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard or soft telecine to create a smoother picture. Hard telecine
+-- (HARD) produces a 29.97i output. Soft telecine (SOFT) produces an output
+-- with a 23.976 output that signals to the video player device to do the
+-- conversion during play back. When you keep the default value, None
+-- (NONE), MediaConvert does a standard frame rate conversion to 29.97
+-- without doing anything with the field polarity to create a smoother
+-- picture.
+h264Settings_telecine :: Lens.Lens' H264Settings (Prelude.Maybe H264Telecine)
+h264Settings_telecine = Lens.lens (\H264Settings' {telecine} -> telecine) (\s@H264Settings' {} a -> s {telecine = a} :: H264Settings)
+
+-- | Only use this setting when you change the default value, AUTO, for the
+-- setting H264AdaptiveQuantization. When you keep all defaults, excluding
+-- H264AdaptiveQuantization and all other adaptive quantization from your
+-- JSON job specification, MediaConvert automatically applies the best
+-- types of quantization for your video content. When you set
+-- H264AdaptiveQuantization to a value other than AUTO, the default value
+-- for H264TemporalAdaptiveQuantization is Enabled (ENABLED). Keep this
+-- default value to adjust quantization within each frame based on temporal
+-- variation of content complexity. When you enable this feature, the
+-- encoder uses fewer bits on areas of the frame that aren\'t moving and
+-- uses more bits on complex objects with sharp edges that move a lot. For
+-- example, this feature improves the readability of text tickers on
+-- newscasts and scoreboards on sports matches. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen that doesn\'t have moving objects with sharp edges,
+-- such as sports athletes\' faces, you might choose to set
+-- H264TemporalAdaptiveQuantization to Disabled (DISABLED). Related
+-- setting: When you enable temporal quantization, adjust the strength of
+-- the filter with the setting Adaptive quantization
+-- (adaptiveQuantization). To manually enable or disable
+-- H264TemporalAdaptiveQuantization, you must set Adaptive quantization
+-- (H264AdaptiveQuantization) to a value other than AUTO.
+h264Settings_temporalAdaptiveQuantization :: Lens.Lens' H264Settings (Prelude.Maybe H264TemporalAdaptiveQuantization)
+h264Settings_temporalAdaptiveQuantization = Lens.lens (\H264Settings' {temporalAdaptiveQuantization} -> temporalAdaptiveQuantization) (\s@H264Settings' {} a -> s {temporalAdaptiveQuantization = a} :: H264Settings)
+
+-- | Inserts timecode for each frame as 4 bytes of an unregistered SEI
+-- message.
+h264Settings_unregisteredSeiTimecode :: Lens.Lens' H264Settings (Prelude.Maybe H264UnregisteredSeiTimecode)
+h264Settings_unregisteredSeiTimecode = Lens.lens (\H264Settings' {unregisteredSeiTimecode} -> unregisteredSeiTimecode) (\s@H264Settings' {} a -> s {unregisteredSeiTimecode = a} :: H264Settings)
+
+instance Data.FromJSON H264Settings where
+  parseJSON =
+    Data.withObject
+      "H264Settings"
+      ( \x ->
+          H264Settings'
+            Prelude.<$> (x Data..:? "adaptiveQuantization")
+            Prelude.<*> (x Data..:? "bitrate")
+            Prelude.<*> (x Data..:? "codecLevel")
+            Prelude.<*> (x Data..:? "codecProfile")
+            Prelude.<*> (x Data..:? "dynamicSubGop")
+            Prelude.<*> (x Data..:? "entropyEncoding")
+            Prelude.<*> (x Data..:? "fieldEncoding")
+            Prelude.<*> (x Data..:? "flickerAdaptiveQuantization")
+            Prelude.<*> (x Data..:? "framerateControl")
+            Prelude.<*> (x Data..:? "framerateConversionAlgorithm")
+            Prelude.<*> (x Data..:? "framerateDenominator")
+            Prelude.<*> (x Data..:? "framerateNumerator")
+            Prelude.<*> (x Data..:? "gopBReference")
+            Prelude.<*> (x Data..:? "gopClosedCadence")
+            Prelude.<*> (x Data..:? "gopSize")
+            Prelude.<*> (x Data..:? "gopSizeUnits")
+            Prelude.<*> (x Data..:? "hrdBufferFinalFillPercentage")
+            Prelude.<*> (x Data..:? "hrdBufferInitialFillPercentage")
+            Prelude.<*> (x Data..:? "hrdBufferSize")
+            Prelude.<*> (x Data..:? "interlaceMode")
+            Prelude.<*> (x Data..:? "maxBitrate")
+            Prelude.<*> (x Data..:? "minIInterval")
+            Prelude.<*> (x Data..:? "numberBFramesBetweenReferenceFrames")
+            Prelude.<*> (x Data..:? "numberReferenceFrames")
+            Prelude.<*> (x Data..:? "parControl")
+            Prelude.<*> (x Data..:? "parDenominator")
+            Prelude.<*> (x Data..:? "parNumerator")
+            Prelude.<*> (x Data..:? "qualityTuningLevel")
+            Prelude.<*> (x Data..:? "qvbrSettings")
+            Prelude.<*> (x Data..:? "rateControlMode")
+            Prelude.<*> (x Data..:? "repeatPps")
+            Prelude.<*> (x Data..:? "scanTypeConversionMode")
+            Prelude.<*> (x Data..:? "sceneChangeDetect")
+            Prelude.<*> (x Data..:? "slices")
+            Prelude.<*> (x Data..:? "slowPal")
+            Prelude.<*> (x Data..:? "softness")
+            Prelude.<*> (x Data..:? "spatialAdaptiveQuantization")
+            Prelude.<*> (x Data..:? "syntax")
+            Prelude.<*> (x Data..:? "telecine")
+            Prelude.<*> (x Data..:? "temporalAdaptiveQuantization")
+            Prelude.<*> (x Data..:? "unregisteredSeiTimecode")
+      )
+
+instance Prelude.Hashable H264Settings where
+  hashWithSalt _salt H264Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` adaptiveQuantization
+      `Prelude.hashWithSalt` bitrate
+      `Prelude.hashWithSalt` codecLevel
+      `Prelude.hashWithSalt` codecProfile
+      `Prelude.hashWithSalt` dynamicSubGop
+      `Prelude.hashWithSalt` entropyEncoding
+      `Prelude.hashWithSalt` fieldEncoding
+      `Prelude.hashWithSalt` flickerAdaptiveQuantization
+      `Prelude.hashWithSalt` framerateControl
+      `Prelude.hashWithSalt` framerateConversionAlgorithm
+      `Prelude.hashWithSalt` framerateDenominator
+      `Prelude.hashWithSalt` framerateNumerator
+      `Prelude.hashWithSalt` gopBReference
+      `Prelude.hashWithSalt` gopClosedCadence
+      `Prelude.hashWithSalt` gopSize
+      `Prelude.hashWithSalt` gopSizeUnits
+      `Prelude.hashWithSalt` hrdBufferFinalFillPercentage
+      `Prelude.hashWithSalt` hrdBufferInitialFillPercentage
+      `Prelude.hashWithSalt` hrdBufferSize
+      `Prelude.hashWithSalt` interlaceMode
+      `Prelude.hashWithSalt` maxBitrate
+      `Prelude.hashWithSalt` minIInterval
+      `Prelude.hashWithSalt` numberBFramesBetweenReferenceFrames
+      `Prelude.hashWithSalt` numberReferenceFrames
+      `Prelude.hashWithSalt` parControl
+      `Prelude.hashWithSalt` parDenominator
+      `Prelude.hashWithSalt` parNumerator
+      `Prelude.hashWithSalt` qualityTuningLevel
+      `Prelude.hashWithSalt` qvbrSettings
+      `Prelude.hashWithSalt` rateControlMode
+      `Prelude.hashWithSalt` repeatPps
+      `Prelude.hashWithSalt` scanTypeConversionMode
+      `Prelude.hashWithSalt` sceneChangeDetect
+      `Prelude.hashWithSalt` slices
+      `Prelude.hashWithSalt` slowPal
+      `Prelude.hashWithSalt` softness
+      `Prelude.hashWithSalt` spatialAdaptiveQuantization
+      `Prelude.hashWithSalt` syntax
+      `Prelude.hashWithSalt` telecine
+      `Prelude.hashWithSalt` temporalAdaptiveQuantization
+      `Prelude.hashWithSalt` unregisteredSeiTimecode
+
+instance Prelude.NFData H264Settings where
+  rnf H264Settings' {..} =
+    Prelude.rnf adaptiveQuantization
+      `Prelude.seq` Prelude.rnf bitrate
+      `Prelude.seq` Prelude.rnf codecLevel
+      `Prelude.seq` Prelude.rnf codecProfile
+      `Prelude.seq` Prelude.rnf dynamicSubGop
+      `Prelude.seq` Prelude.rnf entropyEncoding
+      `Prelude.seq` Prelude.rnf fieldEncoding
+      `Prelude.seq` Prelude.rnf flickerAdaptiveQuantization
+      `Prelude.seq` Prelude.rnf framerateControl
+      `Prelude.seq` Prelude.rnf framerateConversionAlgorithm
+      `Prelude.seq` Prelude.rnf framerateDenominator
+      `Prelude.seq` Prelude.rnf framerateNumerator
+      `Prelude.seq` Prelude.rnf gopBReference
+      `Prelude.seq` Prelude.rnf gopClosedCadence
+      `Prelude.seq` Prelude.rnf gopSize
+      `Prelude.seq` Prelude.rnf gopSizeUnits
+      `Prelude.seq` Prelude.rnf
+        hrdBufferFinalFillPercentage
+      `Prelude.seq` Prelude.rnf
+        hrdBufferInitialFillPercentage
+      `Prelude.seq` Prelude.rnf hrdBufferSize
+      `Prelude.seq` Prelude.rnf interlaceMode
+      `Prelude.seq` Prelude.rnf maxBitrate
+      `Prelude.seq` Prelude.rnf minIInterval
+      `Prelude.seq` Prelude.rnf
+        numberBFramesBetweenReferenceFrames
+      `Prelude.seq` Prelude.rnf
+        numberReferenceFrames
+      `Prelude.seq` Prelude.rnf
+        parControl
+      `Prelude.seq` Prelude.rnf
+        parDenominator
+      `Prelude.seq` Prelude.rnf
+        parNumerator
+      `Prelude.seq` Prelude.rnf
+        qualityTuningLevel
+      `Prelude.seq` Prelude.rnf
+        qvbrSettings
+      `Prelude.seq` Prelude.rnf
+        rateControlMode
+      `Prelude.seq` Prelude.rnf
+        repeatPps
+      `Prelude.seq` Prelude.rnf
+        scanTypeConversionMode
+      `Prelude.seq` Prelude.rnf
+        sceneChangeDetect
+      `Prelude.seq` Prelude.rnf
+        slices
+      `Prelude.seq` Prelude.rnf
+        slowPal
+      `Prelude.seq` Prelude.rnf
+        softness
+      `Prelude.seq` Prelude.rnf
+        spatialAdaptiveQuantization
+      `Prelude.seq` Prelude.rnf
+        syntax
+      `Prelude.seq` Prelude.rnf
+        telecine
+      `Prelude.seq` Prelude.rnf
+        temporalAdaptiveQuantization
+      `Prelude.seq` Prelude.rnf
+        unregisteredSeiTimecode
+
+instance Data.ToJSON H264Settings where
+  toJSON H264Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("adaptiveQuantization" Data..=)
+              Prelude.<$> adaptiveQuantization,
+            ("bitrate" Data..=) Prelude.<$> bitrate,
+            ("codecLevel" Data..=) Prelude.<$> codecLevel,
+            ("codecProfile" Data..=) Prelude.<$> codecProfile,
+            ("dynamicSubGop" Data..=) Prelude.<$> dynamicSubGop,
+            ("entropyEncoding" Data..=)
+              Prelude.<$> entropyEncoding,
+            ("fieldEncoding" Data..=) Prelude.<$> fieldEncoding,
+            ("flickerAdaptiveQuantization" Data..=)
+              Prelude.<$> flickerAdaptiveQuantization,
+            ("framerateControl" Data..=)
+              Prelude.<$> framerateControl,
+            ("framerateConversionAlgorithm" Data..=)
+              Prelude.<$> framerateConversionAlgorithm,
+            ("framerateDenominator" Data..=)
+              Prelude.<$> framerateDenominator,
+            ("framerateNumerator" Data..=)
+              Prelude.<$> framerateNumerator,
+            ("gopBReference" Data..=) Prelude.<$> gopBReference,
+            ("gopClosedCadence" Data..=)
+              Prelude.<$> gopClosedCadence,
+            ("gopSize" Data..=) Prelude.<$> gopSize,
+            ("gopSizeUnits" Data..=) Prelude.<$> gopSizeUnits,
+            ("hrdBufferFinalFillPercentage" Data..=)
+              Prelude.<$> hrdBufferFinalFillPercentage,
+            ("hrdBufferInitialFillPercentage" Data..=)
+              Prelude.<$> hrdBufferInitialFillPercentage,
+            ("hrdBufferSize" Data..=) Prelude.<$> hrdBufferSize,
+            ("interlaceMode" Data..=) Prelude.<$> interlaceMode,
+            ("maxBitrate" Data..=) Prelude.<$> maxBitrate,
+            ("minIInterval" Data..=) Prelude.<$> minIInterval,
+            ("numberBFramesBetweenReferenceFrames" Data..=)
+              Prelude.<$> numberBFramesBetweenReferenceFrames,
+            ("numberReferenceFrames" Data..=)
+              Prelude.<$> numberReferenceFrames,
+            ("parControl" Data..=) Prelude.<$> parControl,
+            ("parDenominator" Data..=)
+              Prelude.<$> parDenominator,
+            ("parNumerator" Data..=) Prelude.<$> parNumerator,
+            ("qualityTuningLevel" Data..=)
+              Prelude.<$> qualityTuningLevel,
+            ("qvbrSettings" Data..=) Prelude.<$> qvbrSettings,
+            ("rateControlMode" Data..=)
+              Prelude.<$> rateControlMode,
+            ("repeatPps" Data..=) Prelude.<$> repeatPps,
+            ("scanTypeConversionMode" Data..=)
+              Prelude.<$> scanTypeConversionMode,
+            ("sceneChangeDetect" Data..=)
+              Prelude.<$> sceneChangeDetect,
+            ("slices" Data..=) Prelude.<$> slices,
+            ("slowPal" Data..=) Prelude.<$> slowPal,
+            ("softness" Data..=) Prelude.<$> softness,
+            ("spatialAdaptiveQuantization" Data..=)
+              Prelude.<$> spatialAdaptiveQuantization,
+            ("syntax" Data..=) Prelude.<$> syntax,
+            ("telecine" Data..=) Prelude.<$> telecine,
+            ("temporalAdaptiveQuantization" Data..=)
+              Prelude.<$> temporalAdaptiveQuantization,
+            ("unregisteredSeiTimecode" Data..=)
+              Prelude.<$> unregisteredSeiTimecode
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/H264SlowPal.hs b/gen/Amazonka/MediaConvert/Types/H264SlowPal.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264SlowPal.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264SlowPal
+-- 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.H264SlowPal
+  ( H264SlowPal
+      ( ..,
+        H264SlowPal_DISABLED,
+        H264SlowPal_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+newtype H264SlowPal = H264SlowPal'
+  { fromH264SlowPal ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264SlowPal_DISABLED :: H264SlowPal
+pattern H264SlowPal_DISABLED = H264SlowPal' "DISABLED"
+
+pattern H264SlowPal_ENABLED :: H264SlowPal
+pattern H264SlowPal_ENABLED = H264SlowPal' "ENABLED"
+
+{-# COMPLETE
+  H264SlowPal_DISABLED,
+  H264SlowPal_ENABLED,
+  H264SlowPal'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264SpatialAdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/H264SpatialAdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264SpatialAdaptiveQuantization.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264SpatialAdaptiveQuantization
+-- 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.H264SpatialAdaptiveQuantization
+  ( H264SpatialAdaptiveQuantization
+      ( ..,
+        H264SpatialAdaptiveQuantization_DISABLED,
+        H264SpatialAdaptiveQuantization_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Only use this setting when you change the default value, Auto (AUTO),
+-- for the setting H264AdaptiveQuantization. When you keep all defaults,
+-- excluding H264AdaptiveQuantization and all other adaptive quantization
+-- from your JSON job specification, MediaConvert automatically applies the
+-- best types of quantization for your video content. When you set
+-- H264AdaptiveQuantization to a value other than AUTO, the default value
+-- for H264SpatialAdaptiveQuantization is Enabled (ENABLED). Keep this
+-- default value to adjust quantization within each frame based on spatial
+-- variation of content complexity. When you enable this feature, the
+-- encoder uses fewer bits on areas that can sustain more distortion with
+-- no noticeable visual degradation and uses more bits on areas where any
+-- small distortion will be noticeable. For example, complex textured
+-- blocks are encoded with fewer bits and smooth textured blocks are
+-- encoded with more bits. Enabling this feature will almost always improve
+-- your video quality. Note, though, that this feature doesn\'t take into
+-- account where the viewer\'s attention is likely to be. If viewers are
+-- likely to be focusing their attention on a part of the screen with a lot
+-- of complex texture, you might choose to set
+-- H264SpatialAdaptiveQuantization to Disabled (DISABLED). Related setting:
+-- When you enable spatial adaptive quantization, set the value for
+-- Adaptive quantization (H264AdaptiveQuantization) depending on your
+-- content. For homogeneous content, such as cartoons and video games, set
+-- it to Low. For content with a wider variety of textures, set it to High
+-- or Higher. To manually enable or disable
+-- H264SpatialAdaptiveQuantization, you must set Adaptive quantization
+-- (H264AdaptiveQuantization) to a value other than AUTO.
+newtype H264SpatialAdaptiveQuantization = H264SpatialAdaptiveQuantization'
+  { fromH264SpatialAdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264SpatialAdaptiveQuantization_DISABLED :: H264SpatialAdaptiveQuantization
+pattern H264SpatialAdaptiveQuantization_DISABLED = H264SpatialAdaptiveQuantization' "DISABLED"
+
+pattern H264SpatialAdaptiveQuantization_ENABLED :: H264SpatialAdaptiveQuantization
+pattern H264SpatialAdaptiveQuantization_ENABLED = H264SpatialAdaptiveQuantization' "ENABLED"
+
+{-# COMPLETE
+  H264SpatialAdaptiveQuantization_DISABLED,
+  H264SpatialAdaptiveQuantization_ENABLED,
+  H264SpatialAdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264Syntax.hs b/gen/Amazonka/MediaConvert/Types/H264Syntax.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264Syntax.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264Syntax
+-- 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.H264Syntax
+  ( H264Syntax
+      ( ..,
+        H264Syntax_DEFAULT,
+        H264Syntax_RP2027
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Produces a bitstream compliant with SMPTE RP-2027.
+newtype H264Syntax = H264Syntax'
+  { fromH264Syntax ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264Syntax_DEFAULT :: H264Syntax
+pattern H264Syntax_DEFAULT = H264Syntax' "DEFAULT"
+
+pattern H264Syntax_RP2027 :: H264Syntax
+pattern H264Syntax_RP2027 = H264Syntax' "RP2027"
+
+{-# COMPLETE
+  H264Syntax_DEFAULT,
+  H264Syntax_RP2027,
+  H264Syntax'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264Telecine.hs b/gen/Amazonka/MediaConvert/Types/H264Telecine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264Telecine.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264Telecine
+-- 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.H264Telecine
+  ( H264Telecine
+      ( ..,
+        H264Telecine_HARD,
+        H264Telecine_NONE,
+        H264Telecine_SOFT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard or soft telecine to create a smoother picture. Hard telecine
+-- (HARD) produces a 29.97i output. Soft telecine (SOFT) produces an output
+-- with a 23.976 output that signals to the video player device to do the
+-- conversion during play back. When you keep the default value, None
+-- (NONE), MediaConvert does a standard frame rate conversion to 29.97
+-- without doing anything with the field polarity to create a smoother
+-- picture.
+newtype H264Telecine = H264Telecine'
+  { fromH264Telecine ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264Telecine_HARD :: H264Telecine
+pattern H264Telecine_HARD = H264Telecine' "HARD"
+
+pattern H264Telecine_NONE :: H264Telecine
+pattern H264Telecine_NONE = H264Telecine' "NONE"
+
+pattern H264Telecine_SOFT :: H264Telecine
+pattern H264Telecine_SOFT = H264Telecine' "SOFT"
+
+{-# COMPLETE
+  H264Telecine_HARD,
+  H264Telecine_NONE,
+  H264Telecine_SOFT,
+  H264Telecine'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264TemporalAdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/H264TemporalAdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264TemporalAdaptiveQuantization.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264TemporalAdaptiveQuantization
+-- 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.H264TemporalAdaptiveQuantization
+  ( H264TemporalAdaptiveQuantization
+      ( ..,
+        H264TemporalAdaptiveQuantization_DISABLED,
+        H264TemporalAdaptiveQuantization_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Only use this setting when you change the default value, AUTO, for the
+-- setting H264AdaptiveQuantization. When you keep all defaults, excluding
+-- H264AdaptiveQuantization and all other adaptive quantization from your
+-- JSON job specification, MediaConvert automatically applies the best
+-- types of quantization for your video content. When you set
+-- H264AdaptiveQuantization to a value other than AUTO, the default value
+-- for H264TemporalAdaptiveQuantization is Enabled (ENABLED). Keep this
+-- default value to adjust quantization within each frame based on temporal
+-- variation of content complexity. When you enable this feature, the
+-- encoder uses fewer bits on areas of the frame that aren\'t moving and
+-- uses more bits on complex objects with sharp edges that move a lot. For
+-- example, this feature improves the readability of text tickers on
+-- newscasts and scoreboards on sports matches. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen that doesn\'t have moving objects with sharp edges,
+-- such as sports athletes\' faces, you might choose to set
+-- H264TemporalAdaptiveQuantization to Disabled (DISABLED). Related
+-- setting: When you enable temporal quantization, adjust the strength of
+-- the filter with the setting Adaptive quantization
+-- (adaptiveQuantization). To manually enable or disable
+-- H264TemporalAdaptiveQuantization, you must set Adaptive quantization
+-- (H264AdaptiveQuantization) to a value other than AUTO.
+newtype H264TemporalAdaptiveQuantization = H264TemporalAdaptiveQuantization'
+  { fromH264TemporalAdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264TemporalAdaptiveQuantization_DISABLED :: H264TemporalAdaptiveQuantization
+pattern H264TemporalAdaptiveQuantization_DISABLED = H264TemporalAdaptiveQuantization' "DISABLED"
+
+pattern H264TemporalAdaptiveQuantization_ENABLED :: H264TemporalAdaptiveQuantization
+pattern H264TemporalAdaptiveQuantization_ENABLED = H264TemporalAdaptiveQuantization' "ENABLED"
+
+{-# COMPLETE
+  H264TemporalAdaptiveQuantization_DISABLED,
+  H264TemporalAdaptiveQuantization_ENABLED,
+  H264TemporalAdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H264UnregisteredSeiTimecode.hs b/gen/Amazonka/MediaConvert/Types/H264UnregisteredSeiTimecode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H264UnregisteredSeiTimecode.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H264UnregisteredSeiTimecode
+-- 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.H264UnregisteredSeiTimecode
+  ( H264UnregisteredSeiTimecode
+      ( ..,
+        H264UnregisteredSeiTimecode_DISABLED,
+        H264UnregisteredSeiTimecode_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Inserts timecode for each frame as 4 bytes of an unregistered SEI
+-- message.
+newtype H264UnregisteredSeiTimecode = H264UnregisteredSeiTimecode'
+  { fromH264UnregisteredSeiTimecode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H264UnregisteredSeiTimecode_DISABLED :: H264UnregisteredSeiTimecode
+pattern H264UnregisteredSeiTimecode_DISABLED = H264UnregisteredSeiTimecode' "DISABLED"
+
+pattern H264UnregisteredSeiTimecode_ENABLED :: H264UnregisteredSeiTimecode
+pattern H264UnregisteredSeiTimecode_ENABLED = H264UnregisteredSeiTimecode' "ENABLED"
+
+{-# COMPLETE
+  H264UnregisteredSeiTimecode_DISABLED,
+  H264UnregisteredSeiTimecode_ENABLED,
+  H264UnregisteredSeiTimecode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265AdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/H265AdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265AdaptiveQuantization.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265AdaptiveQuantization
+-- 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.H265AdaptiveQuantization
+  ( H265AdaptiveQuantization
+      ( ..,
+        H265AdaptiveQuantization_AUTO,
+        H265AdaptiveQuantization_HIGH,
+        H265AdaptiveQuantization_HIGHER,
+        H265AdaptiveQuantization_LOW,
+        H265AdaptiveQuantization_MAX,
+        H265AdaptiveQuantization_MEDIUM,
+        H265AdaptiveQuantization_OFF
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you set Adaptive Quantization (H265AdaptiveQuantization) to Auto
+-- (AUTO), or leave blank, MediaConvert automatically applies quantization
+-- to improve the video quality of your output. Set Adaptive Quantization
+-- to Low (LOW), Medium (MEDIUM), High (HIGH), Higher (HIGHER), or Max
+-- (MAX) to manually control the strength of the quantization filter. When
+-- you do, you can specify a value for Spatial Adaptive Quantization
+-- (H265SpatialAdaptiveQuantization), Temporal Adaptive Quantization
+-- (H265TemporalAdaptiveQuantization), and Flicker Adaptive Quantization
+-- (H265FlickerAdaptiveQuantization), to further control the quantization
+-- filter. Set Adaptive Quantization to Off (OFF) to apply no quantization
+-- to your output.
+newtype H265AdaptiveQuantization = H265AdaptiveQuantization'
+  { fromH265AdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265AdaptiveQuantization_AUTO :: H265AdaptiveQuantization
+pattern H265AdaptiveQuantization_AUTO = H265AdaptiveQuantization' "AUTO"
+
+pattern H265AdaptiveQuantization_HIGH :: H265AdaptiveQuantization
+pattern H265AdaptiveQuantization_HIGH = H265AdaptiveQuantization' "HIGH"
+
+pattern H265AdaptiveQuantization_HIGHER :: H265AdaptiveQuantization
+pattern H265AdaptiveQuantization_HIGHER = H265AdaptiveQuantization' "HIGHER"
+
+pattern H265AdaptiveQuantization_LOW :: H265AdaptiveQuantization
+pattern H265AdaptiveQuantization_LOW = H265AdaptiveQuantization' "LOW"
+
+pattern H265AdaptiveQuantization_MAX :: H265AdaptiveQuantization
+pattern H265AdaptiveQuantization_MAX = H265AdaptiveQuantization' "MAX"
+
+pattern H265AdaptiveQuantization_MEDIUM :: H265AdaptiveQuantization
+pattern H265AdaptiveQuantization_MEDIUM = H265AdaptiveQuantization' "MEDIUM"
+
+pattern H265AdaptiveQuantization_OFF :: H265AdaptiveQuantization
+pattern H265AdaptiveQuantization_OFF = H265AdaptiveQuantization' "OFF"
+
+{-# COMPLETE
+  H265AdaptiveQuantization_AUTO,
+  H265AdaptiveQuantization_HIGH,
+  H265AdaptiveQuantization_HIGHER,
+  H265AdaptiveQuantization_LOW,
+  H265AdaptiveQuantization_MAX,
+  H265AdaptiveQuantization_MEDIUM,
+  H265AdaptiveQuantization_OFF,
+  H265AdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265AlternateTransferFunctionSei.hs b/gen/Amazonka/MediaConvert/Types/H265AlternateTransferFunctionSei.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265AlternateTransferFunctionSei.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265AlternateTransferFunctionSei
+-- 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.H265AlternateTransferFunctionSei
+  ( H265AlternateTransferFunctionSei
+      ( ..,
+        H265AlternateTransferFunctionSei_DISABLED,
+        H265AlternateTransferFunctionSei_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enables Alternate Transfer Function SEI message for outputs using Hybrid
+-- Log Gamma (HLG) Electro-Optical Transfer Function (EOTF).
+newtype H265AlternateTransferFunctionSei = H265AlternateTransferFunctionSei'
+  { fromH265AlternateTransferFunctionSei ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265AlternateTransferFunctionSei_DISABLED :: H265AlternateTransferFunctionSei
+pattern H265AlternateTransferFunctionSei_DISABLED = H265AlternateTransferFunctionSei' "DISABLED"
+
+pattern H265AlternateTransferFunctionSei_ENABLED :: H265AlternateTransferFunctionSei
+pattern H265AlternateTransferFunctionSei_ENABLED = H265AlternateTransferFunctionSei' "ENABLED"
+
+{-# COMPLETE
+  H265AlternateTransferFunctionSei_DISABLED,
+  H265AlternateTransferFunctionSei_ENABLED,
+  H265AlternateTransferFunctionSei'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265CodecLevel.hs b/gen/Amazonka/MediaConvert/Types/H265CodecLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265CodecLevel.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265CodecLevel
+-- 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.H265CodecLevel
+  ( H265CodecLevel
+      ( ..,
+        H265CodecLevel_AUTO,
+        H265CodecLevel_LEVEL_1,
+        H265CodecLevel_LEVEL_2,
+        H265CodecLevel_LEVEL_2_1,
+        H265CodecLevel_LEVEL_3,
+        H265CodecLevel_LEVEL_3_1,
+        H265CodecLevel_LEVEL_4,
+        H265CodecLevel_LEVEL_4_1,
+        H265CodecLevel_LEVEL_5,
+        H265CodecLevel_LEVEL_5_1,
+        H265CodecLevel_LEVEL_5_2,
+        H265CodecLevel_LEVEL_6,
+        H265CodecLevel_LEVEL_6_1,
+        H265CodecLevel_LEVEL_6_2
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | H.265 Level.
+newtype H265CodecLevel = H265CodecLevel'
+  { fromH265CodecLevel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265CodecLevel_AUTO :: H265CodecLevel
+pattern H265CodecLevel_AUTO = H265CodecLevel' "AUTO"
+
+pattern H265CodecLevel_LEVEL_1 :: H265CodecLevel
+pattern H265CodecLevel_LEVEL_1 = H265CodecLevel' "LEVEL_1"
+
+pattern H265CodecLevel_LEVEL_2 :: H265CodecLevel
+pattern H265CodecLevel_LEVEL_2 = H265CodecLevel' "LEVEL_2"
+
+pattern H265CodecLevel_LEVEL_2_1 :: H265CodecLevel
+pattern H265CodecLevel_LEVEL_2_1 = H265CodecLevel' "LEVEL_2_1"
+
+pattern H265CodecLevel_LEVEL_3 :: H265CodecLevel
+pattern H265CodecLevel_LEVEL_3 = H265CodecLevel' "LEVEL_3"
+
+pattern H265CodecLevel_LEVEL_3_1 :: H265CodecLevel
+pattern H265CodecLevel_LEVEL_3_1 = H265CodecLevel' "LEVEL_3_1"
+
+pattern H265CodecLevel_LEVEL_4 :: H265CodecLevel
+pattern H265CodecLevel_LEVEL_4 = H265CodecLevel' "LEVEL_4"
+
+pattern H265CodecLevel_LEVEL_4_1 :: H265CodecLevel
+pattern H265CodecLevel_LEVEL_4_1 = H265CodecLevel' "LEVEL_4_1"
+
+pattern H265CodecLevel_LEVEL_5 :: H265CodecLevel
+pattern H265CodecLevel_LEVEL_5 = H265CodecLevel' "LEVEL_5"
+
+pattern H265CodecLevel_LEVEL_5_1 :: H265CodecLevel
+pattern H265CodecLevel_LEVEL_5_1 = H265CodecLevel' "LEVEL_5_1"
+
+pattern H265CodecLevel_LEVEL_5_2 :: H265CodecLevel
+pattern H265CodecLevel_LEVEL_5_2 = H265CodecLevel' "LEVEL_5_2"
+
+pattern H265CodecLevel_LEVEL_6 :: H265CodecLevel
+pattern H265CodecLevel_LEVEL_6 = H265CodecLevel' "LEVEL_6"
+
+pattern H265CodecLevel_LEVEL_6_1 :: H265CodecLevel
+pattern H265CodecLevel_LEVEL_6_1 = H265CodecLevel' "LEVEL_6_1"
+
+pattern H265CodecLevel_LEVEL_6_2 :: H265CodecLevel
+pattern H265CodecLevel_LEVEL_6_2 = H265CodecLevel' "LEVEL_6_2"
+
+{-# COMPLETE
+  H265CodecLevel_AUTO,
+  H265CodecLevel_LEVEL_1,
+  H265CodecLevel_LEVEL_2,
+  H265CodecLevel_LEVEL_2_1,
+  H265CodecLevel_LEVEL_3,
+  H265CodecLevel_LEVEL_3_1,
+  H265CodecLevel_LEVEL_4,
+  H265CodecLevel_LEVEL_4_1,
+  H265CodecLevel_LEVEL_5,
+  H265CodecLevel_LEVEL_5_1,
+  H265CodecLevel_LEVEL_5_2,
+  H265CodecLevel_LEVEL_6,
+  H265CodecLevel_LEVEL_6_1,
+  H265CodecLevel_LEVEL_6_2,
+  H265CodecLevel'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265CodecProfile.hs b/gen/Amazonka/MediaConvert/Types/H265CodecProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265CodecProfile.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265CodecProfile
+-- 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.H265CodecProfile
+  ( H265CodecProfile
+      ( ..,
+        H265CodecProfile_MAIN10_HIGH,
+        H265CodecProfile_MAIN10_MAIN,
+        H265CodecProfile_MAIN_422_10BIT_HIGH,
+        H265CodecProfile_MAIN_422_10BIT_MAIN,
+        H265CodecProfile_MAIN_422_8BIT_HIGH,
+        H265CodecProfile_MAIN_422_8BIT_MAIN,
+        H265CodecProfile_MAIN_HIGH,
+        H265CodecProfile_MAIN_MAIN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Represents the Profile and Tier, per the HEVC (H.265) specification.
+-- Selections are grouped as [Profile] \/ [Tier], so \"Main\/High\"
+-- represents Main Profile with High Tier. 4:2:2 profiles are only
+-- available with the HEVC 4:2:2 License.
+newtype H265CodecProfile = H265CodecProfile'
+  { fromH265CodecProfile ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265CodecProfile_MAIN10_HIGH :: H265CodecProfile
+pattern H265CodecProfile_MAIN10_HIGH = H265CodecProfile' "MAIN10_HIGH"
+
+pattern H265CodecProfile_MAIN10_MAIN :: H265CodecProfile
+pattern H265CodecProfile_MAIN10_MAIN = H265CodecProfile' "MAIN10_MAIN"
+
+pattern H265CodecProfile_MAIN_422_10BIT_HIGH :: H265CodecProfile
+pattern H265CodecProfile_MAIN_422_10BIT_HIGH = H265CodecProfile' "MAIN_422_10BIT_HIGH"
+
+pattern H265CodecProfile_MAIN_422_10BIT_MAIN :: H265CodecProfile
+pattern H265CodecProfile_MAIN_422_10BIT_MAIN = H265CodecProfile' "MAIN_422_10BIT_MAIN"
+
+pattern H265CodecProfile_MAIN_422_8BIT_HIGH :: H265CodecProfile
+pattern H265CodecProfile_MAIN_422_8BIT_HIGH = H265CodecProfile' "MAIN_422_8BIT_HIGH"
+
+pattern H265CodecProfile_MAIN_422_8BIT_MAIN :: H265CodecProfile
+pattern H265CodecProfile_MAIN_422_8BIT_MAIN = H265CodecProfile' "MAIN_422_8BIT_MAIN"
+
+pattern H265CodecProfile_MAIN_HIGH :: H265CodecProfile
+pattern H265CodecProfile_MAIN_HIGH = H265CodecProfile' "MAIN_HIGH"
+
+pattern H265CodecProfile_MAIN_MAIN :: H265CodecProfile
+pattern H265CodecProfile_MAIN_MAIN = H265CodecProfile' "MAIN_MAIN"
+
+{-# COMPLETE
+  H265CodecProfile_MAIN10_HIGH,
+  H265CodecProfile_MAIN10_MAIN,
+  H265CodecProfile_MAIN_422_10BIT_HIGH,
+  H265CodecProfile_MAIN_422_10BIT_MAIN,
+  H265CodecProfile_MAIN_422_8BIT_HIGH,
+  H265CodecProfile_MAIN_422_8BIT_MAIN,
+  H265CodecProfile_MAIN_HIGH,
+  H265CodecProfile_MAIN_MAIN,
+  H265CodecProfile'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265DynamicSubGop.hs b/gen/Amazonka/MediaConvert/Types/H265DynamicSubGop.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265DynamicSubGop.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265DynamicSubGop
+-- 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.H265DynamicSubGop
+  ( H265DynamicSubGop
+      ( ..,
+        H265DynamicSubGop_ADAPTIVE,
+        H265DynamicSubGop_STATIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose Adaptive to improve subjective video quality for high-motion
+-- content. This will cause the service to use fewer B-frames (which infer
+-- information based on other frames) for high-motion portions of the video
+-- and more B-frames for low-motion portions. The maximum number of
+-- B-frames is limited by the value you provide for the setting B frames
+-- between reference frames (numberBFramesBetweenReferenceFrames).
+newtype H265DynamicSubGop = H265DynamicSubGop'
+  { fromH265DynamicSubGop ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265DynamicSubGop_ADAPTIVE :: H265DynamicSubGop
+pattern H265DynamicSubGop_ADAPTIVE = H265DynamicSubGop' "ADAPTIVE"
+
+pattern H265DynamicSubGop_STATIC :: H265DynamicSubGop
+pattern H265DynamicSubGop_STATIC = H265DynamicSubGop' "STATIC"
+
+{-# COMPLETE
+  H265DynamicSubGop_ADAPTIVE,
+  H265DynamicSubGop_STATIC,
+  H265DynamicSubGop'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265FlickerAdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/H265FlickerAdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265FlickerAdaptiveQuantization.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265FlickerAdaptiveQuantization
+-- 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.H265FlickerAdaptiveQuantization
+  ( H265FlickerAdaptiveQuantization
+      ( ..,
+        H265FlickerAdaptiveQuantization_DISABLED,
+        H265FlickerAdaptiveQuantization_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enable this setting to have the encoder reduce I-frame pop. I-frame pop
+-- appears as a visual flicker that can arise when the encoder saves bits
+-- by copying some macroblocks many times from frame to frame, and then
+-- refreshes them at the I-frame. When you enable this setting, the encoder
+-- updates these macroblocks slightly more often to smooth out the flicker.
+-- This setting is disabled by default. Related setting: In addition to
+-- enabling this setting, you must also set adaptiveQuantization to a value
+-- other than Off (OFF).
+newtype H265FlickerAdaptiveQuantization = H265FlickerAdaptiveQuantization'
+  { fromH265FlickerAdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265FlickerAdaptiveQuantization_DISABLED :: H265FlickerAdaptiveQuantization
+pattern H265FlickerAdaptiveQuantization_DISABLED = H265FlickerAdaptiveQuantization' "DISABLED"
+
+pattern H265FlickerAdaptiveQuantization_ENABLED :: H265FlickerAdaptiveQuantization
+pattern H265FlickerAdaptiveQuantization_ENABLED = H265FlickerAdaptiveQuantization' "ENABLED"
+
+{-# COMPLETE
+  H265FlickerAdaptiveQuantization_DISABLED,
+  H265FlickerAdaptiveQuantization_ENABLED,
+  H265FlickerAdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265FramerateControl.hs b/gen/Amazonka/MediaConvert/Types/H265FramerateControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265FramerateControl.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265FramerateControl
+-- 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.H265FramerateControl
+  ( H265FramerateControl
+      ( ..,
+        H265FramerateControl_INITIALIZE_FROM_SOURCE,
+        H265FramerateControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+newtype H265FramerateControl = H265FramerateControl'
+  { fromH265FramerateControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265FramerateControl_INITIALIZE_FROM_SOURCE :: H265FramerateControl
+pattern H265FramerateControl_INITIALIZE_FROM_SOURCE = H265FramerateControl' "INITIALIZE_FROM_SOURCE"
+
+pattern H265FramerateControl_SPECIFIED :: H265FramerateControl
+pattern H265FramerateControl_SPECIFIED = H265FramerateControl' "SPECIFIED"
+
+{-# COMPLETE
+  H265FramerateControl_INITIALIZE_FROM_SOURCE,
+  H265FramerateControl_SPECIFIED,
+  H265FramerateControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265FramerateConversionAlgorithm.hs b/gen/Amazonka/MediaConvert/Types/H265FramerateConversionAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265FramerateConversionAlgorithm.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265FramerateConversionAlgorithm
+-- 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.H265FramerateConversionAlgorithm
+  ( H265FramerateConversionAlgorithm
+      ( ..,
+        H265FramerateConversionAlgorithm_DUPLICATE_DROP,
+        H265FramerateConversionAlgorithm_FRAMEFORMER,
+        H265FramerateConversionAlgorithm_INTERPOLATE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+newtype H265FramerateConversionAlgorithm = H265FramerateConversionAlgorithm'
+  { fromH265FramerateConversionAlgorithm ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265FramerateConversionAlgorithm_DUPLICATE_DROP :: H265FramerateConversionAlgorithm
+pattern H265FramerateConversionAlgorithm_DUPLICATE_DROP = H265FramerateConversionAlgorithm' "DUPLICATE_DROP"
+
+pattern H265FramerateConversionAlgorithm_FRAMEFORMER :: H265FramerateConversionAlgorithm
+pattern H265FramerateConversionAlgorithm_FRAMEFORMER = H265FramerateConversionAlgorithm' "FRAMEFORMER"
+
+pattern H265FramerateConversionAlgorithm_INTERPOLATE :: H265FramerateConversionAlgorithm
+pattern H265FramerateConversionAlgorithm_INTERPOLATE = H265FramerateConversionAlgorithm' "INTERPOLATE"
+
+{-# COMPLETE
+  H265FramerateConversionAlgorithm_DUPLICATE_DROP,
+  H265FramerateConversionAlgorithm_FRAMEFORMER,
+  H265FramerateConversionAlgorithm_INTERPOLATE,
+  H265FramerateConversionAlgorithm'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265GopBReference.hs b/gen/Amazonka/MediaConvert/Types/H265GopBReference.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265GopBReference.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265GopBReference
+-- 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.H265GopBReference
+  ( H265GopBReference
+      ( ..,
+        H265GopBReference_DISABLED,
+        H265GopBReference_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If enable, use reference B frames for GOP structures that have B frames
+-- > 1.
+newtype H265GopBReference = H265GopBReference'
+  { fromH265GopBReference ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265GopBReference_DISABLED :: H265GopBReference
+pattern H265GopBReference_DISABLED = H265GopBReference' "DISABLED"
+
+pattern H265GopBReference_ENABLED :: H265GopBReference
+pattern H265GopBReference_ENABLED = H265GopBReference' "ENABLED"
+
+{-# COMPLETE
+  H265GopBReference_DISABLED,
+  H265GopBReference_ENABLED,
+  H265GopBReference'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265GopSizeUnits.hs b/gen/Amazonka/MediaConvert/Types/H265GopSizeUnits.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265GopSizeUnits.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265GopSizeUnits
+-- 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.H265GopSizeUnits
+  ( H265GopSizeUnits
+      ( ..,
+        H265GopSizeUnits_AUTO,
+        H265GopSizeUnits_FRAMES,
+        H265GopSizeUnits_SECONDS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify how the transcoder determines GOP size for this output. We
+-- recommend that you have the transcoder automatically choose this value
+-- for you based on characteristics of your input video. To enable this
+-- automatic behavior, choose Auto (AUTO) and and leave GOP size (GopSize)
+-- blank. By default, if you don\'t specify GOP mode control
+-- (GopSizeUnits), MediaConvert will use automatic behavior. If your output
+-- group specifies HLS, DASH, or CMAF, set GOP mode control to Auto and
+-- leave GOP size blank in each output in your output group. To explicitly
+-- specify the GOP length, choose Specified, frames (FRAMES) or Specified,
+-- seconds (SECONDS) and then provide the GOP length in the related setting
+-- GOP size (GopSize).
+newtype H265GopSizeUnits = H265GopSizeUnits'
+  { fromH265GopSizeUnits ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265GopSizeUnits_AUTO :: H265GopSizeUnits
+pattern H265GopSizeUnits_AUTO = H265GopSizeUnits' "AUTO"
+
+pattern H265GopSizeUnits_FRAMES :: H265GopSizeUnits
+pattern H265GopSizeUnits_FRAMES = H265GopSizeUnits' "FRAMES"
+
+pattern H265GopSizeUnits_SECONDS :: H265GopSizeUnits
+pattern H265GopSizeUnits_SECONDS = H265GopSizeUnits' "SECONDS"
+
+{-# COMPLETE
+  H265GopSizeUnits_AUTO,
+  H265GopSizeUnits_FRAMES,
+  H265GopSizeUnits_SECONDS,
+  H265GopSizeUnits'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265InterlaceMode.hs b/gen/Amazonka/MediaConvert/Types/H265InterlaceMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265InterlaceMode.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265InterlaceMode
+-- 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.H265InterlaceMode
+  ( H265InterlaceMode
+      ( ..,
+        H265InterlaceMode_BOTTOM_FIELD,
+        H265InterlaceMode_FOLLOW_BOTTOM_FIELD,
+        H265InterlaceMode_FOLLOW_TOP_FIELD,
+        H265InterlaceMode_PROGRESSIVE,
+        H265InterlaceMode_TOP_FIELD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+newtype H265InterlaceMode = H265InterlaceMode'
+  { fromH265InterlaceMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265InterlaceMode_BOTTOM_FIELD :: H265InterlaceMode
+pattern H265InterlaceMode_BOTTOM_FIELD = H265InterlaceMode' "BOTTOM_FIELD"
+
+pattern H265InterlaceMode_FOLLOW_BOTTOM_FIELD :: H265InterlaceMode
+pattern H265InterlaceMode_FOLLOW_BOTTOM_FIELD = H265InterlaceMode' "FOLLOW_BOTTOM_FIELD"
+
+pattern H265InterlaceMode_FOLLOW_TOP_FIELD :: H265InterlaceMode
+pattern H265InterlaceMode_FOLLOW_TOP_FIELD = H265InterlaceMode' "FOLLOW_TOP_FIELD"
+
+pattern H265InterlaceMode_PROGRESSIVE :: H265InterlaceMode
+pattern H265InterlaceMode_PROGRESSIVE = H265InterlaceMode' "PROGRESSIVE"
+
+pattern H265InterlaceMode_TOP_FIELD :: H265InterlaceMode
+pattern H265InterlaceMode_TOP_FIELD = H265InterlaceMode' "TOP_FIELD"
+
+{-# COMPLETE
+  H265InterlaceMode_BOTTOM_FIELD,
+  H265InterlaceMode_FOLLOW_BOTTOM_FIELD,
+  H265InterlaceMode_FOLLOW_TOP_FIELD,
+  H265InterlaceMode_PROGRESSIVE,
+  H265InterlaceMode_TOP_FIELD,
+  H265InterlaceMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265ParControl.hs b/gen/Amazonka/MediaConvert/Types/H265ParControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265ParControl.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265ParControl
+-- 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.H265ParControl
+  ( H265ParControl
+      ( ..,
+        H265ParControl_INITIALIZE_FROM_SOURCE,
+        H265ParControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+newtype H265ParControl = H265ParControl'
+  { fromH265ParControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265ParControl_INITIALIZE_FROM_SOURCE :: H265ParControl
+pattern H265ParControl_INITIALIZE_FROM_SOURCE = H265ParControl' "INITIALIZE_FROM_SOURCE"
+
+pattern H265ParControl_SPECIFIED :: H265ParControl
+pattern H265ParControl_SPECIFIED = H265ParControl' "SPECIFIED"
+
+{-# COMPLETE
+  H265ParControl_INITIALIZE_FROM_SOURCE,
+  H265ParControl_SPECIFIED,
+  H265ParControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265QualityTuningLevel.hs b/gen/Amazonka/MediaConvert/Types/H265QualityTuningLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265QualityTuningLevel.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265QualityTuningLevel
+-- 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.H265QualityTuningLevel
+  ( H265QualityTuningLevel
+      ( ..,
+        H265QualityTuningLevel_MULTI_PASS_HQ,
+        H265QualityTuningLevel_SINGLE_PASS,
+        H265QualityTuningLevel_SINGLE_PASS_HQ
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+newtype H265QualityTuningLevel = H265QualityTuningLevel'
+  { fromH265QualityTuningLevel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265QualityTuningLevel_MULTI_PASS_HQ :: H265QualityTuningLevel
+pattern H265QualityTuningLevel_MULTI_PASS_HQ = H265QualityTuningLevel' "MULTI_PASS_HQ"
+
+pattern H265QualityTuningLevel_SINGLE_PASS :: H265QualityTuningLevel
+pattern H265QualityTuningLevel_SINGLE_PASS = H265QualityTuningLevel' "SINGLE_PASS"
+
+pattern H265QualityTuningLevel_SINGLE_PASS_HQ :: H265QualityTuningLevel
+pattern H265QualityTuningLevel_SINGLE_PASS_HQ = H265QualityTuningLevel' "SINGLE_PASS_HQ"
+
+{-# COMPLETE
+  H265QualityTuningLevel_MULTI_PASS_HQ,
+  H265QualityTuningLevel_SINGLE_PASS,
+  H265QualityTuningLevel_SINGLE_PASS_HQ,
+  H265QualityTuningLevel'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265QvbrSettings.hs b/gen/Amazonka/MediaConvert/Types/H265QvbrSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265QvbrSettings.hs
@@ -0,0 +1,181 @@
+{-# 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.H265QvbrSettings
+-- 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.H265QvbrSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for quality-defined variable bitrate encoding with the H.265
+-- codec. Use these settings only when you set QVBR for Rate control mode
+-- (RateControlMode).
+--
+-- /See:/ 'newH265QvbrSettings' smart constructor.
+data H265QvbrSettings = H265QvbrSettings'
+  { -- | Use this setting only when Rate control mode is QVBR and Quality tuning
+    -- level is Multi-pass HQ. For Max average bitrate values suited to the
+    -- complexity of your input video, the service limits the average bitrate
+    -- of the video part of this output to the value that you choose. That is,
+    -- the total size of the video element is less than or equal to the value
+    -- you set multiplied by the number of seconds of encoded output.
+    maxAverageBitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Use this setting only when you set Rate control mode (RateControlMode)
+    -- to QVBR. Specify the target quality level for this output. MediaConvert
+    -- determines the right number of bits to use for each part of the video to
+    -- maintain the video quality that you specify. When you keep the default
+    -- value, AUTO, MediaConvert picks a quality level for you, based on
+    -- characteristics of your input video. If you prefer to specify a quality
+    -- level, specify a number from 1 through 10. Use higher numbers for
+    -- greater quality. Level 10 results in nearly lossless compression. The
+    -- quality level for most broadcast-quality transcodes is between 6 and 9.
+    -- Optionally, to specify a value between whole numbers, also provide a
+    -- value for the setting qvbrQualityLevelFineTune. For example, if you want
+    -- your QVBR quality level to be 7.33, set qvbrQualityLevel to 7 and set
+    -- qvbrQualityLevelFineTune to .33.
+    qvbrQualityLevel :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Specify a value here to set the QVBR quality to a level that
+    -- is between whole numbers. For example, if you want your QVBR quality
+    -- level to be 7.33, set qvbrQualityLevel to 7 and set
+    -- qvbrQualityLevelFineTune to .33. MediaConvert rounds your QVBR quality
+    -- level to the nearest third of a whole number. For example, if you set
+    -- qvbrQualityLevel to 7 and you set qvbrQualityLevelFineTune to .25, your
+    -- actual QVBR quality level is 7.33.
+    qvbrQualityLevelFineTune :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'H265QvbrSettings' 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:
+--
+-- 'maxAverageBitrate', 'h265QvbrSettings_maxAverageBitrate' - Use this setting only when Rate control mode is QVBR and Quality tuning
+-- level is Multi-pass HQ. For Max average bitrate values suited to the
+-- complexity of your input video, the service limits the average bitrate
+-- of the video part of this output to the value that you choose. That is,
+-- the total size of the video element is less than or equal to the value
+-- you set multiplied by the number of seconds of encoded output.
+--
+-- 'qvbrQualityLevel', 'h265QvbrSettings_qvbrQualityLevel' - Use this setting only when you set Rate control mode (RateControlMode)
+-- to QVBR. Specify the target quality level for this output. MediaConvert
+-- determines the right number of bits to use for each part of the video to
+-- maintain the video quality that you specify. When you keep the default
+-- value, AUTO, MediaConvert picks a quality level for you, based on
+-- characteristics of your input video. If you prefer to specify a quality
+-- level, specify a number from 1 through 10. Use higher numbers for
+-- greater quality. Level 10 results in nearly lossless compression. The
+-- quality level for most broadcast-quality transcodes is between 6 and 9.
+-- Optionally, to specify a value between whole numbers, also provide a
+-- value for the setting qvbrQualityLevelFineTune. For example, if you want
+-- your QVBR quality level to be 7.33, set qvbrQualityLevel to 7 and set
+-- qvbrQualityLevelFineTune to .33.
+--
+-- 'qvbrQualityLevelFineTune', 'h265QvbrSettings_qvbrQualityLevelFineTune' - Optional. Specify a value here to set the QVBR quality to a level that
+-- is between whole numbers. For example, if you want your QVBR quality
+-- level to be 7.33, set qvbrQualityLevel to 7 and set
+-- qvbrQualityLevelFineTune to .33. MediaConvert rounds your QVBR quality
+-- level to the nearest third of a whole number. For example, if you set
+-- qvbrQualityLevel to 7 and you set qvbrQualityLevelFineTune to .25, your
+-- actual QVBR quality level is 7.33.
+newH265QvbrSettings ::
+  H265QvbrSettings
+newH265QvbrSettings =
+  H265QvbrSettings'
+    { maxAverageBitrate =
+        Prelude.Nothing,
+      qvbrQualityLevel = Prelude.Nothing,
+      qvbrQualityLevelFineTune = Prelude.Nothing
+    }
+
+-- | Use this setting only when Rate control mode is QVBR and Quality tuning
+-- level is Multi-pass HQ. For Max average bitrate values suited to the
+-- complexity of your input video, the service limits the average bitrate
+-- of the video part of this output to the value that you choose. That is,
+-- the total size of the video element is less than or equal to the value
+-- you set multiplied by the number of seconds of encoded output.
+h265QvbrSettings_maxAverageBitrate :: Lens.Lens' H265QvbrSettings (Prelude.Maybe Prelude.Natural)
+h265QvbrSettings_maxAverageBitrate = Lens.lens (\H265QvbrSettings' {maxAverageBitrate} -> maxAverageBitrate) (\s@H265QvbrSettings' {} a -> s {maxAverageBitrate = a} :: H265QvbrSettings)
+
+-- | Use this setting only when you set Rate control mode (RateControlMode)
+-- to QVBR. Specify the target quality level for this output. MediaConvert
+-- determines the right number of bits to use for each part of the video to
+-- maintain the video quality that you specify. When you keep the default
+-- value, AUTO, MediaConvert picks a quality level for you, based on
+-- characteristics of your input video. If you prefer to specify a quality
+-- level, specify a number from 1 through 10. Use higher numbers for
+-- greater quality. Level 10 results in nearly lossless compression. The
+-- quality level for most broadcast-quality transcodes is between 6 and 9.
+-- Optionally, to specify a value between whole numbers, also provide a
+-- value for the setting qvbrQualityLevelFineTune. For example, if you want
+-- your QVBR quality level to be 7.33, set qvbrQualityLevel to 7 and set
+-- qvbrQualityLevelFineTune to .33.
+h265QvbrSettings_qvbrQualityLevel :: Lens.Lens' H265QvbrSettings (Prelude.Maybe Prelude.Natural)
+h265QvbrSettings_qvbrQualityLevel = Lens.lens (\H265QvbrSettings' {qvbrQualityLevel} -> qvbrQualityLevel) (\s@H265QvbrSettings' {} a -> s {qvbrQualityLevel = a} :: H265QvbrSettings)
+
+-- | Optional. Specify a value here to set the QVBR quality to a level that
+-- is between whole numbers. For example, if you want your QVBR quality
+-- level to be 7.33, set qvbrQualityLevel to 7 and set
+-- qvbrQualityLevelFineTune to .33. MediaConvert rounds your QVBR quality
+-- level to the nearest third of a whole number. For example, if you set
+-- qvbrQualityLevel to 7 and you set qvbrQualityLevelFineTune to .25, your
+-- actual QVBR quality level is 7.33.
+h265QvbrSettings_qvbrQualityLevelFineTune :: Lens.Lens' H265QvbrSettings (Prelude.Maybe Prelude.Double)
+h265QvbrSettings_qvbrQualityLevelFineTune = Lens.lens (\H265QvbrSettings' {qvbrQualityLevelFineTune} -> qvbrQualityLevelFineTune) (\s@H265QvbrSettings' {} a -> s {qvbrQualityLevelFineTune = a} :: H265QvbrSettings)
+
+instance Data.FromJSON H265QvbrSettings where
+  parseJSON =
+    Data.withObject
+      "H265QvbrSettings"
+      ( \x ->
+          H265QvbrSettings'
+            Prelude.<$> (x Data..:? "maxAverageBitrate")
+            Prelude.<*> (x Data..:? "qvbrQualityLevel")
+            Prelude.<*> (x Data..:? "qvbrQualityLevelFineTune")
+      )
+
+instance Prelude.Hashable H265QvbrSettings where
+  hashWithSalt _salt H265QvbrSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxAverageBitrate
+      `Prelude.hashWithSalt` qvbrQualityLevel
+      `Prelude.hashWithSalt` qvbrQualityLevelFineTune
+
+instance Prelude.NFData H265QvbrSettings where
+  rnf H265QvbrSettings' {..} =
+    Prelude.rnf maxAverageBitrate
+      `Prelude.seq` Prelude.rnf qvbrQualityLevel
+      `Prelude.seq` Prelude.rnf qvbrQualityLevelFineTune
+
+instance Data.ToJSON H265QvbrSettings where
+  toJSON H265QvbrSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxAverageBitrate" Data..=)
+              Prelude.<$> maxAverageBitrate,
+            ("qvbrQualityLevel" Data..=)
+              Prelude.<$> qvbrQualityLevel,
+            ("qvbrQualityLevelFineTune" Data..=)
+              Prelude.<$> qvbrQualityLevelFineTune
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/H265RateControlMode.hs b/gen/Amazonka/MediaConvert/Types/H265RateControlMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265RateControlMode.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265RateControlMode
+-- 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.H265RateControlMode
+  ( H265RateControlMode
+      ( ..,
+        H265RateControlMode_CBR,
+        H265RateControlMode_QVBR,
+        H265RateControlMode_VBR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting to specify whether this output has a variable bitrate
+-- (VBR), constant bitrate (CBR) or quality-defined variable bitrate
+-- (QVBR).
+newtype H265RateControlMode = H265RateControlMode'
+  { fromH265RateControlMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265RateControlMode_CBR :: H265RateControlMode
+pattern H265RateControlMode_CBR = H265RateControlMode' "CBR"
+
+pattern H265RateControlMode_QVBR :: H265RateControlMode
+pattern H265RateControlMode_QVBR = H265RateControlMode' "QVBR"
+
+pattern H265RateControlMode_VBR :: H265RateControlMode
+pattern H265RateControlMode_VBR = H265RateControlMode' "VBR"
+
+{-# COMPLETE
+  H265RateControlMode_CBR,
+  H265RateControlMode_QVBR,
+  H265RateControlMode_VBR,
+  H265RateControlMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265SampleAdaptiveOffsetFilterMode.hs b/gen/Amazonka/MediaConvert/Types/H265SampleAdaptiveOffsetFilterMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265SampleAdaptiveOffsetFilterMode.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265SampleAdaptiveOffsetFilterMode
+-- 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.H265SampleAdaptiveOffsetFilterMode
+  ( H265SampleAdaptiveOffsetFilterMode
+      ( ..,
+        H265SampleAdaptiveOffsetFilterMode_ADAPTIVE,
+        H265SampleAdaptiveOffsetFilterMode_DEFAULT,
+        H265SampleAdaptiveOffsetFilterMode_OFF
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify Sample Adaptive Offset (SAO) filter strength. Adaptive mode
+-- dynamically selects best strength based on content
+newtype H265SampleAdaptiveOffsetFilterMode = H265SampleAdaptiveOffsetFilterMode'
+  { fromH265SampleAdaptiveOffsetFilterMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265SampleAdaptiveOffsetFilterMode_ADAPTIVE :: H265SampleAdaptiveOffsetFilterMode
+pattern H265SampleAdaptiveOffsetFilterMode_ADAPTIVE = H265SampleAdaptiveOffsetFilterMode' "ADAPTIVE"
+
+pattern H265SampleAdaptiveOffsetFilterMode_DEFAULT :: H265SampleAdaptiveOffsetFilterMode
+pattern H265SampleAdaptiveOffsetFilterMode_DEFAULT = H265SampleAdaptiveOffsetFilterMode' "DEFAULT"
+
+pattern H265SampleAdaptiveOffsetFilterMode_OFF :: H265SampleAdaptiveOffsetFilterMode
+pattern H265SampleAdaptiveOffsetFilterMode_OFF = H265SampleAdaptiveOffsetFilterMode' "OFF"
+
+{-# COMPLETE
+  H265SampleAdaptiveOffsetFilterMode_ADAPTIVE,
+  H265SampleAdaptiveOffsetFilterMode_DEFAULT,
+  H265SampleAdaptiveOffsetFilterMode_OFF,
+  H265SampleAdaptiveOffsetFilterMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265ScanTypeConversionMode.hs b/gen/Amazonka/MediaConvert/Types/H265ScanTypeConversionMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265ScanTypeConversionMode.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265ScanTypeConversionMode
+-- 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.H265ScanTypeConversionMode
+  ( H265ScanTypeConversionMode
+      ( ..,
+        H265ScanTypeConversionMode_INTERLACED,
+        H265ScanTypeConversionMode_INTERLACED_OPTIMIZE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+newtype H265ScanTypeConversionMode = H265ScanTypeConversionMode'
+  { fromH265ScanTypeConversionMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265ScanTypeConversionMode_INTERLACED :: H265ScanTypeConversionMode
+pattern H265ScanTypeConversionMode_INTERLACED = H265ScanTypeConversionMode' "INTERLACED"
+
+pattern H265ScanTypeConversionMode_INTERLACED_OPTIMIZE :: H265ScanTypeConversionMode
+pattern H265ScanTypeConversionMode_INTERLACED_OPTIMIZE = H265ScanTypeConversionMode' "INTERLACED_OPTIMIZE"
+
+{-# COMPLETE
+  H265ScanTypeConversionMode_INTERLACED,
+  H265ScanTypeConversionMode_INTERLACED_OPTIMIZE,
+  H265ScanTypeConversionMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265SceneChangeDetect.hs b/gen/Amazonka/MediaConvert/Types/H265SceneChangeDetect.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265SceneChangeDetect.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265SceneChangeDetect
+-- 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.H265SceneChangeDetect
+  ( H265SceneChangeDetect
+      ( ..,
+        H265SceneChangeDetect_DISABLED,
+        H265SceneChangeDetect_ENABLED,
+        H265SceneChangeDetect_TRANSITION_DETECTION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enable this setting to insert I-frames at scene changes that the service
+-- automatically detects. This improves video quality and is enabled by
+-- default. If this output uses QVBR, choose Transition detection
+-- (TRANSITION_DETECTION) for further video quality improvement. For more
+-- information about QVBR, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/cbr-vbr-qvbr.
+newtype H265SceneChangeDetect = H265SceneChangeDetect'
+  { fromH265SceneChangeDetect ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265SceneChangeDetect_DISABLED :: H265SceneChangeDetect
+pattern H265SceneChangeDetect_DISABLED = H265SceneChangeDetect' "DISABLED"
+
+pattern H265SceneChangeDetect_ENABLED :: H265SceneChangeDetect
+pattern H265SceneChangeDetect_ENABLED = H265SceneChangeDetect' "ENABLED"
+
+pattern H265SceneChangeDetect_TRANSITION_DETECTION :: H265SceneChangeDetect
+pattern H265SceneChangeDetect_TRANSITION_DETECTION = H265SceneChangeDetect' "TRANSITION_DETECTION"
+
+{-# COMPLETE
+  H265SceneChangeDetect_DISABLED,
+  H265SceneChangeDetect_ENABLED,
+  H265SceneChangeDetect_TRANSITION_DETECTION,
+  H265SceneChangeDetect'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265Settings.hs b/gen/Amazonka/MediaConvert/Types/H265Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265Settings.hs
@@ -0,0 +1,1373 @@
+{-# 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.H265Settings
+-- 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.H265Settings 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.H265AdaptiveQuantization
+import Amazonka.MediaConvert.Types.H265AlternateTransferFunctionSei
+import Amazonka.MediaConvert.Types.H265CodecLevel
+import Amazonka.MediaConvert.Types.H265CodecProfile
+import Amazonka.MediaConvert.Types.H265DynamicSubGop
+import Amazonka.MediaConvert.Types.H265FlickerAdaptiveQuantization
+import Amazonka.MediaConvert.Types.H265FramerateControl
+import Amazonka.MediaConvert.Types.H265FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.H265GopBReference
+import Amazonka.MediaConvert.Types.H265GopSizeUnits
+import Amazonka.MediaConvert.Types.H265InterlaceMode
+import Amazonka.MediaConvert.Types.H265ParControl
+import Amazonka.MediaConvert.Types.H265QualityTuningLevel
+import Amazonka.MediaConvert.Types.H265QvbrSettings
+import Amazonka.MediaConvert.Types.H265RateControlMode
+import Amazonka.MediaConvert.Types.H265SampleAdaptiveOffsetFilterMode
+import Amazonka.MediaConvert.Types.H265ScanTypeConversionMode
+import Amazonka.MediaConvert.Types.H265SceneChangeDetect
+import Amazonka.MediaConvert.Types.H265SlowPal
+import Amazonka.MediaConvert.Types.H265SpatialAdaptiveQuantization
+import Amazonka.MediaConvert.Types.H265Telecine
+import Amazonka.MediaConvert.Types.H265TemporalAdaptiveQuantization
+import Amazonka.MediaConvert.Types.H265TemporalIds
+import Amazonka.MediaConvert.Types.H265Tiles
+import Amazonka.MediaConvert.Types.H265UnregisteredSeiTimecode
+import Amazonka.MediaConvert.Types.H265WriteMp4PackagingType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for H265 codec
+--
+-- /See:/ 'newH265Settings' smart constructor.
+data H265Settings = H265Settings'
+  { -- | When you set Adaptive Quantization (H265AdaptiveQuantization) to Auto
+    -- (AUTO), or leave blank, MediaConvert automatically applies quantization
+    -- to improve the video quality of your output. Set Adaptive Quantization
+    -- to Low (LOW), Medium (MEDIUM), High (HIGH), Higher (HIGHER), or Max
+    -- (MAX) to manually control the strength of the quantization filter. When
+    -- you do, you can specify a value for Spatial Adaptive Quantization
+    -- (H265SpatialAdaptiveQuantization), Temporal Adaptive Quantization
+    -- (H265TemporalAdaptiveQuantization), and Flicker Adaptive Quantization
+    -- (H265FlickerAdaptiveQuantization), to further control the quantization
+    -- filter. Set Adaptive Quantization to Off (OFF) to apply no quantization
+    -- to your output.
+    adaptiveQuantization :: Prelude.Maybe H265AdaptiveQuantization,
+    -- | Enables Alternate Transfer Function SEI message for outputs using Hybrid
+    -- Log Gamma (HLG) Electro-Optical Transfer Function (EOTF).
+    alternateTransferFunctionSei :: Prelude.Maybe H265AlternateTransferFunctionSei,
+    -- | Specify the average bitrate in bits per second. Required for VBR and
+    -- CBR. For MS Smooth outputs, bitrates must be unique when rounded down to
+    -- the nearest multiple of 1000.
+    bitrate :: Prelude.Maybe Prelude.Natural,
+    -- | H.265 Level.
+    codecLevel :: Prelude.Maybe H265CodecLevel,
+    -- | Represents the Profile and Tier, per the HEVC (H.265) specification.
+    -- Selections are grouped as [Profile] \/ [Tier], so \"Main\/High\"
+    -- represents Main Profile with High Tier. 4:2:2 profiles are only
+    -- available with the HEVC 4:2:2 License.
+    codecProfile :: Prelude.Maybe H265CodecProfile,
+    -- | Choose Adaptive to improve subjective video quality for high-motion
+    -- content. This will cause the service to use fewer B-frames (which infer
+    -- information based on other frames) for high-motion portions of the video
+    -- and more B-frames for low-motion portions. The maximum number of
+    -- B-frames is limited by the value you provide for the setting B frames
+    -- between reference frames (numberBFramesBetweenReferenceFrames).
+    dynamicSubGop :: Prelude.Maybe H265DynamicSubGop,
+    -- | Enable this setting to have the encoder reduce I-frame pop. I-frame pop
+    -- appears as a visual flicker that can arise when the encoder saves bits
+    -- by copying some macroblocks many times from frame to frame, and then
+    -- refreshes them at the I-frame. When you enable this setting, the encoder
+    -- updates these macroblocks slightly more often to smooth out the flicker.
+    -- This setting is disabled by default. Related setting: In addition to
+    -- enabling this setting, you must also set adaptiveQuantization to a value
+    -- other than Off (OFF).
+    flickerAdaptiveQuantization :: Prelude.Maybe H265FlickerAdaptiveQuantization,
+    -- | If you are using the console, use the Framerate setting to specify the
+    -- frame rate for this output. If you want to keep the same frame rate as
+    -- the input video, choose Follow source. If you want to do frame rate
+    -- conversion, choose a frame rate from the dropdown list or choose Custom.
+    -- The framerates shown in the dropdown list are decimal approximations of
+    -- fractions. If you choose Custom, specify your frame rate as a fraction.
+    -- If you are creating your transcoding job specification as a JSON file
+    -- without the console, use FramerateControl to specify which value the
+    -- service uses for the frame rate for this output. Choose
+    -- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+    -- from the input. Choose SPECIFIED if you want the service to use the
+    -- frame rate you specify in the settings FramerateNumerator and
+    -- FramerateDenominator.
+    framerateControl :: Prelude.Maybe H265FramerateControl,
+    -- | Choose the method that you want MediaConvert to use when increasing or
+    -- decreasing the frame rate. We recommend using drop duplicate
+    -- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+    -- 30 fps. For numerically complex conversions, you can use interpolate
+    -- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+    -- might introduce undesirable video artifacts. For complex frame rate
+    -- conversions, especially if your source video has already been converted
+    -- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+    -- motion-compensated interpolation. FrameFormer chooses the best
+    -- conversion method frame by frame. Note that using FrameFormer increases
+    -- the transcoding time and incurs a significant add-on cost.
+    framerateConversionAlgorithm :: Prelude.Maybe H265FramerateConversionAlgorithm,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+    -- fraction. In this example, use 1001 for the value of
+    -- FramerateDenominator. When you use the console for transcode jobs that
+    -- use frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+    -- fraction. In this example, use 24000 for the value of
+    -- FramerateNumerator. When you use the console for transcode jobs that use
+    -- frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | If enable, use reference B frames for GOP structures that have B frames
+    -- > 1.
+    gopBReference :: Prelude.Maybe H265GopBReference,
+    -- | Specify the relative frequency of open to closed GOPs in this output.
+    -- For example, if you want to allow four open GOPs and then require a
+    -- closed GOP, set this value to 5. We recommend that you have the
+    -- transcoder automatically choose this value for you based on
+    -- characteristics of your input video. To enable this automatic behavior,
+    -- keep the default value by leaving this setting out of your JSON job
+    -- specification. In the console, do this by keeping the default empty
+    -- value. If you do explicitly specify a value, for segmented outputs,
+    -- don\'t set this value to 0.
+    gopClosedCadence :: Prelude.Maybe Prelude.Natural,
+    -- | Use this setting only when you set GOP mode control (GopSizeUnits) to
+    -- Specified, frames (FRAMES) or Specified, seconds (SECONDS). Specify the
+    -- GOP length using a whole number of frames or a decimal value of seconds.
+    -- MediaConvert will interpret this value as frames or seconds depending on
+    -- the value you choose for GOP mode control (GopSizeUnits). If you want to
+    -- allow MediaConvert to automatically determine GOP size, leave GOP size
+    -- blank and set GOP mode control to Auto (AUTO). If your output group
+    -- specifies HLS, DASH, or CMAF, leave GOP size blank and set GOP mode
+    -- control to Auto in each output in your output group.
+    gopSize :: Prelude.Maybe Prelude.Double,
+    -- | Specify how the transcoder determines GOP size for this output. We
+    -- recommend that you have the transcoder automatically choose this value
+    -- for you based on characteristics of your input video. To enable this
+    -- automatic behavior, choose Auto (AUTO) and and leave GOP size (GopSize)
+    -- blank. By default, if you don\'t specify GOP mode control
+    -- (GopSizeUnits), MediaConvert will use automatic behavior. If your output
+    -- group specifies HLS, DASH, or CMAF, set GOP mode control to Auto and
+    -- leave GOP size blank in each output in your output group. To explicitly
+    -- specify the GOP length, choose Specified, frames (FRAMES) or Specified,
+    -- seconds (SECONDS) and then provide the GOP length in the related setting
+    -- GOP size (GopSize).
+    gopSizeUnits :: Prelude.Maybe H265GopSizeUnits,
+    -- | If your downstream systems have strict buffer requirements: Specify the
+    -- minimum percentage of the HRD buffer that\'s available at the end of
+    -- each encoded video segment. For the best video quality: Set to 0 or
+    -- leave blank to automatically determine the final buffer fill percentage.
+    hrdBufferFinalFillPercentage :: Prelude.Maybe Prelude.Natural,
+    -- | Percentage of the buffer that should initially be filled (HRD buffer
+    -- model).
+    hrdBufferInitialFillPercentage :: Prelude.Maybe Prelude.Natural,
+    -- | Size of buffer (HRD buffer model) in bits. For example, enter five
+    -- megabits as 5000000.
+    hrdBufferSize :: Prelude.Maybe Prelude.Natural,
+    -- | Choose the scan line type for the output. Keep the default value,
+    -- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+    -- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+    -- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+    -- the same field polarity throughout. Use Follow, default top
+    -- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+    -- produce outputs with the same field polarity as the source. For jobs
+    -- that have multiple inputs, the output field polarity might change over
+    -- the course of the output. Follow behavior depends on the input scan
+    -- type. If the source is interlaced, the output will be interlaced with
+    -- the same polarity as the source. If the source is progressive, the
+    -- output will be interlaced with top field bottom field first, depending
+    -- on which of the Follow options you choose.
+    interlaceMode :: Prelude.Maybe H265InterlaceMode,
+    -- | Maximum bitrate in bits\/second. For example, enter five megabits per
+    -- second as 5000000. Required when Rate control mode is QVBR.
+    maxBitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Use this setting only when you also enable Scene change detection
+    -- (SceneChangeDetect). This setting determines how the encoder manages the
+    -- spacing between I-frames that it inserts as part of the I-frame cadence
+    -- and the I-frames that it inserts for Scene change detection. We
+    -- recommend that you have the transcoder automatically choose this value
+    -- for you based on characteristics of your input video. To enable this
+    -- automatic behavior, keep the default value by leaving this setting out
+    -- of your JSON job specification. In the console, do this by keeping the
+    -- default empty value. When you explicitly specify a value for this
+    -- setting, the encoder determines whether to skip a cadence-driven I-frame
+    -- by the value you set. For example, if you set Min I interval
+    -- (minIInterval) to 5 and a cadence-driven I-frame would fall within 5
+    -- frames of a scene-change I-frame, then the encoder skips the
+    -- cadence-driven I-frame. In this way, one GOP is shrunk slightly and one
+    -- GOP is stretched slightly. When the cadence-driven I-frames are farther
+    -- from the scene-change I-frame than the value you set, then the encoder
+    -- leaves all I-frames in place and the GOPs surrounding the scene change
+    -- are smaller than the usual cadence GOPs.
+    minIInterval :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the number of B-frames that MediaConvert puts between reference
+    -- frames in this output. Valid values are whole numbers from 0 through 7.
+    -- When you don\'t specify a value, MediaConvert defaults to 2.
+    numberBFramesBetweenReferenceFrames :: Prelude.Maybe Prelude.Natural,
+    -- | Number of reference frames to use. The encoder may use more than
+    -- requested if using B-frames and\/or interlaced encoding.
+    numberReferenceFrames :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Specify how the service determines the pixel aspect ratio
+    -- (PAR) for this output. The default behavior, Follow source
+    -- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+    -- output. To specify a different PAR in the console, choose any value
+    -- other than Follow source. To specify a different PAR by editing the JSON
+    -- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+    -- setting, you must also specify values for the parNumerator and
+    -- parDenominator settings.
+    parControl :: Prelude.Maybe H265ParControl,
+    -- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+    -- the console, this corresponds to any value other than Follow source.
+    -- When you specify an output pixel aspect ratio (PAR) that is different
+    -- from your input video PAR, provide your output PAR as a ratio. For
+    -- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+    -- In this example, the value for parDenominator is 33.
+    parDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+    -- the console, this corresponds to any value other than Follow source.
+    -- When you specify an output pixel aspect ratio (PAR) that is different
+    -- from your input video PAR, provide your output PAR as a ratio. For
+    -- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+    -- In this example, the value for parNumerator is 40.
+    parNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+    -- you want to trade off encoding speed for output video quality. The
+    -- default behavior is faster, lower quality, single-pass encoding.
+    qualityTuningLevel :: Prelude.Maybe H265QualityTuningLevel,
+    -- | Settings for quality-defined variable bitrate encoding with the H.265
+    -- codec. Use these settings only when you set QVBR for Rate control mode
+    -- (RateControlMode).
+    qvbrSettings :: Prelude.Maybe H265QvbrSettings,
+    -- | Use this setting to specify whether this output has a variable bitrate
+    -- (VBR), constant bitrate (CBR) or quality-defined variable bitrate
+    -- (QVBR).
+    rateControlMode :: Prelude.Maybe H265RateControlMode,
+    -- | Specify Sample Adaptive Offset (SAO) filter strength. Adaptive mode
+    -- dynamically selects best strength based on content
+    sampleAdaptiveOffsetFilterMode :: Prelude.Maybe H265SampleAdaptiveOffsetFilterMode,
+    -- | Use this setting for interlaced outputs, when your output frame rate is
+    -- half of your input frame rate. In this situation, choose Optimized
+    -- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+    -- output. In this case, each progressive frame from the input corresponds
+    -- to an interlaced field in the output. Keep the default value, Basic
+    -- interlacing (INTERLACED), for all other output frame rates. With basic
+    -- interlacing, MediaConvert performs any frame rate conversion first and
+    -- then interlaces the frames. When you choose Optimized interlacing and
+    -- you set your output frame rate to a value that isn\'t suitable for
+    -- optimized interlacing, MediaConvert automatically falls back to basic
+    -- interlacing. Required settings: To use optimized interlacing, you must
+    -- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+    -- optimized interlacing for hard telecine outputs. You must also set
+    -- Interlace mode (interlaceMode) to a value other than Progressive
+    -- (PROGRESSIVE).
+    scanTypeConversionMode :: Prelude.Maybe H265ScanTypeConversionMode,
+    -- | Enable this setting to insert I-frames at scene changes that the service
+    -- automatically detects. This improves video quality and is enabled by
+    -- default. If this output uses QVBR, choose Transition detection
+    -- (TRANSITION_DETECTION) for further video quality improvement. For more
+    -- information about QVBR, see
+    -- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/cbr-vbr-qvbr.
+    sceneChangeDetect :: Prelude.Maybe H265SceneChangeDetect,
+    -- | Number of slices per picture. Must be less than or equal to the number
+    -- of macroblock rows for progressive pictures, and less than or equal to
+    -- half the number of macroblock rows for interlaced pictures.
+    slices :: Prelude.Maybe Prelude.Natural,
+    -- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+    -- per second (fps). Enable slow PAL to create a 25 fps output. When you
+    -- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+    -- resamples your audio to keep it synchronized with the video. Note that
+    -- enabling this setting will slightly reduce the duration of your video.
+    -- Required settings: You must also set Framerate to 25. In your JSON job
+    -- specification, set (framerateControl) to (SPECIFIED),
+    -- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+    slowPal :: Prelude.Maybe H265SlowPal,
+    -- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+    -- each frame based on spatial variation of content complexity. When you
+    -- enable this feature, the encoder uses fewer bits on areas that can
+    -- sustain more distortion with no noticeable visual degradation and uses
+    -- more bits on areas where any small distortion will be noticeable. For
+    -- example, complex textured blocks are encoded with fewer bits and smooth
+    -- textured blocks are encoded with more bits. Enabling this feature will
+    -- almost always improve your video quality. Note, though, that this
+    -- feature doesn\'t take into account where the viewer\'s attention is
+    -- likely to be. If viewers are likely to be focusing their attention on a
+    -- part of the screen with a lot of complex texture, you might choose to
+    -- disable this feature. Related setting: When you enable spatial adaptive
+    -- quantization, set the value for Adaptive quantization
+    -- (adaptiveQuantization) depending on your content. For homogeneous
+    -- content, such as cartoons and video games, set it to Low. For content
+    -- with a wider variety of textures, set it to High or Higher.
+    spatialAdaptiveQuantization :: Prelude.Maybe H265SpatialAdaptiveQuantization,
+    -- | This field applies only if the Streams > Advanced > Framerate
+    -- (framerate) field is set to 29.970. This field works with the Streams >
+    -- Advanced > Preprocessors > Deinterlacer field (deinterlace_mode) and the
+    -- Streams > Advanced > Interlaced Mode field (interlace_mode) to identify
+    -- the scan type for the output: Progressive, Interlaced, Hard Telecine or
+    -- Soft Telecine. - Hard: produces 29.97i output from 23.976 input. - Soft:
+    -- produces 23.976; the player converts this output to 29.97i.
+    telecine :: Prelude.Maybe H265Telecine,
+    -- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+    -- each frame based on temporal variation of content complexity. When you
+    -- enable this feature, the encoder uses fewer bits on areas of the frame
+    -- that aren\'t moving and uses more bits on complex objects with sharp
+    -- edges that move a lot. For example, this feature improves the
+    -- readability of text tickers on newscasts and scoreboards on sports
+    -- matches. Enabling this feature will almost always improve your video
+    -- quality. Note, though, that this feature doesn\'t take into account
+    -- where the viewer\'s attention is likely to be. If viewers are likely to
+    -- be focusing their attention on a part of the screen that doesn\'t have
+    -- moving objects with sharp edges, such as sports athletes\' faces, you
+    -- might choose to disable this feature. Related setting: When you enable
+    -- temporal quantization, adjust the strength of the filter with the
+    -- setting Adaptive quantization (adaptiveQuantization).
+    temporalAdaptiveQuantization :: Prelude.Maybe H265TemporalAdaptiveQuantization,
+    -- | Enables temporal layer identifiers in the encoded bitstream. Up to 3
+    -- layers are supported depending on GOP structure: I- and P-frames form
+    -- one layer, reference B-frames can form a second layer and non-reference
+    -- b-frames can form a third layer. Decoders can optionally decode only the
+    -- lower temporal layers to generate a lower frame rate output. For
+    -- example, given a bitstream with temporal IDs and with b-frames = 1 (i.e.
+    -- IbPbPb display order), a decoder could decode all the frames for full
+    -- frame rate output or only the I and P frames (lowest temporal layer) for
+    -- a half frame rate output.
+    temporalIds :: Prelude.Maybe H265TemporalIds,
+    -- | Enable use of tiles, allowing horizontal as well as vertical subdivision
+    -- of the encoded pictures.
+    tiles :: Prelude.Maybe H265Tiles,
+    -- | Inserts timecode for each frame as 4 bytes of an unregistered SEI
+    -- message.
+    unregisteredSeiTimecode :: Prelude.Maybe H265UnregisteredSeiTimecode,
+    -- | If the location of parameter set NAL units doesn\'t matter in your
+    -- workflow, ignore this setting. Use this setting only with CMAF or DASH
+    -- outputs, or with standalone file outputs in an MPEG-4 container (MP4
+    -- outputs). Choose HVC1 to mark your output as HVC1. This makes your
+    -- output compliant with the following specification: ISO IECJTC1 SC29
+    -- N13798 Text ISO\/IEC FDIS 14496-15 3rd Edition. For these outputs, the
+    -- service stores parameter set NAL units in the sample headers but not in
+    -- the samples directly. For MP4 outputs, when you choose HVC1, your output
+    -- video might not work properly with some downstream systems and video
+    -- players. The service defaults to marking your output as HEV1. For these
+    -- outputs, the service writes parameter set NAL units directly into the
+    -- samples.
+    writeMp4PackagingType :: Prelude.Maybe H265WriteMp4PackagingType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'H265Settings' 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:
+--
+-- 'adaptiveQuantization', 'h265Settings_adaptiveQuantization' - When you set Adaptive Quantization (H265AdaptiveQuantization) to Auto
+-- (AUTO), or leave blank, MediaConvert automatically applies quantization
+-- to improve the video quality of your output. Set Adaptive Quantization
+-- to Low (LOW), Medium (MEDIUM), High (HIGH), Higher (HIGHER), or Max
+-- (MAX) to manually control the strength of the quantization filter. When
+-- you do, you can specify a value for Spatial Adaptive Quantization
+-- (H265SpatialAdaptiveQuantization), Temporal Adaptive Quantization
+-- (H265TemporalAdaptiveQuantization), and Flicker Adaptive Quantization
+-- (H265FlickerAdaptiveQuantization), to further control the quantization
+-- filter. Set Adaptive Quantization to Off (OFF) to apply no quantization
+-- to your output.
+--
+-- 'alternateTransferFunctionSei', 'h265Settings_alternateTransferFunctionSei' - Enables Alternate Transfer Function SEI message for outputs using Hybrid
+-- Log Gamma (HLG) Electro-Optical Transfer Function (EOTF).
+--
+-- 'bitrate', 'h265Settings_bitrate' - Specify the average bitrate in bits per second. Required for VBR and
+-- CBR. For MS Smooth outputs, bitrates must be unique when rounded down to
+-- the nearest multiple of 1000.
+--
+-- 'codecLevel', 'h265Settings_codecLevel' - H.265 Level.
+--
+-- 'codecProfile', 'h265Settings_codecProfile' - Represents the Profile and Tier, per the HEVC (H.265) specification.
+-- Selections are grouped as [Profile] \/ [Tier], so \"Main\/High\"
+-- represents Main Profile with High Tier. 4:2:2 profiles are only
+-- available with the HEVC 4:2:2 License.
+--
+-- 'dynamicSubGop', 'h265Settings_dynamicSubGop' - Choose Adaptive to improve subjective video quality for high-motion
+-- content. This will cause the service to use fewer B-frames (which infer
+-- information based on other frames) for high-motion portions of the video
+-- and more B-frames for low-motion portions. The maximum number of
+-- B-frames is limited by the value you provide for the setting B frames
+-- between reference frames (numberBFramesBetweenReferenceFrames).
+--
+-- 'flickerAdaptiveQuantization', 'h265Settings_flickerAdaptiveQuantization' - Enable this setting to have the encoder reduce I-frame pop. I-frame pop
+-- appears as a visual flicker that can arise when the encoder saves bits
+-- by copying some macroblocks many times from frame to frame, and then
+-- refreshes them at the I-frame. When you enable this setting, the encoder
+-- updates these macroblocks slightly more often to smooth out the flicker.
+-- This setting is disabled by default. Related setting: In addition to
+-- enabling this setting, you must also set adaptiveQuantization to a value
+-- other than Off (OFF).
+--
+-- 'framerateControl', 'h265Settings_framerateControl' - If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+--
+-- 'framerateConversionAlgorithm', 'h265Settings_framerateConversionAlgorithm' - Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+--
+-- 'framerateDenominator', 'h265Settings_framerateDenominator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'framerateNumerator', 'h265Settings_framerateNumerator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'gopBReference', 'h265Settings_gopBReference' - If enable, use reference B frames for GOP structures that have B frames
+-- > 1.
+--
+-- 'gopClosedCadence', 'h265Settings_gopClosedCadence' - Specify the relative frequency of open to closed GOPs in this output.
+-- For example, if you want to allow four open GOPs and then require a
+-- closed GOP, set this value to 5. We recommend that you have the
+-- transcoder automatically choose this value for you based on
+-- characteristics of your input video. To enable this automatic behavior,
+-- keep the default value by leaving this setting out of your JSON job
+-- specification. In the console, do this by keeping the default empty
+-- value. If you do explicitly specify a value, for segmented outputs,
+-- don\'t set this value to 0.
+--
+-- 'gopSize', 'h265Settings_gopSize' - Use this setting only when you set GOP mode control (GopSizeUnits) to
+-- Specified, frames (FRAMES) or Specified, seconds (SECONDS). Specify the
+-- GOP length using a whole number of frames or a decimal value of seconds.
+-- MediaConvert will interpret this value as frames or seconds depending on
+-- the value you choose for GOP mode control (GopSizeUnits). If you want to
+-- allow MediaConvert to automatically determine GOP size, leave GOP size
+-- blank and set GOP mode control to Auto (AUTO). If your output group
+-- specifies HLS, DASH, or CMAF, leave GOP size blank and set GOP mode
+-- control to Auto in each output in your output group.
+--
+-- 'gopSizeUnits', 'h265Settings_gopSizeUnits' - Specify how the transcoder determines GOP size for this output. We
+-- recommend that you have the transcoder automatically choose this value
+-- for you based on characteristics of your input video. To enable this
+-- automatic behavior, choose Auto (AUTO) and and leave GOP size (GopSize)
+-- blank. By default, if you don\'t specify GOP mode control
+-- (GopSizeUnits), MediaConvert will use automatic behavior. If your output
+-- group specifies HLS, DASH, or CMAF, set GOP mode control to Auto and
+-- leave GOP size blank in each output in your output group. To explicitly
+-- specify the GOP length, choose Specified, frames (FRAMES) or Specified,
+-- seconds (SECONDS) and then provide the GOP length in the related setting
+-- GOP size (GopSize).
+--
+-- 'hrdBufferFinalFillPercentage', 'h265Settings_hrdBufferFinalFillPercentage' - If your downstream systems have strict buffer requirements: Specify the
+-- minimum percentage of the HRD buffer that\'s available at the end of
+-- each encoded video segment. For the best video quality: Set to 0 or
+-- leave blank to automatically determine the final buffer fill percentage.
+--
+-- 'hrdBufferInitialFillPercentage', 'h265Settings_hrdBufferInitialFillPercentage' - Percentage of the buffer that should initially be filled (HRD buffer
+-- model).
+--
+-- 'hrdBufferSize', 'h265Settings_hrdBufferSize' - Size of buffer (HRD buffer model) in bits. For example, enter five
+-- megabits as 5000000.
+--
+-- 'interlaceMode', 'h265Settings_interlaceMode' - Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+--
+-- 'maxBitrate', 'h265Settings_maxBitrate' - Maximum bitrate in bits\/second. For example, enter five megabits per
+-- second as 5000000. Required when Rate control mode is QVBR.
+--
+-- 'minIInterval', 'h265Settings_minIInterval' - Use this setting only when you also enable Scene change detection
+-- (SceneChangeDetect). This setting determines how the encoder manages the
+-- spacing between I-frames that it inserts as part of the I-frame cadence
+-- and the I-frames that it inserts for Scene change detection. We
+-- recommend that you have the transcoder automatically choose this value
+-- for you based on characteristics of your input video. To enable this
+-- automatic behavior, keep the default value by leaving this setting out
+-- of your JSON job specification. In the console, do this by keeping the
+-- default empty value. When you explicitly specify a value for this
+-- setting, the encoder determines whether to skip a cadence-driven I-frame
+-- by the value you set. For example, if you set Min I interval
+-- (minIInterval) to 5 and a cadence-driven I-frame would fall within 5
+-- frames of a scene-change I-frame, then the encoder skips the
+-- cadence-driven I-frame. In this way, one GOP is shrunk slightly and one
+-- GOP is stretched slightly. When the cadence-driven I-frames are farther
+-- from the scene-change I-frame than the value you set, then the encoder
+-- leaves all I-frames in place and the GOPs surrounding the scene change
+-- are smaller than the usual cadence GOPs.
+--
+-- 'numberBFramesBetweenReferenceFrames', 'h265Settings_numberBFramesBetweenReferenceFrames' - Specify the number of B-frames that MediaConvert puts between reference
+-- frames in this output. Valid values are whole numbers from 0 through 7.
+-- When you don\'t specify a value, MediaConvert defaults to 2.
+--
+-- 'numberReferenceFrames', 'h265Settings_numberReferenceFrames' - Number of reference frames to use. The encoder may use more than
+-- requested if using B-frames and\/or interlaced encoding.
+--
+-- 'parControl', 'h265Settings_parControl' - Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+--
+-- 'parDenominator', 'h265Settings_parDenominator' - Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parDenominator is 33.
+--
+-- 'parNumerator', 'h265Settings_parNumerator' - Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parNumerator is 40.
+--
+-- 'qualityTuningLevel', 'h265Settings_qualityTuningLevel' - Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+--
+-- 'qvbrSettings', 'h265Settings_qvbrSettings' - Settings for quality-defined variable bitrate encoding with the H.265
+-- codec. Use these settings only when you set QVBR for Rate control mode
+-- (RateControlMode).
+--
+-- 'rateControlMode', 'h265Settings_rateControlMode' - Use this setting to specify whether this output has a variable bitrate
+-- (VBR), constant bitrate (CBR) or quality-defined variable bitrate
+-- (QVBR).
+--
+-- 'sampleAdaptiveOffsetFilterMode', 'h265Settings_sampleAdaptiveOffsetFilterMode' - Specify Sample Adaptive Offset (SAO) filter strength. Adaptive mode
+-- dynamically selects best strength based on content
+--
+-- 'scanTypeConversionMode', 'h265Settings_scanTypeConversionMode' - Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+--
+-- 'sceneChangeDetect', 'h265Settings_sceneChangeDetect' - Enable this setting to insert I-frames at scene changes that the service
+-- automatically detects. This improves video quality and is enabled by
+-- default. If this output uses QVBR, choose Transition detection
+-- (TRANSITION_DETECTION) for further video quality improvement. For more
+-- information about QVBR, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/cbr-vbr-qvbr.
+--
+-- 'slices', 'h265Settings_slices' - Number of slices per picture. Must be less than or equal to the number
+-- of macroblock rows for progressive pictures, and less than or equal to
+-- half the number of macroblock rows for interlaced pictures.
+--
+-- 'slowPal', 'h265Settings_slowPal' - Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+--
+-- 'spatialAdaptiveQuantization', 'h265Settings_spatialAdaptiveQuantization' - Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on spatial variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas that can
+-- sustain more distortion with no noticeable visual degradation and uses
+-- more bits on areas where any small distortion will be noticeable. For
+-- example, complex textured blocks are encoded with fewer bits and smooth
+-- textured blocks are encoded with more bits. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen with a lot of complex texture, you might choose to
+-- disable this feature. Related setting: When you enable spatial adaptive
+-- quantization, set the value for Adaptive quantization
+-- (adaptiveQuantization) depending on your content. For homogeneous
+-- content, such as cartoons and video games, set it to Low. For content
+-- with a wider variety of textures, set it to High or Higher.
+--
+-- 'telecine', 'h265Settings_telecine' - This field applies only if the Streams > Advanced > Framerate
+-- (framerate) field is set to 29.970. This field works with the Streams >
+-- Advanced > Preprocessors > Deinterlacer field (deinterlace_mode) and the
+-- Streams > Advanced > Interlaced Mode field (interlace_mode) to identify
+-- the scan type for the output: Progressive, Interlaced, Hard Telecine or
+-- Soft Telecine. - Hard: produces 29.97i output from 23.976 input. - Soft:
+-- produces 23.976; the player converts this output to 29.97i.
+--
+-- 'temporalAdaptiveQuantization', 'h265Settings_temporalAdaptiveQuantization' - Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on temporal variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas of the frame
+-- that aren\'t moving and uses more bits on complex objects with sharp
+-- edges that move a lot. For example, this feature improves the
+-- readability of text tickers on newscasts and scoreboards on sports
+-- matches. Enabling this feature will almost always improve your video
+-- quality. Note, though, that this feature doesn\'t take into account
+-- where the viewer\'s attention is likely to be. If viewers are likely to
+-- be focusing their attention on a part of the screen that doesn\'t have
+-- moving objects with sharp edges, such as sports athletes\' faces, you
+-- might choose to disable this feature. Related setting: When you enable
+-- temporal quantization, adjust the strength of the filter with the
+-- setting Adaptive quantization (adaptiveQuantization).
+--
+-- 'temporalIds', 'h265Settings_temporalIds' - Enables temporal layer identifiers in the encoded bitstream. Up to 3
+-- layers are supported depending on GOP structure: I- and P-frames form
+-- one layer, reference B-frames can form a second layer and non-reference
+-- b-frames can form a third layer. Decoders can optionally decode only the
+-- lower temporal layers to generate a lower frame rate output. For
+-- example, given a bitstream with temporal IDs and with b-frames = 1 (i.e.
+-- IbPbPb display order), a decoder could decode all the frames for full
+-- frame rate output or only the I and P frames (lowest temporal layer) for
+-- a half frame rate output.
+--
+-- 'tiles', 'h265Settings_tiles' - Enable use of tiles, allowing horizontal as well as vertical subdivision
+-- of the encoded pictures.
+--
+-- 'unregisteredSeiTimecode', 'h265Settings_unregisteredSeiTimecode' - Inserts timecode for each frame as 4 bytes of an unregistered SEI
+-- message.
+--
+-- 'writeMp4PackagingType', 'h265Settings_writeMp4PackagingType' - If the location of parameter set NAL units doesn\'t matter in your
+-- workflow, ignore this setting. Use this setting only with CMAF or DASH
+-- outputs, or with standalone file outputs in an MPEG-4 container (MP4
+-- outputs). Choose HVC1 to mark your output as HVC1. This makes your
+-- output compliant with the following specification: ISO IECJTC1 SC29
+-- N13798 Text ISO\/IEC FDIS 14496-15 3rd Edition. For these outputs, the
+-- service stores parameter set NAL units in the sample headers but not in
+-- the samples directly. For MP4 outputs, when you choose HVC1, your output
+-- video might not work properly with some downstream systems and video
+-- players. The service defaults to marking your output as HEV1. For these
+-- outputs, the service writes parameter set NAL units directly into the
+-- samples.
+newH265Settings ::
+  H265Settings
+newH265Settings =
+  H265Settings'
+    { adaptiveQuantization =
+        Prelude.Nothing,
+      alternateTransferFunctionSei = Prelude.Nothing,
+      bitrate = Prelude.Nothing,
+      codecLevel = Prelude.Nothing,
+      codecProfile = Prelude.Nothing,
+      dynamicSubGop = Prelude.Nothing,
+      flickerAdaptiveQuantization = Prelude.Nothing,
+      framerateControl = Prelude.Nothing,
+      framerateConversionAlgorithm = Prelude.Nothing,
+      framerateDenominator = Prelude.Nothing,
+      framerateNumerator = Prelude.Nothing,
+      gopBReference = Prelude.Nothing,
+      gopClosedCadence = Prelude.Nothing,
+      gopSize = Prelude.Nothing,
+      gopSizeUnits = Prelude.Nothing,
+      hrdBufferFinalFillPercentage = Prelude.Nothing,
+      hrdBufferInitialFillPercentage = Prelude.Nothing,
+      hrdBufferSize = Prelude.Nothing,
+      interlaceMode = Prelude.Nothing,
+      maxBitrate = Prelude.Nothing,
+      minIInterval = Prelude.Nothing,
+      numberBFramesBetweenReferenceFrames =
+        Prelude.Nothing,
+      numberReferenceFrames = Prelude.Nothing,
+      parControl = Prelude.Nothing,
+      parDenominator = Prelude.Nothing,
+      parNumerator = Prelude.Nothing,
+      qualityTuningLevel = Prelude.Nothing,
+      qvbrSettings = Prelude.Nothing,
+      rateControlMode = Prelude.Nothing,
+      sampleAdaptiveOffsetFilterMode = Prelude.Nothing,
+      scanTypeConversionMode = Prelude.Nothing,
+      sceneChangeDetect = Prelude.Nothing,
+      slices = Prelude.Nothing,
+      slowPal = Prelude.Nothing,
+      spatialAdaptiveQuantization = Prelude.Nothing,
+      telecine = Prelude.Nothing,
+      temporalAdaptiveQuantization = Prelude.Nothing,
+      temporalIds = Prelude.Nothing,
+      tiles = Prelude.Nothing,
+      unregisteredSeiTimecode = Prelude.Nothing,
+      writeMp4PackagingType = Prelude.Nothing
+    }
+
+-- | When you set Adaptive Quantization (H265AdaptiveQuantization) to Auto
+-- (AUTO), or leave blank, MediaConvert automatically applies quantization
+-- to improve the video quality of your output. Set Adaptive Quantization
+-- to Low (LOW), Medium (MEDIUM), High (HIGH), Higher (HIGHER), or Max
+-- (MAX) to manually control the strength of the quantization filter. When
+-- you do, you can specify a value for Spatial Adaptive Quantization
+-- (H265SpatialAdaptiveQuantization), Temporal Adaptive Quantization
+-- (H265TemporalAdaptiveQuantization), and Flicker Adaptive Quantization
+-- (H265FlickerAdaptiveQuantization), to further control the quantization
+-- filter. Set Adaptive Quantization to Off (OFF) to apply no quantization
+-- to your output.
+h265Settings_adaptiveQuantization :: Lens.Lens' H265Settings (Prelude.Maybe H265AdaptiveQuantization)
+h265Settings_adaptiveQuantization = Lens.lens (\H265Settings' {adaptiveQuantization} -> adaptiveQuantization) (\s@H265Settings' {} a -> s {adaptiveQuantization = a} :: H265Settings)
+
+-- | Enables Alternate Transfer Function SEI message for outputs using Hybrid
+-- Log Gamma (HLG) Electro-Optical Transfer Function (EOTF).
+h265Settings_alternateTransferFunctionSei :: Lens.Lens' H265Settings (Prelude.Maybe H265AlternateTransferFunctionSei)
+h265Settings_alternateTransferFunctionSei = Lens.lens (\H265Settings' {alternateTransferFunctionSei} -> alternateTransferFunctionSei) (\s@H265Settings' {} a -> s {alternateTransferFunctionSei = a} :: H265Settings)
+
+-- | Specify the average bitrate in bits per second. Required for VBR and
+-- CBR. For MS Smooth outputs, bitrates must be unique when rounded down to
+-- the nearest multiple of 1000.
+h265Settings_bitrate :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_bitrate = Lens.lens (\H265Settings' {bitrate} -> bitrate) (\s@H265Settings' {} a -> s {bitrate = a} :: H265Settings)
+
+-- | H.265 Level.
+h265Settings_codecLevel :: Lens.Lens' H265Settings (Prelude.Maybe H265CodecLevel)
+h265Settings_codecLevel = Lens.lens (\H265Settings' {codecLevel} -> codecLevel) (\s@H265Settings' {} a -> s {codecLevel = a} :: H265Settings)
+
+-- | Represents the Profile and Tier, per the HEVC (H.265) specification.
+-- Selections are grouped as [Profile] \/ [Tier], so \"Main\/High\"
+-- represents Main Profile with High Tier. 4:2:2 profiles are only
+-- available with the HEVC 4:2:2 License.
+h265Settings_codecProfile :: Lens.Lens' H265Settings (Prelude.Maybe H265CodecProfile)
+h265Settings_codecProfile = Lens.lens (\H265Settings' {codecProfile} -> codecProfile) (\s@H265Settings' {} a -> s {codecProfile = a} :: H265Settings)
+
+-- | Choose Adaptive to improve subjective video quality for high-motion
+-- content. This will cause the service to use fewer B-frames (which infer
+-- information based on other frames) for high-motion portions of the video
+-- and more B-frames for low-motion portions. The maximum number of
+-- B-frames is limited by the value you provide for the setting B frames
+-- between reference frames (numberBFramesBetweenReferenceFrames).
+h265Settings_dynamicSubGop :: Lens.Lens' H265Settings (Prelude.Maybe H265DynamicSubGop)
+h265Settings_dynamicSubGop = Lens.lens (\H265Settings' {dynamicSubGop} -> dynamicSubGop) (\s@H265Settings' {} a -> s {dynamicSubGop = a} :: H265Settings)
+
+-- | Enable this setting to have the encoder reduce I-frame pop. I-frame pop
+-- appears as a visual flicker that can arise when the encoder saves bits
+-- by copying some macroblocks many times from frame to frame, and then
+-- refreshes them at the I-frame. When you enable this setting, the encoder
+-- updates these macroblocks slightly more often to smooth out the flicker.
+-- This setting is disabled by default. Related setting: In addition to
+-- enabling this setting, you must also set adaptiveQuantization to a value
+-- other than Off (OFF).
+h265Settings_flickerAdaptiveQuantization :: Lens.Lens' H265Settings (Prelude.Maybe H265FlickerAdaptiveQuantization)
+h265Settings_flickerAdaptiveQuantization = Lens.lens (\H265Settings' {flickerAdaptiveQuantization} -> flickerAdaptiveQuantization) (\s@H265Settings' {} a -> s {flickerAdaptiveQuantization = a} :: H265Settings)
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+h265Settings_framerateControl :: Lens.Lens' H265Settings (Prelude.Maybe H265FramerateControl)
+h265Settings_framerateControl = Lens.lens (\H265Settings' {framerateControl} -> framerateControl) (\s@H265Settings' {} a -> s {framerateControl = a} :: H265Settings)
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+h265Settings_framerateConversionAlgorithm :: Lens.Lens' H265Settings (Prelude.Maybe H265FramerateConversionAlgorithm)
+h265Settings_framerateConversionAlgorithm = Lens.lens (\H265Settings' {framerateConversionAlgorithm} -> framerateConversionAlgorithm) (\s@H265Settings' {} a -> s {framerateConversionAlgorithm = a} :: H265Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+h265Settings_framerateDenominator :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_framerateDenominator = Lens.lens (\H265Settings' {framerateDenominator} -> framerateDenominator) (\s@H265Settings' {} a -> s {framerateDenominator = a} :: H265Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+h265Settings_framerateNumerator :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_framerateNumerator = Lens.lens (\H265Settings' {framerateNumerator} -> framerateNumerator) (\s@H265Settings' {} a -> s {framerateNumerator = a} :: H265Settings)
+
+-- | If enable, use reference B frames for GOP structures that have B frames
+-- > 1.
+h265Settings_gopBReference :: Lens.Lens' H265Settings (Prelude.Maybe H265GopBReference)
+h265Settings_gopBReference = Lens.lens (\H265Settings' {gopBReference} -> gopBReference) (\s@H265Settings' {} a -> s {gopBReference = a} :: H265Settings)
+
+-- | Specify the relative frequency of open to closed GOPs in this output.
+-- For example, if you want to allow four open GOPs and then require a
+-- closed GOP, set this value to 5. We recommend that you have the
+-- transcoder automatically choose this value for you based on
+-- characteristics of your input video. To enable this automatic behavior,
+-- keep the default value by leaving this setting out of your JSON job
+-- specification. In the console, do this by keeping the default empty
+-- value. If you do explicitly specify a value, for segmented outputs,
+-- don\'t set this value to 0.
+h265Settings_gopClosedCadence :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_gopClosedCadence = Lens.lens (\H265Settings' {gopClosedCadence} -> gopClosedCadence) (\s@H265Settings' {} a -> s {gopClosedCadence = a} :: H265Settings)
+
+-- | Use this setting only when you set GOP mode control (GopSizeUnits) to
+-- Specified, frames (FRAMES) or Specified, seconds (SECONDS). Specify the
+-- GOP length using a whole number of frames or a decimal value of seconds.
+-- MediaConvert will interpret this value as frames or seconds depending on
+-- the value you choose for GOP mode control (GopSizeUnits). If you want to
+-- allow MediaConvert to automatically determine GOP size, leave GOP size
+-- blank and set GOP mode control to Auto (AUTO). If your output group
+-- specifies HLS, DASH, or CMAF, leave GOP size blank and set GOP mode
+-- control to Auto in each output in your output group.
+h265Settings_gopSize :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Double)
+h265Settings_gopSize = Lens.lens (\H265Settings' {gopSize} -> gopSize) (\s@H265Settings' {} a -> s {gopSize = a} :: H265Settings)
+
+-- | Specify how the transcoder determines GOP size for this output. We
+-- recommend that you have the transcoder automatically choose this value
+-- for you based on characteristics of your input video. To enable this
+-- automatic behavior, choose Auto (AUTO) and and leave GOP size (GopSize)
+-- blank. By default, if you don\'t specify GOP mode control
+-- (GopSizeUnits), MediaConvert will use automatic behavior. If your output
+-- group specifies HLS, DASH, or CMAF, set GOP mode control to Auto and
+-- leave GOP size blank in each output in your output group. To explicitly
+-- specify the GOP length, choose Specified, frames (FRAMES) or Specified,
+-- seconds (SECONDS) and then provide the GOP length in the related setting
+-- GOP size (GopSize).
+h265Settings_gopSizeUnits :: Lens.Lens' H265Settings (Prelude.Maybe H265GopSizeUnits)
+h265Settings_gopSizeUnits = Lens.lens (\H265Settings' {gopSizeUnits} -> gopSizeUnits) (\s@H265Settings' {} a -> s {gopSizeUnits = a} :: H265Settings)
+
+-- | If your downstream systems have strict buffer requirements: Specify the
+-- minimum percentage of the HRD buffer that\'s available at the end of
+-- each encoded video segment. For the best video quality: Set to 0 or
+-- leave blank to automatically determine the final buffer fill percentage.
+h265Settings_hrdBufferFinalFillPercentage :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_hrdBufferFinalFillPercentage = Lens.lens (\H265Settings' {hrdBufferFinalFillPercentage} -> hrdBufferFinalFillPercentage) (\s@H265Settings' {} a -> s {hrdBufferFinalFillPercentage = a} :: H265Settings)
+
+-- | Percentage of the buffer that should initially be filled (HRD buffer
+-- model).
+h265Settings_hrdBufferInitialFillPercentage :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_hrdBufferInitialFillPercentage = Lens.lens (\H265Settings' {hrdBufferInitialFillPercentage} -> hrdBufferInitialFillPercentage) (\s@H265Settings' {} a -> s {hrdBufferInitialFillPercentage = a} :: H265Settings)
+
+-- | Size of buffer (HRD buffer model) in bits. For example, enter five
+-- megabits as 5000000.
+h265Settings_hrdBufferSize :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_hrdBufferSize = Lens.lens (\H265Settings' {hrdBufferSize} -> hrdBufferSize) (\s@H265Settings' {} a -> s {hrdBufferSize = a} :: H265Settings)
+
+-- | Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+h265Settings_interlaceMode :: Lens.Lens' H265Settings (Prelude.Maybe H265InterlaceMode)
+h265Settings_interlaceMode = Lens.lens (\H265Settings' {interlaceMode} -> interlaceMode) (\s@H265Settings' {} a -> s {interlaceMode = a} :: H265Settings)
+
+-- | Maximum bitrate in bits\/second. For example, enter five megabits per
+-- second as 5000000. Required when Rate control mode is QVBR.
+h265Settings_maxBitrate :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_maxBitrate = Lens.lens (\H265Settings' {maxBitrate} -> maxBitrate) (\s@H265Settings' {} a -> s {maxBitrate = a} :: H265Settings)
+
+-- | Use this setting only when you also enable Scene change detection
+-- (SceneChangeDetect). This setting determines how the encoder manages the
+-- spacing between I-frames that it inserts as part of the I-frame cadence
+-- and the I-frames that it inserts for Scene change detection. We
+-- recommend that you have the transcoder automatically choose this value
+-- for you based on characteristics of your input video. To enable this
+-- automatic behavior, keep the default value by leaving this setting out
+-- of your JSON job specification. In the console, do this by keeping the
+-- default empty value. When you explicitly specify a value for this
+-- setting, the encoder determines whether to skip a cadence-driven I-frame
+-- by the value you set. For example, if you set Min I interval
+-- (minIInterval) to 5 and a cadence-driven I-frame would fall within 5
+-- frames of a scene-change I-frame, then the encoder skips the
+-- cadence-driven I-frame. In this way, one GOP is shrunk slightly and one
+-- GOP is stretched slightly. When the cadence-driven I-frames are farther
+-- from the scene-change I-frame than the value you set, then the encoder
+-- leaves all I-frames in place and the GOPs surrounding the scene change
+-- are smaller than the usual cadence GOPs.
+h265Settings_minIInterval :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_minIInterval = Lens.lens (\H265Settings' {minIInterval} -> minIInterval) (\s@H265Settings' {} a -> s {minIInterval = a} :: H265Settings)
+
+-- | Specify the number of B-frames that MediaConvert puts between reference
+-- frames in this output. Valid values are whole numbers from 0 through 7.
+-- When you don\'t specify a value, MediaConvert defaults to 2.
+h265Settings_numberBFramesBetweenReferenceFrames :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_numberBFramesBetweenReferenceFrames = Lens.lens (\H265Settings' {numberBFramesBetweenReferenceFrames} -> numberBFramesBetweenReferenceFrames) (\s@H265Settings' {} a -> s {numberBFramesBetweenReferenceFrames = a} :: H265Settings)
+
+-- | Number of reference frames to use. The encoder may use more than
+-- requested if using B-frames and\/or interlaced encoding.
+h265Settings_numberReferenceFrames :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_numberReferenceFrames = Lens.lens (\H265Settings' {numberReferenceFrames} -> numberReferenceFrames) (\s@H265Settings' {} a -> s {numberReferenceFrames = a} :: H265Settings)
+
+-- | Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+h265Settings_parControl :: Lens.Lens' H265Settings (Prelude.Maybe H265ParControl)
+h265Settings_parControl = Lens.lens (\H265Settings' {parControl} -> parControl) (\s@H265Settings' {} a -> s {parControl = a} :: H265Settings)
+
+-- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parDenominator is 33.
+h265Settings_parDenominator :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_parDenominator = Lens.lens (\H265Settings' {parDenominator} -> parDenominator) (\s@H265Settings' {} a -> s {parDenominator = a} :: H265Settings)
+
+-- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parNumerator is 40.
+h265Settings_parNumerator :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_parNumerator = Lens.lens (\H265Settings' {parNumerator} -> parNumerator) (\s@H265Settings' {} a -> s {parNumerator = a} :: H265Settings)
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+h265Settings_qualityTuningLevel :: Lens.Lens' H265Settings (Prelude.Maybe H265QualityTuningLevel)
+h265Settings_qualityTuningLevel = Lens.lens (\H265Settings' {qualityTuningLevel} -> qualityTuningLevel) (\s@H265Settings' {} a -> s {qualityTuningLevel = a} :: H265Settings)
+
+-- | Settings for quality-defined variable bitrate encoding with the H.265
+-- codec. Use these settings only when you set QVBR for Rate control mode
+-- (RateControlMode).
+h265Settings_qvbrSettings :: Lens.Lens' H265Settings (Prelude.Maybe H265QvbrSettings)
+h265Settings_qvbrSettings = Lens.lens (\H265Settings' {qvbrSettings} -> qvbrSettings) (\s@H265Settings' {} a -> s {qvbrSettings = a} :: H265Settings)
+
+-- | Use this setting to specify whether this output has a variable bitrate
+-- (VBR), constant bitrate (CBR) or quality-defined variable bitrate
+-- (QVBR).
+h265Settings_rateControlMode :: Lens.Lens' H265Settings (Prelude.Maybe H265RateControlMode)
+h265Settings_rateControlMode = Lens.lens (\H265Settings' {rateControlMode} -> rateControlMode) (\s@H265Settings' {} a -> s {rateControlMode = a} :: H265Settings)
+
+-- | Specify Sample Adaptive Offset (SAO) filter strength. Adaptive mode
+-- dynamically selects best strength based on content
+h265Settings_sampleAdaptiveOffsetFilterMode :: Lens.Lens' H265Settings (Prelude.Maybe H265SampleAdaptiveOffsetFilterMode)
+h265Settings_sampleAdaptiveOffsetFilterMode = Lens.lens (\H265Settings' {sampleAdaptiveOffsetFilterMode} -> sampleAdaptiveOffsetFilterMode) (\s@H265Settings' {} a -> s {sampleAdaptiveOffsetFilterMode = a} :: H265Settings)
+
+-- | Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+h265Settings_scanTypeConversionMode :: Lens.Lens' H265Settings (Prelude.Maybe H265ScanTypeConversionMode)
+h265Settings_scanTypeConversionMode = Lens.lens (\H265Settings' {scanTypeConversionMode} -> scanTypeConversionMode) (\s@H265Settings' {} a -> s {scanTypeConversionMode = a} :: H265Settings)
+
+-- | Enable this setting to insert I-frames at scene changes that the service
+-- automatically detects. This improves video quality and is enabled by
+-- default. If this output uses QVBR, choose Transition detection
+-- (TRANSITION_DETECTION) for further video quality improvement. For more
+-- information about QVBR, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/cbr-vbr-qvbr.
+h265Settings_sceneChangeDetect :: Lens.Lens' H265Settings (Prelude.Maybe H265SceneChangeDetect)
+h265Settings_sceneChangeDetect = Lens.lens (\H265Settings' {sceneChangeDetect} -> sceneChangeDetect) (\s@H265Settings' {} a -> s {sceneChangeDetect = a} :: H265Settings)
+
+-- | Number of slices per picture. Must be less than or equal to the number
+-- of macroblock rows for progressive pictures, and less than or equal to
+-- half the number of macroblock rows for interlaced pictures.
+h265Settings_slices :: Lens.Lens' H265Settings (Prelude.Maybe Prelude.Natural)
+h265Settings_slices = Lens.lens (\H265Settings' {slices} -> slices) (\s@H265Settings' {} a -> s {slices = a} :: H265Settings)
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+h265Settings_slowPal :: Lens.Lens' H265Settings (Prelude.Maybe H265SlowPal)
+h265Settings_slowPal = Lens.lens (\H265Settings' {slowPal} -> slowPal) (\s@H265Settings' {} a -> s {slowPal = a} :: H265Settings)
+
+-- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on spatial variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas that can
+-- sustain more distortion with no noticeable visual degradation and uses
+-- more bits on areas where any small distortion will be noticeable. For
+-- example, complex textured blocks are encoded with fewer bits and smooth
+-- textured blocks are encoded with more bits. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen with a lot of complex texture, you might choose to
+-- disable this feature. Related setting: When you enable spatial adaptive
+-- quantization, set the value for Adaptive quantization
+-- (adaptiveQuantization) depending on your content. For homogeneous
+-- content, such as cartoons and video games, set it to Low. For content
+-- with a wider variety of textures, set it to High or Higher.
+h265Settings_spatialAdaptiveQuantization :: Lens.Lens' H265Settings (Prelude.Maybe H265SpatialAdaptiveQuantization)
+h265Settings_spatialAdaptiveQuantization = Lens.lens (\H265Settings' {spatialAdaptiveQuantization} -> spatialAdaptiveQuantization) (\s@H265Settings' {} a -> s {spatialAdaptiveQuantization = a} :: H265Settings)
+
+-- | This field applies only if the Streams > Advanced > Framerate
+-- (framerate) field is set to 29.970. This field works with the Streams >
+-- Advanced > Preprocessors > Deinterlacer field (deinterlace_mode) and the
+-- Streams > Advanced > Interlaced Mode field (interlace_mode) to identify
+-- the scan type for the output: Progressive, Interlaced, Hard Telecine or
+-- Soft Telecine. - Hard: produces 29.97i output from 23.976 input. - Soft:
+-- produces 23.976; the player converts this output to 29.97i.
+h265Settings_telecine :: Lens.Lens' H265Settings (Prelude.Maybe H265Telecine)
+h265Settings_telecine = Lens.lens (\H265Settings' {telecine} -> telecine) (\s@H265Settings' {} a -> s {telecine = a} :: H265Settings)
+
+-- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on temporal variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas of the frame
+-- that aren\'t moving and uses more bits on complex objects with sharp
+-- edges that move a lot. For example, this feature improves the
+-- readability of text tickers on newscasts and scoreboards on sports
+-- matches. Enabling this feature will almost always improve your video
+-- quality. Note, though, that this feature doesn\'t take into account
+-- where the viewer\'s attention is likely to be. If viewers are likely to
+-- be focusing their attention on a part of the screen that doesn\'t have
+-- moving objects with sharp edges, such as sports athletes\' faces, you
+-- might choose to disable this feature. Related setting: When you enable
+-- temporal quantization, adjust the strength of the filter with the
+-- setting Adaptive quantization (adaptiveQuantization).
+h265Settings_temporalAdaptiveQuantization :: Lens.Lens' H265Settings (Prelude.Maybe H265TemporalAdaptiveQuantization)
+h265Settings_temporalAdaptiveQuantization = Lens.lens (\H265Settings' {temporalAdaptiveQuantization} -> temporalAdaptiveQuantization) (\s@H265Settings' {} a -> s {temporalAdaptiveQuantization = a} :: H265Settings)
+
+-- | Enables temporal layer identifiers in the encoded bitstream. Up to 3
+-- layers are supported depending on GOP structure: I- and P-frames form
+-- one layer, reference B-frames can form a second layer and non-reference
+-- b-frames can form a third layer. Decoders can optionally decode only the
+-- lower temporal layers to generate a lower frame rate output. For
+-- example, given a bitstream with temporal IDs and with b-frames = 1 (i.e.
+-- IbPbPb display order), a decoder could decode all the frames for full
+-- frame rate output or only the I and P frames (lowest temporal layer) for
+-- a half frame rate output.
+h265Settings_temporalIds :: Lens.Lens' H265Settings (Prelude.Maybe H265TemporalIds)
+h265Settings_temporalIds = Lens.lens (\H265Settings' {temporalIds} -> temporalIds) (\s@H265Settings' {} a -> s {temporalIds = a} :: H265Settings)
+
+-- | Enable use of tiles, allowing horizontal as well as vertical subdivision
+-- of the encoded pictures.
+h265Settings_tiles :: Lens.Lens' H265Settings (Prelude.Maybe H265Tiles)
+h265Settings_tiles = Lens.lens (\H265Settings' {tiles} -> tiles) (\s@H265Settings' {} a -> s {tiles = a} :: H265Settings)
+
+-- | Inserts timecode for each frame as 4 bytes of an unregistered SEI
+-- message.
+h265Settings_unregisteredSeiTimecode :: Lens.Lens' H265Settings (Prelude.Maybe H265UnregisteredSeiTimecode)
+h265Settings_unregisteredSeiTimecode = Lens.lens (\H265Settings' {unregisteredSeiTimecode} -> unregisteredSeiTimecode) (\s@H265Settings' {} a -> s {unregisteredSeiTimecode = a} :: H265Settings)
+
+-- | If the location of parameter set NAL units doesn\'t matter in your
+-- workflow, ignore this setting. Use this setting only with CMAF or DASH
+-- outputs, or with standalone file outputs in an MPEG-4 container (MP4
+-- outputs). Choose HVC1 to mark your output as HVC1. This makes your
+-- output compliant with the following specification: ISO IECJTC1 SC29
+-- N13798 Text ISO\/IEC FDIS 14496-15 3rd Edition. For these outputs, the
+-- service stores parameter set NAL units in the sample headers but not in
+-- the samples directly. For MP4 outputs, when you choose HVC1, your output
+-- video might not work properly with some downstream systems and video
+-- players. The service defaults to marking your output as HEV1. For these
+-- outputs, the service writes parameter set NAL units directly into the
+-- samples.
+h265Settings_writeMp4PackagingType :: Lens.Lens' H265Settings (Prelude.Maybe H265WriteMp4PackagingType)
+h265Settings_writeMp4PackagingType = Lens.lens (\H265Settings' {writeMp4PackagingType} -> writeMp4PackagingType) (\s@H265Settings' {} a -> s {writeMp4PackagingType = a} :: H265Settings)
+
+instance Data.FromJSON H265Settings where
+  parseJSON =
+    Data.withObject
+      "H265Settings"
+      ( \x ->
+          H265Settings'
+            Prelude.<$> (x Data..:? "adaptiveQuantization")
+            Prelude.<*> (x Data..:? "alternateTransferFunctionSei")
+            Prelude.<*> (x Data..:? "bitrate")
+            Prelude.<*> (x Data..:? "codecLevel")
+            Prelude.<*> (x Data..:? "codecProfile")
+            Prelude.<*> (x Data..:? "dynamicSubGop")
+            Prelude.<*> (x Data..:? "flickerAdaptiveQuantization")
+            Prelude.<*> (x Data..:? "framerateControl")
+            Prelude.<*> (x Data..:? "framerateConversionAlgorithm")
+            Prelude.<*> (x Data..:? "framerateDenominator")
+            Prelude.<*> (x Data..:? "framerateNumerator")
+            Prelude.<*> (x Data..:? "gopBReference")
+            Prelude.<*> (x Data..:? "gopClosedCadence")
+            Prelude.<*> (x Data..:? "gopSize")
+            Prelude.<*> (x Data..:? "gopSizeUnits")
+            Prelude.<*> (x Data..:? "hrdBufferFinalFillPercentage")
+            Prelude.<*> (x Data..:? "hrdBufferInitialFillPercentage")
+            Prelude.<*> (x Data..:? "hrdBufferSize")
+            Prelude.<*> (x Data..:? "interlaceMode")
+            Prelude.<*> (x Data..:? "maxBitrate")
+            Prelude.<*> (x Data..:? "minIInterval")
+            Prelude.<*> (x Data..:? "numberBFramesBetweenReferenceFrames")
+            Prelude.<*> (x Data..:? "numberReferenceFrames")
+            Prelude.<*> (x Data..:? "parControl")
+            Prelude.<*> (x Data..:? "parDenominator")
+            Prelude.<*> (x Data..:? "parNumerator")
+            Prelude.<*> (x Data..:? "qualityTuningLevel")
+            Prelude.<*> (x Data..:? "qvbrSettings")
+            Prelude.<*> (x Data..:? "rateControlMode")
+            Prelude.<*> (x Data..:? "sampleAdaptiveOffsetFilterMode")
+            Prelude.<*> (x Data..:? "scanTypeConversionMode")
+            Prelude.<*> (x Data..:? "sceneChangeDetect")
+            Prelude.<*> (x Data..:? "slices")
+            Prelude.<*> (x Data..:? "slowPal")
+            Prelude.<*> (x Data..:? "spatialAdaptiveQuantization")
+            Prelude.<*> (x Data..:? "telecine")
+            Prelude.<*> (x Data..:? "temporalAdaptiveQuantization")
+            Prelude.<*> (x Data..:? "temporalIds")
+            Prelude.<*> (x Data..:? "tiles")
+            Prelude.<*> (x Data..:? "unregisteredSeiTimecode")
+            Prelude.<*> (x Data..:? "writeMp4PackagingType")
+      )
+
+instance Prelude.Hashable H265Settings where
+  hashWithSalt _salt H265Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` adaptiveQuantization
+      `Prelude.hashWithSalt` alternateTransferFunctionSei
+      `Prelude.hashWithSalt` bitrate
+      `Prelude.hashWithSalt` codecLevel
+      `Prelude.hashWithSalt` codecProfile
+      `Prelude.hashWithSalt` dynamicSubGop
+      `Prelude.hashWithSalt` flickerAdaptiveQuantization
+      `Prelude.hashWithSalt` framerateControl
+      `Prelude.hashWithSalt` framerateConversionAlgorithm
+      `Prelude.hashWithSalt` framerateDenominator
+      `Prelude.hashWithSalt` framerateNumerator
+      `Prelude.hashWithSalt` gopBReference
+      `Prelude.hashWithSalt` gopClosedCadence
+      `Prelude.hashWithSalt` gopSize
+      `Prelude.hashWithSalt` gopSizeUnits
+      `Prelude.hashWithSalt` hrdBufferFinalFillPercentage
+      `Prelude.hashWithSalt` hrdBufferInitialFillPercentage
+      `Prelude.hashWithSalt` hrdBufferSize
+      `Prelude.hashWithSalt` interlaceMode
+      `Prelude.hashWithSalt` maxBitrate
+      `Prelude.hashWithSalt` minIInterval
+      `Prelude.hashWithSalt` numberBFramesBetweenReferenceFrames
+      `Prelude.hashWithSalt` numberReferenceFrames
+      `Prelude.hashWithSalt` parControl
+      `Prelude.hashWithSalt` parDenominator
+      `Prelude.hashWithSalt` parNumerator
+      `Prelude.hashWithSalt` qualityTuningLevel
+      `Prelude.hashWithSalt` qvbrSettings
+      `Prelude.hashWithSalt` rateControlMode
+      `Prelude.hashWithSalt` sampleAdaptiveOffsetFilterMode
+      `Prelude.hashWithSalt` scanTypeConversionMode
+      `Prelude.hashWithSalt` sceneChangeDetect
+      `Prelude.hashWithSalt` slices
+      `Prelude.hashWithSalt` slowPal
+      `Prelude.hashWithSalt` spatialAdaptiveQuantization
+      `Prelude.hashWithSalt` telecine
+      `Prelude.hashWithSalt` temporalAdaptiveQuantization
+      `Prelude.hashWithSalt` temporalIds
+      `Prelude.hashWithSalt` tiles
+      `Prelude.hashWithSalt` unregisteredSeiTimecode
+      `Prelude.hashWithSalt` writeMp4PackagingType
+
+instance Prelude.NFData H265Settings where
+  rnf H265Settings' {..} =
+    Prelude.rnf adaptiveQuantization
+      `Prelude.seq` Prelude.rnf alternateTransferFunctionSei
+      `Prelude.seq` Prelude.rnf bitrate
+      `Prelude.seq` Prelude.rnf codecLevel
+      `Prelude.seq` Prelude.rnf codecProfile
+      `Prelude.seq` Prelude.rnf dynamicSubGop
+      `Prelude.seq` Prelude.rnf flickerAdaptiveQuantization
+      `Prelude.seq` Prelude.rnf framerateControl
+      `Prelude.seq` Prelude.rnf framerateConversionAlgorithm
+      `Prelude.seq` Prelude.rnf framerateDenominator
+      `Prelude.seq` Prelude.rnf framerateNumerator
+      `Prelude.seq` Prelude.rnf gopBReference
+      `Prelude.seq` Prelude.rnf gopClosedCadence
+      `Prelude.seq` Prelude.rnf gopSize
+      `Prelude.seq` Prelude.rnf gopSizeUnits
+      `Prelude.seq` Prelude.rnf
+        hrdBufferFinalFillPercentage
+      `Prelude.seq` Prelude.rnf
+        hrdBufferInitialFillPercentage
+      `Prelude.seq` Prelude.rnf hrdBufferSize
+      `Prelude.seq` Prelude.rnf interlaceMode
+      `Prelude.seq` Prelude.rnf maxBitrate
+      `Prelude.seq` Prelude.rnf minIInterval
+      `Prelude.seq` Prelude.rnf
+        numberBFramesBetweenReferenceFrames
+      `Prelude.seq` Prelude.rnf
+        numberReferenceFrames
+      `Prelude.seq` Prelude.rnf parControl
+      `Prelude.seq` Prelude.rnf
+        parDenominator
+      `Prelude.seq` Prelude.rnf
+        parNumerator
+      `Prelude.seq` Prelude.rnf
+        qualityTuningLevel
+      `Prelude.seq` Prelude.rnf
+        qvbrSettings
+      `Prelude.seq` Prelude.rnf
+        rateControlMode
+      `Prelude.seq` Prelude.rnf
+        sampleAdaptiveOffsetFilterMode
+      `Prelude.seq` Prelude.rnf
+        scanTypeConversionMode
+      `Prelude.seq` Prelude.rnf
+        sceneChangeDetect
+      `Prelude.seq` Prelude.rnf
+        slices
+      `Prelude.seq` Prelude.rnf
+        slowPal
+      `Prelude.seq` Prelude.rnf
+        spatialAdaptiveQuantization
+      `Prelude.seq` Prelude.rnf
+        telecine
+      `Prelude.seq` Prelude.rnf
+        temporalAdaptiveQuantization
+      `Prelude.seq` Prelude.rnf
+        temporalIds
+      `Prelude.seq` Prelude.rnf
+        tiles
+      `Prelude.seq` Prelude.rnf
+        unregisteredSeiTimecode
+      `Prelude.seq` Prelude.rnf
+        writeMp4PackagingType
+
+instance Data.ToJSON H265Settings where
+  toJSON H265Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("adaptiveQuantization" Data..=)
+              Prelude.<$> adaptiveQuantization,
+            ("alternateTransferFunctionSei" Data..=)
+              Prelude.<$> alternateTransferFunctionSei,
+            ("bitrate" Data..=) Prelude.<$> bitrate,
+            ("codecLevel" Data..=) Prelude.<$> codecLevel,
+            ("codecProfile" Data..=) Prelude.<$> codecProfile,
+            ("dynamicSubGop" Data..=) Prelude.<$> dynamicSubGop,
+            ("flickerAdaptiveQuantization" Data..=)
+              Prelude.<$> flickerAdaptiveQuantization,
+            ("framerateControl" Data..=)
+              Prelude.<$> framerateControl,
+            ("framerateConversionAlgorithm" Data..=)
+              Prelude.<$> framerateConversionAlgorithm,
+            ("framerateDenominator" Data..=)
+              Prelude.<$> framerateDenominator,
+            ("framerateNumerator" Data..=)
+              Prelude.<$> framerateNumerator,
+            ("gopBReference" Data..=) Prelude.<$> gopBReference,
+            ("gopClosedCadence" Data..=)
+              Prelude.<$> gopClosedCadence,
+            ("gopSize" Data..=) Prelude.<$> gopSize,
+            ("gopSizeUnits" Data..=) Prelude.<$> gopSizeUnits,
+            ("hrdBufferFinalFillPercentage" Data..=)
+              Prelude.<$> hrdBufferFinalFillPercentage,
+            ("hrdBufferInitialFillPercentage" Data..=)
+              Prelude.<$> hrdBufferInitialFillPercentage,
+            ("hrdBufferSize" Data..=) Prelude.<$> hrdBufferSize,
+            ("interlaceMode" Data..=) Prelude.<$> interlaceMode,
+            ("maxBitrate" Data..=) Prelude.<$> maxBitrate,
+            ("minIInterval" Data..=) Prelude.<$> minIInterval,
+            ("numberBFramesBetweenReferenceFrames" Data..=)
+              Prelude.<$> numberBFramesBetweenReferenceFrames,
+            ("numberReferenceFrames" Data..=)
+              Prelude.<$> numberReferenceFrames,
+            ("parControl" Data..=) Prelude.<$> parControl,
+            ("parDenominator" Data..=)
+              Prelude.<$> parDenominator,
+            ("parNumerator" Data..=) Prelude.<$> parNumerator,
+            ("qualityTuningLevel" Data..=)
+              Prelude.<$> qualityTuningLevel,
+            ("qvbrSettings" Data..=) Prelude.<$> qvbrSettings,
+            ("rateControlMode" Data..=)
+              Prelude.<$> rateControlMode,
+            ("sampleAdaptiveOffsetFilterMode" Data..=)
+              Prelude.<$> sampleAdaptiveOffsetFilterMode,
+            ("scanTypeConversionMode" Data..=)
+              Prelude.<$> scanTypeConversionMode,
+            ("sceneChangeDetect" Data..=)
+              Prelude.<$> sceneChangeDetect,
+            ("slices" Data..=) Prelude.<$> slices,
+            ("slowPal" Data..=) Prelude.<$> slowPal,
+            ("spatialAdaptiveQuantization" Data..=)
+              Prelude.<$> spatialAdaptiveQuantization,
+            ("telecine" Data..=) Prelude.<$> telecine,
+            ("temporalAdaptiveQuantization" Data..=)
+              Prelude.<$> temporalAdaptiveQuantization,
+            ("temporalIds" Data..=) Prelude.<$> temporalIds,
+            ("tiles" Data..=) Prelude.<$> tiles,
+            ("unregisteredSeiTimecode" Data..=)
+              Prelude.<$> unregisteredSeiTimecode,
+            ("writeMp4PackagingType" Data..=)
+              Prelude.<$> writeMp4PackagingType
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/H265SlowPal.hs b/gen/Amazonka/MediaConvert/Types/H265SlowPal.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265SlowPal.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265SlowPal
+-- 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.H265SlowPal
+  ( H265SlowPal
+      ( ..,
+        H265SlowPal_DISABLED,
+        H265SlowPal_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+newtype H265SlowPal = H265SlowPal'
+  { fromH265SlowPal ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265SlowPal_DISABLED :: H265SlowPal
+pattern H265SlowPal_DISABLED = H265SlowPal' "DISABLED"
+
+pattern H265SlowPal_ENABLED :: H265SlowPal
+pattern H265SlowPal_ENABLED = H265SlowPal' "ENABLED"
+
+{-# COMPLETE
+  H265SlowPal_DISABLED,
+  H265SlowPal_ENABLED,
+  H265SlowPal'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265SpatialAdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/H265SpatialAdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265SpatialAdaptiveQuantization.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265SpatialAdaptiveQuantization
+-- 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.H265SpatialAdaptiveQuantization
+  ( H265SpatialAdaptiveQuantization
+      ( ..,
+        H265SpatialAdaptiveQuantization_DISABLED,
+        H265SpatialAdaptiveQuantization_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on spatial variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas that can
+-- sustain more distortion with no noticeable visual degradation and uses
+-- more bits on areas where any small distortion will be noticeable. For
+-- example, complex textured blocks are encoded with fewer bits and smooth
+-- textured blocks are encoded with more bits. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen with a lot of complex texture, you might choose to
+-- disable this feature. Related setting: When you enable spatial adaptive
+-- quantization, set the value for Adaptive quantization
+-- (adaptiveQuantization) depending on your content. For homogeneous
+-- content, such as cartoons and video games, set it to Low. For content
+-- with a wider variety of textures, set it to High or Higher.
+newtype H265SpatialAdaptiveQuantization = H265SpatialAdaptiveQuantization'
+  { fromH265SpatialAdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265SpatialAdaptiveQuantization_DISABLED :: H265SpatialAdaptiveQuantization
+pattern H265SpatialAdaptiveQuantization_DISABLED = H265SpatialAdaptiveQuantization' "DISABLED"
+
+pattern H265SpatialAdaptiveQuantization_ENABLED :: H265SpatialAdaptiveQuantization
+pattern H265SpatialAdaptiveQuantization_ENABLED = H265SpatialAdaptiveQuantization' "ENABLED"
+
+{-# COMPLETE
+  H265SpatialAdaptiveQuantization_DISABLED,
+  H265SpatialAdaptiveQuantization_ENABLED,
+  H265SpatialAdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265Telecine.hs b/gen/Amazonka/MediaConvert/Types/H265Telecine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265Telecine.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265Telecine
+-- 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.H265Telecine
+  ( H265Telecine
+      ( ..,
+        H265Telecine_HARD,
+        H265Telecine_NONE,
+        H265Telecine_SOFT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | This field applies only if the Streams > Advanced > Framerate
+-- (framerate) field is set to 29.970. This field works with the Streams >
+-- Advanced > Preprocessors > Deinterlacer field (deinterlace_mode) and the
+-- Streams > Advanced > Interlaced Mode field (interlace_mode) to identify
+-- the scan type for the output: Progressive, Interlaced, Hard Telecine or
+-- Soft Telecine. - Hard: produces 29.97i output from 23.976 input. - Soft:
+-- produces 23.976; the player converts this output to 29.97i.
+newtype H265Telecine = H265Telecine'
+  { fromH265Telecine ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265Telecine_HARD :: H265Telecine
+pattern H265Telecine_HARD = H265Telecine' "HARD"
+
+pattern H265Telecine_NONE :: H265Telecine
+pattern H265Telecine_NONE = H265Telecine' "NONE"
+
+pattern H265Telecine_SOFT :: H265Telecine
+pattern H265Telecine_SOFT = H265Telecine' "SOFT"
+
+{-# COMPLETE
+  H265Telecine_HARD,
+  H265Telecine_NONE,
+  H265Telecine_SOFT,
+  H265Telecine'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265TemporalAdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/H265TemporalAdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265TemporalAdaptiveQuantization.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265TemporalAdaptiveQuantization
+-- 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.H265TemporalAdaptiveQuantization
+  ( H265TemporalAdaptiveQuantization
+      ( ..,
+        H265TemporalAdaptiveQuantization_DISABLED,
+        H265TemporalAdaptiveQuantization_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on temporal variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas of the frame
+-- that aren\'t moving and uses more bits on complex objects with sharp
+-- edges that move a lot. For example, this feature improves the
+-- readability of text tickers on newscasts and scoreboards on sports
+-- matches. Enabling this feature will almost always improve your video
+-- quality. Note, though, that this feature doesn\'t take into account
+-- where the viewer\'s attention is likely to be. If viewers are likely to
+-- be focusing their attention on a part of the screen that doesn\'t have
+-- moving objects with sharp edges, such as sports athletes\' faces, you
+-- might choose to disable this feature. Related setting: When you enable
+-- temporal quantization, adjust the strength of the filter with the
+-- setting Adaptive quantization (adaptiveQuantization).
+newtype H265TemporalAdaptiveQuantization = H265TemporalAdaptiveQuantization'
+  { fromH265TemporalAdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265TemporalAdaptiveQuantization_DISABLED :: H265TemporalAdaptiveQuantization
+pattern H265TemporalAdaptiveQuantization_DISABLED = H265TemporalAdaptiveQuantization' "DISABLED"
+
+pattern H265TemporalAdaptiveQuantization_ENABLED :: H265TemporalAdaptiveQuantization
+pattern H265TemporalAdaptiveQuantization_ENABLED = H265TemporalAdaptiveQuantization' "ENABLED"
+
+{-# COMPLETE
+  H265TemporalAdaptiveQuantization_DISABLED,
+  H265TemporalAdaptiveQuantization_ENABLED,
+  H265TemporalAdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265TemporalIds.hs b/gen/Amazonka/MediaConvert/Types/H265TemporalIds.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265TemporalIds.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265TemporalIds
+-- 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.H265TemporalIds
+  ( H265TemporalIds
+      ( ..,
+        H265TemporalIds_DISABLED,
+        H265TemporalIds_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enables temporal layer identifiers in the encoded bitstream. Up to 3
+-- layers are supported depending on GOP structure: I- and P-frames form
+-- one layer, reference B-frames can form a second layer and non-reference
+-- b-frames can form a third layer. Decoders can optionally decode only the
+-- lower temporal layers to generate a lower frame rate output. For
+-- example, given a bitstream with temporal IDs and with b-frames = 1 (i.e.
+-- IbPbPb display order), a decoder could decode all the frames for full
+-- frame rate output or only the I and P frames (lowest temporal layer) for
+-- a half frame rate output.
+newtype H265TemporalIds = H265TemporalIds'
+  { fromH265TemporalIds ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265TemporalIds_DISABLED :: H265TemporalIds
+pattern H265TemporalIds_DISABLED = H265TemporalIds' "DISABLED"
+
+pattern H265TemporalIds_ENABLED :: H265TemporalIds
+pattern H265TemporalIds_ENABLED = H265TemporalIds' "ENABLED"
+
+{-# COMPLETE
+  H265TemporalIds_DISABLED,
+  H265TemporalIds_ENABLED,
+  H265TemporalIds'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265Tiles.hs b/gen/Amazonka/MediaConvert/Types/H265Tiles.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265Tiles.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265Tiles
+-- 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.H265Tiles
+  ( H265Tiles
+      ( ..,
+        H265Tiles_DISABLED,
+        H265Tiles_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enable use of tiles, allowing horizontal as well as vertical subdivision
+-- of the encoded pictures.
+newtype H265Tiles = H265Tiles'
+  { fromH265Tiles ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265Tiles_DISABLED :: H265Tiles
+pattern H265Tiles_DISABLED = H265Tiles' "DISABLED"
+
+pattern H265Tiles_ENABLED :: H265Tiles
+pattern H265Tiles_ENABLED = H265Tiles' "ENABLED"
+
+{-# COMPLETE
+  H265Tiles_DISABLED,
+  H265Tiles_ENABLED,
+  H265Tiles'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265UnregisteredSeiTimecode.hs b/gen/Amazonka/MediaConvert/Types/H265UnregisteredSeiTimecode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265UnregisteredSeiTimecode.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265UnregisteredSeiTimecode
+-- 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.H265UnregisteredSeiTimecode
+  ( H265UnregisteredSeiTimecode
+      ( ..,
+        H265UnregisteredSeiTimecode_DISABLED,
+        H265UnregisteredSeiTimecode_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Inserts timecode for each frame as 4 bytes of an unregistered SEI
+-- message.
+newtype H265UnregisteredSeiTimecode = H265UnregisteredSeiTimecode'
+  { fromH265UnregisteredSeiTimecode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265UnregisteredSeiTimecode_DISABLED :: H265UnregisteredSeiTimecode
+pattern H265UnregisteredSeiTimecode_DISABLED = H265UnregisteredSeiTimecode' "DISABLED"
+
+pattern H265UnregisteredSeiTimecode_ENABLED :: H265UnregisteredSeiTimecode
+pattern H265UnregisteredSeiTimecode_ENABLED = H265UnregisteredSeiTimecode' "ENABLED"
+
+{-# COMPLETE
+  H265UnregisteredSeiTimecode_DISABLED,
+  H265UnregisteredSeiTimecode_ENABLED,
+  H265UnregisteredSeiTimecode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/H265WriteMp4PackagingType.hs b/gen/Amazonka/MediaConvert/Types/H265WriteMp4PackagingType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/H265WriteMp4PackagingType.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.H265WriteMp4PackagingType
+-- 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.H265WriteMp4PackagingType
+  ( H265WriteMp4PackagingType
+      ( ..,
+        H265WriteMp4PackagingType_HEV1,
+        H265WriteMp4PackagingType_HVC1
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If the location of parameter set NAL units doesn\'t matter in your
+-- workflow, ignore this setting. Use this setting only with CMAF or DASH
+-- outputs, or with standalone file outputs in an MPEG-4 container (MP4
+-- outputs). Choose HVC1 to mark your output as HVC1. This makes your
+-- output compliant with the following specification: ISO IECJTC1 SC29
+-- N13798 Text ISO\/IEC FDIS 14496-15 3rd Edition. For these outputs, the
+-- service stores parameter set NAL units in the sample headers but not in
+-- the samples directly. For MP4 outputs, when you choose HVC1, your output
+-- video might not work properly with some downstream systems and video
+-- players. The service defaults to marking your output as HEV1. For these
+-- outputs, the service writes parameter set NAL units directly into the
+-- samples.
+newtype H265WriteMp4PackagingType = H265WriteMp4PackagingType'
+  { fromH265WriteMp4PackagingType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern H265WriteMp4PackagingType_HEV1 :: H265WriteMp4PackagingType
+pattern H265WriteMp4PackagingType_HEV1 = H265WriteMp4PackagingType' "HEV1"
+
+pattern H265WriteMp4PackagingType_HVC1 :: H265WriteMp4PackagingType
+pattern H265WriteMp4PackagingType_HVC1 = H265WriteMp4PackagingType' "HVC1"
+
+{-# COMPLETE
+  H265WriteMp4PackagingType_HEV1,
+  H265WriteMp4PackagingType_HVC1,
+  H265WriteMp4PackagingType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Hdr10Metadata.hs b/gen/Amazonka/MediaConvert/Types/Hdr10Metadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Hdr10Metadata.hs
@@ -0,0 +1,319 @@
+{-# 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.Hdr10Metadata
+-- 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.Hdr10Metadata where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use these settings to specify static color calibration metadata, as
+-- defined by SMPTE ST 2086. These values don\'t affect the pixel values
+-- that are encoded in the video stream. They are intended to help the
+-- downstream video player display content in a way that reflects the
+-- intentions of the the content creator.
+--
+-- /See:/ 'newHdr10Metadata' smart constructor.
+data Hdr10Metadata = Hdr10Metadata'
+  { -- | HDR Master Display Information must be provided by a color grader, using
+    -- color grading tools. Range is 0 to 50,000, each increment represents
+    -- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+    -- color correction.
+    bluePrimaryX :: Prelude.Maybe Prelude.Natural,
+    -- | HDR Master Display Information must be provided by a color grader, using
+    -- color grading tools. Range is 0 to 50,000, each increment represents
+    -- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+    -- color correction.
+    bluePrimaryY :: Prelude.Maybe Prelude.Natural,
+    -- | HDR Master Display Information must be provided by a color grader, using
+    -- color grading tools. Range is 0 to 50,000, each increment represents
+    -- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+    -- color correction.
+    greenPrimaryX :: Prelude.Maybe Prelude.Natural,
+    -- | HDR Master Display Information must be provided by a color grader, using
+    -- color grading tools. Range is 0 to 50,000, each increment represents
+    -- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+    -- color correction.
+    greenPrimaryY :: Prelude.Maybe Prelude.Natural,
+    -- | Maximum light level among all samples in the coded video sequence, in
+    -- units of candelas per square meter. This setting doesn\'t have a default
+    -- value; you must specify a value that is suitable for the content.
+    maxContentLightLevel :: Prelude.Maybe Prelude.Natural,
+    -- | Maximum average light level of any frame in the coded video sequence, in
+    -- units of candelas per square meter. This setting doesn\'t have a default
+    -- value; you must specify a value that is suitable for the content.
+    maxFrameAverageLightLevel :: Prelude.Maybe Prelude.Natural,
+    -- | Nominal maximum mastering display luminance in units of of 0.0001
+    -- candelas per square meter.
+    maxLuminance :: Prelude.Maybe Prelude.Natural,
+    -- | Nominal minimum mastering display luminance in units of of 0.0001
+    -- candelas per square meter
+    minLuminance :: Prelude.Maybe Prelude.Natural,
+    -- | HDR Master Display Information must be provided by a color grader, using
+    -- color grading tools. Range is 0 to 50,000, each increment represents
+    -- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+    -- color correction.
+    redPrimaryX :: Prelude.Maybe Prelude.Natural,
+    -- | HDR Master Display Information must be provided by a color grader, using
+    -- color grading tools. Range is 0 to 50,000, each increment represents
+    -- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+    -- color correction.
+    redPrimaryY :: Prelude.Maybe Prelude.Natural,
+    -- | HDR Master Display Information must be provided by a color grader, using
+    -- color grading tools. Range is 0 to 50,000, each increment represents
+    -- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+    -- color correction.
+    whitePointX :: Prelude.Maybe Prelude.Natural,
+    -- | HDR Master Display Information must be provided by a color grader, using
+    -- color grading tools. Range is 0 to 50,000, each increment represents
+    -- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+    -- color correction.
+    whitePointY :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Hdr10Metadata' 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:
+--
+-- 'bluePrimaryX', 'hdr10Metadata_bluePrimaryX' - HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+--
+-- 'bluePrimaryY', 'hdr10Metadata_bluePrimaryY' - HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+--
+-- 'greenPrimaryX', 'hdr10Metadata_greenPrimaryX' - HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+--
+-- 'greenPrimaryY', 'hdr10Metadata_greenPrimaryY' - HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+--
+-- 'maxContentLightLevel', 'hdr10Metadata_maxContentLightLevel' - Maximum light level among all samples in the coded video sequence, in
+-- units of candelas per square meter. This setting doesn\'t have a default
+-- value; you must specify a value that is suitable for the content.
+--
+-- 'maxFrameAverageLightLevel', 'hdr10Metadata_maxFrameAverageLightLevel' - Maximum average light level of any frame in the coded video sequence, in
+-- units of candelas per square meter. This setting doesn\'t have a default
+-- value; you must specify a value that is suitable for the content.
+--
+-- 'maxLuminance', 'hdr10Metadata_maxLuminance' - Nominal maximum mastering display luminance in units of of 0.0001
+-- candelas per square meter.
+--
+-- 'minLuminance', 'hdr10Metadata_minLuminance' - Nominal minimum mastering display luminance in units of of 0.0001
+-- candelas per square meter
+--
+-- 'redPrimaryX', 'hdr10Metadata_redPrimaryX' - HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+--
+-- 'redPrimaryY', 'hdr10Metadata_redPrimaryY' - HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+--
+-- 'whitePointX', 'hdr10Metadata_whitePointX' - HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+--
+-- 'whitePointY', 'hdr10Metadata_whitePointY' - HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+newHdr10Metadata ::
+  Hdr10Metadata
+newHdr10Metadata =
+  Hdr10Metadata'
+    { bluePrimaryX = Prelude.Nothing,
+      bluePrimaryY = Prelude.Nothing,
+      greenPrimaryX = Prelude.Nothing,
+      greenPrimaryY = Prelude.Nothing,
+      maxContentLightLevel = Prelude.Nothing,
+      maxFrameAverageLightLevel = Prelude.Nothing,
+      maxLuminance = Prelude.Nothing,
+      minLuminance = Prelude.Nothing,
+      redPrimaryX = Prelude.Nothing,
+      redPrimaryY = Prelude.Nothing,
+      whitePointX = Prelude.Nothing,
+      whitePointY = Prelude.Nothing
+    }
+
+-- | HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+hdr10Metadata_bluePrimaryX :: Lens.Lens' Hdr10Metadata (Prelude.Maybe Prelude.Natural)
+hdr10Metadata_bluePrimaryX = Lens.lens (\Hdr10Metadata' {bluePrimaryX} -> bluePrimaryX) (\s@Hdr10Metadata' {} a -> s {bluePrimaryX = a} :: Hdr10Metadata)
+
+-- | HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+hdr10Metadata_bluePrimaryY :: Lens.Lens' Hdr10Metadata (Prelude.Maybe Prelude.Natural)
+hdr10Metadata_bluePrimaryY = Lens.lens (\Hdr10Metadata' {bluePrimaryY} -> bluePrimaryY) (\s@Hdr10Metadata' {} a -> s {bluePrimaryY = a} :: Hdr10Metadata)
+
+-- | HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+hdr10Metadata_greenPrimaryX :: Lens.Lens' Hdr10Metadata (Prelude.Maybe Prelude.Natural)
+hdr10Metadata_greenPrimaryX = Lens.lens (\Hdr10Metadata' {greenPrimaryX} -> greenPrimaryX) (\s@Hdr10Metadata' {} a -> s {greenPrimaryX = a} :: Hdr10Metadata)
+
+-- | HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+hdr10Metadata_greenPrimaryY :: Lens.Lens' Hdr10Metadata (Prelude.Maybe Prelude.Natural)
+hdr10Metadata_greenPrimaryY = Lens.lens (\Hdr10Metadata' {greenPrimaryY} -> greenPrimaryY) (\s@Hdr10Metadata' {} a -> s {greenPrimaryY = a} :: Hdr10Metadata)
+
+-- | Maximum light level among all samples in the coded video sequence, in
+-- units of candelas per square meter. This setting doesn\'t have a default
+-- value; you must specify a value that is suitable for the content.
+hdr10Metadata_maxContentLightLevel :: Lens.Lens' Hdr10Metadata (Prelude.Maybe Prelude.Natural)
+hdr10Metadata_maxContentLightLevel = Lens.lens (\Hdr10Metadata' {maxContentLightLevel} -> maxContentLightLevel) (\s@Hdr10Metadata' {} a -> s {maxContentLightLevel = a} :: Hdr10Metadata)
+
+-- | Maximum average light level of any frame in the coded video sequence, in
+-- units of candelas per square meter. This setting doesn\'t have a default
+-- value; you must specify a value that is suitable for the content.
+hdr10Metadata_maxFrameAverageLightLevel :: Lens.Lens' Hdr10Metadata (Prelude.Maybe Prelude.Natural)
+hdr10Metadata_maxFrameAverageLightLevel = Lens.lens (\Hdr10Metadata' {maxFrameAverageLightLevel} -> maxFrameAverageLightLevel) (\s@Hdr10Metadata' {} a -> s {maxFrameAverageLightLevel = a} :: Hdr10Metadata)
+
+-- | Nominal maximum mastering display luminance in units of of 0.0001
+-- candelas per square meter.
+hdr10Metadata_maxLuminance :: Lens.Lens' Hdr10Metadata (Prelude.Maybe Prelude.Natural)
+hdr10Metadata_maxLuminance = Lens.lens (\Hdr10Metadata' {maxLuminance} -> maxLuminance) (\s@Hdr10Metadata' {} a -> s {maxLuminance = a} :: Hdr10Metadata)
+
+-- | Nominal minimum mastering display luminance in units of of 0.0001
+-- candelas per square meter
+hdr10Metadata_minLuminance :: Lens.Lens' Hdr10Metadata (Prelude.Maybe Prelude.Natural)
+hdr10Metadata_minLuminance = Lens.lens (\Hdr10Metadata' {minLuminance} -> minLuminance) (\s@Hdr10Metadata' {} a -> s {minLuminance = a} :: Hdr10Metadata)
+
+-- | HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+hdr10Metadata_redPrimaryX :: Lens.Lens' Hdr10Metadata (Prelude.Maybe Prelude.Natural)
+hdr10Metadata_redPrimaryX = Lens.lens (\Hdr10Metadata' {redPrimaryX} -> redPrimaryX) (\s@Hdr10Metadata' {} a -> s {redPrimaryX = a} :: Hdr10Metadata)
+
+-- | HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+hdr10Metadata_redPrimaryY :: Lens.Lens' Hdr10Metadata (Prelude.Maybe Prelude.Natural)
+hdr10Metadata_redPrimaryY = Lens.lens (\Hdr10Metadata' {redPrimaryY} -> redPrimaryY) (\s@Hdr10Metadata' {} a -> s {redPrimaryY = a} :: Hdr10Metadata)
+
+-- | HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+hdr10Metadata_whitePointX :: Lens.Lens' Hdr10Metadata (Prelude.Maybe Prelude.Natural)
+hdr10Metadata_whitePointX = Lens.lens (\Hdr10Metadata' {whitePointX} -> whitePointX) (\s@Hdr10Metadata' {} a -> s {whitePointX = a} :: Hdr10Metadata)
+
+-- | HDR Master Display Information must be provided by a color grader, using
+-- color grading tools. Range is 0 to 50,000, each increment represents
+-- 0.00002 in CIE1931 color coordinate. Note that this setting is not for
+-- color correction.
+hdr10Metadata_whitePointY :: Lens.Lens' Hdr10Metadata (Prelude.Maybe Prelude.Natural)
+hdr10Metadata_whitePointY = Lens.lens (\Hdr10Metadata' {whitePointY} -> whitePointY) (\s@Hdr10Metadata' {} a -> s {whitePointY = a} :: Hdr10Metadata)
+
+instance Data.FromJSON Hdr10Metadata where
+  parseJSON =
+    Data.withObject
+      "Hdr10Metadata"
+      ( \x ->
+          Hdr10Metadata'
+            Prelude.<$> (x Data..:? "bluePrimaryX")
+            Prelude.<*> (x Data..:? "bluePrimaryY")
+            Prelude.<*> (x Data..:? "greenPrimaryX")
+            Prelude.<*> (x Data..:? "greenPrimaryY")
+            Prelude.<*> (x Data..:? "maxContentLightLevel")
+            Prelude.<*> (x Data..:? "maxFrameAverageLightLevel")
+            Prelude.<*> (x Data..:? "maxLuminance")
+            Prelude.<*> (x Data..:? "minLuminance")
+            Prelude.<*> (x Data..:? "redPrimaryX")
+            Prelude.<*> (x Data..:? "redPrimaryY")
+            Prelude.<*> (x Data..:? "whitePointX")
+            Prelude.<*> (x Data..:? "whitePointY")
+      )
+
+instance Prelude.Hashable Hdr10Metadata where
+  hashWithSalt _salt Hdr10Metadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` bluePrimaryX
+      `Prelude.hashWithSalt` bluePrimaryY
+      `Prelude.hashWithSalt` greenPrimaryX
+      `Prelude.hashWithSalt` greenPrimaryY
+      `Prelude.hashWithSalt` maxContentLightLevel
+      `Prelude.hashWithSalt` maxFrameAverageLightLevel
+      `Prelude.hashWithSalt` maxLuminance
+      `Prelude.hashWithSalt` minLuminance
+      `Prelude.hashWithSalt` redPrimaryX
+      `Prelude.hashWithSalt` redPrimaryY
+      `Prelude.hashWithSalt` whitePointX
+      `Prelude.hashWithSalt` whitePointY
+
+instance Prelude.NFData Hdr10Metadata where
+  rnf Hdr10Metadata' {..} =
+    Prelude.rnf bluePrimaryX
+      `Prelude.seq` Prelude.rnf bluePrimaryY
+      `Prelude.seq` Prelude.rnf greenPrimaryX
+      `Prelude.seq` Prelude.rnf greenPrimaryY
+      `Prelude.seq` Prelude.rnf maxContentLightLevel
+      `Prelude.seq` Prelude.rnf maxFrameAverageLightLevel
+      `Prelude.seq` Prelude.rnf maxLuminance
+      `Prelude.seq` Prelude.rnf minLuminance
+      `Prelude.seq` Prelude.rnf redPrimaryX
+      `Prelude.seq` Prelude.rnf redPrimaryY
+      `Prelude.seq` Prelude.rnf whitePointX
+      `Prelude.seq` Prelude.rnf whitePointY
+
+instance Data.ToJSON Hdr10Metadata where
+  toJSON Hdr10Metadata' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bluePrimaryX" Data..=) Prelude.<$> bluePrimaryX,
+            ("bluePrimaryY" Data..=) Prelude.<$> bluePrimaryY,
+            ("greenPrimaryX" Data..=) Prelude.<$> greenPrimaryX,
+            ("greenPrimaryY" Data..=) Prelude.<$> greenPrimaryY,
+            ("maxContentLightLevel" Data..=)
+              Prelude.<$> maxContentLightLevel,
+            ("maxFrameAverageLightLevel" Data..=)
+              Prelude.<$> maxFrameAverageLightLevel,
+            ("maxLuminance" Data..=) Prelude.<$> maxLuminance,
+            ("minLuminance" Data..=) Prelude.<$> minLuminance,
+            ("redPrimaryX" Data..=) Prelude.<$> redPrimaryX,
+            ("redPrimaryY" Data..=) Prelude.<$> redPrimaryY,
+            ("whitePointX" Data..=) Prelude.<$> whitePointX,
+            ("whitePointY" Data..=) Prelude.<$> whitePointY
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Hdr10Plus.hs b/gen/Amazonka/MediaConvert/Types/Hdr10Plus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Hdr10Plus.hs
@@ -0,0 +1,107 @@
+{-# 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.Hdr10Plus
+-- 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.Hdr10Plus where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Setting for HDR10+ metadata insertion
+--
+-- /See:/ 'newHdr10Plus' smart constructor.
+data Hdr10Plus = Hdr10Plus'
+  { -- | Specify the HDR10+ mastering display normalized peak luminance, in nits.
+    -- This is the normalized actual peak luminance of the mastering display,
+    -- as defined by ST 2094-40.
+    masteringMonitorNits :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the HDR10+ target display nominal peak luminance, in nits. This
+    -- is the nominal maximum luminance of the target display as defined by ST
+    -- 2094-40.
+    targetMonitorNits :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Hdr10Plus' 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:
+--
+-- 'masteringMonitorNits', 'hdr10Plus_masteringMonitorNits' - Specify the HDR10+ mastering display normalized peak luminance, in nits.
+-- This is the normalized actual peak luminance of the mastering display,
+-- as defined by ST 2094-40.
+--
+-- 'targetMonitorNits', 'hdr10Plus_targetMonitorNits' - Specify the HDR10+ target display nominal peak luminance, in nits. This
+-- is the nominal maximum luminance of the target display as defined by ST
+-- 2094-40.
+newHdr10Plus ::
+  Hdr10Plus
+newHdr10Plus =
+  Hdr10Plus'
+    { masteringMonitorNits = Prelude.Nothing,
+      targetMonitorNits = Prelude.Nothing
+    }
+
+-- | Specify the HDR10+ mastering display normalized peak luminance, in nits.
+-- This is the normalized actual peak luminance of the mastering display,
+-- as defined by ST 2094-40.
+hdr10Plus_masteringMonitorNits :: Lens.Lens' Hdr10Plus (Prelude.Maybe Prelude.Natural)
+hdr10Plus_masteringMonitorNits = Lens.lens (\Hdr10Plus' {masteringMonitorNits} -> masteringMonitorNits) (\s@Hdr10Plus' {} a -> s {masteringMonitorNits = a} :: Hdr10Plus)
+
+-- | Specify the HDR10+ target display nominal peak luminance, in nits. This
+-- is the nominal maximum luminance of the target display as defined by ST
+-- 2094-40.
+hdr10Plus_targetMonitorNits :: Lens.Lens' Hdr10Plus (Prelude.Maybe Prelude.Natural)
+hdr10Plus_targetMonitorNits = Lens.lens (\Hdr10Plus' {targetMonitorNits} -> targetMonitorNits) (\s@Hdr10Plus' {} a -> s {targetMonitorNits = a} :: Hdr10Plus)
+
+instance Data.FromJSON Hdr10Plus where
+  parseJSON =
+    Data.withObject
+      "Hdr10Plus"
+      ( \x ->
+          Hdr10Plus'
+            Prelude.<$> (x Data..:? "masteringMonitorNits")
+            Prelude.<*> (x Data..:? "targetMonitorNits")
+      )
+
+instance Prelude.Hashable Hdr10Plus where
+  hashWithSalt _salt Hdr10Plus' {..} =
+    _salt
+      `Prelude.hashWithSalt` masteringMonitorNits
+      `Prelude.hashWithSalt` targetMonitorNits
+
+instance Prelude.NFData Hdr10Plus where
+  rnf Hdr10Plus' {..} =
+    Prelude.rnf masteringMonitorNits
+      `Prelude.seq` Prelude.rnf targetMonitorNits
+
+instance Data.ToJSON Hdr10Plus where
+  toJSON Hdr10Plus' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("masteringMonitorNits" Data..=)
+              Prelude.<$> masteringMonitorNits,
+            ("targetMonitorNits" Data..=)
+              Prelude.<$> targetMonitorNits
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/HlsAdMarkers.hs b/gen/Amazonka/MediaConvert/Types/HlsAdMarkers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsAdMarkers.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsAdMarkers
+-- 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.HlsAdMarkers
+  ( HlsAdMarkers
+      ( ..,
+        HlsAdMarkers_ELEMENTAL,
+        HlsAdMarkers_ELEMENTAL_SCTE35
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ad marker for Apple HLS manifest.
+newtype HlsAdMarkers = HlsAdMarkers'
+  { fromHlsAdMarkers ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsAdMarkers_ELEMENTAL :: HlsAdMarkers
+pattern HlsAdMarkers_ELEMENTAL = HlsAdMarkers' "ELEMENTAL"
+
+pattern HlsAdMarkers_ELEMENTAL_SCTE35 :: HlsAdMarkers
+pattern HlsAdMarkers_ELEMENTAL_SCTE35 = HlsAdMarkers' "ELEMENTAL_SCTE35"
+
+{-# COMPLETE
+  HlsAdMarkers_ELEMENTAL,
+  HlsAdMarkers_ELEMENTAL_SCTE35,
+  HlsAdMarkers'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsAdditionalManifest.hs b/gen/Amazonka/MediaConvert/Types/HlsAdditionalManifest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsAdditionalManifest.hs
@@ -0,0 +1,128 @@
+{-# 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.HlsAdditionalManifest
+-- 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.HlsAdditionalManifest where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the details for each additional HLS manifest that you want the
+-- service to generate for this output group. Each manifest can reference a
+-- different subset of outputs in the group.
+--
+-- /See:/ 'newHlsAdditionalManifest' smart constructor.
+data HlsAdditionalManifest = HlsAdditionalManifest'
+  { -- | Specify a name modifier that the service adds to the name of this
+    -- manifest to make it different from the file names of the other main
+    -- manifests in the output group. For example, say that the default main
+    -- manifest for your HLS group is film-name.m3u8. If you enter
+    -- \"-no-premium\" for this setting, then the file name the service
+    -- generates for this top-level manifest is film-name-no-premium.m3u8. For
+    -- HLS output groups, specify a manifestNameModifier that is different from
+    -- the nameModifier of the output. The service uses the output name
+    -- modifier to create unique names for the individual variant manifests.
+    manifestNameModifier :: Prelude.Maybe Prelude.Text,
+    -- | Specify the outputs that you want this additional top-level manifest to
+    -- reference.
+    selectedOutputs :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HlsAdditionalManifest' 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:
+--
+-- 'manifestNameModifier', 'hlsAdditionalManifest_manifestNameModifier' - Specify a name modifier that the service adds to the name of this
+-- manifest to make it different from the file names of the other main
+-- manifests in the output group. For example, say that the default main
+-- manifest for your HLS group is film-name.m3u8. If you enter
+-- \"-no-premium\" for this setting, then the file name the service
+-- generates for this top-level manifest is film-name-no-premium.m3u8. For
+-- HLS output groups, specify a manifestNameModifier that is different from
+-- the nameModifier of the output. The service uses the output name
+-- modifier to create unique names for the individual variant manifests.
+--
+-- 'selectedOutputs', 'hlsAdditionalManifest_selectedOutputs' - Specify the outputs that you want this additional top-level manifest to
+-- reference.
+newHlsAdditionalManifest ::
+  HlsAdditionalManifest
+newHlsAdditionalManifest =
+  HlsAdditionalManifest'
+    { manifestNameModifier =
+        Prelude.Nothing,
+      selectedOutputs = Prelude.Nothing
+    }
+
+-- | Specify a name modifier that the service adds to the name of this
+-- manifest to make it different from the file names of the other main
+-- manifests in the output group. For example, say that the default main
+-- manifest for your HLS group is film-name.m3u8. If you enter
+-- \"-no-premium\" for this setting, then the file name the service
+-- generates for this top-level manifest is film-name-no-premium.m3u8. For
+-- HLS output groups, specify a manifestNameModifier that is different from
+-- the nameModifier of the output. The service uses the output name
+-- modifier to create unique names for the individual variant manifests.
+hlsAdditionalManifest_manifestNameModifier :: Lens.Lens' HlsAdditionalManifest (Prelude.Maybe Prelude.Text)
+hlsAdditionalManifest_manifestNameModifier = Lens.lens (\HlsAdditionalManifest' {manifestNameModifier} -> manifestNameModifier) (\s@HlsAdditionalManifest' {} a -> s {manifestNameModifier = a} :: HlsAdditionalManifest)
+
+-- | Specify the outputs that you want this additional top-level manifest to
+-- reference.
+hlsAdditionalManifest_selectedOutputs :: Lens.Lens' HlsAdditionalManifest (Prelude.Maybe [Prelude.Text])
+hlsAdditionalManifest_selectedOutputs = Lens.lens (\HlsAdditionalManifest' {selectedOutputs} -> selectedOutputs) (\s@HlsAdditionalManifest' {} a -> s {selectedOutputs = a} :: HlsAdditionalManifest) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON HlsAdditionalManifest where
+  parseJSON =
+    Data.withObject
+      "HlsAdditionalManifest"
+      ( \x ->
+          HlsAdditionalManifest'
+            Prelude.<$> (x Data..:? "manifestNameModifier")
+            Prelude.<*> ( x
+                            Data..:? "selectedOutputs"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable HlsAdditionalManifest where
+  hashWithSalt _salt HlsAdditionalManifest' {..} =
+    _salt
+      `Prelude.hashWithSalt` manifestNameModifier
+      `Prelude.hashWithSalt` selectedOutputs
+
+instance Prelude.NFData HlsAdditionalManifest where
+  rnf HlsAdditionalManifest' {..} =
+    Prelude.rnf manifestNameModifier
+      `Prelude.seq` Prelude.rnf selectedOutputs
+
+instance Data.ToJSON HlsAdditionalManifest where
+  toJSON HlsAdditionalManifest' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("manifestNameModifier" Data..=)
+              Prelude.<$> manifestNameModifier,
+            ("selectedOutputs" Data..=)
+              Prelude.<$> selectedOutputs
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/HlsAudioOnlyContainer.hs b/gen/Amazonka/MediaConvert/Types/HlsAudioOnlyContainer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsAudioOnlyContainer.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsAudioOnlyContainer
+-- 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.HlsAudioOnlyContainer
+  ( HlsAudioOnlyContainer
+      ( ..,
+        HlsAudioOnlyContainer_AUTOMATIC,
+        HlsAudioOnlyContainer_M2TS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting only in audio-only outputs. Choose MPEG-2 Transport
+-- Stream (M2TS) to create a file in an MPEG2-TS container. Keep the
+-- default value Automatic (AUTOMATIC) to create a raw audio-only file with
+-- no container. Regardless of the value that you specify here, if this
+-- output has video, the service will place outputs into an MPEG2-TS
+-- container.
+newtype HlsAudioOnlyContainer = HlsAudioOnlyContainer'
+  { fromHlsAudioOnlyContainer ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsAudioOnlyContainer_AUTOMATIC :: HlsAudioOnlyContainer
+pattern HlsAudioOnlyContainer_AUTOMATIC = HlsAudioOnlyContainer' "AUTOMATIC"
+
+pattern HlsAudioOnlyContainer_M2TS :: HlsAudioOnlyContainer
+pattern HlsAudioOnlyContainer_M2TS = HlsAudioOnlyContainer' "M2TS"
+
+{-# COMPLETE
+  HlsAudioOnlyContainer_AUTOMATIC,
+  HlsAudioOnlyContainer_M2TS,
+  HlsAudioOnlyContainer'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsAudioOnlyHeader.hs b/gen/Amazonka/MediaConvert/Types/HlsAudioOnlyHeader.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsAudioOnlyHeader.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsAudioOnlyHeader
+-- 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.HlsAudioOnlyHeader
+  ( HlsAudioOnlyHeader
+      ( ..,
+        HlsAudioOnlyHeader_EXCLUDE,
+        HlsAudioOnlyHeader_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless you are using FairPlay DRM with Verimatrix
+-- and you encounter playback issues. Keep the default value, Include
+-- (INCLUDE), to output audio-only headers. Choose Exclude (EXCLUDE) to
+-- remove the audio-only headers from your audio segments.
+newtype HlsAudioOnlyHeader = HlsAudioOnlyHeader'
+  { fromHlsAudioOnlyHeader ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsAudioOnlyHeader_EXCLUDE :: HlsAudioOnlyHeader
+pattern HlsAudioOnlyHeader_EXCLUDE = HlsAudioOnlyHeader' "EXCLUDE"
+
+pattern HlsAudioOnlyHeader_INCLUDE :: HlsAudioOnlyHeader
+pattern HlsAudioOnlyHeader_INCLUDE = HlsAudioOnlyHeader' "INCLUDE"
+
+{-# COMPLETE
+  HlsAudioOnlyHeader_EXCLUDE,
+  HlsAudioOnlyHeader_INCLUDE,
+  HlsAudioOnlyHeader'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsAudioTrackType.hs b/gen/Amazonka/MediaConvert/Types/HlsAudioTrackType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsAudioTrackType.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsAudioTrackType
+-- 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.HlsAudioTrackType
+  ( HlsAudioTrackType
+      ( ..,
+        HlsAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT,
+        HlsAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT,
+        HlsAudioTrackType_ALTERNATE_AUDIO_NOT_AUTO_SELECT,
+        HlsAudioTrackType_AUDIO_ONLY_VARIANT_STREAM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Four types of audio-only tracks are supported: Audio-Only Variant Stream
+-- The client can play back this audio-only stream instead of video in
+-- low-bandwidth scenarios. Represented as an EXT-X-STREAM-INF in the HLS
+-- manifest. Alternate Audio, Auto Select, Default Alternate rendition that
+-- the client should try to play back by default. Represented as an
+-- EXT-X-MEDIA in the HLS manifest with DEFAULT=YES, AUTOSELECT=YES
+-- Alternate Audio, Auto Select, Not Default Alternate rendition that the
+-- client may try to play back by default. Represented as an EXT-X-MEDIA in
+-- the HLS manifest with DEFAULT=NO, AUTOSELECT=YES Alternate Audio, not
+-- Auto Select Alternate rendition that the client will not try to play
+-- back by default. Represented as an EXT-X-MEDIA in the HLS manifest with
+-- DEFAULT=NO, AUTOSELECT=NO
+newtype HlsAudioTrackType = HlsAudioTrackType'
+  { fromHlsAudioTrackType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT :: HlsAudioTrackType
+pattern HlsAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT = HlsAudioTrackType' "ALTERNATE_AUDIO_AUTO_SELECT"
+
+pattern HlsAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT :: HlsAudioTrackType
+pattern HlsAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT = HlsAudioTrackType' "ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT"
+
+pattern HlsAudioTrackType_ALTERNATE_AUDIO_NOT_AUTO_SELECT :: HlsAudioTrackType
+pattern HlsAudioTrackType_ALTERNATE_AUDIO_NOT_AUTO_SELECT = HlsAudioTrackType' "ALTERNATE_AUDIO_NOT_AUTO_SELECT"
+
+pattern HlsAudioTrackType_AUDIO_ONLY_VARIANT_STREAM :: HlsAudioTrackType
+pattern HlsAudioTrackType_AUDIO_ONLY_VARIANT_STREAM = HlsAudioTrackType' "AUDIO_ONLY_VARIANT_STREAM"
+
+{-# COMPLETE
+  HlsAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT,
+  HlsAudioTrackType_ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT,
+  HlsAudioTrackType_ALTERNATE_AUDIO_NOT_AUTO_SELECT,
+  HlsAudioTrackType_AUDIO_ONLY_VARIANT_STREAM,
+  HlsAudioTrackType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsCaptionLanguageMapping.hs b/gen/Amazonka/MediaConvert/Types/HlsCaptionLanguageMapping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsCaptionLanguageMapping.hs
@@ -0,0 +1,130 @@
+{-# 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.HlsCaptionLanguageMapping
+-- 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.HlsCaptionLanguageMapping 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.LanguageCode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Caption Language Mapping
+--
+-- /See:/ 'newHlsCaptionLanguageMapping' smart constructor.
+data HlsCaptionLanguageMapping = HlsCaptionLanguageMapping'
+  { -- | Caption channel.
+    captionChannel :: Prelude.Maybe Prelude.Int,
+    -- | Specify the language for this captions channel, using the ISO 639-2 or
+    -- ISO 639-3 three-letter language code
+    customLanguageCode :: Prelude.Maybe Prelude.Text,
+    -- | Specify the language, using the ISO 639-2 three-letter code listed at
+    -- https:\/\/www.loc.gov\/standards\/iso639-2\/php\/code_list.php.
+    languageCode :: Prelude.Maybe LanguageCode,
+    -- | Caption language description.
+    languageDescription :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HlsCaptionLanguageMapping' 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:
+--
+-- 'captionChannel', 'hlsCaptionLanguageMapping_captionChannel' - Caption channel.
+--
+-- 'customLanguageCode', 'hlsCaptionLanguageMapping_customLanguageCode' - Specify the language for this captions channel, using the ISO 639-2 or
+-- ISO 639-3 three-letter language code
+--
+-- 'languageCode', 'hlsCaptionLanguageMapping_languageCode' - Specify the language, using the ISO 639-2 three-letter code listed at
+-- https:\/\/www.loc.gov\/standards\/iso639-2\/php\/code_list.php.
+--
+-- 'languageDescription', 'hlsCaptionLanguageMapping_languageDescription' - Caption language description.
+newHlsCaptionLanguageMapping ::
+  HlsCaptionLanguageMapping
+newHlsCaptionLanguageMapping =
+  HlsCaptionLanguageMapping'
+    { captionChannel =
+        Prelude.Nothing,
+      customLanguageCode = Prelude.Nothing,
+      languageCode = Prelude.Nothing,
+      languageDescription = Prelude.Nothing
+    }
+
+-- | Caption channel.
+hlsCaptionLanguageMapping_captionChannel :: Lens.Lens' HlsCaptionLanguageMapping (Prelude.Maybe Prelude.Int)
+hlsCaptionLanguageMapping_captionChannel = Lens.lens (\HlsCaptionLanguageMapping' {captionChannel} -> captionChannel) (\s@HlsCaptionLanguageMapping' {} a -> s {captionChannel = a} :: HlsCaptionLanguageMapping)
+
+-- | Specify the language for this captions channel, using the ISO 639-2 or
+-- ISO 639-3 three-letter language code
+hlsCaptionLanguageMapping_customLanguageCode :: Lens.Lens' HlsCaptionLanguageMapping (Prelude.Maybe Prelude.Text)
+hlsCaptionLanguageMapping_customLanguageCode = Lens.lens (\HlsCaptionLanguageMapping' {customLanguageCode} -> customLanguageCode) (\s@HlsCaptionLanguageMapping' {} a -> s {customLanguageCode = a} :: HlsCaptionLanguageMapping)
+
+-- | Specify the language, using the ISO 639-2 three-letter code listed at
+-- https:\/\/www.loc.gov\/standards\/iso639-2\/php\/code_list.php.
+hlsCaptionLanguageMapping_languageCode :: Lens.Lens' HlsCaptionLanguageMapping (Prelude.Maybe LanguageCode)
+hlsCaptionLanguageMapping_languageCode = Lens.lens (\HlsCaptionLanguageMapping' {languageCode} -> languageCode) (\s@HlsCaptionLanguageMapping' {} a -> s {languageCode = a} :: HlsCaptionLanguageMapping)
+
+-- | Caption language description.
+hlsCaptionLanguageMapping_languageDescription :: Lens.Lens' HlsCaptionLanguageMapping (Prelude.Maybe Prelude.Text)
+hlsCaptionLanguageMapping_languageDescription = Lens.lens (\HlsCaptionLanguageMapping' {languageDescription} -> languageDescription) (\s@HlsCaptionLanguageMapping' {} a -> s {languageDescription = a} :: HlsCaptionLanguageMapping)
+
+instance Data.FromJSON HlsCaptionLanguageMapping where
+  parseJSON =
+    Data.withObject
+      "HlsCaptionLanguageMapping"
+      ( \x ->
+          HlsCaptionLanguageMapping'
+            Prelude.<$> (x Data..:? "captionChannel")
+            Prelude.<*> (x Data..:? "customLanguageCode")
+            Prelude.<*> (x Data..:? "languageCode")
+            Prelude.<*> (x Data..:? "languageDescription")
+      )
+
+instance Prelude.Hashable HlsCaptionLanguageMapping where
+  hashWithSalt _salt HlsCaptionLanguageMapping' {..} =
+    _salt
+      `Prelude.hashWithSalt` captionChannel
+      `Prelude.hashWithSalt` customLanguageCode
+      `Prelude.hashWithSalt` languageCode
+      `Prelude.hashWithSalt` languageDescription
+
+instance Prelude.NFData HlsCaptionLanguageMapping where
+  rnf HlsCaptionLanguageMapping' {..} =
+    Prelude.rnf captionChannel
+      `Prelude.seq` Prelude.rnf customLanguageCode
+      `Prelude.seq` Prelude.rnf languageCode
+      `Prelude.seq` Prelude.rnf languageDescription
+
+instance Data.ToJSON HlsCaptionLanguageMapping where
+  toJSON HlsCaptionLanguageMapping' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("captionChannel" Data..=)
+              Prelude.<$> captionChannel,
+            ("customLanguageCode" Data..=)
+              Prelude.<$> customLanguageCode,
+            ("languageCode" Data..=) Prelude.<$> languageCode,
+            ("languageDescription" Data..=)
+              Prelude.<$> languageDescription
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/HlsCaptionLanguageSetting.hs b/gen/Amazonka/MediaConvert/Types/HlsCaptionLanguageSetting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsCaptionLanguageSetting.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsCaptionLanguageSetting
+-- 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.HlsCaptionLanguageSetting
+  ( HlsCaptionLanguageSetting
+      ( ..,
+        HlsCaptionLanguageSetting_INSERT,
+        HlsCaptionLanguageSetting_NONE,
+        HlsCaptionLanguageSetting_OMIT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Applies only to 608 Embedded output captions. Insert: Include
+-- CLOSED-CAPTIONS lines in the manifest. Specify at least one language in
+-- the CC1 Language Code field. One CLOSED-CAPTION line is added for each
+-- Language Code you specify. Make sure to specify the languages in the
+-- order in which they appear in the original source (if the source is
+-- embedded format) or the order of the caption selectors (if the source is
+-- other than embedded). Otherwise, languages in the manifest will not
+-- match up properly with the output captions. None: Include
+-- CLOSED-CAPTIONS=NONE line in the manifest. Omit: Omit any
+-- CLOSED-CAPTIONS line from the manifest.
+newtype HlsCaptionLanguageSetting = HlsCaptionLanguageSetting'
+  { fromHlsCaptionLanguageSetting ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsCaptionLanguageSetting_INSERT :: HlsCaptionLanguageSetting
+pattern HlsCaptionLanguageSetting_INSERT = HlsCaptionLanguageSetting' "INSERT"
+
+pattern HlsCaptionLanguageSetting_NONE :: HlsCaptionLanguageSetting
+pattern HlsCaptionLanguageSetting_NONE = HlsCaptionLanguageSetting' "NONE"
+
+pattern HlsCaptionLanguageSetting_OMIT :: HlsCaptionLanguageSetting
+pattern HlsCaptionLanguageSetting_OMIT = HlsCaptionLanguageSetting' "OMIT"
+
+{-# COMPLETE
+  HlsCaptionLanguageSetting_INSERT,
+  HlsCaptionLanguageSetting_NONE,
+  HlsCaptionLanguageSetting_OMIT,
+  HlsCaptionLanguageSetting'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsCaptionSegmentLengthControl.hs b/gen/Amazonka/MediaConvert/Types/HlsCaptionSegmentLengthControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsCaptionSegmentLengthControl.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsCaptionSegmentLengthControl
+-- 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.HlsCaptionSegmentLengthControl
+  ( HlsCaptionSegmentLengthControl
+      ( ..,
+        HlsCaptionSegmentLengthControl_LARGE_SEGMENTS,
+        HlsCaptionSegmentLengthControl_MATCH_VIDEO
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Set Caption segment length control (CaptionSegmentLengthControl) to
+-- Match video (MATCH_VIDEO) to create caption segments that align with the
+-- video segments from the first video output in this output group. For
+-- example, if the video segments are 2 seconds long, your WebVTT segments
+-- will also be 2 seconds long. Keep the default setting, Large segments
+-- (LARGE_SEGMENTS) to create caption segments that are 300 seconds long.
+newtype HlsCaptionSegmentLengthControl = HlsCaptionSegmentLengthControl'
+  { fromHlsCaptionSegmentLengthControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsCaptionSegmentLengthControl_LARGE_SEGMENTS :: HlsCaptionSegmentLengthControl
+pattern HlsCaptionSegmentLengthControl_LARGE_SEGMENTS = HlsCaptionSegmentLengthControl' "LARGE_SEGMENTS"
+
+pattern HlsCaptionSegmentLengthControl_MATCH_VIDEO :: HlsCaptionSegmentLengthControl
+pattern HlsCaptionSegmentLengthControl_MATCH_VIDEO = HlsCaptionSegmentLengthControl' "MATCH_VIDEO"
+
+{-# COMPLETE
+  HlsCaptionSegmentLengthControl_LARGE_SEGMENTS,
+  HlsCaptionSegmentLengthControl_MATCH_VIDEO,
+  HlsCaptionSegmentLengthControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsClientCache.hs b/gen/Amazonka/MediaConvert/Types/HlsClientCache.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsClientCache.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsClientCache
+-- 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.HlsClientCache
+  ( HlsClientCache
+      ( ..,
+        HlsClientCache_DISABLED,
+        HlsClientCache_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Disable this setting only when your workflow requires the
+-- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
+-- (ENABLED) and control caching in your video distribution set up. For
+-- example, use the Cache-Control http header.
+newtype HlsClientCache = HlsClientCache'
+  { fromHlsClientCache ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsClientCache_DISABLED :: HlsClientCache
+pattern HlsClientCache_DISABLED = HlsClientCache' "DISABLED"
+
+pattern HlsClientCache_ENABLED :: HlsClientCache
+pattern HlsClientCache_ENABLED = HlsClientCache' "ENABLED"
+
+{-# COMPLETE
+  HlsClientCache_DISABLED,
+  HlsClientCache_ENABLED,
+  HlsClientCache'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsCodecSpecification.hs b/gen/Amazonka/MediaConvert/Types/HlsCodecSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsCodecSpecification.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsCodecSpecification
+-- 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.HlsCodecSpecification
+  ( HlsCodecSpecification
+      ( ..,
+        HlsCodecSpecification_RFC_4281,
+        HlsCodecSpecification_RFC_6381
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specification to use (RFC-6381 or the default RFC-4281) during m3u8
+-- playlist generation.
+newtype HlsCodecSpecification = HlsCodecSpecification'
+  { fromHlsCodecSpecification ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsCodecSpecification_RFC_4281 :: HlsCodecSpecification
+pattern HlsCodecSpecification_RFC_4281 = HlsCodecSpecification' "RFC_4281"
+
+pattern HlsCodecSpecification_RFC_6381 :: HlsCodecSpecification
+pattern HlsCodecSpecification_RFC_6381 = HlsCodecSpecification' "RFC_6381"
+
+{-# COMPLETE
+  HlsCodecSpecification_RFC_4281,
+  HlsCodecSpecification_RFC_6381,
+  HlsCodecSpecification'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsDescriptiveVideoServiceFlag.hs b/gen/Amazonka/MediaConvert/Types/HlsDescriptiveVideoServiceFlag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsDescriptiveVideoServiceFlag.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsDescriptiveVideoServiceFlag
+-- 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.HlsDescriptiveVideoServiceFlag
+  ( HlsDescriptiveVideoServiceFlag
+      ( ..,
+        HlsDescriptiveVideoServiceFlag_DONT_FLAG,
+        HlsDescriptiveVideoServiceFlag_FLAG
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether to flag this audio track as descriptive video service
+-- (DVS) in your HLS parent manifest. When you choose Flag (FLAG),
+-- MediaConvert includes the parameter
+-- CHARACTERISTICS=\"public.accessibility.describes-video\" in the
+-- EXT-X-MEDIA entry for this track. When you keep the default choice,
+-- Don\'t flag (DONT_FLAG), MediaConvert leaves this parameter out. The DVS
+-- flag can help with accessibility on Apple devices. For more information,
+-- see the Apple documentation.
+newtype HlsDescriptiveVideoServiceFlag = HlsDescriptiveVideoServiceFlag'
+  { fromHlsDescriptiveVideoServiceFlag ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsDescriptiveVideoServiceFlag_DONT_FLAG :: HlsDescriptiveVideoServiceFlag
+pattern HlsDescriptiveVideoServiceFlag_DONT_FLAG = HlsDescriptiveVideoServiceFlag' "DONT_FLAG"
+
+pattern HlsDescriptiveVideoServiceFlag_FLAG :: HlsDescriptiveVideoServiceFlag
+pattern HlsDescriptiveVideoServiceFlag_FLAG = HlsDescriptiveVideoServiceFlag' "FLAG"
+
+{-# COMPLETE
+  HlsDescriptiveVideoServiceFlag_DONT_FLAG,
+  HlsDescriptiveVideoServiceFlag_FLAG,
+  HlsDescriptiveVideoServiceFlag'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsDirectoryStructure.hs b/gen/Amazonka/MediaConvert/Types/HlsDirectoryStructure.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsDirectoryStructure.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsDirectoryStructure
+-- 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.HlsDirectoryStructure
+  ( HlsDirectoryStructure
+      ( ..,
+        HlsDirectoryStructure_SINGLE_DIRECTORY,
+        HlsDirectoryStructure_SUBDIRECTORY_PER_STREAM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Indicates whether segments should be placed in subdirectories.
+newtype HlsDirectoryStructure = HlsDirectoryStructure'
+  { fromHlsDirectoryStructure ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsDirectoryStructure_SINGLE_DIRECTORY :: HlsDirectoryStructure
+pattern HlsDirectoryStructure_SINGLE_DIRECTORY = HlsDirectoryStructure' "SINGLE_DIRECTORY"
+
+pattern HlsDirectoryStructure_SUBDIRECTORY_PER_STREAM :: HlsDirectoryStructure
+pattern HlsDirectoryStructure_SUBDIRECTORY_PER_STREAM = HlsDirectoryStructure' "SUBDIRECTORY_PER_STREAM"
+
+{-# COMPLETE
+  HlsDirectoryStructure_SINGLE_DIRECTORY,
+  HlsDirectoryStructure_SUBDIRECTORY_PER_STREAM,
+  HlsDirectoryStructure'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsEncryptionSettings.hs b/gen/Amazonka/MediaConvert/Types/HlsEncryptionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsEncryptionSettings.hs
@@ -0,0 +1,213 @@
+{-# 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.HlsEncryptionSettings
+-- 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.HlsEncryptionSettings 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.HlsEncryptionType
+import Amazonka.MediaConvert.Types.HlsInitializationVectorInManifest
+import Amazonka.MediaConvert.Types.HlsKeyProviderType
+import Amazonka.MediaConvert.Types.HlsOfflineEncrypted
+import Amazonka.MediaConvert.Types.SpekeKeyProvider
+import Amazonka.MediaConvert.Types.StaticKeyProvider
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for HLS encryption
+--
+-- /See:/ 'newHlsEncryptionSettings' smart constructor.
+data HlsEncryptionSettings = HlsEncryptionSettings'
+  { -- | This is a 128-bit, 16-byte hex value represented by a 32-character text
+    -- string. If this parameter is not set then the Initialization Vector will
+    -- follow the segment number by default.
+    constantInitializationVector :: Prelude.Maybe Prelude.Text,
+    -- | Encrypts the segments with the given encryption scheme. Leave blank to
+    -- disable. Selecting \'Disabled\' in the web interface also disables
+    -- encryption.
+    encryptionMethod :: Prelude.Maybe HlsEncryptionType,
+    -- | The Initialization Vector is a 128-bit number used in conjunction with
+    -- the key for encrypting blocks. If set to INCLUDE, Initialization Vector
+    -- is listed in the manifest. Otherwise Initialization Vector is not in the
+    -- manifest.
+    initializationVectorInManifest :: Prelude.Maybe HlsInitializationVectorInManifest,
+    -- | Enable this setting to insert the EXT-X-SESSION-KEY element into the
+    -- master playlist. This allows for offline Apple HLS FairPlay content
+    -- protection.
+    offlineEncrypted :: Prelude.Maybe HlsOfflineEncrypted,
+    -- | If your output group type is HLS, DASH, or Microsoft Smooth, use these
+    -- settings when doing DRM encryption with a SPEKE-compliant key provider.
+    -- If your output group type is CMAF, use the SpekeKeyProviderCmaf settings
+    -- instead.
+    spekeKeyProvider :: Prelude.Maybe SpekeKeyProvider,
+    -- | Use these settings to set up encryption with a static key provider.
+    staticKeyProvider :: Prelude.Maybe StaticKeyProvider,
+    -- | Specify whether your DRM encryption key is static or from a key provider
+    -- that follows the SPEKE standard. For more information about SPEKE, see
+    -- https:\/\/docs.aws.amazon.com\/speke\/latest\/documentation\/what-is-speke.html.
+    type' :: Prelude.Maybe HlsKeyProviderType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HlsEncryptionSettings' 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:
+--
+-- 'constantInitializationVector', 'hlsEncryptionSettings_constantInitializationVector' - This is a 128-bit, 16-byte hex value represented by a 32-character text
+-- string. If this parameter is not set then the Initialization Vector will
+-- follow the segment number by default.
+--
+-- 'encryptionMethod', 'hlsEncryptionSettings_encryptionMethod' - Encrypts the segments with the given encryption scheme. Leave blank to
+-- disable. Selecting \'Disabled\' in the web interface also disables
+-- encryption.
+--
+-- 'initializationVectorInManifest', 'hlsEncryptionSettings_initializationVectorInManifest' - The Initialization Vector is a 128-bit number used in conjunction with
+-- the key for encrypting blocks. If set to INCLUDE, Initialization Vector
+-- is listed in the manifest. Otherwise Initialization Vector is not in the
+-- manifest.
+--
+-- 'offlineEncrypted', 'hlsEncryptionSettings_offlineEncrypted' - Enable this setting to insert the EXT-X-SESSION-KEY element into the
+-- master playlist. This allows for offline Apple HLS FairPlay content
+-- protection.
+--
+-- 'spekeKeyProvider', 'hlsEncryptionSettings_spekeKeyProvider' - If your output group type is HLS, DASH, or Microsoft Smooth, use these
+-- settings when doing DRM encryption with a SPEKE-compliant key provider.
+-- If your output group type is CMAF, use the SpekeKeyProviderCmaf settings
+-- instead.
+--
+-- 'staticKeyProvider', 'hlsEncryptionSettings_staticKeyProvider' - Use these settings to set up encryption with a static key provider.
+--
+-- 'type'', 'hlsEncryptionSettings_type' - Specify whether your DRM encryption key is static or from a key provider
+-- that follows the SPEKE standard. For more information about SPEKE, see
+-- https:\/\/docs.aws.amazon.com\/speke\/latest\/documentation\/what-is-speke.html.
+newHlsEncryptionSettings ::
+  HlsEncryptionSettings
+newHlsEncryptionSettings =
+  HlsEncryptionSettings'
+    { constantInitializationVector =
+        Prelude.Nothing,
+      encryptionMethod = Prelude.Nothing,
+      initializationVectorInManifest = Prelude.Nothing,
+      offlineEncrypted = Prelude.Nothing,
+      spekeKeyProvider = Prelude.Nothing,
+      staticKeyProvider = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | This is a 128-bit, 16-byte hex value represented by a 32-character text
+-- string. If this parameter is not set then the Initialization Vector will
+-- follow the segment number by default.
+hlsEncryptionSettings_constantInitializationVector :: Lens.Lens' HlsEncryptionSettings (Prelude.Maybe Prelude.Text)
+hlsEncryptionSettings_constantInitializationVector = Lens.lens (\HlsEncryptionSettings' {constantInitializationVector} -> constantInitializationVector) (\s@HlsEncryptionSettings' {} a -> s {constantInitializationVector = a} :: HlsEncryptionSettings)
+
+-- | Encrypts the segments with the given encryption scheme. Leave blank to
+-- disable. Selecting \'Disabled\' in the web interface also disables
+-- encryption.
+hlsEncryptionSettings_encryptionMethod :: Lens.Lens' HlsEncryptionSettings (Prelude.Maybe HlsEncryptionType)
+hlsEncryptionSettings_encryptionMethod = Lens.lens (\HlsEncryptionSettings' {encryptionMethod} -> encryptionMethod) (\s@HlsEncryptionSettings' {} a -> s {encryptionMethod = a} :: HlsEncryptionSettings)
+
+-- | The Initialization Vector is a 128-bit number used in conjunction with
+-- the key for encrypting blocks. If set to INCLUDE, Initialization Vector
+-- is listed in the manifest. Otherwise Initialization Vector is not in the
+-- manifest.
+hlsEncryptionSettings_initializationVectorInManifest :: Lens.Lens' HlsEncryptionSettings (Prelude.Maybe HlsInitializationVectorInManifest)
+hlsEncryptionSettings_initializationVectorInManifest = Lens.lens (\HlsEncryptionSettings' {initializationVectorInManifest} -> initializationVectorInManifest) (\s@HlsEncryptionSettings' {} a -> s {initializationVectorInManifest = a} :: HlsEncryptionSettings)
+
+-- | Enable this setting to insert the EXT-X-SESSION-KEY element into the
+-- master playlist. This allows for offline Apple HLS FairPlay content
+-- protection.
+hlsEncryptionSettings_offlineEncrypted :: Lens.Lens' HlsEncryptionSettings (Prelude.Maybe HlsOfflineEncrypted)
+hlsEncryptionSettings_offlineEncrypted = Lens.lens (\HlsEncryptionSettings' {offlineEncrypted} -> offlineEncrypted) (\s@HlsEncryptionSettings' {} a -> s {offlineEncrypted = a} :: HlsEncryptionSettings)
+
+-- | If your output group type is HLS, DASH, or Microsoft Smooth, use these
+-- settings when doing DRM encryption with a SPEKE-compliant key provider.
+-- If your output group type is CMAF, use the SpekeKeyProviderCmaf settings
+-- instead.
+hlsEncryptionSettings_spekeKeyProvider :: Lens.Lens' HlsEncryptionSettings (Prelude.Maybe SpekeKeyProvider)
+hlsEncryptionSettings_spekeKeyProvider = Lens.lens (\HlsEncryptionSettings' {spekeKeyProvider} -> spekeKeyProvider) (\s@HlsEncryptionSettings' {} a -> s {spekeKeyProvider = a} :: HlsEncryptionSettings)
+
+-- | Use these settings to set up encryption with a static key provider.
+hlsEncryptionSettings_staticKeyProvider :: Lens.Lens' HlsEncryptionSettings (Prelude.Maybe StaticKeyProvider)
+hlsEncryptionSettings_staticKeyProvider = Lens.lens (\HlsEncryptionSettings' {staticKeyProvider} -> staticKeyProvider) (\s@HlsEncryptionSettings' {} a -> s {staticKeyProvider = a} :: HlsEncryptionSettings)
+
+-- | Specify whether your DRM encryption key is static or from a key provider
+-- that follows the SPEKE standard. For more information about SPEKE, see
+-- https:\/\/docs.aws.amazon.com\/speke\/latest\/documentation\/what-is-speke.html.
+hlsEncryptionSettings_type :: Lens.Lens' HlsEncryptionSettings (Prelude.Maybe HlsKeyProviderType)
+hlsEncryptionSettings_type = Lens.lens (\HlsEncryptionSettings' {type'} -> type') (\s@HlsEncryptionSettings' {} a -> s {type' = a} :: HlsEncryptionSettings)
+
+instance Data.FromJSON HlsEncryptionSettings where
+  parseJSON =
+    Data.withObject
+      "HlsEncryptionSettings"
+      ( \x ->
+          HlsEncryptionSettings'
+            Prelude.<$> (x Data..:? "constantInitializationVector")
+            Prelude.<*> (x Data..:? "encryptionMethod")
+            Prelude.<*> (x Data..:? "initializationVectorInManifest")
+            Prelude.<*> (x Data..:? "offlineEncrypted")
+            Prelude.<*> (x Data..:? "spekeKeyProvider")
+            Prelude.<*> (x Data..:? "staticKeyProvider")
+            Prelude.<*> (x Data..:? "type")
+      )
+
+instance Prelude.Hashable HlsEncryptionSettings where
+  hashWithSalt _salt HlsEncryptionSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` constantInitializationVector
+      `Prelude.hashWithSalt` encryptionMethod
+      `Prelude.hashWithSalt` initializationVectorInManifest
+      `Prelude.hashWithSalt` offlineEncrypted
+      `Prelude.hashWithSalt` spekeKeyProvider
+      `Prelude.hashWithSalt` staticKeyProvider
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData HlsEncryptionSettings where
+  rnf HlsEncryptionSettings' {..} =
+    Prelude.rnf constantInitializationVector
+      `Prelude.seq` Prelude.rnf encryptionMethod
+      `Prelude.seq` Prelude.rnf initializationVectorInManifest
+      `Prelude.seq` Prelude.rnf offlineEncrypted
+      `Prelude.seq` Prelude.rnf spekeKeyProvider
+      `Prelude.seq` Prelude.rnf staticKeyProvider
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON HlsEncryptionSettings where
+  toJSON HlsEncryptionSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("constantInitializationVector" Data..=)
+              Prelude.<$> constantInitializationVector,
+            ("encryptionMethod" Data..=)
+              Prelude.<$> encryptionMethod,
+            ("initializationVectorInManifest" Data..=)
+              Prelude.<$> initializationVectorInManifest,
+            ("offlineEncrypted" Data..=)
+              Prelude.<$> offlineEncrypted,
+            ("spekeKeyProvider" Data..=)
+              Prelude.<$> spekeKeyProvider,
+            ("staticKeyProvider" Data..=)
+              Prelude.<$> staticKeyProvider,
+            ("type" Data..=) Prelude.<$> type'
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/HlsEncryptionType.hs b/gen/Amazonka/MediaConvert/Types/HlsEncryptionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsEncryptionType.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsEncryptionType
+-- 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.HlsEncryptionType
+  ( HlsEncryptionType
+      ( ..,
+        HlsEncryptionType_AES128,
+        HlsEncryptionType_SAMPLE_AES
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Encrypts the segments with the given encryption scheme. Leave blank to
+-- disable. Selecting \'Disabled\' in the web interface also disables
+-- encryption.
+newtype HlsEncryptionType = HlsEncryptionType'
+  { fromHlsEncryptionType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsEncryptionType_AES128 :: HlsEncryptionType
+pattern HlsEncryptionType_AES128 = HlsEncryptionType' "AES128"
+
+pattern HlsEncryptionType_SAMPLE_AES :: HlsEncryptionType
+pattern HlsEncryptionType_SAMPLE_AES = HlsEncryptionType' "SAMPLE_AES"
+
+{-# COMPLETE
+  HlsEncryptionType_AES128,
+  HlsEncryptionType_SAMPLE_AES,
+  HlsEncryptionType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsGroupSettings.hs b/gen/Amazonka/MediaConvert/Types/HlsGroupSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsGroupSettings.hs
@@ -0,0 +1,822 @@
+{-# 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.HlsGroupSettings
+-- 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.HlsGroupSettings 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.DestinationSettings
+import Amazonka.MediaConvert.Types.HlsAdMarkers
+import Amazonka.MediaConvert.Types.HlsAdditionalManifest
+import Amazonka.MediaConvert.Types.HlsAudioOnlyHeader
+import Amazonka.MediaConvert.Types.HlsCaptionLanguageMapping
+import Amazonka.MediaConvert.Types.HlsCaptionLanguageSetting
+import Amazonka.MediaConvert.Types.HlsCaptionSegmentLengthControl
+import Amazonka.MediaConvert.Types.HlsClientCache
+import Amazonka.MediaConvert.Types.HlsCodecSpecification
+import Amazonka.MediaConvert.Types.HlsDirectoryStructure
+import Amazonka.MediaConvert.Types.HlsEncryptionSettings
+import Amazonka.MediaConvert.Types.HlsImageBasedTrickPlay
+import Amazonka.MediaConvert.Types.HlsImageBasedTrickPlaySettings
+import Amazonka.MediaConvert.Types.HlsManifestCompression
+import Amazonka.MediaConvert.Types.HlsManifestDurationFormat
+import Amazonka.MediaConvert.Types.HlsOutputSelection
+import Amazonka.MediaConvert.Types.HlsProgramDateTime
+import Amazonka.MediaConvert.Types.HlsSegmentControl
+import Amazonka.MediaConvert.Types.HlsSegmentLengthControl
+import Amazonka.MediaConvert.Types.HlsStreamInfResolution
+import Amazonka.MediaConvert.Types.HlsTargetDurationCompatibilityMode
+import Amazonka.MediaConvert.Types.HlsTimedMetadataId3Frame
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to your HLS output package. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set Type, under
+-- OutputGroupSettings, to HLS_GROUP_SETTINGS.
+--
+-- /See:/ 'newHlsGroupSettings' smart constructor.
+data HlsGroupSettings = HlsGroupSettings'
+  { -- | Choose one or more ad marker types to decorate your Apple HLS manifest.
+    -- This setting does not determine whether SCTE-35 markers appear in the
+    -- outputs themselves.
+    adMarkers :: Prelude.Maybe [HlsAdMarkers],
+    -- | By default, the service creates one top-level .m3u8 HLS manifest for
+    -- each HLS output group in your job. This default manifest references
+    -- every output in the output group. To create additional top-level
+    -- manifests that reference a subset of the outputs in the output group,
+    -- specify a list of them here.
+    additionalManifests :: Prelude.Maybe [HlsAdditionalManifest],
+    -- | Ignore this setting unless you are using FairPlay DRM with Verimatrix
+    -- and you encounter playback issues. Keep the default value, Include
+    -- (INCLUDE), to output audio-only headers. Choose Exclude (EXCLUDE) to
+    -- remove the audio-only headers from your audio segments.
+    audioOnlyHeader :: Prelude.Maybe HlsAudioOnlyHeader,
+    -- | A partial URI prefix that will be prepended to each output in the media
+    -- .m3u8 file. Can be used if base manifest is delivered from a different
+    -- URL than the main .m3u8 file.
+    baseUrl :: Prelude.Maybe Prelude.Text,
+    -- | Language to be used on Caption outputs
+    captionLanguageMappings :: Prelude.Maybe [HlsCaptionLanguageMapping],
+    -- | Applies only to 608 Embedded output captions. Insert: Include
+    -- CLOSED-CAPTIONS lines in the manifest. Specify at least one language in
+    -- the CC1 Language Code field. One CLOSED-CAPTION line is added for each
+    -- Language Code you specify. Make sure to specify the languages in the
+    -- order in which they appear in the original source (if the source is
+    -- embedded format) or the order of the caption selectors (if the source is
+    -- other than embedded). Otherwise, languages in the manifest will not
+    -- match up properly with the output captions. None: Include
+    -- CLOSED-CAPTIONS=NONE line in the manifest. Omit: Omit any
+    -- CLOSED-CAPTIONS line from the manifest.
+    captionLanguageSetting :: Prelude.Maybe HlsCaptionLanguageSetting,
+    -- | Set Caption segment length control (CaptionSegmentLengthControl) to
+    -- Match video (MATCH_VIDEO) to create caption segments that align with the
+    -- video segments from the first video output in this output group. For
+    -- example, if the video segments are 2 seconds long, your WebVTT segments
+    -- will also be 2 seconds long. Keep the default setting, Large segments
+    -- (LARGE_SEGMENTS) to create caption segments that are 300 seconds long.
+    captionSegmentLengthControl :: Prelude.Maybe HlsCaptionSegmentLengthControl,
+    -- | Disable this setting only when your workflow requires the
+    -- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
+    -- (ENABLED) and control caching in your video distribution set up. For
+    -- example, use the Cache-Control http header.
+    clientCache :: Prelude.Maybe HlsClientCache,
+    -- | Specification to use (RFC-6381 or the default RFC-4281) during m3u8
+    -- playlist generation.
+    codecSpecification :: Prelude.Maybe HlsCodecSpecification,
+    -- | Use Destination (Destination) to specify the S3 output location and the
+    -- output filename base. Destination accepts format identifiers. If you do
+    -- not specify the base filename in the URI, the service will use the
+    -- filename of the input file. If your job has multiple inputs, the service
+    -- uses the filename of the first input file.
+    destination :: Prelude.Maybe Prelude.Text,
+    -- | Settings associated with the destination. Will vary based on the type of
+    -- destination
+    destinationSettings :: Prelude.Maybe DestinationSettings,
+    -- | Indicates whether segments should be placed in subdirectories.
+    directoryStructure :: Prelude.Maybe HlsDirectoryStructure,
+    -- | DRM settings.
+    encryption :: Prelude.Maybe HlsEncryptionSettings,
+    -- | Specify whether MediaConvert generates images for trick play. Keep the
+    -- default value, None (NONE), to not generate any images. Choose Thumbnail
+    -- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
+    -- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
+    -- full-resolution images of single frames. MediaConvert creates a child
+    -- manifest for each set of images that you generate and adds corresponding
+    -- entries to the parent manifest. A common application for these images is
+    -- Roku trick mode. The thumbnails and full-frame images that MediaConvert
+    -- creates with this feature are compatible with this Roku specification:
+    -- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
+    imageBasedTrickPlay :: Prelude.Maybe HlsImageBasedTrickPlay,
+    -- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
+    -- ADVANCED
+    imageBasedTrickPlaySettings :: Prelude.Maybe HlsImageBasedTrickPlaySettings,
+    -- | When set to GZIP, compresses HLS playlist.
+    manifestCompression :: Prelude.Maybe HlsManifestCompression,
+    -- | Indicates whether the output manifest should use floating point values
+    -- for segment duration.
+    manifestDurationFormat :: Prelude.Maybe HlsManifestDurationFormat,
+    -- | Keep this setting at the default value of 0, unless you are
+    -- troubleshooting a problem with how devices play back the end of your
+    -- video asset. If you know that player devices are hanging on the final
+    -- segment of your video because the length of your final segment is too
+    -- short, use this setting to specify a minimum final segment length, in
+    -- seconds. Choose a value that is greater than or equal to 1 and less than
+    -- your segment length. When you specify a value for this setting, the
+    -- encoder will combine any final segment that is shorter than the length
+    -- that you specify with the previous segment. For example, your segment
+    -- length is 3 seconds and your final segment is .5 seconds without a
+    -- minimum final segment length; when you set the minimum final segment
+    -- length to 1, your final segment is 3.5 seconds.
+    minFinalSegmentLength :: Prelude.Maybe Prelude.Double,
+    -- | When set, Minimum Segment Size is enforced by looking ahead and back
+    -- within the specified range for a nearby avail and extending the segment
+    -- size if needed.
+    minSegmentLength :: Prelude.Maybe Prelude.Natural,
+    -- | Indicates whether the .m3u8 manifest file should be generated for this
+    -- HLS output group.
+    outputSelection :: Prelude.Maybe HlsOutputSelection,
+    -- | Includes or excludes EXT-X-PROGRAM-DATE-TIME tag in .m3u8 manifest
+    -- files. The value is calculated as follows: either the program date and
+    -- time are initialized using the input timecode source, or the time is
+    -- initialized using the input timecode source and the date is initialized
+    -- using the timestamp_offset.
+    programDateTime :: Prelude.Maybe HlsProgramDateTime,
+    -- | Period of insertion of EXT-X-PROGRAM-DATE-TIME entry, in seconds.
+    programDateTimePeriod :: Prelude.Maybe Prelude.Natural,
+    -- | When set to SINGLE_FILE, emits program as a single media resource (.ts)
+    -- file, uses #EXT-X-BYTERANGE tags to index segment for playback.
+    segmentControl :: Prelude.Maybe HlsSegmentControl,
+    -- | Specify the length, in whole seconds, of each segment. When you don\'t
+    -- specify a value, MediaConvert defaults to 10. Related settings: Use
+    -- Segment length control (SegmentLengthControl) to specify whether the
+    -- encoder enforces this value strictly. Use Segment control
+    -- (HlsSegmentControl) to specify whether MediaConvert creates separate
+    -- segment files or one content file that has metadata to mark the segment
+    -- boundaries.
+    segmentLength :: Prelude.Maybe Prelude.Natural,
+    -- | Specify how you want MediaConvert to determine the segment length.
+    -- Choose Exact (EXACT) to have the encoder use the exact length that you
+    -- specify with the setting Segment length (SegmentLength). This might
+    -- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+    -- the encoder round up the segment lengths to match the next GOP boundary.
+    segmentLengthControl :: Prelude.Maybe HlsSegmentLengthControl,
+    -- | Number of segments to write to a subdirectory before starting a new one.
+    -- directoryStructure must be SINGLE_DIRECTORY for this setting to have an
+    -- effect.
+    segmentsPerSubdirectory :: Prelude.Maybe Prelude.Natural,
+    -- | Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
+    -- tag of variant manifest.
+    streamInfResolution :: Prelude.Maybe HlsStreamInfResolution,
+    -- | When set to LEGACY, the segment target duration is always rounded up to
+    -- the nearest integer value above its current value in seconds. When set
+    -- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
+    -- nearest integer value if fraction seconds are greater than or equal to
+    -- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
+    -- use LEGACY if your client needs to ensure that the target duration is
+    -- always longer than the actual duration of the segment. Some older
+    -- players may experience interrupted playback when the actual duration of
+    -- a track in a segment is longer than the target duration.
+    targetDurationCompatibilityMode :: Prelude.Maybe HlsTargetDurationCompatibilityMode,
+    -- | Specify the type of the ID3 frame (timedMetadataId3Frame) to use for ID3
+    -- timestamps (timedMetadataId3Period) in your output. To include ID3
+    -- timestamps: Specify PRIV (PRIV) or TDRL (TDRL) and set ID3 metadata
+    -- (timedMetadata) to Passthrough (PASSTHROUGH). To exclude ID3 timestamps:
+    -- Set ID3 timestamp frame type to None (NONE).
+    timedMetadataId3Frame :: Prelude.Maybe HlsTimedMetadataId3Frame,
+    -- | Specify the interval in seconds to write ID3 timestamps in your output.
+    -- The first timestamp starts at the output timecode and date, and
+    -- increases incrementally with each ID3 timestamp. To use the default
+    -- interval of 10 seconds: Leave blank. To include this metadata in your
+    -- output: Set ID3 timestamp frame type (timedMetadataId3Frame) to PRIV
+    -- (PRIV) or TDRL (TDRL), and set ID3 metadata (timedMetadata) to
+    -- Passthrough (PASSTHROUGH).
+    timedMetadataId3Period :: Prelude.Maybe Prelude.Int,
+    -- | Provides an extra millisecond delta offset to fine tune the timestamps.
+    timestampDeltaMilliseconds :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HlsGroupSettings' 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:
+--
+-- 'adMarkers', 'hlsGroupSettings_adMarkers' - Choose one or more ad marker types to decorate your Apple HLS manifest.
+-- This setting does not determine whether SCTE-35 markers appear in the
+-- outputs themselves.
+--
+-- 'additionalManifests', 'hlsGroupSettings_additionalManifests' - By default, the service creates one top-level .m3u8 HLS manifest for
+-- each HLS output group in your job. This default manifest references
+-- every output in the output group. To create additional top-level
+-- manifests that reference a subset of the outputs in the output group,
+-- specify a list of them here.
+--
+-- 'audioOnlyHeader', 'hlsGroupSettings_audioOnlyHeader' - Ignore this setting unless you are using FairPlay DRM with Verimatrix
+-- and you encounter playback issues. Keep the default value, Include
+-- (INCLUDE), to output audio-only headers. Choose Exclude (EXCLUDE) to
+-- remove the audio-only headers from your audio segments.
+--
+-- 'baseUrl', 'hlsGroupSettings_baseUrl' - A partial URI prefix that will be prepended to each output in the media
+-- .m3u8 file. Can be used if base manifest is delivered from a different
+-- URL than the main .m3u8 file.
+--
+-- 'captionLanguageMappings', 'hlsGroupSettings_captionLanguageMappings' - Language to be used on Caption outputs
+--
+-- 'captionLanguageSetting', 'hlsGroupSettings_captionLanguageSetting' - Applies only to 608 Embedded output captions. Insert: Include
+-- CLOSED-CAPTIONS lines in the manifest. Specify at least one language in
+-- the CC1 Language Code field. One CLOSED-CAPTION line is added for each
+-- Language Code you specify. Make sure to specify the languages in the
+-- order in which they appear in the original source (if the source is
+-- embedded format) or the order of the caption selectors (if the source is
+-- other than embedded). Otherwise, languages in the manifest will not
+-- match up properly with the output captions. None: Include
+-- CLOSED-CAPTIONS=NONE line in the manifest. Omit: Omit any
+-- CLOSED-CAPTIONS line from the manifest.
+--
+-- 'captionSegmentLengthControl', 'hlsGroupSettings_captionSegmentLengthControl' - Set Caption segment length control (CaptionSegmentLengthControl) to
+-- Match video (MATCH_VIDEO) to create caption segments that align with the
+-- video segments from the first video output in this output group. For
+-- example, if the video segments are 2 seconds long, your WebVTT segments
+-- will also be 2 seconds long. Keep the default setting, Large segments
+-- (LARGE_SEGMENTS) to create caption segments that are 300 seconds long.
+--
+-- 'clientCache', 'hlsGroupSettings_clientCache' - Disable this setting only when your workflow requires the
+-- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
+-- (ENABLED) and control caching in your video distribution set up. For
+-- example, use the Cache-Control http header.
+--
+-- 'codecSpecification', 'hlsGroupSettings_codecSpecification' - Specification to use (RFC-6381 or the default RFC-4281) during m3u8
+-- playlist generation.
+--
+-- 'destination', 'hlsGroupSettings_destination' - Use Destination (Destination) to specify the S3 output location and the
+-- output filename base. Destination accepts format identifiers. If you do
+-- not specify the base filename in the URI, the service will use the
+-- filename of the input file. If your job has multiple inputs, the service
+-- uses the filename of the first input file.
+--
+-- 'destinationSettings', 'hlsGroupSettings_destinationSettings' - Settings associated with the destination. Will vary based on the type of
+-- destination
+--
+-- 'directoryStructure', 'hlsGroupSettings_directoryStructure' - Indicates whether segments should be placed in subdirectories.
+--
+-- 'encryption', 'hlsGroupSettings_encryption' - DRM settings.
+--
+-- 'imageBasedTrickPlay', 'hlsGroupSettings_imageBasedTrickPlay' - Specify whether MediaConvert generates images for trick play. Keep the
+-- default value, None (NONE), to not generate any images. Choose Thumbnail
+-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
+-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
+-- full-resolution images of single frames. MediaConvert creates a child
+-- manifest for each set of images that you generate and adds corresponding
+-- entries to the parent manifest. A common application for these images is
+-- Roku trick mode. The thumbnails and full-frame images that MediaConvert
+-- creates with this feature are compatible with this Roku specification:
+-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
+--
+-- 'imageBasedTrickPlaySettings', 'hlsGroupSettings_imageBasedTrickPlaySettings' - Tile and thumbnail settings applicable when imageBasedTrickPlay is
+-- ADVANCED
+--
+-- 'manifestCompression', 'hlsGroupSettings_manifestCompression' - When set to GZIP, compresses HLS playlist.
+--
+-- 'manifestDurationFormat', 'hlsGroupSettings_manifestDurationFormat' - Indicates whether the output manifest should use floating point values
+-- for segment duration.
+--
+-- 'minFinalSegmentLength', 'hlsGroupSettings_minFinalSegmentLength' - Keep this setting at the default value of 0, unless you are
+-- troubleshooting a problem with how devices play back the end of your
+-- video asset. If you know that player devices are hanging on the final
+-- segment of your video because the length of your final segment is too
+-- short, use this setting to specify a minimum final segment length, in
+-- seconds. Choose a value that is greater than or equal to 1 and less than
+-- your segment length. When you specify a value for this setting, the
+-- encoder will combine any final segment that is shorter than the length
+-- that you specify with the previous segment. For example, your segment
+-- length is 3 seconds and your final segment is .5 seconds without a
+-- minimum final segment length; when you set the minimum final segment
+-- length to 1, your final segment is 3.5 seconds.
+--
+-- 'minSegmentLength', 'hlsGroupSettings_minSegmentLength' - When set, Minimum Segment Size is enforced by looking ahead and back
+-- within the specified range for a nearby avail and extending the segment
+-- size if needed.
+--
+-- 'outputSelection', 'hlsGroupSettings_outputSelection' - Indicates whether the .m3u8 manifest file should be generated for this
+-- HLS output group.
+--
+-- 'programDateTime', 'hlsGroupSettings_programDateTime' - Includes or excludes EXT-X-PROGRAM-DATE-TIME tag in .m3u8 manifest
+-- files. The value is calculated as follows: either the program date and
+-- time are initialized using the input timecode source, or the time is
+-- initialized using the input timecode source and the date is initialized
+-- using the timestamp_offset.
+--
+-- 'programDateTimePeriod', 'hlsGroupSettings_programDateTimePeriod' - Period of insertion of EXT-X-PROGRAM-DATE-TIME entry, in seconds.
+--
+-- 'segmentControl', 'hlsGroupSettings_segmentControl' - When set to SINGLE_FILE, emits program as a single media resource (.ts)
+-- file, uses #EXT-X-BYTERANGE tags to index segment for playback.
+--
+-- 'segmentLength', 'hlsGroupSettings_segmentLength' - Specify the length, in whole seconds, of each segment. When you don\'t
+-- specify a value, MediaConvert defaults to 10. Related settings: Use
+-- Segment length control (SegmentLengthControl) to specify whether the
+-- encoder enforces this value strictly. Use Segment control
+-- (HlsSegmentControl) to specify whether MediaConvert creates separate
+-- segment files or one content file that has metadata to mark the segment
+-- boundaries.
+--
+-- 'segmentLengthControl', 'hlsGroupSettings_segmentLengthControl' - Specify how you want MediaConvert to determine the segment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Segment length (SegmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+--
+-- 'segmentsPerSubdirectory', 'hlsGroupSettings_segmentsPerSubdirectory' - Number of segments to write to a subdirectory before starting a new one.
+-- directoryStructure must be SINGLE_DIRECTORY for this setting to have an
+-- effect.
+--
+-- 'streamInfResolution', 'hlsGroupSettings_streamInfResolution' - Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
+-- tag of variant manifest.
+--
+-- 'targetDurationCompatibilityMode', 'hlsGroupSettings_targetDurationCompatibilityMode' - When set to LEGACY, the segment target duration is always rounded up to
+-- the nearest integer value above its current value in seconds. When set
+-- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
+-- nearest integer value if fraction seconds are greater than or equal to
+-- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
+-- use LEGACY if your client needs to ensure that the target duration is
+-- always longer than the actual duration of the segment. Some older
+-- players may experience interrupted playback when the actual duration of
+-- a track in a segment is longer than the target duration.
+--
+-- 'timedMetadataId3Frame', 'hlsGroupSettings_timedMetadataId3Frame' - Specify the type of the ID3 frame (timedMetadataId3Frame) to use for ID3
+-- timestamps (timedMetadataId3Period) in your output. To include ID3
+-- timestamps: Specify PRIV (PRIV) or TDRL (TDRL) and set ID3 metadata
+-- (timedMetadata) to Passthrough (PASSTHROUGH). To exclude ID3 timestamps:
+-- Set ID3 timestamp frame type to None (NONE).
+--
+-- 'timedMetadataId3Period', 'hlsGroupSettings_timedMetadataId3Period' - Specify the interval in seconds to write ID3 timestamps in your output.
+-- The first timestamp starts at the output timecode and date, and
+-- increases incrementally with each ID3 timestamp. To use the default
+-- interval of 10 seconds: Leave blank. To include this metadata in your
+-- output: Set ID3 timestamp frame type (timedMetadataId3Frame) to PRIV
+-- (PRIV) or TDRL (TDRL), and set ID3 metadata (timedMetadata) to
+-- Passthrough (PASSTHROUGH).
+--
+-- 'timestampDeltaMilliseconds', 'hlsGroupSettings_timestampDeltaMilliseconds' - Provides an extra millisecond delta offset to fine tune the timestamps.
+newHlsGroupSettings ::
+  HlsGroupSettings
+newHlsGroupSettings =
+  HlsGroupSettings'
+    { adMarkers = Prelude.Nothing,
+      additionalManifests = Prelude.Nothing,
+      audioOnlyHeader = Prelude.Nothing,
+      baseUrl = Prelude.Nothing,
+      captionLanguageMappings = Prelude.Nothing,
+      captionLanguageSetting = Prelude.Nothing,
+      captionSegmentLengthControl = Prelude.Nothing,
+      clientCache = Prelude.Nothing,
+      codecSpecification = Prelude.Nothing,
+      destination = Prelude.Nothing,
+      destinationSettings = Prelude.Nothing,
+      directoryStructure = Prelude.Nothing,
+      encryption = Prelude.Nothing,
+      imageBasedTrickPlay = Prelude.Nothing,
+      imageBasedTrickPlaySettings = Prelude.Nothing,
+      manifestCompression = Prelude.Nothing,
+      manifestDurationFormat = Prelude.Nothing,
+      minFinalSegmentLength = Prelude.Nothing,
+      minSegmentLength = Prelude.Nothing,
+      outputSelection = Prelude.Nothing,
+      programDateTime = Prelude.Nothing,
+      programDateTimePeriod = Prelude.Nothing,
+      segmentControl = Prelude.Nothing,
+      segmentLength = Prelude.Nothing,
+      segmentLengthControl = Prelude.Nothing,
+      segmentsPerSubdirectory = Prelude.Nothing,
+      streamInfResolution = Prelude.Nothing,
+      targetDurationCompatibilityMode = Prelude.Nothing,
+      timedMetadataId3Frame = Prelude.Nothing,
+      timedMetadataId3Period = Prelude.Nothing,
+      timestampDeltaMilliseconds = Prelude.Nothing
+    }
+
+-- | Choose one or more ad marker types to decorate your Apple HLS manifest.
+-- This setting does not determine whether SCTE-35 markers appear in the
+-- outputs themselves.
+hlsGroupSettings_adMarkers :: Lens.Lens' HlsGroupSettings (Prelude.Maybe [HlsAdMarkers])
+hlsGroupSettings_adMarkers = Lens.lens (\HlsGroupSettings' {adMarkers} -> adMarkers) (\s@HlsGroupSettings' {} a -> s {adMarkers = a} :: HlsGroupSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | By default, the service creates one top-level .m3u8 HLS manifest for
+-- each HLS output group in your job. This default manifest references
+-- every output in the output group. To create additional top-level
+-- manifests that reference a subset of the outputs in the output group,
+-- specify a list of them here.
+hlsGroupSettings_additionalManifests :: Lens.Lens' HlsGroupSettings (Prelude.Maybe [HlsAdditionalManifest])
+hlsGroupSettings_additionalManifests = Lens.lens (\HlsGroupSettings' {additionalManifests} -> additionalManifests) (\s@HlsGroupSettings' {} a -> s {additionalManifests = a} :: HlsGroupSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | Ignore this setting unless you are using FairPlay DRM with Verimatrix
+-- and you encounter playback issues. Keep the default value, Include
+-- (INCLUDE), to output audio-only headers. Choose Exclude (EXCLUDE) to
+-- remove the audio-only headers from your audio segments.
+hlsGroupSettings_audioOnlyHeader :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsAudioOnlyHeader)
+hlsGroupSettings_audioOnlyHeader = Lens.lens (\HlsGroupSettings' {audioOnlyHeader} -> audioOnlyHeader) (\s@HlsGroupSettings' {} a -> s {audioOnlyHeader = a} :: HlsGroupSettings)
+
+-- | A partial URI prefix that will be prepended to each output in the media
+-- .m3u8 file. Can be used if base manifest is delivered from a different
+-- URL than the main .m3u8 file.
+hlsGroupSettings_baseUrl :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Text)
+hlsGroupSettings_baseUrl = Lens.lens (\HlsGroupSettings' {baseUrl} -> baseUrl) (\s@HlsGroupSettings' {} a -> s {baseUrl = a} :: HlsGroupSettings)
+
+-- | Language to be used on Caption outputs
+hlsGroupSettings_captionLanguageMappings :: Lens.Lens' HlsGroupSettings (Prelude.Maybe [HlsCaptionLanguageMapping])
+hlsGroupSettings_captionLanguageMappings = Lens.lens (\HlsGroupSettings' {captionLanguageMappings} -> captionLanguageMappings) (\s@HlsGroupSettings' {} a -> s {captionLanguageMappings = a} :: HlsGroupSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | Applies only to 608 Embedded output captions. Insert: Include
+-- CLOSED-CAPTIONS lines in the manifest. Specify at least one language in
+-- the CC1 Language Code field. One CLOSED-CAPTION line is added for each
+-- Language Code you specify. Make sure to specify the languages in the
+-- order in which they appear in the original source (if the source is
+-- embedded format) or the order of the caption selectors (if the source is
+-- other than embedded). Otherwise, languages in the manifest will not
+-- match up properly with the output captions. None: Include
+-- CLOSED-CAPTIONS=NONE line in the manifest. Omit: Omit any
+-- CLOSED-CAPTIONS line from the manifest.
+hlsGroupSettings_captionLanguageSetting :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsCaptionLanguageSetting)
+hlsGroupSettings_captionLanguageSetting = Lens.lens (\HlsGroupSettings' {captionLanguageSetting} -> captionLanguageSetting) (\s@HlsGroupSettings' {} a -> s {captionLanguageSetting = a} :: HlsGroupSettings)
+
+-- | Set Caption segment length control (CaptionSegmentLengthControl) to
+-- Match video (MATCH_VIDEO) to create caption segments that align with the
+-- video segments from the first video output in this output group. For
+-- example, if the video segments are 2 seconds long, your WebVTT segments
+-- will also be 2 seconds long. Keep the default setting, Large segments
+-- (LARGE_SEGMENTS) to create caption segments that are 300 seconds long.
+hlsGroupSettings_captionSegmentLengthControl :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsCaptionSegmentLengthControl)
+hlsGroupSettings_captionSegmentLengthControl = Lens.lens (\HlsGroupSettings' {captionSegmentLengthControl} -> captionSegmentLengthControl) (\s@HlsGroupSettings' {} a -> s {captionSegmentLengthControl = a} :: HlsGroupSettings)
+
+-- | Disable this setting only when your workflow requires the
+-- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
+-- (ENABLED) and control caching in your video distribution set up. For
+-- example, use the Cache-Control http header.
+hlsGroupSettings_clientCache :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsClientCache)
+hlsGroupSettings_clientCache = Lens.lens (\HlsGroupSettings' {clientCache} -> clientCache) (\s@HlsGroupSettings' {} a -> s {clientCache = a} :: HlsGroupSettings)
+
+-- | Specification to use (RFC-6381 or the default RFC-4281) during m3u8
+-- playlist generation.
+hlsGroupSettings_codecSpecification :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsCodecSpecification)
+hlsGroupSettings_codecSpecification = Lens.lens (\HlsGroupSettings' {codecSpecification} -> codecSpecification) (\s@HlsGroupSettings' {} a -> s {codecSpecification = a} :: HlsGroupSettings)
+
+-- | Use Destination (Destination) to specify the S3 output location and the
+-- output filename base. Destination accepts format identifiers. If you do
+-- not specify the base filename in the URI, the service will use the
+-- filename of the input file. If your job has multiple inputs, the service
+-- uses the filename of the first input file.
+hlsGroupSettings_destination :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Text)
+hlsGroupSettings_destination = Lens.lens (\HlsGroupSettings' {destination} -> destination) (\s@HlsGroupSettings' {} a -> s {destination = a} :: HlsGroupSettings)
+
+-- | Settings associated with the destination. Will vary based on the type of
+-- destination
+hlsGroupSettings_destinationSettings :: Lens.Lens' HlsGroupSettings (Prelude.Maybe DestinationSettings)
+hlsGroupSettings_destinationSettings = Lens.lens (\HlsGroupSettings' {destinationSettings} -> destinationSettings) (\s@HlsGroupSettings' {} a -> s {destinationSettings = a} :: HlsGroupSettings)
+
+-- | Indicates whether segments should be placed in subdirectories.
+hlsGroupSettings_directoryStructure :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsDirectoryStructure)
+hlsGroupSettings_directoryStructure = Lens.lens (\HlsGroupSettings' {directoryStructure} -> directoryStructure) (\s@HlsGroupSettings' {} a -> s {directoryStructure = a} :: HlsGroupSettings)
+
+-- | DRM settings.
+hlsGroupSettings_encryption :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsEncryptionSettings)
+hlsGroupSettings_encryption = Lens.lens (\HlsGroupSettings' {encryption} -> encryption) (\s@HlsGroupSettings' {} a -> s {encryption = a} :: HlsGroupSettings)
+
+-- | Specify whether MediaConvert generates images for trick play. Keep the
+-- default value, None (NONE), to not generate any images. Choose Thumbnail
+-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
+-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
+-- full-resolution images of single frames. MediaConvert creates a child
+-- manifest for each set of images that you generate and adds corresponding
+-- entries to the parent manifest. A common application for these images is
+-- Roku trick mode. The thumbnails and full-frame images that MediaConvert
+-- creates with this feature are compatible with this Roku specification:
+-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
+hlsGroupSettings_imageBasedTrickPlay :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsImageBasedTrickPlay)
+hlsGroupSettings_imageBasedTrickPlay = Lens.lens (\HlsGroupSettings' {imageBasedTrickPlay} -> imageBasedTrickPlay) (\s@HlsGroupSettings' {} a -> s {imageBasedTrickPlay = a} :: HlsGroupSettings)
+
+-- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
+-- ADVANCED
+hlsGroupSettings_imageBasedTrickPlaySettings :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsImageBasedTrickPlaySettings)
+hlsGroupSettings_imageBasedTrickPlaySettings = Lens.lens (\HlsGroupSettings' {imageBasedTrickPlaySettings} -> imageBasedTrickPlaySettings) (\s@HlsGroupSettings' {} a -> s {imageBasedTrickPlaySettings = a} :: HlsGroupSettings)
+
+-- | When set to GZIP, compresses HLS playlist.
+hlsGroupSettings_manifestCompression :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsManifestCompression)
+hlsGroupSettings_manifestCompression = Lens.lens (\HlsGroupSettings' {manifestCompression} -> manifestCompression) (\s@HlsGroupSettings' {} a -> s {manifestCompression = a} :: HlsGroupSettings)
+
+-- | Indicates whether the output manifest should use floating point values
+-- for segment duration.
+hlsGroupSettings_manifestDurationFormat :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsManifestDurationFormat)
+hlsGroupSettings_manifestDurationFormat = Lens.lens (\HlsGroupSettings' {manifestDurationFormat} -> manifestDurationFormat) (\s@HlsGroupSettings' {} a -> s {manifestDurationFormat = a} :: HlsGroupSettings)
+
+-- | Keep this setting at the default value of 0, unless you are
+-- troubleshooting a problem with how devices play back the end of your
+-- video asset. If you know that player devices are hanging on the final
+-- segment of your video because the length of your final segment is too
+-- short, use this setting to specify a minimum final segment length, in
+-- seconds. Choose a value that is greater than or equal to 1 and less than
+-- your segment length. When you specify a value for this setting, the
+-- encoder will combine any final segment that is shorter than the length
+-- that you specify with the previous segment. For example, your segment
+-- length is 3 seconds and your final segment is .5 seconds without a
+-- minimum final segment length; when you set the minimum final segment
+-- length to 1, your final segment is 3.5 seconds.
+hlsGroupSettings_minFinalSegmentLength :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Double)
+hlsGroupSettings_minFinalSegmentLength = Lens.lens (\HlsGroupSettings' {minFinalSegmentLength} -> minFinalSegmentLength) (\s@HlsGroupSettings' {} a -> s {minFinalSegmentLength = a} :: HlsGroupSettings)
+
+-- | When set, Minimum Segment Size is enforced by looking ahead and back
+-- within the specified range for a nearby avail and extending the segment
+-- size if needed.
+hlsGroupSettings_minSegmentLength :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Natural)
+hlsGroupSettings_minSegmentLength = Lens.lens (\HlsGroupSettings' {minSegmentLength} -> minSegmentLength) (\s@HlsGroupSettings' {} a -> s {minSegmentLength = a} :: HlsGroupSettings)
+
+-- | Indicates whether the .m3u8 manifest file should be generated for this
+-- HLS output group.
+hlsGroupSettings_outputSelection :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsOutputSelection)
+hlsGroupSettings_outputSelection = Lens.lens (\HlsGroupSettings' {outputSelection} -> outputSelection) (\s@HlsGroupSettings' {} a -> s {outputSelection = a} :: HlsGroupSettings)
+
+-- | Includes or excludes EXT-X-PROGRAM-DATE-TIME tag in .m3u8 manifest
+-- files. The value is calculated as follows: either the program date and
+-- time are initialized using the input timecode source, or the time is
+-- initialized using the input timecode source and the date is initialized
+-- using the timestamp_offset.
+hlsGroupSettings_programDateTime :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsProgramDateTime)
+hlsGroupSettings_programDateTime = Lens.lens (\HlsGroupSettings' {programDateTime} -> programDateTime) (\s@HlsGroupSettings' {} a -> s {programDateTime = a} :: HlsGroupSettings)
+
+-- | Period of insertion of EXT-X-PROGRAM-DATE-TIME entry, in seconds.
+hlsGroupSettings_programDateTimePeriod :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Natural)
+hlsGroupSettings_programDateTimePeriod = Lens.lens (\HlsGroupSettings' {programDateTimePeriod} -> programDateTimePeriod) (\s@HlsGroupSettings' {} a -> s {programDateTimePeriod = a} :: HlsGroupSettings)
+
+-- | When set to SINGLE_FILE, emits program as a single media resource (.ts)
+-- file, uses #EXT-X-BYTERANGE tags to index segment for playback.
+hlsGroupSettings_segmentControl :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsSegmentControl)
+hlsGroupSettings_segmentControl = Lens.lens (\HlsGroupSettings' {segmentControl} -> segmentControl) (\s@HlsGroupSettings' {} a -> s {segmentControl = a} :: HlsGroupSettings)
+
+-- | Specify the length, in whole seconds, of each segment. When you don\'t
+-- specify a value, MediaConvert defaults to 10. Related settings: Use
+-- Segment length control (SegmentLengthControl) to specify whether the
+-- encoder enforces this value strictly. Use Segment control
+-- (HlsSegmentControl) to specify whether MediaConvert creates separate
+-- segment files or one content file that has metadata to mark the segment
+-- boundaries.
+hlsGroupSettings_segmentLength :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Natural)
+hlsGroupSettings_segmentLength = Lens.lens (\HlsGroupSettings' {segmentLength} -> segmentLength) (\s@HlsGroupSettings' {} a -> s {segmentLength = a} :: HlsGroupSettings)
+
+-- | Specify how you want MediaConvert to determine the segment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Segment length (SegmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+hlsGroupSettings_segmentLengthControl :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsSegmentLengthControl)
+hlsGroupSettings_segmentLengthControl = Lens.lens (\HlsGroupSettings' {segmentLengthControl} -> segmentLengthControl) (\s@HlsGroupSettings' {} a -> s {segmentLengthControl = a} :: HlsGroupSettings)
+
+-- | Number of segments to write to a subdirectory before starting a new one.
+-- directoryStructure must be SINGLE_DIRECTORY for this setting to have an
+-- effect.
+hlsGroupSettings_segmentsPerSubdirectory :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Natural)
+hlsGroupSettings_segmentsPerSubdirectory = Lens.lens (\HlsGroupSettings' {segmentsPerSubdirectory} -> segmentsPerSubdirectory) (\s@HlsGroupSettings' {} a -> s {segmentsPerSubdirectory = a} :: HlsGroupSettings)
+
+-- | Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
+-- tag of variant manifest.
+hlsGroupSettings_streamInfResolution :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsStreamInfResolution)
+hlsGroupSettings_streamInfResolution = Lens.lens (\HlsGroupSettings' {streamInfResolution} -> streamInfResolution) (\s@HlsGroupSettings' {} a -> s {streamInfResolution = a} :: HlsGroupSettings)
+
+-- | When set to LEGACY, the segment target duration is always rounded up to
+-- the nearest integer value above its current value in seconds. When set
+-- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
+-- nearest integer value if fraction seconds are greater than or equal to
+-- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
+-- use LEGACY if your client needs to ensure that the target duration is
+-- always longer than the actual duration of the segment. Some older
+-- players may experience interrupted playback when the actual duration of
+-- a track in a segment is longer than the target duration.
+hlsGroupSettings_targetDurationCompatibilityMode :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsTargetDurationCompatibilityMode)
+hlsGroupSettings_targetDurationCompatibilityMode = Lens.lens (\HlsGroupSettings' {targetDurationCompatibilityMode} -> targetDurationCompatibilityMode) (\s@HlsGroupSettings' {} a -> s {targetDurationCompatibilityMode = a} :: HlsGroupSettings)
+
+-- | Specify the type of the ID3 frame (timedMetadataId3Frame) to use for ID3
+-- timestamps (timedMetadataId3Period) in your output. To include ID3
+-- timestamps: Specify PRIV (PRIV) or TDRL (TDRL) and set ID3 metadata
+-- (timedMetadata) to Passthrough (PASSTHROUGH). To exclude ID3 timestamps:
+-- Set ID3 timestamp frame type to None (NONE).
+hlsGroupSettings_timedMetadataId3Frame :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsTimedMetadataId3Frame)
+hlsGroupSettings_timedMetadataId3Frame = Lens.lens (\HlsGroupSettings' {timedMetadataId3Frame} -> timedMetadataId3Frame) (\s@HlsGroupSettings' {} a -> s {timedMetadataId3Frame = a} :: HlsGroupSettings)
+
+-- | Specify the interval in seconds to write ID3 timestamps in your output.
+-- The first timestamp starts at the output timecode and date, and
+-- increases incrementally with each ID3 timestamp. To use the default
+-- interval of 10 seconds: Leave blank. To include this metadata in your
+-- output: Set ID3 timestamp frame type (timedMetadataId3Frame) to PRIV
+-- (PRIV) or TDRL (TDRL), and set ID3 metadata (timedMetadata) to
+-- Passthrough (PASSTHROUGH).
+hlsGroupSettings_timedMetadataId3Period :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Int)
+hlsGroupSettings_timedMetadataId3Period = Lens.lens (\HlsGroupSettings' {timedMetadataId3Period} -> timedMetadataId3Period) (\s@HlsGroupSettings' {} a -> s {timedMetadataId3Period = a} :: HlsGroupSettings)
+
+-- | Provides an extra millisecond delta offset to fine tune the timestamps.
+hlsGroupSettings_timestampDeltaMilliseconds :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Int)
+hlsGroupSettings_timestampDeltaMilliseconds = Lens.lens (\HlsGroupSettings' {timestampDeltaMilliseconds} -> timestampDeltaMilliseconds) (\s@HlsGroupSettings' {} a -> s {timestampDeltaMilliseconds = a} :: HlsGroupSettings)
+
+instance Data.FromJSON HlsGroupSettings where
+  parseJSON =
+    Data.withObject
+      "HlsGroupSettings"
+      ( \x ->
+          HlsGroupSettings'
+            Prelude.<$> (x Data..:? "adMarkers" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "additionalManifests"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "audioOnlyHeader")
+            Prelude.<*> (x Data..:? "baseUrl")
+            Prelude.<*> ( x
+                            Data..:? "captionLanguageMappings"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "captionLanguageSetting")
+            Prelude.<*> (x Data..:? "captionSegmentLengthControl")
+            Prelude.<*> (x Data..:? "clientCache")
+            Prelude.<*> (x Data..:? "codecSpecification")
+            Prelude.<*> (x Data..:? "destination")
+            Prelude.<*> (x Data..:? "destinationSettings")
+            Prelude.<*> (x Data..:? "directoryStructure")
+            Prelude.<*> (x Data..:? "encryption")
+            Prelude.<*> (x Data..:? "imageBasedTrickPlay")
+            Prelude.<*> (x Data..:? "imageBasedTrickPlaySettings")
+            Prelude.<*> (x Data..:? "manifestCompression")
+            Prelude.<*> (x Data..:? "manifestDurationFormat")
+            Prelude.<*> (x Data..:? "minFinalSegmentLength")
+            Prelude.<*> (x Data..:? "minSegmentLength")
+            Prelude.<*> (x Data..:? "outputSelection")
+            Prelude.<*> (x Data..:? "programDateTime")
+            Prelude.<*> (x Data..:? "programDateTimePeriod")
+            Prelude.<*> (x Data..:? "segmentControl")
+            Prelude.<*> (x Data..:? "segmentLength")
+            Prelude.<*> (x Data..:? "segmentLengthControl")
+            Prelude.<*> (x Data..:? "segmentsPerSubdirectory")
+            Prelude.<*> (x Data..:? "streamInfResolution")
+            Prelude.<*> (x Data..:? "targetDurationCompatibilityMode")
+            Prelude.<*> (x Data..:? "timedMetadataId3Frame")
+            Prelude.<*> (x Data..:? "timedMetadataId3Period")
+            Prelude.<*> (x Data..:? "timestampDeltaMilliseconds")
+      )
+
+instance Prelude.Hashable HlsGroupSettings where
+  hashWithSalt _salt HlsGroupSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` adMarkers
+      `Prelude.hashWithSalt` additionalManifests
+      `Prelude.hashWithSalt` audioOnlyHeader
+      `Prelude.hashWithSalt` baseUrl
+      `Prelude.hashWithSalt` captionLanguageMappings
+      `Prelude.hashWithSalt` captionLanguageSetting
+      `Prelude.hashWithSalt` captionSegmentLengthControl
+      `Prelude.hashWithSalt` clientCache
+      `Prelude.hashWithSalt` codecSpecification
+      `Prelude.hashWithSalt` destination
+      `Prelude.hashWithSalt` destinationSettings
+      `Prelude.hashWithSalt` directoryStructure
+      `Prelude.hashWithSalt` encryption
+      `Prelude.hashWithSalt` imageBasedTrickPlay
+      `Prelude.hashWithSalt` imageBasedTrickPlaySettings
+      `Prelude.hashWithSalt` manifestCompression
+      `Prelude.hashWithSalt` manifestDurationFormat
+      `Prelude.hashWithSalt` minFinalSegmentLength
+      `Prelude.hashWithSalt` minSegmentLength
+      `Prelude.hashWithSalt` outputSelection
+      `Prelude.hashWithSalt` programDateTime
+      `Prelude.hashWithSalt` programDateTimePeriod
+      `Prelude.hashWithSalt` segmentControl
+      `Prelude.hashWithSalt` segmentLength
+      `Prelude.hashWithSalt` segmentLengthControl
+      `Prelude.hashWithSalt` segmentsPerSubdirectory
+      `Prelude.hashWithSalt` streamInfResolution
+      `Prelude.hashWithSalt` targetDurationCompatibilityMode
+      `Prelude.hashWithSalt` timedMetadataId3Frame
+      `Prelude.hashWithSalt` timedMetadataId3Period
+      `Prelude.hashWithSalt` timestampDeltaMilliseconds
+
+instance Prelude.NFData HlsGroupSettings where
+  rnf HlsGroupSettings' {..} =
+    Prelude.rnf adMarkers
+      `Prelude.seq` Prelude.rnf additionalManifests
+      `Prelude.seq` Prelude.rnf audioOnlyHeader
+      `Prelude.seq` Prelude.rnf baseUrl
+      `Prelude.seq` Prelude.rnf captionLanguageMappings
+      `Prelude.seq` Prelude.rnf captionLanguageSetting
+      `Prelude.seq` Prelude.rnf captionSegmentLengthControl
+      `Prelude.seq` Prelude.rnf clientCache
+      `Prelude.seq` Prelude.rnf codecSpecification
+      `Prelude.seq` Prelude.rnf destination
+      `Prelude.seq` Prelude.rnf destinationSettings
+      `Prelude.seq` Prelude.rnf directoryStructure
+      `Prelude.seq` Prelude.rnf encryption
+      `Prelude.seq` Prelude.rnf imageBasedTrickPlay
+      `Prelude.seq` Prelude.rnf imageBasedTrickPlaySettings
+      `Prelude.seq` Prelude.rnf manifestCompression
+      `Prelude.seq` Prelude.rnf manifestDurationFormat
+      `Prelude.seq` Prelude.rnf minFinalSegmentLength
+      `Prelude.seq` Prelude.rnf minSegmentLength
+      `Prelude.seq` Prelude.rnf outputSelection
+      `Prelude.seq` Prelude.rnf programDateTime
+      `Prelude.seq` Prelude.rnf
+        programDateTimePeriod
+      `Prelude.seq` Prelude.rnf
+        segmentControl
+      `Prelude.seq` Prelude.rnf
+        segmentLength
+      `Prelude.seq` Prelude.rnf
+        segmentLengthControl
+      `Prelude.seq` Prelude.rnf
+        segmentsPerSubdirectory
+      `Prelude.seq` Prelude.rnf
+        streamInfResolution
+      `Prelude.seq` Prelude.rnf
+        targetDurationCompatibilityMode
+      `Prelude.seq` Prelude.rnf
+        timedMetadataId3Frame
+      `Prelude.seq` Prelude.rnf
+        timedMetadataId3Period
+      `Prelude.seq` Prelude.rnf
+        timestampDeltaMilliseconds
+
+instance Data.ToJSON HlsGroupSettings where
+  toJSON HlsGroupSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("adMarkers" Data..=) Prelude.<$> adMarkers,
+            ("additionalManifests" Data..=)
+              Prelude.<$> additionalManifests,
+            ("audioOnlyHeader" Data..=)
+              Prelude.<$> audioOnlyHeader,
+            ("baseUrl" Data..=) Prelude.<$> baseUrl,
+            ("captionLanguageMappings" Data..=)
+              Prelude.<$> captionLanguageMappings,
+            ("captionLanguageSetting" Data..=)
+              Prelude.<$> captionLanguageSetting,
+            ("captionSegmentLengthControl" Data..=)
+              Prelude.<$> captionSegmentLengthControl,
+            ("clientCache" Data..=) Prelude.<$> clientCache,
+            ("codecSpecification" Data..=)
+              Prelude.<$> codecSpecification,
+            ("destination" Data..=) Prelude.<$> destination,
+            ("destinationSettings" Data..=)
+              Prelude.<$> destinationSettings,
+            ("directoryStructure" Data..=)
+              Prelude.<$> directoryStructure,
+            ("encryption" Data..=) Prelude.<$> encryption,
+            ("imageBasedTrickPlay" Data..=)
+              Prelude.<$> imageBasedTrickPlay,
+            ("imageBasedTrickPlaySettings" Data..=)
+              Prelude.<$> imageBasedTrickPlaySettings,
+            ("manifestCompression" Data..=)
+              Prelude.<$> manifestCompression,
+            ("manifestDurationFormat" Data..=)
+              Prelude.<$> manifestDurationFormat,
+            ("minFinalSegmentLength" Data..=)
+              Prelude.<$> minFinalSegmentLength,
+            ("minSegmentLength" Data..=)
+              Prelude.<$> minSegmentLength,
+            ("outputSelection" Data..=)
+              Prelude.<$> outputSelection,
+            ("programDateTime" Data..=)
+              Prelude.<$> programDateTime,
+            ("programDateTimePeriod" Data..=)
+              Prelude.<$> programDateTimePeriod,
+            ("segmentControl" Data..=)
+              Prelude.<$> segmentControl,
+            ("segmentLength" Data..=) Prelude.<$> segmentLength,
+            ("segmentLengthControl" Data..=)
+              Prelude.<$> segmentLengthControl,
+            ("segmentsPerSubdirectory" Data..=)
+              Prelude.<$> segmentsPerSubdirectory,
+            ("streamInfResolution" Data..=)
+              Prelude.<$> streamInfResolution,
+            ("targetDurationCompatibilityMode" Data..=)
+              Prelude.<$> targetDurationCompatibilityMode,
+            ("timedMetadataId3Frame" Data..=)
+              Prelude.<$> timedMetadataId3Frame,
+            ("timedMetadataId3Period" Data..=)
+              Prelude.<$> timedMetadataId3Period,
+            ("timestampDeltaMilliseconds" Data..=)
+              Prelude.<$> timestampDeltaMilliseconds
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/HlsIFrameOnlyManifest.hs b/gen/Amazonka/MediaConvert/Types/HlsIFrameOnlyManifest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsIFrameOnlyManifest.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsIFrameOnlyManifest
+-- 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.HlsIFrameOnlyManifest
+  ( HlsIFrameOnlyManifest
+      ( ..,
+        HlsIFrameOnlyManifest_EXCLUDE,
+        HlsIFrameOnlyManifest_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose Include (INCLUDE) to have MediaConvert generate a child manifest
+-- that lists only the I-frames for this rendition, in addition to your
+-- regular manifest for this rendition. You might use this manifest as part
+-- of a workflow that creates preview functions for your video.
+-- MediaConvert adds both the I-frame only child manifest and the regular
+-- child manifest to the parent manifest. When you don\'t need the I-frame
+-- only child manifest, keep the default value Exclude (EXCLUDE).
+newtype HlsIFrameOnlyManifest = HlsIFrameOnlyManifest'
+  { fromHlsIFrameOnlyManifest ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsIFrameOnlyManifest_EXCLUDE :: HlsIFrameOnlyManifest
+pattern HlsIFrameOnlyManifest_EXCLUDE = HlsIFrameOnlyManifest' "EXCLUDE"
+
+pattern HlsIFrameOnlyManifest_INCLUDE :: HlsIFrameOnlyManifest
+pattern HlsIFrameOnlyManifest_INCLUDE = HlsIFrameOnlyManifest' "INCLUDE"
+
+{-# COMPLETE
+  HlsIFrameOnlyManifest_EXCLUDE,
+  HlsIFrameOnlyManifest_INCLUDE,
+  HlsIFrameOnlyManifest'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsImageBasedTrickPlay.hs b/gen/Amazonka/MediaConvert/Types/HlsImageBasedTrickPlay.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsImageBasedTrickPlay.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsImageBasedTrickPlay
+-- 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.HlsImageBasedTrickPlay
+  ( HlsImageBasedTrickPlay
+      ( ..,
+        HlsImageBasedTrickPlay_ADVANCED,
+        HlsImageBasedTrickPlay_NONE,
+        HlsImageBasedTrickPlay_THUMBNAIL,
+        HlsImageBasedTrickPlay_THUMBNAIL_AND_FULLFRAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether MediaConvert generates images for trick play. Keep the
+-- default value, None (NONE), to not generate any images. Choose Thumbnail
+-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
+-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
+-- full-resolution images of single frames. MediaConvert creates a child
+-- manifest for each set of images that you generate and adds corresponding
+-- entries to the parent manifest. A common application for these images is
+-- Roku trick mode. The thumbnails and full-frame images that MediaConvert
+-- creates with this feature are compatible with this Roku specification:
+-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
+newtype HlsImageBasedTrickPlay = HlsImageBasedTrickPlay'
+  { fromHlsImageBasedTrickPlay ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsImageBasedTrickPlay_ADVANCED :: HlsImageBasedTrickPlay
+pattern HlsImageBasedTrickPlay_ADVANCED = HlsImageBasedTrickPlay' "ADVANCED"
+
+pattern HlsImageBasedTrickPlay_NONE :: HlsImageBasedTrickPlay
+pattern HlsImageBasedTrickPlay_NONE = HlsImageBasedTrickPlay' "NONE"
+
+pattern HlsImageBasedTrickPlay_THUMBNAIL :: HlsImageBasedTrickPlay
+pattern HlsImageBasedTrickPlay_THUMBNAIL = HlsImageBasedTrickPlay' "THUMBNAIL"
+
+pattern HlsImageBasedTrickPlay_THUMBNAIL_AND_FULLFRAME :: HlsImageBasedTrickPlay
+pattern HlsImageBasedTrickPlay_THUMBNAIL_AND_FULLFRAME = HlsImageBasedTrickPlay' "THUMBNAIL_AND_FULLFRAME"
+
+{-# COMPLETE
+  HlsImageBasedTrickPlay_ADVANCED,
+  HlsImageBasedTrickPlay_NONE,
+  HlsImageBasedTrickPlay_THUMBNAIL,
+  HlsImageBasedTrickPlay_THUMBNAIL_AND_FULLFRAME,
+  HlsImageBasedTrickPlay'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsImageBasedTrickPlaySettings.hs b/gen/Amazonka/MediaConvert/Types/HlsImageBasedTrickPlaySettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsImageBasedTrickPlaySettings.hs
@@ -0,0 +1,205 @@
+{-# 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.HlsImageBasedTrickPlaySettings
+-- 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.HlsImageBasedTrickPlaySettings 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.HlsIntervalCadence
+import qualified Amazonka.Prelude as Prelude
+
+-- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
+-- ADVANCED
+--
+-- /See:/ 'newHlsImageBasedTrickPlaySettings' smart constructor.
+data HlsImageBasedTrickPlaySettings = HlsImageBasedTrickPlaySettings'
+  { -- | The cadence MediaConvert follows for generating thumbnails. If set to
+    -- FOLLOW_IFRAME, MediaConvert generates thumbnails for each IDR frame in
+    -- the output (matching the GOP cadence). If set to FOLLOW_CUSTOM,
+    -- MediaConvert generates thumbnails according to the interval you specify
+    -- in thumbnailInterval.
+    intervalCadence :: Prelude.Maybe HlsIntervalCadence,
+    -- | Height of each thumbnail within each tile image, in pixels. Leave blank
+    -- to maintain aspect ratio with thumbnail width. If following the aspect
+    -- ratio would lead to a total tile height greater than 4096, then the job
+    -- will be rejected. Must be divisible by 2.
+    thumbnailHeight :: Prelude.Maybe Prelude.Natural,
+    -- | Enter the interval, in seconds, that MediaConvert uses to generate
+    -- thumbnails. If the interval you enter doesn\'t align with the output
+    -- frame rate, MediaConvert automatically rounds the interval to align with
+    -- the output frame rate. For example, if the output frame rate is 29.97
+    -- frames per second and you enter 5, MediaConvert uses a 150 frame
+    -- interval to generate thumbnails.
+    thumbnailInterval :: Prelude.Maybe Prelude.Double,
+    -- | Width of each thumbnail within each tile image, in pixels. Default is
+    -- 312. Must be divisible by 8.
+    thumbnailWidth :: Prelude.Maybe Prelude.Natural,
+    -- | Number of thumbnails in each column of a tile image. Set a value between
+    -- 2 and 2048. Must be divisible by 2.
+    tileHeight :: Prelude.Maybe Prelude.Natural,
+    -- | Number of thumbnails in each row of a tile image. Set a value between 1
+    -- and 512.
+    tileWidth :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HlsImageBasedTrickPlaySettings' 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:
+--
+-- 'intervalCadence', 'hlsImageBasedTrickPlaySettings_intervalCadence' - The cadence MediaConvert follows for generating thumbnails. If set to
+-- FOLLOW_IFRAME, MediaConvert generates thumbnails for each IDR frame in
+-- the output (matching the GOP cadence). If set to FOLLOW_CUSTOM,
+-- MediaConvert generates thumbnails according to the interval you specify
+-- in thumbnailInterval.
+--
+-- 'thumbnailHeight', 'hlsImageBasedTrickPlaySettings_thumbnailHeight' - Height of each thumbnail within each tile image, in pixels. Leave blank
+-- to maintain aspect ratio with thumbnail width. If following the aspect
+-- ratio would lead to a total tile height greater than 4096, then the job
+-- will be rejected. Must be divisible by 2.
+--
+-- 'thumbnailInterval', 'hlsImageBasedTrickPlaySettings_thumbnailInterval' - Enter the interval, in seconds, that MediaConvert uses to generate
+-- thumbnails. If the interval you enter doesn\'t align with the output
+-- frame rate, MediaConvert automatically rounds the interval to align with
+-- the output frame rate. For example, if the output frame rate is 29.97
+-- frames per second and you enter 5, MediaConvert uses a 150 frame
+-- interval to generate thumbnails.
+--
+-- 'thumbnailWidth', 'hlsImageBasedTrickPlaySettings_thumbnailWidth' - Width of each thumbnail within each tile image, in pixels. Default is
+-- 312. Must be divisible by 8.
+--
+-- 'tileHeight', 'hlsImageBasedTrickPlaySettings_tileHeight' - Number of thumbnails in each column of a tile image. Set a value between
+-- 2 and 2048. Must be divisible by 2.
+--
+-- 'tileWidth', 'hlsImageBasedTrickPlaySettings_tileWidth' - Number of thumbnails in each row of a tile image. Set a value between 1
+-- and 512.
+newHlsImageBasedTrickPlaySettings ::
+  HlsImageBasedTrickPlaySettings
+newHlsImageBasedTrickPlaySettings =
+  HlsImageBasedTrickPlaySettings'
+    { intervalCadence =
+        Prelude.Nothing,
+      thumbnailHeight = Prelude.Nothing,
+      thumbnailInterval = Prelude.Nothing,
+      thumbnailWidth = Prelude.Nothing,
+      tileHeight = Prelude.Nothing,
+      tileWidth = Prelude.Nothing
+    }
+
+-- | The cadence MediaConvert follows for generating thumbnails. If set to
+-- FOLLOW_IFRAME, MediaConvert generates thumbnails for each IDR frame in
+-- the output (matching the GOP cadence). If set to FOLLOW_CUSTOM,
+-- MediaConvert generates thumbnails according to the interval you specify
+-- in thumbnailInterval.
+hlsImageBasedTrickPlaySettings_intervalCadence :: Lens.Lens' HlsImageBasedTrickPlaySettings (Prelude.Maybe HlsIntervalCadence)
+hlsImageBasedTrickPlaySettings_intervalCadence = Lens.lens (\HlsImageBasedTrickPlaySettings' {intervalCadence} -> intervalCadence) (\s@HlsImageBasedTrickPlaySettings' {} a -> s {intervalCadence = a} :: HlsImageBasedTrickPlaySettings)
+
+-- | Height of each thumbnail within each tile image, in pixels. Leave blank
+-- to maintain aspect ratio with thumbnail width. If following the aspect
+-- ratio would lead to a total tile height greater than 4096, then the job
+-- will be rejected. Must be divisible by 2.
+hlsImageBasedTrickPlaySettings_thumbnailHeight :: Lens.Lens' HlsImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Natural)
+hlsImageBasedTrickPlaySettings_thumbnailHeight = Lens.lens (\HlsImageBasedTrickPlaySettings' {thumbnailHeight} -> thumbnailHeight) (\s@HlsImageBasedTrickPlaySettings' {} a -> s {thumbnailHeight = a} :: HlsImageBasedTrickPlaySettings)
+
+-- | Enter the interval, in seconds, that MediaConvert uses to generate
+-- thumbnails. If the interval you enter doesn\'t align with the output
+-- frame rate, MediaConvert automatically rounds the interval to align with
+-- the output frame rate. For example, if the output frame rate is 29.97
+-- frames per second and you enter 5, MediaConvert uses a 150 frame
+-- interval to generate thumbnails.
+hlsImageBasedTrickPlaySettings_thumbnailInterval :: Lens.Lens' HlsImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Double)
+hlsImageBasedTrickPlaySettings_thumbnailInterval = Lens.lens (\HlsImageBasedTrickPlaySettings' {thumbnailInterval} -> thumbnailInterval) (\s@HlsImageBasedTrickPlaySettings' {} a -> s {thumbnailInterval = a} :: HlsImageBasedTrickPlaySettings)
+
+-- | Width of each thumbnail within each tile image, in pixels. Default is
+-- 312. Must be divisible by 8.
+hlsImageBasedTrickPlaySettings_thumbnailWidth :: Lens.Lens' HlsImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Natural)
+hlsImageBasedTrickPlaySettings_thumbnailWidth = Lens.lens (\HlsImageBasedTrickPlaySettings' {thumbnailWidth} -> thumbnailWidth) (\s@HlsImageBasedTrickPlaySettings' {} a -> s {thumbnailWidth = a} :: HlsImageBasedTrickPlaySettings)
+
+-- | Number of thumbnails in each column of a tile image. Set a value between
+-- 2 and 2048. Must be divisible by 2.
+hlsImageBasedTrickPlaySettings_tileHeight :: Lens.Lens' HlsImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Natural)
+hlsImageBasedTrickPlaySettings_tileHeight = Lens.lens (\HlsImageBasedTrickPlaySettings' {tileHeight} -> tileHeight) (\s@HlsImageBasedTrickPlaySettings' {} a -> s {tileHeight = a} :: HlsImageBasedTrickPlaySettings)
+
+-- | Number of thumbnails in each row of a tile image. Set a value between 1
+-- and 512.
+hlsImageBasedTrickPlaySettings_tileWidth :: Lens.Lens' HlsImageBasedTrickPlaySettings (Prelude.Maybe Prelude.Natural)
+hlsImageBasedTrickPlaySettings_tileWidth = Lens.lens (\HlsImageBasedTrickPlaySettings' {tileWidth} -> tileWidth) (\s@HlsImageBasedTrickPlaySettings' {} a -> s {tileWidth = a} :: HlsImageBasedTrickPlaySettings)
+
+instance Data.FromJSON HlsImageBasedTrickPlaySettings where
+  parseJSON =
+    Data.withObject
+      "HlsImageBasedTrickPlaySettings"
+      ( \x ->
+          HlsImageBasedTrickPlaySettings'
+            Prelude.<$> (x Data..:? "intervalCadence")
+            Prelude.<*> (x Data..:? "thumbnailHeight")
+            Prelude.<*> (x Data..:? "thumbnailInterval")
+            Prelude.<*> (x Data..:? "thumbnailWidth")
+            Prelude.<*> (x Data..:? "tileHeight")
+            Prelude.<*> (x Data..:? "tileWidth")
+      )
+
+instance
+  Prelude.Hashable
+    HlsImageBasedTrickPlaySettings
+  where
+  hashWithSalt
+    _salt
+    HlsImageBasedTrickPlaySettings' {..} =
+      _salt
+        `Prelude.hashWithSalt` intervalCadence
+        `Prelude.hashWithSalt` thumbnailHeight
+        `Prelude.hashWithSalt` thumbnailInterval
+        `Prelude.hashWithSalt` thumbnailWidth
+        `Prelude.hashWithSalt` tileHeight
+        `Prelude.hashWithSalt` tileWidth
+
+instance
+  Prelude.NFData
+    HlsImageBasedTrickPlaySettings
+  where
+  rnf HlsImageBasedTrickPlaySettings' {..} =
+    Prelude.rnf intervalCadence
+      `Prelude.seq` Prelude.rnf thumbnailHeight
+      `Prelude.seq` Prelude.rnf thumbnailInterval
+      `Prelude.seq` Prelude.rnf thumbnailWidth
+      `Prelude.seq` Prelude.rnf tileHeight
+      `Prelude.seq` Prelude.rnf tileWidth
+
+instance Data.ToJSON HlsImageBasedTrickPlaySettings where
+  toJSON HlsImageBasedTrickPlaySettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("intervalCadence" Data..=)
+              Prelude.<$> intervalCadence,
+            ("thumbnailHeight" Data..=)
+              Prelude.<$> thumbnailHeight,
+            ("thumbnailInterval" Data..=)
+              Prelude.<$> thumbnailInterval,
+            ("thumbnailWidth" Data..=)
+              Prelude.<$> thumbnailWidth,
+            ("tileHeight" Data..=) Prelude.<$> tileHeight,
+            ("tileWidth" Data..=) Prelude.<$> tileWidth
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/HlsInitializationVectorInManifest.hs b/gen/Amazonka/MediaConvert/Types/HlsInitializationVectorInManifest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsInitializationVectorInManifest.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsInitializationVectorInManifest
+-- 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.HlsInitializationVectorInManifest
+  ( HlsInitializationVectorInManifest
+      ( ..,
+        HlsInitializationVectorInManifest_EXCLUDE,
+        HlsInitializationVectorInManifest_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Initialization Vector is a 128-bit number used in conjunction with
+-- the key for encrypting blocks. If set to INCLUDE, Initialization Vector
+-- is listed in the manifest. Otherwise Initialization Vector is not in the
+-- manifest.
+newtype HlsInitializationVectorInManifest = HlsInitializationVectorInManifest'
+  { fromHlsInitializationVectorInManifest ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsInitializationVectorInManifest_EXCLUDE :: HlsInitializationVectorInManifest
+pattern HlsInitializationVectorInManifest_EXCLUDE = HlsInitializationVectorInManifest' "EXCLUDE"
+
+pattern HlsInitializationVectorInManifest_INCLUDE :: HlsInitializationVectorInManifest
+pattern HlsInitializationVectorInManifest_INCLUDE = HlsInitializationVectorInManifest' "INCLUDE"
+
+{-# COMPLETE
+  HlsInitializationVectorInManifest_EXCLUDE,
+  HlsInitializationVectorInManifest_INCLUDE,
+  HlsInitializationVectorInManifest'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsIntervalCadence.hs b/gen/Amazonka/MediaConvert/Types/HlsIntervalCadence.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsIntervalCadence.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsIntervalCadence
+-- 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.HlsIntervalCadence
+  ( HlsIntervalCadence
+      ( ..,
+        HlsIntervalCadence_FOLLOW_CUSTOM,
+        HlsIntervalCadence_FOLLOW_IFRAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The cadence MediaConvert follows for generating thumbnails. If set to
+-- FOLLOW_IFRAME, MediaConvert generates thumbnails for each IDR frame in
+-- the output (matching the GOP cadence). If set to FOLLOW_CUSTOM,
+-- MediaConvert generates thumbnails according to the interval you specify
+-- in thumbnailInterval.
+newtype HlsIntervalCadence = HlsIntervalCadence'
+  { fromHlsIntervalCadence ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsIntervalCadence_FOLLOW_CUSTOM :: HlsIntervalCadence
+pattern HlsIntervalCadence_FOLLOW_CUSTOM = HlsIntervalCadence' "FOLLOW_CUSTOM"
+
+pattern HlsIntervalCadence_FOLLOW_IFRAME :: HlsIntervalCadence
+pattern HlsIntervalCadence_FOLLOW_IFRAME = HlsIntervalCadence' "FOLLOW_IFRAME"
+
+{-# COMPLETE
+  HlsIntervalCadence_FOLLOW_CUSTOM,
+  HlsIntervalCadence_FOLLOW_IFRAME,
+  HlsIntervalCadence'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsKeyProviderType.hs b/gen/Amazonka/MediaConvert/Types/HlsKeyProviderType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsKeyProviderType.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsKeyProviderType
+-- 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.HlsKeyProviderType
+  ( HlsKeyProviderType
+      ( ..,
+        HlsKeyProviderType_SPEKE,
+        HlsKeyProviderType_STATIC_KEY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether your DRM encryption key is static or from a key provider
+-- that follows the SPEKE standard. For more information about SPEKE, see
+-- https:\/\/docs.aws.amazon.com\/speke\/latest\/documentation\/what-is-speke.html.
+newtype HlsKeyProviderType = HlsKeyProviderType'
+  { fromHlsKeyProviderType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsKeyProviderType_SPEKE :: HlsKeyProviderType
+pattern HlsKeyProviderType_SPEKE = HlsKeyProviderType' "SPEKE"
+
+pattern HlsKeyProviderType_STATIC_KEY :: HlsKeyProviderType
+pattern HlsKeyProviderType_STATIC_KEY = HlsKeyProviderType' "STATIC_KEY"
+
+{-# COMPLETE
+  HlsKeyProviderType_SPEKE,
+  HlsKeyProviderType_STATIC_KEY,
+  HlsKeyProviderType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsManifestCompression.hs b/gen/Amazonka/MediaConvert/Types/HlsManifestCompression.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsManifestCompression.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsManifestCompression
+-- 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.HlsManifestCompression
+  ( HlsManifestCompression
+      ( ..,
+        HlsManifestCompression_GZIP,
+        HlsManifestCompression_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to GZIP, compresses HLS playlist.
+newtype HlsManifestCompression = HlsManifestCompression'
+  { fromHlsManifestCompression ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsManifestCompression_GZIP :: HlsManifestCompression
+pattern HlsManifestCompression_GZIP = HlsManifestCompression' "GZIP"
+
+pattern HlsManifestCompression_NONE :: HlsManifestCompression
+pattern HlsManifestCompression_NONE = HlsManifestCompression' "NONE"
+
+{-# COMPLETE
+  HlsManifestCompression_GZIP,
+  HlsManifestCompression_NONE,
+  HlsManifestCompression'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsManifestDurationFormat.hs b/gen/Amazonka/MediaConvert/Types/HlsManifestDurationFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsManifestDurationFormat.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsManifestDurationFormat
+-- 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.HlsManifestDurationFormat
+  ( HlsManifestDurationFormat
+      ( ..,
+        HlsManifestDurationFormat_FLOATING_POINT,
+        HlsManifestDurationFormat_INTEGER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Indicates whether the output manifest should use floating point values
+-- for segment duration.
+newtype HlsManifestDurationFormat = HlsManifestDurationFormat'
+  { fromHlsManifestDurationFormat ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsManifestDurationFormat_FLOATING_POINT :: HlsManifestDurationFormat
+pattern HlsManifestDurationFormat_FLOATING_POINT = HlsManifestDurationFormat' "FLOATING_POINT"
+
+pattern HlsManifestDurationFormat_INTEGER :: HlsManifestDurationFormat
+pattern HlsManifestDurationFormat_INTEGER = HlsManifestDurationFormat' "INTEGER"
+
+{-# COMPLETE
+  HlsManifestDurationFormat_FLOATING_POINT,
+  HlsManifestDurationFormat_INTEGER,
+  HlsManifestDurationFormat'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsOfflineEncrypted.hs b/gen/Amazonka/MediaConvert/Types/HlsOfflineEncrypted.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsOfflineEncrypted.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsOfflineEncrypted
+-- 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.HlsOfflineEncrypted
+  ( HlsOfflineEncrypted
+      ( ..,
+        HlsOfflineEncrypted_DISABLED,
+        HlsOfflineEncrypted_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enable this setting to insert the EXT-X-SESSION-KEY element into the
+-- master playlist. This allows for offline Apple HLS FairPlay content
+-- protection.
+newtype HlsOfflineEncrypted = HlsOfflineEncrypted'
+  { fromHlsOfflineEncrypted ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsOfflineEncrypted_DISABLED :: HlsOfflineEncrypted
+pattern HlsOfflineEncrypted_DISABLED = HlsOfflineEncrypted' "DISABLED"
+
+pattern HlsOfflineEncrypted_ENABLED :: HlsOfflineEncrypted
+pattern HlsOfflineEncrypted_ENABLED = HlsOfflineEncrypted' "ENABLED"
+
+{-# COMPLETE
+  HlsOfflineEncrypted_DISABLED,
+  HlsOfflineEncrypted_ENABLED,
+  HlsOfflineEncrypted'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsOutputSelection.hs b/gen/Amazonka/MediaConvert/Types/HlsOutputSelection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsOutputSelection.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsOutputSelection
+-- 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.HlsOutputSelection
+  ( HlsOutputSelection
+      ( ..,
+        HlsOutputSelection_MANIFESTS_AND_SEGMENTS,
+        HlsOutputSelection_SEGMENTS_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Indicates whether the .m3u8 manifest file should be generated for this
+-- HLS output group.
+newtype HlsOutputSelection = HlsOutputSelection'
+  { fromHlsOutputSelection ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsOutputSelection_MANIFESTS_AND_SEGMENTS :: HlsOutputSelection
+pattern HlsOutputSelection_MANIFESTS_AND_SEGMENTS = HlsOutputSelection' "MANIFESTS_AND_SEGMENTS"
+
+pattern HlsOutputSelection_SEGMENTS_ONLY :: HlsOutputSelection
+pattern HlsOutputSelection_SEGMENTS_ONLY = HlsOutputSelection' "SEGMENTS_ONLY"
+
+{-# COMPLETE
+  HlsOutputSelection_MANIFESTS_AND_SEGMENTS,
+  HlsOutputSelection_SEGMENTS_ONLY,
+  HlsOutputSelection'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsProgramDateTime.hs b/gen/Amazonka/MediaConvert/Types/HlsProgramDateTime.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsProgramDateTime.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsProgramDateTime
+-- 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.HlsProgramDateTime
+  ( HlsProgramDateTime
+      ( ..,
+        HlsProgramDateTime_EXCLUDE,
+        HlsProgramDateTime_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Includes or excludes EXT-X-PROGRAM-DATE-TIME tag in .m3u8 manifest
+-- files. The value is calculated as follows: either the program date and
+-- time are initialized using the input timecode source, or the time is
+-- initialized using the input timecode source and the date is initialized
+-- using the timestamp_offset.
+newtype HlsProgramDateTime = HlsProgramDateTime'
+  { fromHlsProgramDateTime ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsProgramDateTime_EXCLUDE :: HlsProgramDateTime
+pattern HlsProgramDateTime_EXCLUDE = HlsProgramDateTime' "EXCLUDE"
+
+pattern HlsProgramDateTime_INCLUDE :: HlsProgramDateTime
+pattern HlsProgramDateTime_INCLUDE = HlsProgramDateTime' "INCLUDE"
+
+{-# COMPLETE
+  HlsProgramDateTime_EXCLUDE,
+  HlsProgramDateTime_INCLUDE,
+  HlsProgramDateTime'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsRenditionGroupSettings.hs b/gen/Amazonka/MediaConvert/Types/HlsRenditionGroupSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsRenditionGroupSettings.hs
@@ -0,0 +1,118 @@
+{-# 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.HlsRenditionGroupSettings
+-- 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.HlsRenditionGroupSettings 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.LanguageCode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings specific to audio sources in an HLS alternate rendition group.
+-- Specify the properties (renditionGroupId, renditionName or
+-- renditionLanguageCode) to identify the unique audio track among the
+-- alternative rendition groups present in the HLS manifest. If no unique
+-- track is found, or multiple tracks match the properties provided, the
+-- job fails. If no properties in hlsRenditionGroupSettings are specified,
+-- the default audio track within the video segment is chosen. If there is
+-- no audio within video segment, the alternative audio with DEFAULT=YES is
+-- chosen instead.
+--
+-- /See:/ 'newHlsRenditionGroupSettings' smart constructor.
+data HlsRenditionGroupSettings = HlsRenditionGroupSettings'
+  { -- | Optional. Specify alternative group ID
+    renditionGroupId :: Prelude.Maybe Prelude.Text,
+    -- | Optional. Specify ISO 639-2 or ISO 639-3 code in the language property
+    renditionLanguageCode :: Prelude.Maybe LanguageCode,
+    -- | Optional. Specify media name
+    renditionName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HlsRenditionGroupSettings' 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:
+--
+-- 'renditionGroupId', 'hlsRenditionGroupSettings_renditionGroupId' - Optional. Specify alternative group ID
+--
+-- 'renditionLanguageCode', 'hlsRenditionGroupSettings_renditionLanguageCode' - Optional. Specify ISO 639-2 or ISO 639-3 code in the language property
+--
+-- 'renditionName', 'hlsRenditionGroupSettings_renditionName' - Optional. Specify media name
+newHlsRenditionGroupSettings ::
+  HlsRenditionGroupSettings
+newHlsRenditionGroupSettings =
+  HlsRenditionGroupSettings'
+    { renditionGroupId =
+        Prelude.Nothing,
+      renditionLanguageCode = Prelude.Nothing,
+      renditionName = Prelude.Nothing
+    }
+
+-- | Optional. Specify alternative group ID
+hlsRenditionGroupSettings_renditionGroupId :: Lens.Lens' HlsRenditionGroupSettings (Prelude.Maybe Prelude.Text)
+hlsRenditionGroupSettings_renditionGroupId = Lens.lens (\HlsRenditionGroupSettings' {renditionGroupId} -> renditionGroupId) (\s@HlsRenditionGroupSettings' {} a -> s {renditionGroupId = a} :: HlsRenditionGroupSettings)
+
+-- | Optional. Specify ISO 639-2 or ISO 639-3 code in the language property
+hlsRenditionGroupSettings_renditionLanguageCode :: Lens.Lens' HlsRenditionGroupSettings (Prelude.Maybe LanguageCode)
+hlsRenditionGroupSettings_renditionLanguageCode = Lens.lens (\HlsRenditionGroupSettings' {renditionLanguageCode} -> renditionLanguageCode) (\s@HlsRenditionGroupSettings' {} a -> s {renditionLanguageCode = a} :: HlsRenditionGroupSettings)
+
+-- | Optional. Specify media name
+hlsRenditionGroupSettings_renditionName :: Lens.Lens' HlsRenditionGroupSettings (Prelude.Maybe Prelude.Text)
+hlsRenditionGroupSettings_renditionName = Lens.lens (\HlsRenditionGroupSettings' {renditionName} -> renditionName) (\s@HlsRenditionGroupSettings' {} a -> s {renditionName = a} :: HlsRenditionGroupSettings)
+
+instance Data.FromJSON HlsRenditionGroupSettings where
+  parseJSON =
+    Data.withObject
+      "HlsRenditionGroupSettings"
+      ( \x ->
+          HlsRenditionGroupSettings'
+            Prelude.<$> (x Data..:? "renditionGroupId")
+            Prelude.<*> (x Data..:? "renditionLanguageCode")
+            Prelude.<*> (x Data..:? "renditionName")
+      )
+
+instance Prelude.Hashable HlsRenditionGroupSettings where
+  hashWithSalt _salt HlsRenditionGroupSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` renditionGroupId
+      `Prelude.hashWithSalt` renditionLanguageCode
+      `Prelude.hashWithSalt` renditionName
+
+instance Prelude.NFData HlsRenditionGroupSettings where
+  rnf HlsRenditionGroupSettings' {..} =
+    Prelude.rnf renditionGroupId
+      `Prelude.seq` Prelude.rnf renditionLanguageCode
+      `Prelude.seq` Prelude.rnf renditionName
+
+instance Data.ToJSON HlsRenditionGroupSettings where
+  toJSON HlsRenditionGroupSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("renditionGroupId" Data..=)
+              Prelude.<$> renditionGroupId,
+            ("renditionLanguageCode" Data..=)
+              Prelude.<$> renditionLanguageCode,
+            ("renditionName" Data..=) Prelude.<$> renditionName
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/HlsSegmentControl.hs b/gen/Amazonka/MediaConvert/Types/HlsSegmentControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsSegmentControl.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsSegmentControl
+-- 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.HlsSegmentControl
+  ( HlsSegmentControl
+      ( ..,
+        HlsSegmentControl_SEGMENTED_FILES,
+        HlsSegmentControl_SINGLE_FILE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to SINGLE_FILE, emits program as a single media resource (.ts)
+-- file, uses #EXT-X-BYTERANGE tags to index segment for playback.
+newtype HlsSegmentControl = HlsSegmentControl'
+  { fromHlsSegmentControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsSegmentControl_SEGMENTED_FILES :: HlsSegmentControl
+pattern HlsSegmentControl_SEGMENTED_FILES = HlsSegmentControl' "SEGMENTED_FILES"
+
+pattern HlsSegmentControl_SINGLE_FILE :: HlsSegmentControl
+pattern HlsSegmentControl_SINGLE_FILE = HlsSegmentControl' "SINGLE_FILE"
+
+{-# COMPLETE
+  HlsSegmentControl_SEGMENTED_FILES,
+  HlsSegmentControl_SINGLE_FILE,
+  HlsSegmentControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsSegmentLengthControl.hs b/gen/Amazonka/MediaConvert/Types/HlsSegmentLengthControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsSegmentLengthControl.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsSegmentLengthControl
+-- 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.HlsSegmentLengthControl
+  ( HlsSegmentLengthControl
+      ( ..,
+        HlsSegmentLengthControl_EXACT,
+        HlsSegmentLengthControl_GOP_MULTIPLE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify how you want MediaConvert to determine the segment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Segment length (SegmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+newtype HlsSegmentLengthControl = HlsSegmentLengthControl'
+  { fromHlsSegmentLengthControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsSegmentLengthControl_EXACT :: HlsSegmentLengthControl
+pattern HlsSegmentLengthControl_EXACT = HlsSegmentLengthControl' "EXACT"
+
+pattern HlsSegmentLengthControl_GOP_MULTIPLE :: HlsSegmentLengthControl
+pattern HlsSegmentLengthControl_GOP_MULTIPLE = HlsSegmentLengthControl' "GOP_MULTIPLE"
+
+{-# COMPLETE
+  HlsSegmentLengthControl_EXACT,
+  HlsSegmentLengthControl_GOP_MULTIPLE,
+  HlsSegmentLengthControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsSettings.hs b/gen/Amazonka/MediaConvert/Types/HlsSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsSettings.hs
@@ -0,0 +1,273 @@
+{-# 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.HlsSettings
+-- 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.HlsSettings 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.HlsAudioOnlyContainer
+import Amazonka.MediaConvert.Types.HlsAudioTrackType
+import Amazonka.MediaConvert.Types.HlsDescriptiveVideoServiceFlag
+import Amazonka.MediaConvert.Types.HlsIFrameOnlyManifest
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for HLS output groups
+--
+-- /See:/ 'newHlsSettings' smart constructor.
+data HlsSettings = HlsSettings'
+  { -- | Specifies the group to which the audio rendition belongs.
+    audioGroupId :: Prelude.Maybe Prelude.Text,
+    -- | Use this setting only in audio-only outputs. Choose MPEG-2 Transport
+    -- Stream (M2TS) to create a file in an MPEG2-TS container. Keep the
+    -- default value Automatic (AUTOMATIC) to create an audio-only file in a
+    -- raw container. Regardless of the value that you specify here, if this
+    -- output has video, the service will place the output into an MPEG2-TS
+    -- container.
+    audioOnlyContainer :: Prelude.Maybe HlsAudioOnlyContainer,
+    -- | List all the audio groups that are used with the video output stream.
+    -- Input all the audio GROUP-IDs that are associated to the video, separate
+    -- by \',\'.
+    audioRenditionSets :: Prelude.Maybe Prelude.Text,
+    -- | Four types of audio-only tracks are supported: Audio-Only Variant Stream
+    -- The client can play back this audio-only stream instead of video in
+    -- low-bandwidth scenarios. Represented as an EXT-X-STREAM-INF in the HLS
+    -- manifest. Alternate Audio, Auto Select, Default Alternate rendition that
+    -- the client should try to play back by default. Represented as an
+    -- EXT-X-MEDIA in the HLS manifest with DEFAULT=YES, AUTOSELECT=YES
+    -- Alternate Audio, Auto Select, Not Default Alternate rendition that the
+    -- client may try to play back by default. Represented as an EXT-X-MEDIA in
+    -- the HLS manifest with DEFAULT=NO, AUTOSELECT=YES Alternate Audio, not
+    -- Auto Select Alternate rendition that the client will not try to play
+    -- back by default. Represented as an EXT-X-MEDIA in the HLS manifest with
+    -- DEFAULT=NO, AUTOSELECT=NO
+    audioTrackType :: Prelude.Maybe HlsAudioTrackType,
+    -- | Specify whether to flag this audio track as descriptive video service
+    -- (DVS) in your HLS parent manifest. When you choose Flag (FLAG),
+    -- MediaConvert includes the parameter
+    -- CHARACTERISTICS=\"public.accessibility.describes-video\" in the
+    -- EXT-X-MEDIA entry for this track. When you keep the default choice,
+    -- Don\'t flag (DONT_FLAG), MediaConvert leaves this parameter out. The DVS
+    -- flag can help with accessibility on Apple devices. For more information,
+    -- see the Apple documentation.
+    descriptiveVideoServiceFlag :: Prelude.Maybe HlsDescriptiveVideoServiceFlag,
+    -- | Choose Include (INCLUDE) to have MediaConvert generate a child manifest
+    -- that lists only the I-frames for this rendition, in addition to your
+    -- regular manifest for this rendition. You might use this manifest as part
+    -- of a workflow that creates preview functions for your video.
+    -- MediaConvert adds both the I-frame only child manifest and the regular
+    -- child manifest to the parent manifest. When you don\'t need the I-frame
+    -- only child manifest, keep the default value Exclude (EXCLUDE).
+    iFrameOnlyManifest :: Prelude.Maybe HlsIFrameOnlyManifest,
+    -- | Use this setting to add an identifying string to the filename of each
+    -- segment. The service adds this string between the name modifier and
+    -- segment index number. You can use format identifiers in the string. For
+    -- more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/using-variables-in-your-job-settings.html
+    segmentModifier :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HlsSettings' 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:
+--
+-- 'audioGroupId', 'hlsSettings_audioGroupId' - Specifies the group to which the audio rendition belongs.
+--
+-- 'audioOnlyContainer', 'hlsSettings_audioOnlyContainer' - Use this setting only in audio-only outputs. Choose MPEG-2 Transport
+-- Stream (M2TS) to create a file in an MPEG2-TS container. Keep the
+-- default value Automatic (AUTOMATIC) to create an audio-only file in a
+-- raw container. Regardless of the value that you specify here, if this
+-- output has video, the service will place the output into an MPEG2-TS
+-- container.
+--
+-- 'audioRenditionSets', 'hlsSettings_audioRenditionSets' - List all the audio groups that are used with the video output stream.
+-- Input all the audio GROUP-IDs that are associated to the video, separate
+-- by \',\'.
+--
+-- 'audioTrackType', 'hlsSettings_audioTrackType' - Four types of audio-only tracks are supported: Audio-Only Variant Stream
+-- The client can play back this audio-only stream instead of video in
+-- low-bandwidth scenarios. Represented as an EXT-X-STREAM-INF in the HLS
+-- manifest. Alternate Audio, Auto Select, Default Alternate rendition that
+-- the client should try to play back by default. Represented as an
+-- EXT-X-MEDIA in the HLS manifest with DEFAULT=YES, AUTOSELECT=YES
+-- Alternate Audio, Auto Select, Not Default Alternate rendition that the
+-- client may try to play back by default. Represented as an EXT-X-MEDIA in
+-- the HLS manifest with DEFAULT=NO, AUTOSELECT=YES Alternate Audio, not
+-- Auto Select Alternate rendition that the client will not try to play
+-- back by default. Represented as an EXT-X-MEDIA in the HLS manifest with
+-- DEFAULT=NO, AUTOSELECT=NO
+--
+-- 'descriptiveVideoServiceFlag', 'hlsSettings_descriptiveVideoServiceFlag' - Specify whether to flag this audio track as descriptive video service
+-- (DVS) in your HLS parent manifest. When you choose Flag (FLAG),
+-- MediaConvert includes the parameter
+-- CHARACTERISTICS=\"public.accessibility.describes-video\" in the
+-- EXT-X-MEDIA entry for this track. When you keep the default choice,
+-- Don\'t flag (DONT_FLAG), MediaConvert leaves this parameter out. The DVS
+-- flag can help with accessibility on Apple devices. For more information,
+-- see the Apple documentation.
+--
+-- 'iFrameOnlyManifest', 'hlsSettings_iFrameOnlyManifest' - Choose Include (INCLUDE) to have MediaConvert generate a child manifest
+-- that lists only the I-frames for this rendition, in addition to your
+-- regular manifest for this rendition. You might use this manifest as part
+-- of a workflow that creates preview functions for your video.
+-- MediaConvert adds both the I-frame only child manifest and the regular
+-- child manifest to the parent manifest. When you don\'t need the I-frame
+-- only child manifest, keep the default value Exclude (EXCLUDE).
+--
+-- 'segmentModifier', 'hlsSettings_segmentModifier' - Use this setting to add an identifying string to the filename of each
+-- segment. The service adds this string between the name modifier and
+-- segment index number. You can use format identifiers in the string. For
+-- more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/using-variables-in-your-job-settings.html
+newHlsSettings ::
+  HlsSettings
+newHlsSettings =
+  HlsSettings'
+    { audioGroupId = Prelude.Nothing,
+      audioOnlyContainer = Prelude.Nothing,
+      audioRenditionSets = Prelude.Nothing,
+      audioTrackType = Prelude.Nothing,
+      descriptiveVideoServiceFlag = Prelude.Nothing,
+      iFrameOnlyManifest = Prelude.Nothing,
+      segmentModifier = Prelude.Nothing
+    }
+
+-- | Specifies the group to which the audio rendition belongs.
+hlsSettings_audioGroupId :: Lens.Lens' HlsSettings (Prelude.Maybe Prelude.Text)
+hlsSettings_audioGroupId = Lens.lens (\HlsSettings' {audioGroupId} -> audioGroupId) (\s@HlsSettings' {} a -> s {audioGroupId = a} :: HlsSettings)
+
+-- | Use this setting only in audio-only outputs. Choose MPEG-2 Transport
+-- Stream (M2TS) to create a file in an MPEG2-TS container. Keep the
+-- default value Automatic (AUTOMATIC) to create an audio-only file in a
+-- raw container. Regardless of the value that you specify here, if this
+-- output has video, the service will place the output into an MPEG2-TS
+-- container.
+hlsSettings_audioOnlyContainer :: Lens.Lens' HlsSettings (Prelude.Maybe HlsAudioOnlyContainer)
+hlsSettings_audioOnlyContainer = Lens.lens (\HlsSettings' {audioOnlyContainer} -> audioOnlyContainer) (\s@HlsSettings' {} a -> s {audioOnlyContainer = a} :: HlsSettings)
+
+-- | List all the audio groups that are used with the video output stream.
+-- Input all the audio GROUP-IDs that are associated to the video, separate
+-- by \',\'.
+hlsSettings_audioRenditionSets :: Lens.Lens' HlsSettings (Prelude.Maybe Prelude.Text)
+hlsSettings_audioRenditionSets = Lens.lens (\HlsSettings' {audioRenditionSets} -> audioRenditionSets) (\s@HlsSettings' {} a -> s {audioRenditionSets = a} :: HlsSettings)
+
+-- | Four types of audio-only tracks are supported: Audio-Only Variant Stream
+-- The client can play back this audio-only stream instead of video in
+-- low-bandwidth scenarios. Represented as an EXT-X-STREAM-INF in the HLS
+-- manifest. Alternate Audio, Auto Select, Default Alternate rendition that
+-- the client should try to play back by default. Represented as an
+-- EXT-X-MEDIA in the HLS manifest with DEFAULT=YES, AUTOSELECT=YES
+-- Alternate Audio, Auto Select, Not Default Alternate rendition that the
+-- client may try to play back by default. Represented as an EXT-X-MEDIA in
+-- the HLS manifest with DEFAULT=NO, AUTOSELECT=YES Alternate Audio, not
+-- Auto Select Alternate rendition that the client will not try to play
+-- back by default. Represented as an EXT-X-MEDIA in the HLS manifest with
+-- DEFAULT=NO, AUTOSELECT=NO
+hlsSettings_audioTrackType :: Lens.Lens' HlsSettings (Prelude.Maybe HlsAudioTrackType)
+hlsSettings_audioTrackType = Lens.lens (\HlsSettings' {audioTrackType} -> audioTrackType) (\s@HlsSettings' {} a -> s {audioTrackType = a} :: HlsSettings)
+
+-- | Specify whether to flag this audio track as descriptive video service
+-- (DVS) in your HLS parent manifest. When you choose Flag (FLAG),
+-- MediaConvert includes the parameter
+-- CHARACTERISTICS=\"public.accessibility.describes-video\" in the
+-- EXT-X-MEDIA entry for this track. When you keep the default choice,
+-- Don\'t flag (DONT_FLAG), MediaConvert leaves this parameter out. The DVS
+-- flag can help with accessibility on Apple devices. For more information,
+-- see the Apple documentation.
+hlsSettings_descriptiveVideoServiceFlag :: Lens.Lens' HlsSettings (Prelude.Maybe HlsDescriptiveVideoServiceFlag)
+hlsSettings_descriptiveVideoServiceFlag = Lens.lens (\HlsSettings' {descriptiveVideoServiceFlag} -> descriptiveVideoServiceFlag) (\s@HlsSettings' {} a -> s {descriptiveVideoServiceFlag = a} :: HlsSettings)
+
+-- | Choose Include (INCLUDE) to have MediaConvert generate a child manifest
+-- that lists only the I-frames for this rendition, in addition to your
+-- regular manifest for this rendition. You might use this manifest as part
+-- of a workflow that creates preview functions for your video.
+-- MediaConvert adds both the I-frame only child manifest and the regular
+-- child manifest to the parent manifest. When you don\'t need the I-frame
+-- only child manifest, keep the default value Exclude (EXCLUDE).
+hlsSettings_iFrameOnlyManifest :: Lens.Lens' HlsSettings (Prelude.Maybe HlsIFrameOnlyManifest)
+hlsSettings_iFrameOnlyManifest = Lens.lens (\HlsSettings' {iFrameOnlyManifest} -> iFrameOnlyManifest) (\s@HlsSettings' {} a -> s {iFrameOnlyManifest = a} :: HlsSettings)
+
+-- | Use this setting to add an identifying string to the filename of each
+-- segment. The service adds this string between the name modifier and
+-- segment index number. You can use format identifiers in the string. For
+-- more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/using-variables-in-your-job-settings.html
+hlsSettings_segmentModifier :: Lens.Lens' HlsSettings (Prelude.Maybe Prelude.Text)
+hlsSettings_segmentModifier = Lens.lens (\HlsSettings' {segmentModifier} -> segmentModifier) (\s@HlsSettings' {} a -> s {segmentModifier = a} :: HlsSettings)
+
+instance Data.FromJSON HlsSettings where
+  parseJSON =
+    Data.withObject
+      "HlsSettings"
+      ( \x ->
+          HlsSettings'
+            Prelude.<$> (x Data..:? "audioGroupId")
+            Prelude.<*> (x Data..:? "audioOnlyContainer")
+            Prelude.<*> (x Data..:? "audioRenditionSets")
+            Prelude.<*> (x Data..:? "audioTrackType")
+            Prelude.<*> (x Data..:? "descriptiveVideoServiceFlag")
+            Prelude.<*> (x Data..:? "iFrameOnlyManifest")
+            Prelude.<*> (x Data..:? "segmentModifier")
+      )
+
+instance Prelude.Hashable HlsSettings where
+  hashWithSalt _salt HlsSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` audioGroupId
+      `Prelude.hashWithSalt` audioOnlyContainer
+      `Prelude.hashWithSalt` audioRenditionSets
+      `Prelude.hashWithSalt` audioTrackType
+      `Prelude.hashWithSalt` descriptiveVideoServiceFlag
+      `Prelude.hashWithSalt` iFrameOnlyManifest
+      `Prelude.hashWithSalt` segmentModifier
+
+instance Prelude.NFData HlsSettings where
+  rnf HlsSettings' {..} =
+    Prelude.rnf audioGroupId
+      `Prelude.seq` Prelude.rnf audioOnlyContainer
+      `Prelude.seq` Prelude.rnf audioRenditionSets
+      `Prelude.seq` Prelude.rnf audioTrackType
+      `Prelude.seq` Prelude.rnf descriptiveVideoServiceFlag
+      `Prelude.seq` Prelude.rnf iFrameOnlyManifest
+      `Prelude.seq` Prelude.rnf segmentModifier
+
+instance Data.ToJSON HlsSettings where
+  toJSON HlsSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("audioGroupId" Data..=) Prelude.<$> audioGroupId,
+            ("audioOnlyContainer" Data..=)
+              Prelude.<$> audioOnlyContainer,
+            ("audioRenditionSets" Data..=)
+              Prelude.<$> audioRenditionSets,
+            ("audioTrackType" Data..=)
+              Prelude.<$> audioTrackType,
+            ("descriptiveVideoServiceFlag" Data..=)
+              Prelude.<$> descriptiveVideoServiceFlag,
+            ("iFrameOnlyManifest" Data..=)
+              Prelude.<$> iFrameOnlyManifest,
+            ("segmentModifier" Data..=)
+              Prelude.<$> segmentModifier
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/HlsStreamInfResolution.hs b/gen/Amazonka/MediaConvert/Types/HlsStreamInfResolution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsStreamInfResolution.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsStreamInfResolution
+-- 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.HlsStreamInfResolution
+  ( HlsStreamInfResolution
+      ( ..,
+        HlsStreamInfResolution_EXCLUDE,
+        HlsStreamInfResolution_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
+-- tag of variant manifest.
+newtype HlsStreamInfResolution = HlsStreamInfResolution'
+  { fromHlsStreamInfResolution ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsStreamInfResolution_EXCLUDE :: HlsStreamInfResolution
+pattern HlsStreamInfResolution_EXCLUDE = HlsStreamInfResolution' "EXCLUDE"
+
+pattern HlsStreamInfResolution_INCLUDE :: HlsStreamInfResolution
+pattern HlsStreamInfResolution_INCLUDE = HlsStreamInfResolution' "INCLUDE"
+
+{-# COMPLETE
+  HlsStreamInfResolution_EXCLUDE,
+  HlsStreamInfResolution_INCLUDE,
+  HlsStreamInfResolution'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsTargetDurationCompatibilityMode.hs b/gen/Amazonka/MediaConvert/Types/HlsTargetDurationCompatibilityMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsTargetDurationCompatibilityMode.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsTargetDurationCompatibilityMode
+-- 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.HlsTargetDurationCompatibilityMode
+  ( HlsTargetDurationCompatibilityMode
+      ( ..,
+        HlsTargetDurationCompatibilityMode_LEGACY,
+        HlsTargetDurationCompatibilityMode_SPEC_COMPLIANT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to LEGACY, the segment target duration is always rounded up to
+-- the nearest integer value above its current value in seconds. When set
+-- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
+-- nearest integer value if fraction seconds are greater than or equal to
+-- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
+-- use LEGACY if your client needs to ensure that the target duration is
+-- always longer than the actual duration of the segment. Some older
+-- players may experience interrupted playback when the actual duration of
+-- a track in a segment is longer than the target duration.
+newtype HlsTargetDurationCompatibilityMode = HlsTargetDurationCompatibilityMode'
+  { fromHlsTargetDurationCompatibilityMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsTargetDurationCompatibilityMode_LEGACY :: HlsTargetDurationCompatibilityMode
+pattern HlsTargetDurationCompatibilityMode_LEGACY = HlsTargetDurationCompatibilityMode' "LEGACY"
+
+pattern HlsTargetDurationCompatibilityMode_SPEC_COMPLIANT :: HlsTargetDurationCompatibilityMode
+pattern HlsTargetDurationCompatibilityMode_SPEC_COMPLIANT = HlsTargetDurationCompatibilityMode' "SPEC_COMPLIANT"
+
+{-# COMPLETE
+  HlsTargetDurationCompatibilityMode_LEGACY,
+  HlsTargetDurationCompatibilityMode_SPEC_COMPLIANT,
+  HlsTargetDurationCompatibilityMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HlsTimedMetadataId3Frame.hs b/gen/Amazonka/MediaConvert/Types/HlsTimedMetadataId3Frame.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HlsTimedMetadataId3Frame.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.HlsTimedMetadataId3Frame
+-- 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.HlsTimedMetadataId3Frame
+  ( HlsTimedMetadataId3Frame
+      ( ..,
+        HlsTimedMetadataId3Frame_NONE,
+        HlsTimedMetadataId3Frame_PRIV,
+        HlsTimedMetadataId3Frame_TDRL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the type of the ID3 frame (timedMetadataId3Frame) to use for ID3
+-- timestamps (timedMetadataId3Period) in your output. To include ID3
+-- timestamps: Specify PRIV (PRIV) or TDRL (TDRL) and set ID3 metadata
+-- (timedMetadata) to Passthrough (PASSTHROUGH). To exclude ID3 timestamps:
+-- Set ID3 timestamp frame type to None (NONE).
+newtype HlsTimedMetadataId3Frame = HlsTimedMetadataId3Frame'
+  { fromHlsTimedMetadataId3Frame ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HlsTimedMetadataId3Frame_NONE :: HlsTimedMetadataId3Frame
+pattern HlsTimedMetadataId3Frame_NONE = HlsTimedMetadataId3Frame' "NONE"
+
+pattern HlsTimedMetadataId3Frame_PRIV :: HlsTimedMetadataId3Frame
+pattern HlsTimedMetadataId3Frame_PRIV = HlsTimedMetadataId3Frame' "PRIV"
+
+pattern HlsTimedMetadataId3Frame_TDRL :: HlsTimedMetadataId3Frame
+pattern HlsTimedMetadataId3Frame_TDRL = HlsTimedMetadataId3Frame' "TDRL"
+
+{-# COMPLETE
+  HlsTimedMetadataId3Frame_NONE,
+  HlsTimedMetadataId3Frame_PRIV,
+  HlsTimedMetadataId3Frame_TDRL,
+  HlsTimedMetadataId3Frame'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/HopDestination.hs b/gen/Amazonka/MediaConvert/Types/HopDestination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/HopDestination.hs
@@ -0,0 +1,134 @@
+{-# 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.HopDestination
+-- 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.HopDestination where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Configuration for a destination queue to which the job can hop
+-- once a customer-defined minimum wait time has passed.
+--
+-- /See:/ 'newHopDestination' smart constructor.
+data HopDestination = HopDestination'
+  { -- | Optional. When you set up a job to use queue hopping, you can specify a
+    -- different relative priority for the job in the destination queue. If you
+    -- don\'t specify, the relative priority will remain the same as in the
+    -- previous queue.
+    priority :: Prelude.Maybe Prelude.Int,
+    -- | Optional unless the job is submitted on the default queue. When you set
+    -- up a job to use queue hopping, you can specify a destination queue. This
+    -- queue cannot be the original queue to which the job is submitted. If the
+    -- original queue isn\'t the default queue and you don\'t specify the
+    -- destination queue, the job will move to the default queue.
+    queue :: Prelude.Maybe Prelude.Text,
+    -- | Required for setting up a job to use queue hopping. Minimum wait time in
+    -- minutes until the job can hop to the destination queue. Valid range is 1
+    -- to 1440 minutes, inclusive.
+    waitMinutes :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HopDestination' 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:
+--
+-- 'priority', 'hopDestination_priority' - Optional. When you set up a job to use queue hopping, you can specify a
+-- different relative priority for the job in the destination queue. If you
+-- don\'t specify, the relative priority will remain the same as in the
+-- previous queue.
+--
+-- 'queue', 'hopDestination_queue' - Optional unless the job is submitted on the default queue. When you set
+-- up a job to use queue hopping, you can specify a destination queue. This
+-- queue cannot be the original queue to which the job is submitted. If the
+-- original queue isn\'t the default queue and you don\'t specify the
+-- destination queue, the job will move to the default queue.
+--
+-- 'waitMinutes', 'hopDestination_waitMinutes' - Required for setting up a job to use queue hopping. Minimum wait time in
+-- minutes until the job can hop to the destination queue. Valid range is 1
+-- to 1440 minutes, inclusive.
+newHopDestination ::
+  HopDestination
+newHopDestination =
+  HopDestination'
+    { priority = Prelude.Nothing,
+      queue = Prelude.Nothing,
+      waitMinutes = Prelude.Nothing
+    }
+
+-- | Optional. When you set up a job to use queue hopping, you can specify a
+-- different relative priority for the job in the destination queue. If you
+-- don\'t specify, the relative priority will remain the same as in the
+-- previous queue.
+hopDestination_priority :: Lens.Lens' HopDestination (Prelude.Maybe Prelude.Int)
+hopDestination_priority = Lens.lens (\HopDestination' {priority} -> priority) (\s@HopDestination' {} a -> s {priority = a} :: HopDestination)
+
+-- | Optional unless the job is submitted on the default queue. When you set
+-- up a job to use queue hopping, you can specify a destination queue. This
+-- queue cannot be the original queue to which the job is submitted. If the
+-- original queue isn\'t the default queue and you don\'t specify the
+-- destination queue, the job will move to the default queue.
+hopDestination_queue :: Lens.Lens' HopDestination (Prelude.Maybe Prelude.Text)
+hopDestination_queue = Lens.lens (\HopDestination' {queue} -> queue) (\s@HopDestination' {} a -> s {queue = a} :: HopDestination)
+
+-- | Required for setting up a job to use queue hopping. Minimum wait time in
+-- minutes until the job can hop to the destination queue. Valid range is 1
+-- to 1440 minutes, inclusive.
+hopDestination_waitMinutes :: Lens.Lens' HopDestination (Prelude.Maybe Prelude.Int)
+hopDestination_waitMinutes = Lens.lens (\HopDestination' {waitMinutes} -> waitMinutes) (\s@HopDestination' {} a -> s {waitMinutes = a} :: HopDestination)
+
+instance Data.FromJSON HopDestination where
+  parseJSON =
+    Data.withObject
+      "HopDestination"
+      ( \x ->
+          HopDestination'
+            Prelude.<$> (x Data..:? "priority")
+            Prelude.<*> (x Data..:? "queue")
+            Prelude.<*> (x Data..:? "waitMinutes")
+      )
+
+instance Prelude.Hashable HopDestination where
+  hashWithSalt _salt HopDestination' {..} =
+    _salt
+      `Prelude.hashWithSalt` priority
+      `Prelude.hashWithSalt` queue
+      `Prelude.hashWithSalt` waitMinutes
+
+instance Prelude.NFData HopDestination where
+  rnf HopDestination' {..} =
+    Prelude.rnf priority
+      `Prelude.seq` Prelude.rnf queue
+      `Prelude.seq` Prelude.rnf waitMinutes
+
+instance Data.ToJSON HopDestination where
+  toJSON HopDestination' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("priority" Data..=) Prelude.<$> priority,
+            ("queue" Data..=) Prelude.<$> queue,
+            ("waitMinutes" Data..=) Prelude.<$> waitMinutes
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Id3Insertion.hs b/gen/Amazonka/MediaConvert/Types/Id3Insertion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Id3Insertion.hs
@@ -0,0 +1,99 @@
+{-# 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.Id3Insertion
+-- 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.Id3Insertion where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | To insert ID3 tags in your output, specify two values. Use ID3 tag (Id3)
+-- to specify the base 64 encoded string and use Timecode (TimeCode) to
+-- specify the time when the tag should be inserted. To insert multiple ID3
+-- tags in your output, create multiple instances of ID3 insertion
+-- (Id3Insertion).
+--
+-- /See:/ 'newId3Insertion' smart constructor.
+data Id3Insertion = Id3Insertion'
+  { -- | Use ID3 tag (Id3) to provide a fully formed ID3 tag in base64-encode
+    -- format.
+    id3 :: Prelude.Maybe Prelude.Text,
+    -- | Provide a Timecode (TimeCode) in HH:MM:SS:FF or HH:MM:SS;FF format.
+    timecode :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Id3Insertion' 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:
+--
+-- 'id3', 'id3Insertion_id3' - Use ID3 tag (Id3) to provide a fully formed ID3 tag in base64-encode
+-- format.
+--
+-- 'timecode', 'id3Insertion_timecode' - Provide a Timecode (TimeCode) in HH:MM:SS:FF or HH:MM:SS;FF format.
+newId3Insertion ::
+  Id3Insertion
+newId3Insertion =
+  Id3Insertion'
+    { id3 = Prelude.Nothing,
+      timecode = Prelude.Nothing
+    }
+
+-- | Use ID3 tag (Id3) to provide a fully formed ID3 tag in base64-encode
+-- format.
+id3Insertion_id3 :: Lens.Lens' Id3Insertion (Prelude.Maybe Prelude.Text)
+id3Insertion_id3 = Lens.lens (\Id3Insertion' {id3} -> id3) (\s@Id3Insertion' {} a -> s {id3 = a} :: Id3Insertion)
+
+-- | Provide a Timecode (TimeCode) in HH:MM:SS:FF or HH:MM:SS;FF format.
+id3Insertion_timecode :: Lens.Lens' Id3Insertion (Prelude.Maybe Prelude.Text)
+id3Insertion_timecode = Lens.lens (\Id3Insertion' {timecode} -> timecode) (\s@Id3Insertion' {} a -> s {timecode = a} :: Id3Insertion)
+
+instance Data.FromJSON Id3Insertion where
+  parseJSON =
+    Data.withObject
+      "Id3Insertion"
+      ( \x ->
+          Id3Insertion'
+            Prelude.<$> (x Data..:? "id3")
+            Prelude.<*> (x Data..:? "timecode")
+      )
+
+instance Prelude.Hashable Id3Insertion where
+  hashWithSalt _salt Id3Insertion' {..} =
+    _salt
+      `Prelude.hashWithSalt` id3
+      `Prelude.hashWithSalt` timecode
+
+instance Prelude.NFData Id3Insertion where
+  rnf Id3Insertion' {..} =
+    Prelude.rnf id3 `Prelude.seq` Prelude.rnf timecode
+
+instance Data.ToJSON Id3Insertion where
+  toJSON Id3Insertion' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("id3" Data..=) Prelude.<$> id3,
+            ("timecode" Data..=) Prelude.<$> timecode
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/ImageInserter.hs b/gen/Amazonka/MediaConvert/Types/ImageInserter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ImageInserter.hs
@@ -0,0 +1,118 @@
+{-# 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.ImageInserter
+-- 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.ImageInserter 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.InsertableImage
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use the image inserter feature to include a graphic overlay on your
+-- video. Enable or disable this feature for each input or output
+-- individually. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/graphic-overlay.html.
+-- This setting is disabled by default.
+--
+-- /See:/ 'newImageInserter' smart constructor.
+data ImageInserter = ImageInserter'
+  { -- | Specify the images that you want to overlay on your video. The images
+    -- must be PNG or TGA files.
+    insertableImages :: Prelude.Maybe [InsertableImage],
+    -- | Specify the reference white level, in nits, for all of your image
+    -- inserter images. Use to correct brightness levels within HDR10 outputs.
+    -- For 1,000 nit peak brightness displays, we recommend that you set SDR
+    -- reference white level to 203 (according to ITU-R BT.2408). Leave blank
+    -- to use the default value of 100, or specify an integer from 100 to 1000.
+    sdrReferenceWhiteLevel :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImageInserter' 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:
+--
+-- 'insertableImages', 'imageInserter_insertableImages' - Specify the images that you want to overlay on your video. The images
+-- must be PNG or TGA files.
+--
+-- 'sdrReferenceWhiteLevel', 'imageInserter_sdrReferenceWhiteLevel' - Specify the reference white level, in nits, for all of your image
+-- inserter images. Use to correct brightness levels within HDR10 outputs.
+-- For 1,000 nit peak brightness displays, we recommend that you set SDR
+-- reference white level to 203 (according to ITU-R BT.2408). Leave blank
+-- to use the default value of 100, or specify an integer from 100 to 1000.
+newImageInserter ::
+  ImageInserter
+newImageInserter =
+  ImageInserter'
+    { insertableImages = Prelude.Nothing,
+      sdrReferenceWhiteLevel = Prelude.Nothing
+    }
+
+-- | Specify the images that you want to overlay on your video. The images
+-- must be PNG or TGA files.
+imageInserter_insertableImages :: Lens.Lens' ImageInserter (Prelude.Maybe [InsertableImage])
+imageInserter_insertableImages = Lens.lens (\ImageInserter' {insertableImages} -> insertableImages) (\s@ImageInserter' {} a -> s {insertableImages = a} :: ImageInserter) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specify the reference white level, in nits, for all of your image
+-- inserter images. Use to correct brightness levels within HDR10 outputs.
+-- For 1,000 nit peak brightness displays, we recommend that you set SDR
+-- reference white level to 203 (according to ITU-R BT.2408). Leave blank
+-- to use the default value of 100, or specify an integer from 100 to 1000.
+imageInserter_sdrReferenceWhiteLevel :: Lens.Lens' ImageInserter (Prelude.Maybe Prelude.Natural)
+imageInserter_sdrReferenceWhiteLevel = Lens.lens (\ImageInserter' {sdrReferenceWhiteLevel} -> sdrReferenceWhiteLevel) (\s@ImageInserter' {} a -> s {sdrReferenceWhiteLevel = a} :: ImageInserter)
+
+instance Data.FromJSON ImageInserter where
+  parseJSON =
+    Data.withObject
+      "ImageInserter"
+      ( \x ->
+          ImageInserter'
+            Prelude.<$> ( x
+                            Data..:? "insertableImages"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "sdrReferenceWhiteLevel")
+      )
+
+instance Prelude.Hashable ImageInserter where
+  hashWithSalt _salt ImageInserter' {..} =
+    _salt
+      `Prelude.hashWithSalt` insertableImages
+      `Prelude.hashWithSalt` sdrReferenceWhiteLevel
+
+instance Prelude.NFData ImageInserter where
+  rnf ImageInserter' {..} =
+    Prelude.rnf insertableImages
+      `Prelude.seq` Prelude.rnf sdrReferenceWhiteLevel
+
+instance Data.ToJSON ImageInserter where
+  toJSON ImageInserter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("insertableImages" Data..=)
+              Prelude.<$> insertableImages,
+            ("sdrReferenceWhiteLevel" Data..=)
+              Prelude.<$> sdrReferenceWhiteLevel
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/ImscAccessibilitySubs.hs b/gen/Amazonka/MediaConvert/Types/ImscAccessibilitySubs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ImscAccessibilitySubs.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ImscAccessibilitySubs
+-- 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.ImscAccessibilitySubs
+  ( ImscAccessibilitySubs
+      ( ..,
+        ImscAccessibilitySubs_DISABLED,
+        ImscAccessibilitySubs_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Set Accessibility subtitles to Enabled if the ISMC or WebVTT captions
+-- track is intended to provide accessibility for people who are deaf or
+-- hard of hearing. When you enable this feature, MediaConvert adds the
+-- following attributes under EXT-X-MEDIA in the HLS or CMAF manifest for
+-- this track:
+-- CHARACTERISTICS=\"public.accessibility.describes-spoken-dialog,public.accessibility.describes-music-and-sound\"
+-- and AUTOSELECT=\"YES\". Keep the default value, Disabled, if the
+-- captions track is not intended to provide such accessibility.
+-- MediaConvert will not add the above attributes.
+newtype ImscAccessibilitySubs = ImscAccessibilitySubs'
+  { fromImscAccessibilitySubs ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ImscAccessibilitySubs_DISABLED :: ImscAccessibilitySubs
+pattern ImscAccessibilitySubs_DISABLED = ImscAccessibilitySubs' "DISABLED"
+
+pattern ImscAccessibilitySubs_ENABLED :: ImscAccessibilitySubs
+pattern ImscAccessibilitySubs_ENABLED = ImscAccessibilitySubs' "ENABLED"
+
+{-# COMPLETE
+  ImscAccessibilitySubs_DISABLED,
+  ImscAccessibilitySubs_ENABLED,
+  ImscAccessibilitySubs'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ImscDestinationSettings.hs b/gen/Amazonka/MediaConvert/Types/ImscDestinationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ImscDestinationSettings.hs
@@ -0,0 +1,136 @@
+{-# 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.ImscDestinationSettings
+-- 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.ImscDestinationSettings 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.ImscAccessibilitySubs
+import Amazonka.MediaConvert.Types.ImscStylePassthrough
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to IMSC captions. IMSC is a sidecar format that holds
+-- captions in a file that is separate from the video container. Set up
+-- sidecar captions in the same output group, but different output from
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to IMSC.
+--
+-- /See:/ 'newImscDestinationSettings' smart constructor.
+data ImscDestinationSettings = ImscDestinationSettings'
+  { -- | Set Accessibility subtitles to Enabled if the ISMC or WebVTT captions
+    -- track is intended to provide accessibility for people who are deaf or
+    -- hard of hearing. When you enable this feature, MediaConvert adds the
+    -- following attributes under EXT-X-MEDIA in the HLS or CMAF manifest for
+    -- this track:
+    -- CHARACTERISTICS=\"public.accessibility.describes-spoken-dialog,public.accessibility.describes-music-and-sound\"
+    -- and AUTOSELECT=\"YES\". Keep the default value, Disabled, if the
+    -- captions track is not intended to provide such accessibility.
+    -- MediaConvert will not add the above attributes.
+    accessibility :: Prelude.Maybe ImscAccessibilitySubs,
+    -- | Keep this setting enabled to have MediaConvert use the font style and
+    -- position information from the captions source in the output. This option
+    -- is available only when your input captions are IMSC, SMPTE-TT, or TTML.
+    -- Disable this setting for simplified output captions.
+    stylePassthrough :: Prelude.Maybe ImscStylePassthrough
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImscDestinationSettings' 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:
+--
+-- 'accessibility', 'imscDestinationSettings_accessibility' - Set Accessibility subtitles to Enabled if the ISMC or WebVTT captions
+-- track is intended to provide accessibility for people who are deaf or
+-- hard of hearing. When you enable this feature, MediaConvert adds the
+-- following attributes under EXT-X-MEDIA in the HLS or CMAF manifest for
+-- this track:
+-- CHARACTERISTICS=\"public.accessibility.describes-spoken-dialog,public.accessibility.describes-music-and-sound\"
+-- and AUTOSELECT=\"YES\". Keep the default value, Disabled, if the
+-- captions track is not intended to provide such accessibility.
+-- MediaConvert will not add the above attributes.
+--
+-- 'stylePassthrough', 'imscDestinationSettings_stylePassthrough' - Keep this setting enabled to have MediaConvert use the font style and
+-- position information from the captions source in the output. This option
+-- is available only when your input captions are IMSC, SMPTE-TT, or TTML.
+-- Disable this setting for simplified output captions.
+newImscDestinationSettings ::
+  ImscDestinationSettings
+newImscDestinationSettings =
+  ImscDestinationSettings'
+    { accessibility =
+        Prelude.Nothing,
+      stylePassthrough = Prelude.Nothing
+    }
+
+-- | Set Accessibility subtitles to Enabled if the ISMC or WebVTT captions
+-- track is intended to provide accessibility for people who are deaf or
+-- hard of hearing. When you enable this feature, MediaConvert adds the
+-- following attributes under EXT-X-MEDIA in the HLS or CMAF manifest for
+-- this track:
+-- CHARACTERISTICS=\"public.accessibility.describes-spoken-dialog,public.accessibility.describes-music-and-sound\"
+-- and AUTOSELECT=\"YES\". Keep the default value, Disabled, if the
+-- captions track is not intended to provide such accessibility.
+-- MediaConvert will not add the above attributes.
+imscDestinationSettings_accessibility :: Lens.Lens' ImscDestinationSettings (Prelude.Maybe ImscAccessibilitySubs)
+imscDestinationSettings_accessibility = Lens.lens (\ImscDestinationSettings' {accessibility} -> accessibility) (\s@ImscDestinationSettings' {} a -> s {accessibility = a} :: ImscDestinationSettings)
+
+-- | Keep this setting enabled to have MediaConvert use the font style and
+-- position information from the captions source in the output. This option
+-- is available only when your input captions are IMSC, SMPTE-TT, or TTML.
+-- Disable this setting for simplified output captions.
+imscDestinationSettings_stylePassthrough :: Lens.Lens' ImscDestinationSettings (Prelude.Maybe ImscStylePassthrough)
+imscDestinationSettings_stylePassthrough = Lens.lens (\ImscDestinationSettings' {stylePassthrough} -> stylePassthrough) (\s@ImscDestinationSettings' {} a -> s {stylePassthrough = a} :: ImscDestinationSettings)
+
+instance Data.FromJSON ImscDestinationSettings where
+  parseJSON =
+    Data.withObject
+      "ImscDestinationSettings"
+      ( \x ->
+          ImscDestinationSettings'
+            Prelude.<$> (x Data..:? "accessibility")
+            Prelude.<*> (x Data..:? "stylePassthrough")
+      )
+
+instance Prelude.Hashable ImscDestinationSettings where
+  hashWithSalt _salt ImscDestinationSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` accessibility
+      `Prelude.hashWithSalt` stylePassthrough
+
+instance Prelude.NFData ImscDestinationSettings where
+  rnf ImscDestinationSettings' {..} =
+    Prelude.rnf accessibility
+      `Prelude.seq` Prelude.rnf stylePassthrough
+
+instance Data.ToJSON ImscDestinationSettings where
+  toJSON ImscDestinationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accessibility" Data..=) Prelude.<$> accessibility,
+            ("stylePassthrough" Data..=)
+              Prelude.<$> stylePassthrough
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/ImscStylePassthrough.hs b/gen/Amazonka/MediaConvert/Types/ImscStylePassthrough.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ImscStylePassthrough.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ImscStylePassthrough
+-- 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.ImscStylePassthrough
+  ( ImscStylePassthrough
+      ( ..,
+        ImscStylePassthrough_DISABLED,
+        ImscStylePassthrough_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Keep this setting enabled to have MediaConvert use the font style and
+-- position information from the captions source in the output. This option
+-- is available only when your input captions are IMSC, SMPTE-TT, or TTML.
+-- Disable this setting for simplified output captions.
+newtype ImscStylePassthrough = ImscStylePassthrough'
+  { fromImscStylePassthrough ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ImscStylePassthrough_DISABLED :: ImscStylePassthrough
+pattern ImscStylePassthrough_DISABLED = ImscStylePassthrough' "DISABLED"
+
+pattern ImscStylePassthrough_ENABLED :: ImscStylePassthrough
+pattern ImscStylePassthrough_ENABLED = ImscStylePassthrough' "ENABLED"
+
+{-# COMPLETE
+  ImscStylePassthrough_DISABLED,
+  ImscStylePassthrough_ENABLED,
+  ImscStylePassthrough'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Input.hs b/gen/Amazonka/MediaConvert/Types/Input.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Input.hs
@@ -0,0 +1,686 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Input
+-- Copyright   : (c) 2013-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.Input 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.AudioSelector
+import Amazonka.MediaConvert.Types.AudioSelectorGroup
+import Amazonka.MediaConvert.Types.CaptionSelector
+import Amazonka.MediaConvert.Types.ImageInserter
+import Amazonka.MediaConvert.Types.InputClipping
+import Amazonka.MediaConvert.Types.InputDeblockFilter
+import Amazonka.MediaConvert.Types.InputDecryptionSettings
+import Amazonka.MediaConvert.Types.InputDenoiseFilter
+import Amazonka.MediaConvert.Types.InputFilterEnable
+import Amazonka.MediaConvert.Types.InputPsiControl
+import Amazonka.MediaConvert.Types.InputScanType
+import Amazonka.MediaConvert.Types.InputTimecodeSource
+import Amazonka.MediaConvert.Types.InputVideoGenerator
+import Amazonka.MediaConvert.Types.Rectangle
+import Amazonka.MediaConvert.Types.VideoSelector
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use inputs to define the source files used in your transcoding job. For
+-- more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/specify-input-settings.html.
+-- You can use multiple video inputs to do input stitching. For more
+-- information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/assembling-multiple-inputs-and-input-clips.html
+--
+-- /See:/ 'newInput' smart constructor.
+data Input = Input'
+  { -- | Use audio selector groups to combine multiple sidecar audio inputs so
+    -- that you can assign them to a single output audio tab
+    -- (AudioDescription). Note that, if you\'re working with embedded audio,
+    -- it\'s simpler to assign multiple input tracks into a single audio
+    -- selector rather than use an audio selector group.
+    audioSelectorGroups :: Prelude.Maybe (Prelude.HashMap Prelude.Text AudioSelectorGroup),
+    -- | Use Audio selectors (AudioSelectors) to specify a track or set of tracks
+    -- from the input that you will use in your outputs. You can use multiple
+    -- Audio selectors per input.
+    audioSelectors :: Prelude.Maybe (Prelude.HashMap Prelude.Text AudioSelector),
+    -- | Use captions selectors to specify the captions data from your input that
+    -- you use in your outputs. You can use up to 20 captions selectors per
+    -- input.
+    captionSelectors :: Prelude.Maybe (Prelude.HashMap Prelude.Text CaptionSelector),
+    -- | Use Cropping selection (crop) to specify the video area that the service
+    -- will include in the output video frame. If you specify a value here, it
+    -- will override any value that you specify in the output setting Cropping
+    -- selection (crop).
+    crop :: Prelude.Maybe Rectangle,
+    -- | Enable Deblock (InputDeblockFilter) to produce smoother motion in the
+    -- output. Default is disabled. Only manually controllable for MPEG2 and
+    -- uncompressed video inputs.
+    deblockFilter :: Prelude.Maybe InputDeblockFilter,
+    -- | Settings for decrypting any input files that you encrypt before you
+    -- upload them to Amazon S3. MediaConvert can decrypt files only when you
+    -- use AWS Key Management Service (KMS) to encrypt the data key that you
+    -- use to encrypt your content.
+    decryptionSettings :: Prelude.Maybe InputDecryptionSettings,
+    -- | Enable Denoise (InputDenoiseFilter) to filter noise from the input.
+    -- Default is disabled. Only applicable to MPEG2, H.264, H.265, and
+    -- uncompressed video inputs.
+    denoiseFilter :: Prelude.Maybe InputDenoiseFilter,
+    -- | Use this setting only when your video source has Dolby Vision studio
+    -- mastering metadata that is carried in a separate XML file. Specify the
+    -- Amazon S3 location for the metadata XML file. MediaConvert uses this
+    -- file to provide global and frame-level metadata for Dolby Vision
+    -- preprocessing. When you specify a file here and your input also has
+    -- interleaved global and frame level metadata, MediaConvert ignores the
+    -- interleaved metadata and uses only the the metadata from this external
+    -- XML file. Note that your IAM service role must grant MediaConvert read
+    -- permissions to this file. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html.
+    dolbyVisionMetadataXml :: Prelude.Maybe Prelude.Text,
+    -- | Specify the source file for your transcoding job. You can use multiple
+    -- inputs in a single job. The service concatenates these inputs, in the
+    -- order that you specify them in the job, to create the outputs. If your
+    -- input format is IMF, specify your input by providing the path to your
+    -- CPL. For example, \"s3:\/\/bucket\/vf\/cpl.xml\". If the CPL is in an
+    -- incomplete IMP, make sure to use *Supplemental IMPs* (SupplementalImps)
+    -- to specify any supplemental IMPs that contain assets referenced by the
+    -- CPL.
+    fileInput :: Prelude.Maybe Prelude.Text,
+    -- | Specify how the transcoding service applies the denoise and deblock
+    -- filters. You must also enable the filters separately, with Denoise
+    -- (InputDenoiseFilter) and Deblock (InputDeblockFilter). * Auto - The
+    -- transcoding service determines whether to apply filtering, depending on
+    -- input type and quality. * Disable - The input is not filtered. This is
+    -- true even if you use the API to enable them in (InputDeblockFilter) and
+    -- (InputDeblockFilter). * Force - The input is filtered regardless of
+    -- input type.
+    filterEnable :: Prelude.Maybe InputFilterEnable,
+    -- | Use Filter strength (FilterStrength) to adjust the magnitude the input
+    -- filter settings (Deblock and Denoise). The range is -5 to 5. Default is
+    -- 0.
+    filterStrength :: Prelude.Maybe Prelude.Int,
+    -- | Enable the image inserter feature to include a graphic overlay on your
+    -- video. Enable or disable this feature for each input individually. This
+    -- setting is disabled by default.
+    imageInserter :: Prelude.Maybe ImageInserter,
+    -- | (InputClippings) contains sets of start and end times that together
+    -- specify a portion of the input to be used in the outputs. If you provide
+    -- only a start time, the clip will be the entire input from that point to
+    -- the end. If you provide only an end time, it will be the entire input up
+    -- to that point. When you specify more than one input clip, the
+    -- transcoding service creates the job outputs by stringing the clips
+    -- together in the order you specify them.
+    inputClippings :: Prelude.Maybe [InputClipping],
+    -- | When you have a progressive segmented frame (PsF) input, use this
+    -- setting to flag the input as PsF. MediaConvert doesn\'t automatically
+    -- detect PsF. Therefore, flagging your input as PsF results in better
+    -- preservation of video quality when you do deinterlacing and frame rate
+    -- conversion. If you don\'t specify, the default value is Auto (AUTO).
+    -- Auto is the correct setting for all inputs that are not PsF. Don\'t set
+    -- this value to PsF when your input is interlaced. Doing so creates
+    -- horizontal interlacing artifacts.
+    inputScanType :: Prelude.Maybe InputScanType,
+    -- | Use Selection placement (position) to define the video area in your
+    -- output frame. The area outside of the rectangle that you specify here is
+    -- black. If you specify a value here, it will override any value that you
+    -- specify in the output setting Selection placement (position). If you
+    -- specify a value here, this will override any AFD values in your input,
+    -- even if you set Respond to AFD (RespondToAfd) to Respond (RESPOND). If
+    -- you specify a value here, this will ignore anything that you specify for
+    -- the setting Scaling Behavior (scalingBehavior).
+    position :: Prelude.Maybe Rectangle,
+    -- | Use Program (programNumber) to select a specific program from within a
+    -- multi-program transport stream. Note that Quad 4K is not currently
+    -- supported. Default is the first program within the transport stream. If
+    -- the program you specify doesn\'t exist, the transcoding service will use
+    -- this default.
+    programNumber :: Prelude.Maybe Prelude.Natural,
+    -- | Set PSI control (InputPsiControl) for transport stream inputs to specify
+    -- which data the demux process to scans. * Ignore PSI - Scan all PIDs for
+    -- audio and video. * Use PSI - Scan only PSI data.
+    psiControl :: Prelude.Maybe InputPsiControl,
+    -- | Provide a list of any necessary supplemental IMPs. You need supplemental
+    -- IMPs if the CPL that you\'re using for your input is in an incomplete
+    -- IMP. Specify either the supplemental IMP directories with a trailing
+    -- slash or the ASSETMAP.xml files. For example [\"s3:\/\/bucket\/ov\/\",
+    -- \"s3:\/\/bucket\/vf2\/ASSETMAP.xml\"]. You don\'t need to specify the
+    -- IMP that contains your input CPL, because the service automatically
+    -- detects it.
+    supplementalImps :: Prelude.Maybe [Prelude.Text],
+    -- | Use this Timecode source setting, located under the input settings
+    -- (InputTimecodeSource), to specify how the service counts input video
+    -- frames. This input frame count affects only the behavior of features
+    -- that apply to a single input at a time, such as input clipping and
+    -- synchronizing some captions formats. Choose Embedded (EMBEDDED) to use
+    -- the timecodes in your input video. Choose Start at zero (ZEROBASED) to
+    -- start the first frame at zero. Choose Specified start (SPECIFIEDSTART)
+    -- to start the first frame at the timecode that you specify in the setting
+    -- Start timecode (timecodeStart). If you don\'t specify a value for
+    -- Timecode source, the service will use Embedded by default. For more
+    -- information about timecodes, see
+    -- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
+    timecodeSource :: Prelude.Maybe InputTimecodeSource,
+    -- | Specify the timecode that you want the service to use for this input\'s
+    -- initial frame. To use this setting, you must set the Timecode source
+    -- setting, located under the input settings (InputTimecodeSource), to
+    -- Specified start (SPECIFIEDSTART). For more information about timecodes,
+    -- see https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
+    timecodeStart :: Prelude.Maybe Prelude.Text,
+    -- | When you include Video generator, MediaConvert creates a video input
+    -- with black frames. Use this setting if you do not have a video input or
+    -- if you want to add black video frames before, or after, other inputs.
+    -- You can specify Video generator, or you can specify an Input file, but
+    -- you cannot specify both. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/video-generator.html
+    videoGenerator :: Prelude.Maybe InputVideoGenerator,
+    -- | Input video selectors contain the video settings for the input. Each of
+    -- your inputs can have up to one video selector.
+    videoSelector :: Prelude.Maybe VideoSelector
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Input' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'audioSelectorGroups', 'input_audioSelectorGroups' - Use audio selector groups to combine multiple sidecar audio inputs so
+-- that you can assign them to a single output audio tab
+-- (AudioDescription). Note that, if you\'re working with embedded audio,
+-- it\'s simpler to assign multiple input tracks into a single audio
+-- selector rather than use an audio selector group.
+--
+-- 'audioSelectors', 'input_audioSelectors' - Use Audio selectors (AudioSelectors) to specify a track or set of tracks
+-- from the input that you will use in your outputs. You can use multiple
+-- Audio selectors per input.
+--
+-- 'captionSelectors', 'input_captionSelectors' - Use captions selectors to specify the captions data from your input that
+-- you use in your outputs. You can use up to 20 captions selectors per
+-- input.
+--
+-- 'crop', 'input_crop' - Use Cropping selection (crop) to specify the video area that the service
+-- will include in the output video frame. If you specify a value here, it
+-- will override any value that you specify in the output setting Cropping
+-- selection (crop).
+--
+-- 'deblockFilter', 'input_deblockFilter' - Enable Deblock (InputDeblockFilter) to produce smoother motion in the
+-- output. Default is disabled. Only manually controllable for MPEG2 and
+-- uncompressed video inputs.
+--
+-- 'decryptionSettings', 'input_decryptionSettings' - Settings for decrypting any input files that you encrypt before you
+-- upload them to Amazon S3. MediaConvert can decrypt files only when you
+-- use AWS Key Management Service (KMS) to encrypt the data key that you
+-- use to encrypt your content.
+--
+-- 'denoiseFilter', 'input_denoiseFilter' - Enable Denoise (InputDenoiseFilter) to filter noise from the input.
+-- Default is disabled. Only applicable to MPEG2, H.264, H.265, and
+-- uncompressed video inputs.
+--
+-- 'dolbyVisionMetadataXml', 'input_dolbyVisionMetadataXml' - Use this setting only when your video source has Dolby Vision studio
+-- mastering metadata that is carried in a separate XML file. Specify the
+-- Amazon S3 location for the metadata XML file. MediaConvert uses this
+-- file to provide global and frame-level metadata for Dolby Vision
+-- preprocessing. When you specify a file here and your input also has
+-- interleaved global and frame level metadata, MediaConvert ignores the
+-- interleaved metadata and uses only the the metadata from this external
+-- XML file. Note that your IAM service role must grant MediaConvert read
+-- permissions to this file. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html.
+--
+-- 'fileInput', 'input_fileInput' - Specify the source file for your transcoding job. You can use multiple
+-- inputs in a single job. The service concatenates these inputs, in the
+-- order that you specify them in the job, to create the outputs. If your
+-- input format is IMF, specify your input by providing the path to your
+-- CPL. For example, \"s3:\/\/bucket\/vf\/cpl.xml\". If the CPL is in an
+-- incomplete IMP, make sure to use *Supplemental IMPs* (SupplementalImps)
+-- to specify any supplemental IMPs that contain assets referenced by the
+-- CPL.
+--
+-- 'filterEnable', 'input_filterEnable' - Specify how the transcoding service applies the denoise and deblock
+-- filters. You must also enable the filters separately, with Denoise
+-- (InputDenoiseFilter) and Deblock (InputDeblockFilter). * Auto - The
+-- transcoding service determines whether to apply filtering, depending on
+-- input type and quality. * Disable - The input is not filtered. This is
+-- true even if you use the API to enable them in (InputDeblockFilter) and
+-- (InputDeblockFilter). * Force - The input is filtered regardless of
+-- input type.
+--
+-- 'filterStrength', 'input_filterStrength' - Use Filter strength (FilterStrength) to adjust the magnitude the input
+-- filter settings (Deblock and Denoise). The range is -5 to 5. Default is
+-- 0.
+--
+-- 'imageInserter', 'input_imageInserter' - Enable the image inserter feature to include a graphic overlay on your
+-- video. Enable or disable this feature for each input individually. This
+-- setting is disabled by default.
+--
+-- 'inputClippings', 'input_inputClippings' - (InputClippings) contains sets of start and end times that together
+-- specify a portion of the input to be used in the outputs. If you provide
+-- only a start time, the clip will be the entire input from that point to
+-- the end. If you provide only an end time, it will be the entire input up
+-- to that point. When you specify more than one input clip, the
+-- transcoding service creates the job outputs by stringing the clips
+-- together in the order you specify them.
+--
+-- 'inputScanType', 'input_inputScanType' - When you have a progressive segmented frame (PsF) input, use this
+-- setting to flag the input as PsF. MediaConvert doesn\'t automatically
+-- detect PsF. Therefore, flagging your input as PsF results in better
+-- preservation of video quality when you do deinterlacing and frame rate
+-- conversion. If you don\'t specify, the default value is Auto (AUTO).
+-- Auto is the correct setting for all inputs that are not PsF. Don\'t set
+-- this value to PsF when your input is interlaced. Doing so creates
+-- horizontal interlacing artifacts.
+--
+-- 'position', 'input_position' - Use Selection placement (position) to define the video area in your
+-- output frame. The area outside of the rectangle that you specify here is
+-- black. If you specify a value here, it will override any value that you
+-- specify in the output setting Selection placement (position). If you
+-- specify a value here, this will override any AFD values in your input,
+-- even if you set Respond to AFD (RespondToAfd) to Respond (RESPOND). If
+-- you specify a value here, this will ignore anything that you specify for
+-- the setting Scaling Behavior (scalingBehavior).
+--
+-- 'programNumber', 'input_programNumber' - Use Program (programNumber) to select a specific program from within a
+-- multi-program transport stream. Note that Quad 4K is not currently
+-- supported. Default is the first program within the transport stream. If
+-- the program you specify doesn\'t exist, the transcoding service will use
+-- this default.
+--
+-- 'psiControl', 'input_psiControl' - Set PSI control (InputPsiControl) for transport stream inputs to specify
+-- which data the demux process to scans. * Ignore PSI - Scan all PIDs for
+-- audio and video. * Use PSI - Scan only PSI data.
+--
+-- 'supplementalImps', 'input_supplementalImps' - Provide a list of any necessary supplemental IMPs. You need supplemental
+-- IMPs if the CPL that you\'re using for your input is in an incomplete
+-- IMP. Specify either the supplemental IMP directories with a trailing
+-- slash or the ASSETMAP.xml files. For example [\"s3:\/\/bucket\/ov\/\",
+-- \"s3:\/\/bucket\/vf2\/ASSETMAP.xml\"]. You don\'t need to specify the
+-- IMP that contains your input CPL, because the service automatically
+-- detects it.
+--
+-- 'timecodeSource', 'input_timecodeSource' - Use this Timecode source setting, located under the input settings
+-- (InputTimecodeSource), to specify how the service counts input video
+-- frames. This input frame count affects only the behavior of features
+-- that apply to a single input at a time, such as input clipping and
+-- synchronizing some captions formats. Choose Embedded (EMBEDDED) to use
+-- the timecodes in your input video. Choose Start at zero (ZEROBASED) to
+-- start the first frame at zero. Choose Specified start (SPECIFIEDSTART)
+-- to start the first frame at the timecode that you specify in the setting
+-- Start timecode (timecodeStart). If you don\'t specify a value for
+-- Timecode source, the service will use Embedded by default. For more
+-- information about timecodes, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
+--
+-- 'timecodeStart', 'input_timecodeStart' - Specify the timecode that you want the service to use for this input\'s
+-- initial frame. To use this setting, you must set the Timecode source
+-- setting, located under the input settings (InputTimecodeSource), to
+-- Specified start (SPECIFIEDSTART). For more information about timecodes,
+-- see https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
+--
+-- 'videoGenerator', 'input_videoGenerator' - When you include Video generator, MediaConvert creates a video input
+-- with black frames. Use this setting if you do not have a video input or
+-- if you want to add black video frames before, or after, other inputs.
+-- You can specify Video generator, or you can specify an Input file, but
+-- you cannot specify both. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/video-generator.html
+--
+-- 'videoSelector', 'input_videoSelector' - Input video selectors contain the video settings for the input. Each of
+-- your inputs can have up to one video selector.
+newInput ::
+  Input
+newInput =
+  Input'
+    { audioSelectorGroups = Prelude.Nothing,
+      audioSelectors = Prelude.Nothing,
+      captionSelectors = Prelude.Nothing,
+      crop = Prelude.Nothing,
+      deblockFilter = Prelude.Nothing,
+      decryptionSettings = Prelude.Nothing,
+      denoiseFilter = Prelude.Nothing,
+      dolbyVisionMetadataXml = Prelude.Nothing,
+      fileInput = Prelude.Nothing,
+      filterEnable = Prelude.Nothing,
+      filterStrength = Prelude.Nothing,
+      imageInserter = Prelude.Nothing,
+      inputClippings = Prelude.Nothing,
+      inputScanType = Prelude.Nothing,
+      position = Prelude.Nothing,
+      programNumber = Prelude.Nothing,
+      psiControl = Prelude.Nothing,
+      supplementalImps = Prelude.Nothing,
+      timecodeSource = Prelude.Nothing,
+      timecodeStart = Prelude.Nothing,
+      videoGenerator = Prelude.Nothing,
+      videoSelector = Prelude.Nothing
+    }
+
+-- | Use audio selector groups to combine multiple sidecar audio inputs so
+-- that you can assign them to a single output audio tab
+-- (AudioDescription). Note that, if you\'re working with embedded audio,
+-- it\'s simpler to assign multiple input tracks into a single audio
+-- selector rather than use an audio selector group.
+input_audioSelectorGroups :: Lens.Lens' Input (Prelude.Maybe (Prelude.HashMap Prelude.Text AudioSelectorGroup))
+input_audioSelectorGroups = Lens.lens (\Input' {audioSelectorGroups} -> audioSelectorGroups) (\s@Input' {} a -> s {audioSelectorGroups = a} :: Input) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use Audio selectors (AudioSelectors) to specify a track or set of tracks
+-- from the input that you will use in your outputs. You can use multiple
+-- Audio selectors per input.
+input_audioSelectors :: Lens.Lens' Input (Prelude.Maybe (Prelude.HashMap Prelude.Text AudioSelector))
+input_audioSelectors = Lens.lens (\Input' {audioSelectors} -> audioSelectors) (\s@Input' {} a -> s {audioSelectors = a} :: Input) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use captions selectors to specify the captions data from your input that
+-- you use in your outputs. You can use up to 20 captions selectors per
+-- input.
+input_captionSelectors :: Lens.Lens' Input (Prelude.Maybe (Prelude.HashMap Prelude.Text CaptionSelector))
+input_captionSelectors = Lens.lens (\Input' {captionSelectors} -> captionSelectors) (\s@Input' {} a -> s {captionSelectors = a} :: Input) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use Cropping selection (crop) to specify the video area that the service
+-- will include in the output video frame. If you specify a value here, it
+-- will override any value that you specify in the output setting Cropping
+-- selection (crop).
+input_crop :: Lens.Lens' Input (Prelude.Maybe Rectangle)
+input_crop = Lens.lens (\Input' {crop} -> crop) (\s@Input' {} a -> s {crop = a} :: Input)
+
+-- | Enable Deblock (InputDeblockFilter) to produce smoother motion in the
+-- output. Default is disabled. Only manually controllable for MPEG2 and
+-- uncompressed video inputs.
+input_deblockFilter :: Lens.Lens' Input (Prelude.Maybe InputDeblockFilter)
+input_deblockFilter = Lens.lens (\Input' {deblockFilter} -> deblockFilter) (\s@Input' {} a -> s {deblockFilter = a} :: Input)
+
+-- | Settings for decrypting any input files that you encrypt before you
+-- upload them to Amazon S3. MediaConvert can decrypt files only when you
+-- use AWS Key Management Service (KMS) to encrypt the data key that you
+-- use to encrypt your content.
+input_decryptionSettings :: Lens.Lens' Input (Prelude.Maybe InputDecryptionSettings)
+input_decryptionSettings = Lens.lens (\Input' {decryptionSettings} -> decryptionSettings) (\s@Input' {} a -> s {decryptionSettings = a} :: Input)
+
+-- | Enable Denoise (InputDenoiseFilter) to filter noise from the input.
+-- Default is disabled. Only applicable to MPEG2, H.264, H.265, and
+-- uncompressed video inputs.
+input_denoiseFilter :: Lens.Lens' Input (Prelude.Maybe InputDenoiseFilter)
+input_denoiseFilter = Lens.lens (\Input' {denoiseFilter} -> denoiseFilter) (\s@Input' {} a -> s {denoiseFilter = a} :: Input)
+
+-- | Use this setting only when your video source has Dolby Vision studio
+-- mastering metadata that is carried in a separate XML file. Specify the
+-- Amazon S3 location for the metadata XML file. MediaConvert uses this
+-- file to provide global and frame-level metadata for Dolby Vision
+-- preprocessing. When you specify a file here and your input also has
+-- interleaved global and frame level metadata, MediaConvert ignores the
+-- interleaved metadata and uses only the the metadata from this external
+-- XML file. Note that your IAM service role must grant MediaConvert read
+-- permissions to this file. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html.
+input_dolbyVisionMetadataXml :: Lens.Lens' Input (Prelude.Maybe Prelude.Text)
+input_dolbyVisionMetadataXml = Lens.lens (\Input' {dolbyVisionMetadataXml} -> dolbyVisionMetadataXml) (\s@Input' {} a -> s {dolbyVisionMetadataXml = a} :: Input)
+
+-- | Specify the source file for your transcoding job. You can use multiple
+-- inputs in a single job. The service concatenates these inputs, in the
+-- order that you specify them in the job, to create the outputs. If your
+-- input format is IMF, specify your input by providing the path to your
+-- CPL. For example, \"s3:\/\/bucket\/vf\/cpl.xml\". If the CPL is in an
+-- incomplete IMP, make sure to use *Supplemental IMPs* (SupplementalImps)
+-- to specify any supplemental IMPs that contain assets referenced by the
+-- CPL.
+input_fileInput :: Lens.Lens' Input (Prelude.Maybe Prelude.Text)
+input_fileInput = Lens.lens (\Input' {fileInput} -> fileInput) (\s@Input' {} a -> s {fileInput = a} :: Input)
+
+-- | Specify how the transcoding service applies the denoise and deblock
+-- filters. You must also enable the filters separately, with Denoise
+-- (InputDenoiseFilter) and Deblock (InputDeblockFilter). * Auto - The
+-- transcoding service determines whether to apply filtering, depending on
+-- input type and quality. * Disable - The input is not filtered. This is
+-- true even if you use the API to enable them in (InputDeblockFilter) and
+-- (InputDeblockFilter). * Force - The input is filtered regardless of
+-- input type.
+input_filterEnable :: Lens.Lens' Input (Prelude.Maybe InputFilterEnable)
+input_filterEnable = Lens.lens (\Input' {filterEnable} -> filterEnable) (\s@Input' {} a -> s {filterEnable = a} :: Input)
+
+-- | Use Filter strength (FilterStrength) to adjust the magnitude the input
+-- filter settings (Deblock and Denoise). The range is -5 to 5. Default is
+-- 0.
+input_filterStrength :: Lens.Lens' Input (Prelude.Maybe Prelude.Int)
+input_filterStrength = Lens.lens (\Input' {filterStrength} -> filterStrength) (\s@Input' {} a -> s {filterStrength = a} :: Input)
+
+-- | Enable the image inserter feature to include a graphic overlay on your
+-- video. Enable or disable this feature for each input individually. This
+-- setting is disabled by default.
+input_imageInserter :: Lens.Lens' Input (Prelude.Maybe ImageInserter)
+input_imageInserter = Lens.lens (\Input' {imageInserter} -> imageInserter) (\s@Input' {} a -> s {imageInserter = a} :: Input)
+
+-- | (InputClippings) contains sets of start and end times that together
+-- specify a portion of the input to be used in the outputs. If you provide
+-- only a start time, the clip will be the entire input from that point to
+-- the end. If you provide only an end time, it will be the entire input up
+-- to that point. When you specify more than one input clip, the
+-- transcoding service creates the job outputs by stringing the clips
+-- together in the order you specify them.
+input_inputClippings :: Lens.Lens' Input (Prelude.Maybe [InputClipping])
+input_inputClippings = Lens.lens (\Input' {inputClippings} -> inputClippings) (\s@Input' {} a -> s {inputClippings = a} :: Input) Prelude.. Lens.mapping Lens.coerced
+
+-- | When you have a progressive segmented frame (PsF) input, use this
+-- setting to flag the input as PsF. MediaConvert doesn\'t automatically
+-- detect PsF. Therefore, flagging your input as PsF results in better
+-- preservation of video quality when you do deinterlacing and frame rate
+-- conversion. If you don\'t specify, the default value is Auto (AUTO).
+-- Auto is the correct setting for all inputs that are not PsF. Don\'t set
+-- this value to PsF when your input is interlaced. Doing so creates
+-- horizontal interlacing artifacts.
+input_inputScanType :: Lens.Lens' Input (Prelude.Maybe InputScanType)
+input_inputScanType = Lens.lens (\Input' {inputScanType} -> inputScanType) (\s@Input' {} a -> s {inputScanType = a} :: Input)
+
+-- | Use Selection placement (position) to define the video area in your
+-- output frame. The area outside of the rectangle that you specify here is
+-- black. If you specify a value here, it will override any value that you
+-- specify in the output setting Selection placement (position). If you
+-- specify a value here, this will override any AFD values in your input,
+-- even if you set Respond to AFD (RespondToAfd) to Respond (RESPOND). If
+-- you specify a value here, this will ignore anything that you specify for
+-- the setting Scaling Behavior (scalingBehavior).
+input_position :: Lens.Lens' Input (Prelude.Maybe Rectangle)
+input_position = Lens.lens (\Input' {position} -> position) (\s@Input' {} a -> s {position = a} :: Input)
+
+-- | Use Program (programNumber) to select a specific program from within a
+-- multi-program transport stream. Note that Quad 4K is not currently
+-- supported. Default is the first program within the transport stream. If
+-- the program you specify doesn\'t exist, the transcoding service will use
+-- this default.
+input_programNumber :: Lens.Lens' Input (Prelude.Maybe Prelude.Natural)
+input_programNumber = Lens.lens (\Input' {programNumber} -> programNumber) (\s@Input' {} a -> s {programNumber = a} :: Input)
+
+-- | Set PSI control (InputPsiControl) for transport stream inputs to specify
+-- which data the demux process to scans. * Ignore PSI - Scan all PIDs for
+-- audio and video. * Use PSI - Scan only PSI data.
+input_psiControl :: Lens.Lens' Input (Prelude.Maybe InputPsiControl)
+input_psiControl = Lens.lens (\Input' {psiControl} -> psiControl) (\s@Input' {} a -> s {psiControl = a} :: Input)
+
+-- | Provide a list of any necessary supplemental IMPs. You need supplemental
+-- IMPs if the CPL that you\'re using for your input is in an incomplete
+-- IMP. Specify either the supplemental IMP directories with a trailing
+-- slash or the ASSETMAP.xml files. For example [\"s3:\/\/bucket\/ov\/\",
+-- \"s3:\/\/bucket\/vf2\/ASSETMAP.xml\"]. You don\'t need to specify the
+-- IMP that contains your input CPL, because the service automatically
+-- detects it.
+input_supplementalImps :: Lens.Lens' Input (Prelude.Maybe [Prelude.Text])
+input_supplementalImps = Lens.lens (\Input' {supplementalImps} -> supplementalImps) (\s@Input' {} a -> s {supplementalImps = a} :: Input) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use this Timecode source setting, located under the input settings
+-- (InputTimecodeSource), to specify how the service counts input video
+-- frames. This input frame count affects only the behavior of features
+-- that apply to a single input at a time, such as input clipping and
+-- synchronizing some captions formats. Choose Embedded (EMBEDDED) to use
+-- the timecodes in your input video. Choose Start at zero (ZEROBASED) to
+-- start the first frame at zero. Choose Specified start (SPECIFIEDSTART)
+-- to start the first frame at the timecode that you specify in the setting
+-- Start timecode (timecodeStart). If you don\'t specify a value for
+-- Timecode source, the service will use Embedded by default. For more
+-- information about timecodes, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
+input_timecodeSource :: Lens.Lens' Input (Prelude.Maybe InputTimecodeSource)
+input_timecodeSource = Lens.lens (\Input' {timecodeSource} -> timecodeSource) (\s@Input' {} a -> s {timecodeSource = a} :: Input)
+
+-- | Specify the timecode that you want the service to use for this input\'s
+-- initial frame. To use this setting, you must set the Timecode source
+-- setting, located under the input settings (InputTimecodeSource), to
+-- Specified start (SPECIFIEDSTART). For more information about timecodes,
+-- see https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
+input_timecodeStart :: Lens.Lens' Input (Prelude.Maybe Prelude.Text)
+input_timecodeStart = Lens.lens (\Input' {timecodeStart} -> timecodeStart) (\s@Input' {} a -> s {timecodeStart = a} :: Input)
+
+-- | When you include Video generator, MediaConvert creates a video input
+-- with black frames. Use this setting if you do not have a video input or
+-- if you want to add black video frames before, or after, other inputs.
+-- You can specify Video generator, or you can specify an Input file, but
+-- you cannot specify both. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/video-generator.html
+input_videoGenerator :: Lens.Lens' Input (Prelude.Maybe InputVideoGenerator)
+input_videoGenerator = Lens.lens (\Input' {videoGenerator} -> videoGenerator) (\s@Input' {} a -> s {videoGenerator = a} :: Input)
+
+-- | Input video selectors contain the video settings for the input. Each of
+-- your inputs can have up to one video selector.
+input_videoSelector :: Lens.Lens' Input (Prelude.Maybe VideoSelector)
+input_videoSelector = Lens.lens (\Input' {videoSelector} -> videoSelector) (\s@Input' {} a -> s {videoSelector = a} :: Input)
+
+instance Data.FromJSON Input where
+  parseJSON =
+    Data.withObject
+      "Input"
+      ( \x ->
+          Input'
+            Prelude.<$> ( x
+                            Data..:? "audioSelectorGroups"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "audioSelectors" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "captionSelectors"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "crop")
+            Prelude.<*> (x Data..:? "deblockFilter")
+            Prelude.<*> (x Data..:? "decryptionSettings")
+            Prelude.<*> (x Data..:? "denoiseFilter")
+            Prelude.<*> (x Data..:? "dolbyVisionMetadataXml")
+            Prelude.<*> (x Data..:? "fileInput")
+            Prelude.<*> (x Data..:? "filterEnable")
+            Prelude.<*> (x Data..:? "filterStrength")
+            Prelude.<*> (x Data..:? "imageInserter")
+            Prelude.<*> (x Data..:? "inputClippings" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "inputScanType")
+            Prelude.<*> (x Data..:? "position")
+            Prelude.<*> (x Data..:? "programNumber")
+            Prelude.<*> (x Data..:? "psiControl")
+            Prelude.<*> ( x
+                            Data..:? "supplementalImps"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "timecodeSource")
+            Prelude.<*> (x Data..:? "timecodeStart")
+            Prelude.<*> (x Data..:? "videoGenerator")
+            Prelude.<*> (x Data..:? "videoSelector")
+      )
+
+instance Prelude.Hashable Input where
+  hashWithSalt _salt Input' {..} =
+    _salt
+      `Prelude.hashWithSalt` audioSelectorGroups
+      `Prelude.hashWithSalt` audioSelectors
+      `Prelude.hashWithSalt` captionSelectors
+      `Prelude.hashWithSalt` crop
+      `Prelude.hashWithSalt` deblockFilter
+      `Prelude.hashWithSalt` decryptionSettings
+      `Prelude.hashWithSalt` denoiseFilter
+      `Prelude.hashWithSalt` dolbyVisionMetadataXml
+      `Prelude.hashWithSalt` fileInput
+      `Prelude.hashWithSalt` filterEnable
+      `Prelude.hashWithSalt` filterStrength
+      `Prelude.hashWithSalt` imageInserter
+      `Prelude.hashWithSalt` inputClippings
+      `Prelude.hashWithSalt` inputScanType
+      `Prelude.hashWithSalt` position
+      `Prelude.hashWithSalt` programNumber
+      `Prelude.hashWithSalt` psiControl
+      `Prelude.hashWithSalt` supplementalImps
+      `Prelude.hashWithSalt` timecodeSource
+      `Prelude.hashWithSalt` timecodeStart
+      `Prelude.hashWithSalt` videoGenerator
+      `Prelude.hashWithSalt` videoSelector
+
+instance Prelude.NFData Input where
+  rnf Input' {..} =
+    Prelude.rnf audioSelectorGroups
+      `Prelude.seq` Prelude.rnf audioSelectors
+      `Prelude.seq` Prelude.rnf captionSelectors
+      `Prelude.seq` Prelude.rnf crop
+      `Prelude.seq` Prelude.rnf deblockFilter
+      `Prelude.seq` Prelude.rnf decryptionSettings
+      `Prelude.seq` Prelude.rnf denoiseFilter
+      `Prelude.seq` Prelude.rnf dolbyVisionMetadataXml
+      `Prelude.seq` Prelude.rnf fileInput
+      `Prelude.seq` Prelude.rnf filterEnable
+      `Prelude.seq` Prelude.rnf filterStrength
+      `Prelude.seq` Prelude.rnf imageInserter
+      `Prelude.seq` Prelude.rnf inputClippings
+      `Prelude.seq` Prelude.rnf inputScanType
+      `Prelude.seq` Prelude.rnf position
+      `Prelude.seq` Prelude.rnf programNumber
+      `Prelude.seq` Prelude.rnf psiControl
+      `Prelude.seq` Prelude.rnf supplementalImps
+      `Prelude.seq` Prelude.rnf timecodeSource
+      `Prelude.seq` Prelude.rnf timecodeStart
+      `Prelude.seq` Prelude.rnf videoGenerator
+      `Prelude.seq` Prelude.rnf videoSelector
+
+instance Data.ToJSON Input where
+  toJSON Input' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("audioSelectorGroups" Data..=)
+              Prelude.<$> audioSelectorGroups,
+            ("audioSelectors" Data..=)
+              Prelude.<$> audioSelectors,
+            ("captionSelectors" Data..=)
+              Prelude.<$> captionSelectors,
+            ("crop" Data..=) Prelude.<$> crop,
+            ("deblockFilter" Data..=) Prelude.<$> deblockFilter,
+            ("decryptionSettings" Data..=)
+              Prelude.<$> decryptionSettings,
+            ("denoiseFilter" Data..=) Prelude.<$> denoiseFilter,
+            ("dolbyVisionMetadataXml" Data..=)
+              Prelude.<$> dolbyVisionMetadataXml,
+            ("fileInput" Data..=) Prelude.<$> fileInput,
+            ("filterEnable" Data..=) Prelude.<$> filterEnable,
+            ("filterStrength" Data..=)
+              Prelude.<$> filterStrength,
+            ("imageInserter" Data..=) Prelude.<$> imageInserter,
+            ("inputClippings" Data..=)
+              Prelude.<$> inputClippings,
+            ("inputScanType" Data..=) Prelude.<$> inputScanType,
+            ("position" Data..=) Prelude.<$> position,
+            ("programNumber" Data..=) Prelude.<$> programNumber,
+            ("psiControl" Data..=) Prelude.<$> psiControl,
+            ("supplementalImps" Data..=)
+              Prelude.<$> supplementalImps,
+            ("timecodeSource" Data..=)
+              Prelude.<$> timecodeSource,
+            ("timecodeStart" Data..=) Prelude.<$> timecodeStart,
+            ("videoGenerator" Data..=)
+              Prelude.<$> videoGenerator,
+            ("videoSelector" Data..=) Prelude.<$> videoSelector
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/InputClipping.hs b/gen/Amazonka/MediaConvert/Types/InputClipping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InputClipping.hs
@@ -0,0 +1,145 @@
+{-# 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.InputClipping
+-- 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.InputClipping where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | To transcode only portions of your input, include one input clip for
+-- each part of your input that you want in your output. All input clips
+-- that you specify will be included in every output of the job. For more
+-- information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/assembling-multiple-inputs-and-input-clips.html.
+--
+-- /See:/ 'newInputClipping' smart constructor.
+data InputClipping = InputClipping'
+  { -- | Set End timecode (EndTimecode) to the end of the portion of the input
+    -- you are clipping. The frame corresponding to the End timecode value is
+    -- included in the clip. Start timecode or End timecode may be left blank,
+    -- but not both. Use the format HH:MM:SS:FF or HH:MM:SS;FF, where HH is the
+    -- hour, MM is the minute, SS is the second, and FF is the frame number.
+    -- When choosing this value, take into account your setting for timecode
+    -- source under input settings (InputTimecodeSource). For example, if you
+    -- have embedded timecodes that start at 01:00:00:00 and you want your clip
+    -- to end six minutes into the video, use 01:06:00:00.
+    endTimecode :: Prelude.Maybe Prelude.Text,
+    -- | Set Start timecode (StartTimecode) to the beginning of the portion of
+    -- the input you are clipping. The frame corresponding to the Start
+    -- timecode value is included in the clip. Start timecode or End timecode
+    -- may be left blank, but not both. Use the format HH:MM:SS:FF or
+    -- HH:MM:SS;FF, where HH is the hour, MM is the minute, SS is the second,
+    -- and FF is the frame number. When choosing this value, take into account
+    -- your setting for Input timecode source. For example, if you have
+    -- embedded timecodes that start at 01:00:00:00 and you want your clip to
+    -- begin five minutes into the video, use 01:05:00:00.
+    startTimecode :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputClipping' 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:
+--
+-- 'endTimecode', 'inputClipping_endTimecode' - Set End timecode (EndTimecode) to the end of the portion of the input
+-- you are clipping. The frame corresponding to the End timecode value is
+-- included in the clip. Start timecode or End timecode may be left blank,
+-- but not both. Use the format HH:MM:SS:FF or HH:MM:SS;FF, where HH is the
+-- hour, MM is the minute, SS is the second, and FF is the frame number.
+-- When choosing this value, take into account your setting for timecode
+-- source under input settings (InputTimecodeSource). For example, if you
+-- have embedded timecodes that start at 01:00:00:00 and you want your clip
+-- to end six minutes into the video, use 01:06:00:00.
+--
+-- 'startTimecode', 'inputClipping_startTimecode' - Set Start timecode (StartTimecode) to the beginning of the portion of
+-- the input you are clipping. The frame corresponding to the Start
+-- timecode value is included in the clip. Start timecode or End timecode
+-- may be left blank, but not both. Use the format HH:MM:SS:FF or
+-- HH:MM:SS;FF, where HH is the hour, MM is the minute, SS is the second,
+-- and FF is the frame number. When choosing this value, take into account
+-- your setting for Input timecode source. For example, if you have
+-- embedded timecodes that start at 01:00:00:00 and you want your clip to
+-- begin five minutes into the video, use 01:05:00:00.
+newInputClipping ::
+  InputClipping
+newInputClipping =
+  InputClipping'
+    { endTimecode = Prelude.Nothing,
+      startTimecode = Prelude.Nothing
+    }
+
+-- | Set End timecode (EndTimecode) to the end of the portion of the input
+-- you are clipping. The frame corresponding to the End timecode value is
+-- included in the clip. Start timecode or End timecode may be left blank,
+-- but not both. Use the format HH:MM:SS:FF or HH:MM:SS;FF, where HH is the
+-- hour, MM is the minute, SS is the second, and FF is the frame number.
+-- When choosing this value, take into account your setting for timecode
+-- source under input settings (InputTimecodeSource). For example, if you
+-- have embedded timecodes that start at 01:00:00:00 and you want your clip
+-- to end six minutes into the video, use 01:06:00:00.
+inputClipping_endTimecode :: Lens.Lens' InputClipping (Prelude.Maybe Prelude.Text)
+inputClipping_endTimecode = Lens.lens (\InputClipping' {endTimecode} -> endTimecode) (\s@InputClipping' {} a -> s {endTimecode = a} :: InputClipping)
+
+-- | Set Start timecode (StartTimecode) to the beginning of the portion of
+-- the input you are clipping. The frame corresponding to the Start
+-- timecode value is included in the clip. Start timecode or End timecode
+-- may be left blank, but not both. Use the format HH:MM:SS:FF or
+-- HH:MM:SS;FF, where HH is the hour, MM is the minute, SS is the second,
+-- and FF is the frame number. When choosing this value, take into account
+-- your setting for Input timecode source. For example, if you have
+-- embedded timecodes that start at 01:00:00:00 and you want your clip to
+-- begin five minutes into the video, use 01:05:00:00.
+inputClipping_startTimecode :: Lens.Lens' InputClipping (Prelude.Maybe Prelude.Text)
+inputClipping_startTimecode = Lens.lens (\InputClipping' {startTimecode} -> startTimecode) (\s@InputClipping' {} a -> s {startTimecode = a} :: InputClipping)
+
+instance Data.FromJSON InputClipping where
+  parseJSON =
+    Data.withObject
+      "InputClipping"
+      ( \x ->
+          InputClipping'
+            Prelude.<$> (x Data..:? "endTimecode")
+            Prelude.<*> (x Data..:? "startTimecode")
+      )
+
+instance Prelude.Hashable InputClipping where
+  hashWithSalt _salt InputClipping' {..} =
+    _salt
+      `Prelude.hashWithSalt` endTimecode
+      `Prelude.hashWithSalt` startTimecode
+
+instance Prelude.NFData InputClipping where
+  rnf InputClipping' {..} =
+    Prelude.rnf endTimecode
+      `Prelude.seq` Prelude.rnf startTimecode
+
+instance Data.ToJSON InputClipping where
+  toJSON InputClipping' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("endTimecode" Data..=) Prelude.<$> endTimecode,
+            ("startTimecode" Data..=) Prelude.<$> startTimecode
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/InputDeblockFilter.hs b/gen/Amazonka/MediaConvert/Types/InputDeblockFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InputDeblockFilter.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.InputDeblockFilter
+-- 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.InputDeblockFilter
+  ( InputDeblockFilter
+      ( ..,
+        InputDeblockFilter_DISABLED,
+        InputDeblockFilter_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enable Deblock (InputDeblockFilter) to produce smoother motion in the
+-- output. Default is disabled. Only manually controllable for MPEG2 and
+-- uncompressed video inputs.
+newtype InputDeblockFilter = InputDeblockFilter'
+  { fromInputDeblockFilter ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InputDeblockFilter_DISABLED :: InputDeblockFilter
+pattern InputDeblockFilter_DISABLED = InputDeblockFilter' "DISABLED"
+
+pattern InputDeblockFilter_ENABLED :: InputDeblockFilter
+pattern InputDeblockFilter_ENABLED = InputDeblockFilter' "ENABLED"
+
+{-# COMPLETE
+  InputDeblockFilter_DISABLED,
+  InputDeblockFilter_ENABLED,
+  InputDeblockFilter'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/InputDecryptionSettings.hs b/gen/Amazonka/MediaConvert/Types/InputDecryptionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InputDecryptionSettings.hs
@@ -0,0 +1,157 @@
+{-# 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.InputDecryptionSettings
+-- 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.InputDecryptionSettings 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.DecryptionMode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for decrypting any input files that you encrypt before you
+-- upload them to Amazon S3. MediaConvert can decrypt files only when you
+-- use AWS Key Management Service (KMS) to encrypt the data key that you
+-- use to encrypt your content.
+--
+-- /See:/ 'newInputDecryptionSettings' smart constructor.
+data InputDecryptionSettings = InputDecryptionSettings'
+  { -- | Specify the encryption mode that you used to encrypt your input files.
+    decryptionMode :: Prelude.Maybe DecryptionMode,
+    -- | Warning! Don\'t provide your encryption key in plaintext. Your job
+    -- settings could be intercepted, making your encrypted content vulnerable.
+    -- Specify the encrypted version of the data key that you used to encrypt
+    -- your content. The data key must be encrypted by AWS Key Management
+    -- Service (KMS). The key can be 128, 192, or 256 bits.
+    encryptedDecryptionKey :: Prelude.Maybe Prelude.Text,
+    -- | Specify the initialization vector that you used when you encrypted your
+    -- content before uploading it to Amazon S3. You can use a 16-byte
+    -- initialization vector with any encryption mode. Or, you can use a
+    -- 12-byte initialization vector with GCM or CTR. MediaConvert accepts only
+    -- initialization vectors that are base64-encoded.
+    initializationVector :: Prelude.Maybe Prelude.Text,
+    -- | Specify the AWS Region for AWS Key Management Service (KMS) that you
+    -- used to encrypt your data key, if that Region is different from the one
+    -- you are using for AWS Elemental MediaConvert.
+    kmsKeyRegion :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputDecryptionSettings' 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:
+--
+-- 'decryptionMode', 'inputDecryptionSettings_decryptionMode' - Specify the encryption mode that you used to encrypt your input files.
+--
+-- 'encryptedDecryptionKey', 'inputDecryptionSettings_encryptedDecryptionKey' - Warning! Don\'t provide your encryption key in plaintext. Your job
+-- settings could be intercepted, making your encrypted content vulnerable.
+-- Specify the encrypted version of the data key that you used to encrypt
+-- your content. The data key must be encrypted by AWS Key Management
+-- Service (KMS). The key can be 128, 192, or 256 bits.
+--
+-- 'initializationVector', 'inputDecryptionSettings_initializationVector' - Specify the initialization vector that you used when you encrypted your
+-- content before uploading it to Amazon S3. You can use a 16-byte
+-- initialization vector with any encryption mode. Or, you can use a
+-- 12-byte initialization vector with GCM or CTR. MediaConvert accepts only
+-- initialization vectors that are base64-encoded.
+--
+-- 'kmsKeyRegion', 'inputDecryptionSettings_kmsKeyRegion' - Specify the AWS Region for AWS Key Management Service (KMS) that you
+-- used to encrypt your data key, if that Region is different from the one
+-- you are using for AWS Elemental MediaConvert.
+newInputDecryptionSettings ::
+  InputDecryptionSettings
+newInputDecryptionSettings =
+  InputDecryptionSettings'
+    { decryptionMode =
+        Prelude.Nothing,
+      encryptedDecryptionKey = Prelude.Nothing,
+      initializationVector = Prelude.Nothing,
+      kmsKeyRegion = Prelude.Nothing
+    }
+
+-- | Specify the encryption mode that you used to encrypt your input files.
+inputDecryptionSettings_decryptionMode :: Lens.Lens' InputDecryptionSettings (Prelude.Maybe DecryptionMode)
+inputDecryptionSettings_decryptionMode = Lens.lens (\InputDecryptionSettings' {decryptionMode} -> decryptionMode) (\s@InputDecryptionSettings' {} a -> s {decryptionMode = a} :: InputDecryptionSettings)
+
+-- | Warning! Don\'t provide your encryption key in plaintext. Your job
+-- settings could be intercepted, making your encrypted content vulnerable.
+-- Specify the encrypted version of the data key that you used to encrypt
+-- your content. The data key must be encrypted by AWS Key Management
+-- Service (KMS). The key can be 128, 192, or 256 bits.
+inputDecryptionSettings_encryptedDecryptionKey :: Lens.Lens' InputDecryptionSettings (Prelude.Maybe Prelude.Text)
+inputDecryptionSettings_encryptedDecryptionKey = Lens.lens (\InputDecryptionSettings' {encryptedDecryptionKey} -> encryptedDecryptionKey) (\s@InputDecryptionSettings' {} a -> s {encryptedDecryptionKey = a} :: InputDecryptionSettings)
+
+-- | Specify the initialization vector that you used when you encrypted your
+-- content before uploading it to Amazon S3. You can use a 16-byte
+-- initialization vector with any encryption mode. Or, you can use a
+-- 12-byte initialization vector with GCM or CTR. MediaConvert accepts only
+-- initialization vectors that are base64-encoded.
+inputDecryptionSettings_initializationVector :: Lens.Lens' InputDecryptionSettings (Prelude.Maybe Prelude.Text)
+inputDecryptionSettings_initializationVector = Lens.lens (\InputDecryptionSettings' {initializationVector} -> initializationVector) (\s@InputDecryptionSettings' {} a -> s {initializationVector = a} :: InputDecryptionSettings)
+
+-- | Specify the AWS Region for AWS Key Management Service (KMS) that you
+-- used to encrypt your data key, if that Region is different from the one
+-- you are using for AWS Elemental MediaConvert.
+inputDecryptionSettings_kmsKeyRegion :: Lens.Lens' InputDecryptionSettings (Prelude.Maybe Prelude.Text)
+inputDecryptionSettings_kmsKeyRegion = Lens.lens (\InputDecryptionSettings' {kmsKeyRegion} -> kmsKeyRegion) (\s@InputDecryptionSettings' {} a -> s {kmsKeyRegion = a} :: InputDecryptionSettings)
+
+instance Data.FromJSON InputDecryptionSettings where
+  parseJSON =
+    Data.withObject
+      "InputDecryptionSettings"
+      ( \x ->
+          InputDecryptionSettings'
+            Prelude.<$> (x Data..:? "decryptionMode")
+            Prelude.<*> (x Data..:? "encryptedDecryptionKey")
+            Prelude.<*> (x Data..:? "initializationVector")
+            Prelude.<*> (x Data..:? "kmsKeyRegion")
+      )
+
+instance Prelude.Hashable InputDecryptionSettings where
+  hashWithSalt _salt InputDecryptionSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` decryptionMode
+      `Prelude.hashWithSalt` encryptedDecryptionKey
+      `Prelude.hashWithSalt` initializationVector
+      `Prelude.hashWithSalt` kmsKeyRegion
+
+instance Prelude.NFData InputDecryptionSettings where
+  rnf InputDecryptionSettings' {..} =
+    Prelude.rnf decryptionMode
+      `Prelude.seq` Prelude.rnf encryptedDecryptionKey
+      `Prelude.seq` Prelude.rnf initializationVector
+      `Prelude.seq` Prelude.rnf kmsKeyRegion
+
+instance Data.ToJSON InputDecryptionSettings where
+  toJSON InputDecryptionSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("decryptionMode" Data..=)
+              Prelude.<$> decryptionMode,
+            ("encryptedDecryptionKey" Data..=)
+              Prelude.<$> encryptedDecryptionKey,
+            ("initializationVector" Data..=)
+              Prelude.<$> initializationVector,
+            ("kmsKeyRegion" Data..=) Prelude.<$> kmsKeyRegion
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/InputDenoiseFilter.hs b/gen/Amazonka/MediaConvert/Types/InputDenoiseFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InputDenoiseFilter.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.InputDenoiseFilter
+-- 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.InputDenoiseFilter
+  ( InputDenoiseFilter
+      ( ..,
+        InputDenoiseFilter_DISABLED,
+        InputDenoiseFilter_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enable Denoise (InputDenoiseFilter) to filter noise from the input.
+-- Default is disabled. Only applicable to MPEG2, H.264, H.265, and
+-- uncompressed video inputs.
+newtype InputDenoiseFilter = InputDenoiseFilter'
+  { fromInputDenoiseFilter ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InputDenoiseFilter_DISABLED :: InputDenoiseFilter
+pattern InputDenoiseFilter_DISABLED = InputDenoiseFilter' "DISABLED"
+
+pattern InputDenoiseFilter_ENABLED :: InputDenoiseFilter
+pattern InputDenoiseFilter_ENABLED = InputDenoiseFilter' "ENABLED"
+
+{-# COMPLETE
+  InputDenoiseFilter_DISABLED,
+  InputDenoiseFilter_ENABLED,
+  InputDenoiseFilter'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/InputFilterEnable.hs b/gen/Amazonka/MediaConvert/Types/InputFilterEnable.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InputFilterEnable.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.InputFilterEnable
+-- 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.InputFilterEnable
+  ( InputFilterEnable
+      ( ..,
+        InputFilterEnable_AUTO,
+        InputFilterEnable_DISABLE,
+        InputFilterEnable_FORCE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify how the transcoding service applies the denoise and deblock
+-- filters. You must also enable the filters separately, with Denoise
+-- (InputDenoiseFilter) and Deblock (InputDeblockFilter). * Auto - The
+-- transcoding service determines whether to apply filtering, depending on
+-- input type and quality. * Disable - The input is not filtered. This is
+-- true even if you use the API to enable them in (InputDeblockFilter) and
+-- (InputDeblockFilter). * Force - The input is filtered regardless of
+-- input type.
+newtype InputFilterEnable = InputFilterEnable'
+  { fromInputFilterEnable ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InputFilterEnable_AUTO :: InputFilterEnable
+pattern InputFilterEnable_AUTO = InputFilterEnable' "AUTO"
+
+pattern InputFilterEnable_DISABLE :: InputFilterEnable
+pattern InputFilterEnable_DISABLE = InputFilterEnable' "DISABLE"
+
+pattern InputFilterEnable_FORCE :: InputFilterEnable
+pattern InputFilterEnable_FORCE = InputFilterEnable' "FORCE"
+
+{-# COMPLETE
+  InputFilterEnable_AUTO,
+  InputFilterEnable_DISABLE,
+  InputFilterEnable_FORCE,
+  InputFilterEnable'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/InputPolicy.hs b/gen/Amazonka/MediaConvert/Types/InputPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InputPolicy.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.InputPolicy
+-- 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.InputPolicy
+  ( InputPolicy
+      ( ..,
+        InputPolicy_ALLOWED,
+        InputPolicy_DISALLOWED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | An input policy allows or disallows a job you submit to run based on the
+-- conditions that you specify.
+newtype InputPolicy = InputPolicy'
+  { fromInputPolicy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InputPolicy_ALLOWED :: InputPolicy
+pattern InputPolicy_ALLOWED = InputPolicy' "ALLOWED"
+
+pattern InputPolicy_DISALLOWED :: InputPolicy
+pattern InputPolicy_DISALLOWED = InputPolicy' "DISALLOWED"
+
+{-# COMPLETE
+  InputPolicy_ALLOWED,
+  InputPolicy_DISALLOWED,
+  InputPolicy'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/InputPsiControl.hs b/gen/Amazonka/MediaConvert/Types/InputPsiControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InputPsiControl.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.InputPsiControl
+-- 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.InputPsiControl
+  ( InputPsiControl
+      ( ..,
+        InputPsiControl_IGNORE_PSI,
+        InputPsiControl_USE_PSI
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Set PSI control (InputPsiControl) for transport stream inputs to specify
+-- which data the demux process to scans. * Ignore PSI - Scan all PIDs for
+-- audio and video. * Use PSI - Scan only PSI data.
+newtype InputPsiControl = InputPsiControl'
+  { fromInputPsiControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InputPsiControl_IGNORE_PSI :: InputPsiControl
+pattern InputPsiControl_IGNORE_PSI = InputPsiControl' "IGNORE_PSI"
+
+pattern InputPsiControl_USE_PSI :: InputPsiControl
+pattern InputPsiControl_USE_PSI = InputPsiControl' "USE_PSI"
+
+{-# COMPLETE
+  InputPsiControl_IGNORE_PSI,
+  InputPsiControl_USE_PSI,
+  InputPsiControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/InputRotate.hs b/gen/Amazonka/MediaConvert/Types/InputRotate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InputRotate.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.InputRotate
+-- 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.InputRotate
+  ( InputRotate
+      ( ..,
+        InputRotate_AUTO,
+        InputRotate_DEGREES_180,
+        InputRotate_DEGREES_270,
+        InputRotate_DEGREES_90,
+        InputRotate_DEGREE_0
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Rotate (InputRotate) to specify how the service rotates your video.
+-- You can choose automatic rotation or specify a rotation. You can specify
+-- a clockwise rotation of 0, 90, 180, or 270 degrees. If your input video
+-- container is .mov or .mp4 and your input has rotation metadata, you can
+-- choose Automatic to have the service rotate your video according to the
+-- rotation specified in the metadata. The rotation must be within one
+-- degree of 90, 180, or 270 degrees. If the rotation metadata specifies
+-- any other rotation, the service will default to no rotation. By default,
+-- the service does no rotation, even if your input video has rotation
+-- metadata. The service doesn\'t pass through rotation metadata.
+newtype InputRotate = InputRotate'
+  { fromInputRotate ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InputRotate_AUTO :: InputRotate
+pattern InputRotate_AUTO = InputRotate' "AUTO"
+
+pattern InputRotate_DEGREES_180 :: InputRotate
+pattern InputRotate_DEGREES_180 = InputRotate' "DEGREES_180"
+
+pattern InputRotate_DEGREES_270 :: InputRotate
+pattern InputRotate_DEGREES_270 = InputRotate' "DEGREES_270"
+
+pattern InputRotate_DEGREES_90 :: InputRotate
+pattern InputRotate_DEGREES_90 = InputRotate' "DEGREES_90"
+
+pattern InputRotate_DEGREE_0 :: InputRotate
+pattern InputRotate_DEGREE_0 = InputRotate' "DEGREE_0"
+
+{-# COMPLETE
+  InputRotate_AUTO,
+  InputRotate_DEGREES_180,
+  InputRotate_DEGREES_270,
+  InputRotate_DEGREES_90,
+  InputRotate_DEGREE_0,
+  InputRotate'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/InputSampleRange.hs b/gen/Amazonka/MediaConvert/Types/InputSampleRange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InputSampleRange.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.InputSampleRange
+-- 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.InputSampleRange
+  ( InputSampleRange
+      ( ..,
+        InputSampleRange_FOLLOW,
+        InputSampleRange_FULL_RANGE,
+        InputSampleRange_LIMITED_RANGE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If the sample range metadata in your input video is accurate, or if you
+-- don\'t know about sample range, keep the default value, Follow (FOLLOW),
+-- for this setting. When you do, the service automatically detects your
+-- input sample range. If your input video has metadata indicating the
+-- wrong sample range, specify the accurate sample range here. When you do,
+-- MediaConvert ignores any sample range information in the input metadata.
+-- Regardless of whether MediaConvert uses the input sample range or the
+-- sample range that you specify, MediaConvert uses the sample range for
+-- transcoding and also writes it to the output metadata.
+newtype InputSampleRange = InputSampleRange'
+  { fromInputSampleRange ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InputSampleRange_FOLLOW :: InputSampleRange
+pattern InputSampleRange_FOLLOW = InputSampleRange' "FOLLOW"
+
+pattern InputSampleRange_FULL_RANGE :: InputSampleRange
+pattern InputSampleRange_FULL_RANGE = InputSampleRange' "FULL_RANGE"
+
+pattern InputSampleRange_LIMITED_RANGE :: InputSampleRange
+pattern InputSampleRange_LIMITED_RANGE = InputSampleRange' "LIMITED_RANGE"
+
+{-# COMPLETE
+  InputSampleRange_FOLLOW,
+  InputSampleRange_FULL_RANGE,
+  InputSampleRange_LIMITED_RANGE,
+  InputSampleRange'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/InputScanType.hs b/gen/Amazonka/MediaConvert/Types/InputScanType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InputScanType.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.InputScanType
+-- 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.InputScanType
+  ( InputScanType
+      ( ..,
+        InputScanType_AUTO,
+        InputScanType_PSF
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you have a progressive segmented frame (PsF) input, use this
+-- setting to flag the input as PsF. MediaConvert doesn\'t automatically
+-- detect PsF. Therefore, flagging your input as PsF results in better
+-- preservation of video quality when you do deinterlacing and frame rate
+-- conversion. If you don\'t specify, the default value is Auto (AUTO).
+-- Auto is the correct setting for all inputs that are not PsF. Don\'t set
+-- this value to PsF when your input is interlaced. Doing so creates
+-- horizontal interlacing artifacts.
+newtype InputScanType = InputScanType'
+  { fromInputScanType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InputScanType_AUTO :: InputScanType
+pattern InputScanType_AUTO = InputScanType' "AUTO"
+
+pattern InputScanType_PSF :: InputScanType
+pattern InputScanType_PSF = InputScanType' "PSF"
+
+{-# COMPLETE
+  InputScanType_AUTO,
+  InputScanType_PSF,
+  InputScanType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/InputTemplate.hs b/gen/Amazonka/MediaConvert/Types/InputTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InputTemplate.hs
@@ -0,0 +1,559 @@
+{-# 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.InputTemplate
+-- 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.InputTemplate 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.AudioSelector
+import Amazonka.MediaConvert.Types.AudioSelectorGroup
+import Amazonka.MediaConvert.Types.CaptionSelector
+import Amazonka.MediaConvert.Types.ImageInserter
+import Amazonka.MediaConvert.Types.InputClipping
+import Amazonka.MediaConvert.Types.InputDeblockFilter
+import Amazonka.MediaConvert.Types.InputDenoiseFilter
+import Amazonka.MediaConvert.Types.InputFilterEnable
+import Amazonka.MediaConvert.Types.InputPsiControl
+import Amazonka.MediaConvert.Types.InputScanType
+import Amazonka.MediaConvert.Types.InputTimecodeSource
+import Amazonka.MediaConvert.Types.Rectangle
+import Amazonka.MediaConvert.Types.VideoSelector
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specified video input in a template.
+--
+-- /See:/ 'newInputTemplate' smart constructor.
+data InputTemplate = InputTemplate'
+  { -- | Use audio selector groups to combine multiple sidecar audio inputs so
+    -- that you can assign them to a single output audio tab
+    -- (AudioDescription). Note that, if you\'re working with embedded audio,
+    -- it\'s simpler to assign multiple input tracks into a single audio
+    -- selector rather than use an audio selector group.
+    audioSelectorGroups :: Prelude.Maybe (Prelude.HashMap Prelude.Text AudioSelectorGroup),
+    -- | Use Audio selectors (AudioSelectors) to specify a track or set of tracks
+    -- from the input that you will use in your outputs. You can use multiple
+    -- Audio selectors per input.
+    audioSelectors :: Prelude.Maybe (Prelude.HashMap Prelude.Text AudioSelector),
+    -- | Use captions selectors to specify the captions data from your input that
+    -- you use in your outputs. You can use up to 20 captions selectors per
+    -- input.
+    captionSelectors :: Prelude.Maybe (Prelude.HashMap Prelude.Text CaptionSelector),
+    -- | Use Cropping selection (crop) to specify the video area that the service
+    -- will include in the output video frame. If you specify a value here, it
+    -- will override any value that you specify in the output setting Cropping
+    -- selection (crop).
+    crop :: Prelude.Maybe Rectangle,
+    -- | Enable Deblock (InputDeblockFilter) to produce smoother motion in the
+    -- output. Default is disabled. Only manually controllable for MPEG2 and
+    -- uncompressed video inputs.
+    deblockFilter :: Prelude.Maybe InputDeblockFilter,
+    -- | Enable Denoise (InputDenoiseFilter) to filter noise from the input.
+    -- Default is disabled. Only applicable to MPEG2, H.264, H.265, and
+    -- uncompressed video inputs.
+    denoiseFilter :: Prelude.Maybe InputDenoiseFilter,
+    -- | Use this setting only when your video source has Dolby Vision studio
+    -- mastering metadata that is carried in a separate XML file. Specify the
+    -- Amazon S3 location for the metadata XML file. MediaConvert uses this
+    -- file to provide global and frame-level metadata for Dolby Vision
+    -- preprocessing. When you specify a file here and your input also has
+    -- interleaved global and frame level metadata, MediaConvert ignores the
+    -- interleaved metadata and uses only the the metadata from this external
+    -- XML file. Note that your IAM service role must grant MediaConvert read
+    -- permissions to this file. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html.
+    dolbyVisionMetadataXml :: Prelude.Maybe Prelude.Text,
+    -- | Specify how the transcoding service applies the denoise and deblock
+    -- filters. You must also enable the filters separately, with Denoise
+    -- (InputDenoiseFilter) and Deblock (InputDeblockFilter). * Auto - The
+    -- transcoding service determines whether to apply filtering, depending on
+    -- input type and quality. * Disable - The input is not filtered. This is
+    -- true even if you use the API to enable them in (InputDeblockFilter) and
+    -- (InputDeblockFilter). * Force - The input is filtered regardless of
+    -- input type.
+    filterEnable :: Prelude.Maybe InputFilterEnable,
+    -- | Use Filter strength (FilterStrength) to adjust the magnitude the input
+    -- filter settings (Deblock and Denoise). The range is -5 to 5. Default is
+    -- 0.
+    filterStrength :: Prelude.Maybe Prelude.Int,
+    -- | Enable the image inserter feature to include a graphic overlay on your
+    -- video. Enable or disable this feature for each input individually. This
+    -- setting is disabled by default.
+    imageInserter :: Prelude.Maybe ImageInserter,
+    -- | (InputClippings) contains sets of start and end times that together
+    -- specify a portion of the input to be used in the outputs. If you provide
+    -- only a start time, the clip will be the entire input from that point to
+    -- the end. If you provide only an end time, it will be the entire input up
+    -- to that point. When you specify more than one input clip, the
+    -- transcoding service creates the job outputs by stringing the clips
+    -- together in the order you specify them.
+    inputClippings :: Prelude.Maybe [InputClipping],
+    -- | When you have a progressive segmented frame (PsF) input, use this
+    -- setting to flag the input as PsF. MediaConvert doesn\'t automatically
+    -- detect PsF. Therefore, flagging your input as PsF results in better
+    -- preservation of video quality when you do deinterlacing and frame rate
+    -- conversion. If you don\'t specify, the default value is Auto (AUTO).
+    -- Auto is the correct setting for all inputs that are not PsF. Don\'t set
+    -- this value to PsF when your input is interlaced. Doing so creates
+    -- horizontal interlacing artifacts.
+    inputScanType :: Prelude.Maybe InputScanType,
+    -- | Use Selection placement (position) to define the video area in your
+    -- output frame. The area outside of the rectangle that you specify here is
+    -- black. If you specify a value here, it will override any value that you
+    -- specify in the output setting Selection placement (position). If you
+    -- specify a value here, this will override any AFD values in your input,
+    -- even if you set Respond to AFD (RespondToAfd) to Respond (RESPOND). If
+    -- you specify a value here, this will ignore anything that you specify for
+    -- the setting Scaling Behavior (scalingBehavior).
+    position :: Prelude.Maybe Rectangle,
+    -- | Use Program (programNumber) to select a specific program from within a
+    -- multi-program transport stream. Note that Quad 4K is not currently
+    -- supported. Default is the first program within the transport stream. If
+    -- the program you specify doesn\'t exist, the transcoding service will use
+    -- this default.
+    programNumber :: Prelude.Maybe Prelude.Natural,
+    -- | Set PSI control (InputPsiControl) for transport stream inputs to specify
+    -- which data the demux process to scans. * Ignore PSI - Scan all PIDs for
+    -- audio and video. * Use PSI - Scan only PSI data.
+    psiControl :: Prelude.Maybe InputPsiControl,
+    -- | Use this Timecode source setting, located under the input settings
+    -- (InputTimecodeSource), to specify how the service counts input video
+    -- frames. This input frame count affects only the behavior of features
+    -- that apply to a single input at a time, such as input clipping and
+    -- synchronizing some captions formats. Choose Embedded (EMBEDDED) to use
+    -- the timecodes in your input video. Choose Start at zero (ZEROBASED) to
+    -- start the first frame at zero. Choose Specified start (SPECIFIEDSTART)
+    -- to start the first frame at the timecode that you specify in the setting
+    -- Start timecode (timecodeStart). If you don\'t specify a value for
+    -- Timecode source, the service will use Embedded by default. For more
+    -- information about timecodes, see
+    -- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
+    timecodeSource :: Prelude.Maybe InputTimecodeSource,
+    -- | Specify the timecode that you want the service to use for this input\'s
+    -- initial frame. To use this setting, you must set the Timecode source
+    -- setting, located under the input settings (InputTimecodeSource), to
+    -- Specified start (SPECIFIEDSTART). For more information about timecodes,
+    -- see https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
+    timecodeStart :: Prelude.Maybe Prelude.Text,
+    -- | Input video selectors contain the video settings for the input. Each of
+    -- your inputs can have up to one video selector.
+    videoSelector :: Prelude.Maybe VideoSelector
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputTemplate' 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:
+--
+-- 'audioSelectorGroups', 'inputTemplate_audioSelectorGroups' - Use audio selector groups to combine multiple sidecar audio inputs so
+-- that you can assign them to a single output audio tab
+-- (AudioDescription). Note that, if you\'re working with embedded audio,
+-- it\'s simpler to assign multiple input tracks into a single audio
+-- selector rather than use an audio selector group.
+--
+-- 'audioSelectors', 'inputTemplate_audioSelectors' - Use Audio selectors (AudioSelectors) to specify a track or set of tracks
+-- from the input that you will use in your outputs. You can use multiple
+-- Audio selectors per input.
+--
+-- 'captionSelectors', 'inputTemplate_captionSelectors' - Use captions selectors to specify the captions data from your input that
+-- you use in your outputs. You can use up to 20 captions selectors per
+-- input.
+--
+-- 'crop', 'inputTemplate_crop' - Use Cropping selection (crop) to specify the video area that the service
+-- will include in the output video frame. If you specify a value here, it
+-- will override any value that you specify in the output setting Cropping
+-- selection (crop).
+--
+-- 'deblockFilter', 'inputTemplate_deblockFilter' - Enable Deblock (InputDeblockFilter) to produce smoother motion in the
+-- output. Default is disabled. Only manually controllable for MPEG2 and
+-- uncompressed video inputs.
+--
+-- 'denoiseFilter', 'inputTemplate_denoiseFilter' - Enable Denoise (InputDenoiseFilter) to filter noise from the input.
+-- Default is disabled. Only applicable to MPEG2, H.264, H.265, and
+-- uncompressed video inputs.
+--
+-- 'dolbyVisionMetadataXml', 'inputTemplate_dolbyVisionMetadataXml' - Use this setting only when your video source has Dolby Vision studio
+-- mastering metadata that is carried in a separate XML file. Specify the
+-- Amazon S3 location for the metadata XML file. MediaConvert uses this
+-- file to provide global and frame-level metadata for Dolby Vision
+-- preprocessing. When you specify a file here and your input also has
+-- interleaved global and frame level metadata, MediaConvert ignores the
+-- interleaved metadata and uses only the the metadata from this external
+-- XML file. Note that your IAM service role must grant MediaConvert read
+-- permissions to this file. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html.
+--
+-- 'filterEnable', 'inputTemplate_filterEnable' - Specify how the transcoding service applies the denoise and deblock
+-- filters. You must also enable the filters separately, with Denoise
+-- (InputDenoiseFilter) and Deblock (InputDeblockFilter). * Auto - The
+-- transcoding service determines whether to apply filtering, depending on
+-- input type and quality. * Disable - The input is not filtered. This is
+-- true even if you use the API to enable them in (InputDeblockFilter) and
+-- (InputDeblockFilter). * Force - The input is filtered regardless of
+-- input type.
+--
+-- 'filterStrength', 'inputTemplate_filterStrength' - Use Filter strength (FilterStrength) to adjust the magnitude the input
+-- filter settings (Deblock and Denoise). The range is -5 to 5. Default is
+-- 0.
+--
+-- 'imageInserter', 'inputTemplate_imageInserter' - Enable the image inserter feature to include a graphic overlay on your
+-- video. Enable or disable this feature for each input individually. This
+-- setting is disabled by default.
+--
+-- 'inputClippings', 'inputTemplate_inputClippings' - (InputClippings) contains sets of start and end times that together
+-- specify a portion of the input to be used in the outputs. If you provide
+-- only a start time, the clip will be the entire input from that point to
+-- the end. If you provide only an end time, it will be the entire input up
+-- to that point. When you specify more than one input clip, the
+-- transcoding service creates the job outputs by stringing the clips
+-- together in the order you specify them.
+--
+-- 'inputScanType', 'inputTemplate_inputScanType' - When you have a progressive segmented frame (PsF) input, use this
+-- setting to flag the input as PsF. MediaConvert doesn\'t automatically
+-- detect PsF. Therefore, flagging your input as PsF results in better
+-- preservation of video quality when you do deinterlacing and frame rate
+-- conversion. If you don\'t specify, the default value is Auto (AUTO).
+-- Auto is the correct setting for all inputs that are not PsF. Don\'t set
+-- this value to PsF when your input is interlaced. Doing so creates
+-- horizontal interlacing artifacts.
+--
+-- 'position', 'inputTemplate_position' - Use Selection placement (position) to define the video area in your
+-- output frame. The area outside of the rectangle that you specify here is
+-- black. If you specify a value here, it will override any value that you
+-- specify in the output setting Selection placement (position). If you
+-- specify a value here, this will override any AFD values in your input,
+-- even if you set Respond to AFD (RespondToAfd) to Respond (RESPOND). If
+-- you specify a value here, this will ignore anything that you specify for
+-- the setting Scaling Behavior (scalingBehavior).
+--
+-- 'programNumber', 'inputTemplate_programNumber' - Use Program (programNumber) to select a specific program from within a
+-- multi-program transport stream. Note that Quad 4K is not currently
+-- supported. Default is the first program within the transport stream. If
+-- the program you specify doesn\'t exist, the transcoding service will use
+-- this default.
+--
+-- 'psiControl', 'inputTemplate_psiControl' - Set PSI control (InputPsiControl) for transport stream inputs to specify
+-- which data the demux process to scans. * Ignore PSI - Scan all PIDs for
+-- audio and video. * Use PSI - Scan only PSI data.
+--
+-- 'timecodeSource', 'inputTemplate_timecodeSource' - Use this Timecode source setting, located under the input settings
+-- (InputTimecodeSource), to specify how the service counts input video
+-- frames. This input frame count affects only the behavior of features
+-- that apply to a single input at a time, such as input clipping and
+-- synchronizing some captions formats. Choose Embedded (EMBEDDED) to use
+-- the timecodes in your input video. Choose Start at zero (ZEROBASED) to
+-- start the first frame at zero. Choose Specified start (SPECIFIEDSTART)
+-- to start the first frame at the timecode that you specify in the setting
+-- Start timecode (timecodeStart). If you don\'t specify a value for
+-- Timecode source, the service will use Embedded by default. For more
+-- information about timecodes, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
+--
+-- 'timecodeStart', 'inputTemplate_timecodeStart' - Specify the timecode that you want the service to use for this input\'s
+-- initial frame. To use this setting, you must set the Timecode source
+-- setting, located under the input settings (InputTimecodeSource), to
+-- Specified start (SPECIFIEDSTART). For more information about timecodes,
+-- see https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
+--
+-- 'videoSelector', 'inputTemplate_videoSelector' - Input video selectors contain the video settings for the input. Each of
+-- your inputs can have up to one video selector.
+newInputTemplate ::
+  InputTemplate
+newInputTemplate =
+  InputTemplate'
+    { audioSelectorGroups =
+        Prelude.Nothing,
+      audioSelectors = Prelude.Nothing,
+      captionSelectors = Prelude.Nothing,
+      crop = Prelude.Nothing,
+      deblockFilter = Prelude.Nothing,
+      denoiseFilter = Prelude.Nothing,
+      dolbyVisionMetadataXml = Prelude.Nothing,
+      filterEnable = Prelude.Nothing,
+      filterStrength = Prelude.Nothing,
+      imageInserter = Prelude.Nothing,
+      inputClippings = Prelude.Nothing,
+      inputScanType = Prelude.Nothing,
+      position = Prelude.Nothing,
+      programNumber = Prelude.Nothing,
+      psiControl = Prelude.Nothing,
+      timecodeSource = Prelude.Nothing,
+      timecodeStart = Prelude.Nothing,
+      videoSelector = Prelude.Nothing
+    }
+
+-- | Use audio selector groups to combine multiple sidecar audio inputs so
+-- that you can assign them to a single output audio tab
+-- (AudioDescription). Note that, if you\'re working with embedded audio,
+-- it\'s simpler to assign multiple input tracks into a single audio
+-- selector rather than use an audio selector group.
+inputTemplate_audioSelectorGroups :: Lens.Lens' InputTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text AudioSelectorGroup))
+inputTemplate_audioSelectorGroups = Lens.lens (\InputTemplate' {audioSelectorGroups} -> audioSelectorGroups) (\s@InputTemplate' {} a -> s {audioSelectorGroups = a} :: InputTemplate) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use Audio selectors (AudioSelectors) to specify a track or set of tracks
+-- from the input that you will use in your outputs. You can use multiple
+-- Audio selectors per input.
+inputTemplate_audioSelectors :: Lens.Lens' InputTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text AudioSelector))
+inputTemplate_audioSelectors = Lens.lens (\InputTemplate' {audioSelectors} -> audioSelectors) (\s@InputTemplate' {} a -> s {audioSelectors = a} :: InputTemplate) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use captions selectors to specify the captions data from your input that
+-- you use in your outputs. You can use up to 20 captions selectors per
+-- input.
+inputTemplate_captionSelectors :: Lens.Lens' InputTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text CaptionSelector))
+inputTemplate_captionSelectors = Lens.lens (\InputTemplate' {captionSelectors} -> captionSelectors) (\s@InputTemplate' {} a -> s {captionSelectors = a} :: InputTemplate) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use Cropping selection (crop) to specify the video area that the service
+-- will include in the output video frame. If you specify a value here, it
+-- will override any value that you specify in the output setting Cropping
+-- selection (crop).
+inputTemplate_crop :: Lens.Lens' InputTemplate (Prelude.Maybe Rectangle)
+inputTemplate_crop = Lens.lens (\InputTemplate' {crop} -> crop) (\s@InputTemplate' {} a -> s {crop = a} :: InputTemplate)
+
+-- | Enable Deblock (InputDeblockFilter) to produce smoother motion in the
+-- output. Default is disabled. Only manually controllable for MPEG2 and
+-- uncompressed video inputs.
+inputTemplate_deblockFilter :: Lens.Lens' InputTemplate (Prelude.Maybe InputDeblockFilter)
+inputTemplate_deblockFilter = Lens.lens (\InputTemplate' {deblockFilter} -> deblockFilter) (\s@InputTemplate' {} a -> s {deblockFilter = a} :: InputTemplate)
+
+-- | Enable Denoise (InputDenoiseFilter) to filter noise from the input.
+-- Default is disabled. Only applicable to MPEG2, H.264, H.265, and
+-- uncompressed video inputs.
+inputTemplate_denoiseFilter :: Lens.Lens' InputTemplate (Prelude.Maybe InputDenoiseFilter)
+inputTemplate_denoiseFilter = Lens.lens (\InputTemplate' {denoiseFilter} -> denoiseFilter) (\s@InputTemplate' {} a -> s {denoiseFilter = a} :: InputTemplate)
+
+-- | Use this setting only when your video source has Dolby Vision studio
+-- mastering metadata that is carried in a separate XML file. Specify the
+-- Amazon S3 location for the metadata XML file. MediaConvert uses this
+-- file to provide global and frame-level metadata for Dolby Vision
+-- preprocessing. When you specify a file here and your input also has
+-- interleaved global and frame level metadata, MediaConvert ignores the
+-- interleaved metadata and uses only the the metadata from this external
+-- XML file. Note that your IAM service role must grant MediaConvert read
+-- permissions to this file. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html.
+inputTemplate_dolbyVisionMetadataXml :: Lens.Lens' InputTemplate (Prelude.Maybe Prelude.Text)
+inputTemplate_dolbyVisionMetadataXml = Lens.lens (\InputTemplate' {dolbyVisionMetadataXml} -> dolbyVisionMetadataXml) (\s@InputTemplate' {} a -> s {dolbyVisionMetadataXml = a} :: InputTemplate)
+
+-- | Specify how the transcoding service applies the denoise and deblock
+-- filters. You must also enable the filters separately, with Denoise
+-- (InputDenoiseFilter) and Deblock (InputDeblockFilter). * Auto - The
+-- transcoding service determines whether to apply filtering, depending on
+-- input type and quality. * Disable - The input is not filtered. This is
+-- true even if you use the API to enable them in (InputDeblockFilter) and
+-- (InputDeblockFilter). * Force - The input is filtered regardless of
+-- input type.
+inputTemplate_filterEnable :: Lens.Lens' InputTemplate (Prelude.Maybe InputFilterEnable)
+inputTemplate_filterEnable = Lens.lens (\InputTemplate' {filterEnable} -> filterEnable) (\s@InputTemplate' {} a -> s {filterEnable = a} :: InputTemplate)
+
+-- | Use Filter strength (FilterStrength) to adjust the magnitude the input
+-- filter settings (Deblock and Denoise). The range is -5 to 5. Default is
+-- 0.
+inputTemplate_filterStrength :: Lens.Lens' InputTemplate (Prelude.Maybe Prelude.Int)
+inputTemplate_filterStrength = Lens.lens (\InputTemplate' {filterStrength} -> filterStrength) (\s@InputTemplate' {} a -> s {filterStrength = a} :: InputTemplate)
+
+-- | Enable the image inserter feature to include a graphic overlay on your
+-- video. Enable or disable this feature for each input individually. This
+-- setting is disabled by default.
+inputTemplate_imageInserter :: Lens.Lens' InputTemplate (Prelude.Maybe ImageInserter)
+inputTemplate_imageInserter = Lens.lens (\InputTemplate' {imageInserter} -> imageInserter) (\s@InputTemplate' {} a -> s {imageInserter = a} :: InputTemplate)
+
+-- | (InputClippings) contains sets of start and end times that together
+-- specify a portion of the input to be used in the outputs. If you provide
+-- only a start time, the clip will be the entire input from that point to
+-- the end. If you provide only an end time, it will be the entire input up
+-- to that point. When you specify more than one input clip, the
+-- transcoding service creates the job outputs by stringing the clips
+-- together in the order you specify them.
+inputTemplate_inputClippings :: Lens.Lens' InputTemplate (Prelude.Maybe [InputClipping])
+inputTemplate_inputClippings = Lens.lens (\InputTemplate' {inputClippings} -> inputClippings) (\s@InputTemplate' {} a -> s {inputClippings = a} :: InputTemplate) Prelude.. Lens.mapping Lens.coerced
+
+-- | When you have a progressive segmented frame (PsF) input, use this
+-- setting to flag the input as PsF. MediaConvert doesn\'t automatically
+-- detect PsF. Therefore, flagging your input as PsF results in better
+-- preservation of video quality when you do deinterlacing and frame rate
+-- conversion. If you don\'t specify, the default value is Auto (AUTO).
+-- Auto is the correct setting for all inputs that are not PsF. Don\'t set
+-- this value to PsF when your input is interlaced. Doing so creates
+-- horizontal interlacing artifacts.
+inputTemplate_inputScanType :: Lens.Lens' InputTemplate (Prelude.Maybe InputScanType)
+inputTemplate_inputScanType = Lens.lens (\InputTemplate' {inputScanType} -> inputScanType) (\s@InputTemplate' {} a -> s {inputScanType = a} :: InputTemplate)
+
+-- | Use Selection placement (position) to define the video area in your
+-- output frame. The area outside of the rectangle that you specify here is
+-- black. If you specify a value here, it will override any value that you
+-- specify in the output setting Selection placement (position). If you
+-- specify a value here, this will override any AFD values in your input,
+-- even if you set Respond to AFD (RespondToAfd) to Respond (RESPOND). If
+-- you specify a value here, this will ignore anything that you specify for
+-- the setting Scaling Behavior (scalingBehavior).
+inputTemplate_position :: Lens.Lens' InputTemplate (Prelude.Maybe Rectangle)
+inputTemplate_position = Lens.lens (\InputTemplate' {position} -> position) (\s@InputTemplate' {} a -> s {position = a} :: InputTemplate)
+
+-- | Use Program (programNumber) to select a specific program from within a
+-- multi-program transport stream. Note that Quad 4K is not currently
+-- supported. Default is the first program within the transport stream. If
+-- the program you specify doesn\'t exist, the transcoding service will use
+-- this default.
+inputTemplate_programNumber :: Lens.Lens' InputTemplate (Prelude.Maybe Prelude.Natural)
+inputTemplate_programNumber = Lens.lens (\InputTemplate' {programNumber} -> programNumber) (\s@InputTemplate' {} a -> s {programNumber = a} :: InputTemplate)
+
+-- | Set PSI control (InputPsiControl) for transport stream inputs to specify
+-- which data the demux process to scans. * Ignore PSI - Scan all PIDs for
+-- audio and video. * Use PSI - Scan only PSI data.
+inputTemplate_psiControl :: Lens.Lens' InputTemplate (Prelude.Maybe InputPsiControl)
+inputTemplate_psiControl = Lens.lens (\InputTemplate' {psiControl} -> psiControl) (\s@InputTemplate' {} a -> s {psiControl = a} :: InputTemplate)
+
+-- | Use this Timecode source setting, located under the input settings
+-- (InputTimecodeSource), to specify how the service counts input video
+-- frames. This input frame count affects only the behavior of features
+-- that apply to a single input at a time, such as input clipping and
+-- synchronizing some captions formats. Choose Embedded (EMBEDDED) to use
+-- the timecodes in your input video. Choose Start at zero (ZEROBASED) to
+-- start the first frame at zero. Choose Specified start (SPECIFIEDSTART)
+-- to start the first frame at the timecode that you specify in the setting
+-- Start timecode (timecodeStart). If you don\'t specify a value for
+-- Timecode source, the service will use Embedded by default. For more
+-- information about timecodes, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
+inputTemplate_timecodeSource :: Lens.Lens' InputTemplate (Prelude.Maybe InputTimecodeSource)
+inputTemplate_timecodeSource = Lens.lens (\InputTemplate' {timecodeSource} -> timecodeSource) (\s@InputTemplate' {} a -> s {timecodeSource = a} :: InputTemplate)
+
+-- | Specify the timecode that you want the service to use for this input\'s
+-- initial frame. To use this setting, you must set the Timecode source
+-- setting, located under the input settings (InputTimecodeSource), to
+-- Specified start (SPECIFIEDSTART). For more information about timecodes,
+-- see https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
+inputTemplate_timecodeStart :: Lens.Lens' InputTemplate (Prelude.Maybe Prelude.Text)
+inputTemplate_timecodeStart = Lens.lens (\InputTemplate' {timecodeStart} -> timecodeStart) (\s@InputTemplate' {} a -> s {timecodeStart = a} :: InputTemplate)
+
+-- | Input video selectors contain the video settings for the input. Each of
+-- your inputs can have up to one video selector.
+inputTemplate_videoSelector :: Lens.Lens' InputTemplate (Prelude.Maybe VideoSelector)
+inputTemplate_videoSelector = Lens.lens (\InputTemplate' {videoSelector} -> videoSelector) (\s@InputTemplate' {} a -> s {videoSelector = a} :: InputTemplate)
+
+instance Data.FromJSON InputTemplate where
+  parseJSON =
+    Data.withObject
+      "InputTemplate"
+      ( \x ->
+          InputTemplate'
+            Prelude.<$> ( x
+                            Data..:? "audioSelectorGroups"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "audioSelectors" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "captionSelectors"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "crop")
+            Prelude.<*> (x Data..:? "deblockFilter")
+            Prelude.<*> (x Data..:? "denoiseFilter")
+            Prelude.<*> (x Data..:? "dolbyVisionMetadataXml")
+            Prelude.<*> (x Data..:? "filterEnable")
+            Prelude.<*> (x Data..:? "filterStrength")
+            Prelude.<*> (x Data..:? "imageInserter")
+            Prelude.<*> (x Data..:? "inputClippings" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "inputScanType")
+            Prelude.<*> (x Data..:? "position")
+            Prelude.<*> (x Data..:? "programNumber")
+            Prelude.<*> (x Data..:? "psiControl")
+            Prelude.<*> (x Data..:? "timecodeSource")
+            Prelude.<*> (x Data..:? "timecodeStart")
+            Prelude.<*> (x Data..:? "videoSelector")
+      )
+
+instance Prelude.Hashable InputTemplate where
+  hashWithSalt _salt InputTemplate' {..} =
+    _salt
+      `Prelude.hashWithSalt` audioSelectorGroups
+      `Prelude.hashWithSalt` audioSelectors
+      `Prelude.hashWithSalt` captionSelectors
+      `Prelude.hashWithSalt` crop
+      `Prelude.hashWithSalt` deblockFilter
+      `Prelude.hashWithSalt` denoiseFilter
+      `Prelude.hashWithSalt` dolbyVisionMetadataXml
+      `Prelude.hashWithSalt` filterEnable
+      `Prelude.hashWithSalt` filterStrength
+      `Prelude.hashWithSalt` imageInserter
+      `Prelude.hashWithSalt` inputClippings
+      `Prelude.hashWithSalt` inputScanType
+      `Prelude.hashWithSalt` position
+      `Prelude.hashWithSalt` programNumber
+      `Prelude.hashWithSalt` psiControl
+      `Prelude.hashWithSalt` timecodeSource
+      `Prelude.hashWithSalt` timecodeStart
+      `Prelude.hashWithSalt` videoSelector
+
+instance Prelude.NFData InputTemplate where
+  rnf InputTemplate' {..} =
+    Prelude.rnf audioSelectorGroups
+      `Prelude.seq` Prelude.rnf audioSelectors
+      `Prelude.seq` Prelude.rnf captionSelectors
+      `Prelude.seq` Prelude.rnf crop
+      `Prelude.seq` Prelude.rnf deblockFilter
+      `Prelude.seq` Prelude.rnf denoiseFilter
+      `Prelude.seq` Prelude.rnf dolbyVisionMetadataXml
+      `Prelude.seq` Prelude.rnf filterEnable
+      `Prelude.seq` Prelude.rnf filterStrength
+      `Prelude.seq` Prelude.rnf imageInserter
+      `Prelude.seq` Prelude.rnf inputClippings
+      `Prelude.seq` Prelude.rnf inputScanType
+      `Prelude.seq` Prelude.rnf position
+      `Prelude.seq` Prelude.rnf programNumber
+      `Prelude.seq` Prelude.rnf psiControl
+      `Prelude.seq` Prelude.rnf timecodeSource
+      `Prelude.seq` Prelude.rnf timecodeStart
+      `Prelude.seq` Prelude.rnf videoSelector
+
+instance Data.ToJSON InputTemplate where
+  toJSON InputTemplate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("audioSelectorGroups" Data..=)
+              Prelude.<$> audioSelectorGroups,
+            ("audioSelectors" Data..=)
+              Prelude.<$> audioSelectors,
+            ("captionSelectors" Data..=)
+              Prelude.<$> captionSelectors,
+            ("crop" Data..=) Prelude.<$> crop,
+            ("deblockFilter" Data..=) Prelude.<$> deblockFilter,
+            ("denoiseFilter" Data..=) Prelude.<$> denoiseFilter,
+            ("dolbyVisionMetadataXml" Data..=)
+              Prelude.<$> dolbyVisionMetadataXml,
+            ("filterEnable" Data..=) Prelude.<$> filterEnable,
+            ("filterStrength" Data..=)
+              Prelude.<$> filterStrength,
+            ("imageInserter" Data..=) Prelude.<$> imageInserter,
+            ("inputClippings" Data..=)
+              Prelude.<$> inputClippings,
+            ("inputScanType" Data..=) Prelude.<$> inputScanType,
+            ("position" Data..=) Prelude.<$> position,
+            ("programNumber" Data..=) Prelude.<$> programNumber,
+            ("psiControl" Data..=) Prelude.<$> psiControl,
+            ("timecodeSource" Data..=)
+              Prelude.<$> timecodeSource,
+            ("timecodeStart" Data..=) Prelude.<$> timecodeStart,
+            ("videoSelector" Data..=) Prelude.<$> videoSelector
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/InputTimecodeSource.hs b/gen/Amazonka/MediaConvert/Types/InputTimecodeSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InputTimecodeSource.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.InputTimecodeSource
+-- 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.InputTimecodeSource
+  ( InputTimecodeSource
+      ( ..,
+        InputTimecodeSource_EMBEDDED,
+        InputTimecodeSource_SPECIFIEDSTART,
+        InputTimecodeSource_ZEROBASED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this Timecode source setting, located under the input settings
+-- (InputTimecodeSource), to specify how the service counts input video
+-- frames. This input frame count affects only the behavior of features
+-- that apply to a single input at a time, such as input clipping and
+-- synchronizing some captions formats. Choose Embedded (EMBEDDED) to use
+-- the timecodes in your input video. Choose Start at zero (ZEROBASED) to
+-- start the first frame at zero. Choose Specified start (SPECIFIEDSTART)
+-- to start the first frame at the timecode that you specify in the setting
+-- Start timecode (timecodeStart). If you don\'t specify a value for
+-- Timecode source, the service will use Embedded by default. For more
+-- information about timecodes, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
+newtype InputTimecodeSource = InputTimecodeSource'
+  { fromInputTimecodeSource ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InputTimecodeSource_EMBEDDED :: InputTimecodeSource
+pattern InputTimecodeSource_EMBEDDED = InputTimecodeSource' "EMBEDDED"
+
+pattern InputTimecodeSource_SPECIFIEDSTART :: InputTimecodeSource
+pattern InputTimecodeSource_SPECIFIEDSTART = InputTimecodeSource' "SPECIFIEDSTART"
+
+pattern InputTimecodeSource_ZEROBASED :: InputTimecodeSource
+pattern InputTimecodeSource_ZEROBASED = InputTimecodeSource' "ZEROBASED"
+
+{-# COMPLETE
+  InputTimecodeSource_EMBEDDED,
+  InputTimecodeSource_SPECIFIEDSTART,
+  InputTimecodeSource_ZEROBASED,
+  InputTimecodeSource'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/InputVideoGenerator.hs b/gen/Amazonka/MediaConvert/Types/InputVideoGenerator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InputVideoGenerator.hs
@@ -0,0 +1,86 @@
+{-# 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.InputVideoGenerator
+-- 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.InputVideoGenerator where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you include Video generator, MediaConvert creates a video input
+-- with black frames. Use this setting if you do not have a video input or
+-- if you want to add black video frames before, or after, other inputs.
+-- You can specify Video generator, or you can specify an Input file, but
+-- you cannot specify both. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/video-generator.html
+--
+-- /See:/ 'newInputVideoGenerator' smart constructor.
+data InputVideoGenerator = InputVideoGenerator'
+  { -- | Specify an integer value for Black video duration from 50 to 86400000 to
+    -- generate a black video input for that many milliseconds. Required when
+    -- you include Video generator.
+    duration :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputVideoGenerator' 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:
+--
+-- 'duration', 'inputVideoGenerator_duration' - Specify an integer value for Black video duration from 50 to 86400000 to
+-- generate a black video input for that many milliseconds. Required when
+-- you include Video generator.
+newInputVideoGenerator ::
+  InputVideoGenerator
+newInputVideoGenerator =
+  InputVideoGenerator' {duration = Prelude.Nothing}
+
+-- | Specify an integer value for Black video duration from 50 to 86400000 to
+-- generate a black video input for that many milliseconds. Required when
+-- you include Video generator.
+inputVideoGenerator_duration :: Lens.Lens' InputVideoGenerator (Prelude.Maybe Prelude.Natural)
+inputVideoGenerator_duration = Lens.lens (\InputVideoGenerator' {duration} -> duration) (\s@InputVideoGenerator' {} a -> s {duration = a} :: InputVideoGenerator)
+
+instance Data.FromJSON InputVideoGenerator where
+  parseJSON =
+    Data.withObject
+      "InputVideoGenerator"
+      ( \x ->
+          InputVideoGenerator'
+            Prelude.<$> (x Data..:? "duration")
+      )
+
+instance Prelude.Hashable InputVideoGenerator where
+  hashWithSalt _salt InputVideoGenerator' {..} =
+    _salt `Prelude.hashWithSalt` duration
+
+instance Prelude.NFData InputVideoGenerator where
+  rnf InputVideoGenerator' {..} = Prelude.rnf duration
+
+instance Data.ToJSON InputVideoGenerator where
+  toJSON InputVideoGenerator' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("duration" Data..=) Prelude.<$> duration]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/InsertableImage.hs b/gen/Amazonka/MediaConvert/Types/InsertableImage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/InsertableImage.hs
@@ -0,0 +1,287 @@
+{-# 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.InsertableImage
+-- 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.InsertableImage where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | These settings apply to a specific graphic overlay. You can include
+-- multiple overlays in your job.
+--
+-- /See:/ 'newInsertableImage' smart constructor.
+data InsertableImage = InsertableImage'
+  { -- | Specify the time, in milliseconds, for the image to remain on the output
+    -- video. This duration includes fade-in time but not fade-out time.
+    duration :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the length of time, in milliseconds, between the Start time that
+    -- you specify for the image insertion and the time that the image appears
+    -- at full opacity. Full opacity is the level that you specify for the
+    -- opacity setting. If you don\'t specify a value for Fade-in, the image
+    -- will appear abruptly at the overlay start time.
+    fadeIn :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the length of time, in milliseconds, between the end of the time
+    -- that you have specified for the image overlay Duration and when the
+    -- overlaid image has faded to total transparency. If you don\'t specify a
+    -- value for Fade-out, the image will disappear abruptly at the end of the
+    -- inserted image duration.
+    fadeOut :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the height of the inserted image in pixels. If you specify a
+    -- value that\'s larger than the video resolution height, the service will
+    -- crop your overlaid image to fit. To use the native height of the image,
+    -- keep this setting blank.
+    height :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the HTTP, HTTPS, or Amazon S3 location of the image that you
+    -- want to overlay on the video. Use a PNG or TGA file.
+    imageInserterInput :: Prelude.Maybe Prelude.Text,
+    -- | Specify the distance, in pixels, between the inserted image and the left
+    -- edge of the video frame. Required for any image overlay that you
+    -- specify.
+    imageX :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the distance, in pixels, between the overlaid image and the top
+    -- edge of the video frame. Required for any image overlay that you
+    -- specify.
+    imageY :: Prelude.Maybe Prelude.Natural,
+    -- | Specify how overlapping inserted images appear. Images with higher
+    -- values for Layer appear on top of images with lower values for Layer.
+    layer :: Prelude.Maybe Prelude.Natural,
+    -- | Use Opacity (Opacity) to specify how much of the underlying video shows
+    -- through the inserted image. 0 is transparent and 100 is fully opaque.
+    -- Default is 50.
+    opacity :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the timecode of the frame that you want the overlay to first
+    -- appear on. This must be in timecode (HH:MM:SS:FF or HH:MM:SS;FF) format.
+    -- Remember to take into account your timecode source settings.
+    startTime :: Prelude.Maybe Prelude.Text,
+    -- | Specify the width of the inserted image in pixels. If you specify a
+    -- value that\'s larger than the video resolution width, the service will
+    -- crop your overlaid image to fit. To use the native width of the image,
+    -- keep this setting blank.
+    width :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InsertableImage' 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:
+--
+-- 'duration', 'insertableImage_duration' - Specify the time, in milliseconds, for the image to remain on the output
+-- video. This duration includes fade-in time but not fade-out time.
+--
+-- 'fadeIn', 'insertableImage_fadeIn' - Specify the length of time, in milliseconds, between the Start time that
+-- you specify for the image insertion and the time that the image appears
+-- at full opacity. Full opacity is the level that you specify for the
+-- opacity setting. If you don\'t specify a value for Fade-in, the image
+-- will appear abruptly at the overlay start time.
+--
+-- 'fadeOut', 'insertableImage_fadeOut' - Specify the length of time, in milliseconds, between the end of the time
+-- that you have specified for the image overlay Duration and when the
+-- overlaid image has faded to total transparency. If you don\'t specify a
+-- value for Fade-out, the image will disappear abruptly at the end of the
+-- inserted image duration.
+--
+-- 'height', 'insertableImage_height' - Specify the height of the inserted image in pixels. If you specify a
+-- value that\'s larger than the video resolution height, the service will
+-- crop your overlaid image to fit. To use the native height of the image,
+-- keep this setting blank.
+--
+-- 'imageInserterInput', 'insertableImage_imageInserterInput' - Specify the HTTP, HTTPS, or Amazon S3 location of the image that you
+-- want to overlay on the video. Use a PNG or TGA file.
+--
+-- 'imageX', 'insertableImage_imageX' - Specify the distance, in pixels, between the inserted image and the left
+-- edge of the video frame. Required for any image overlay that you
+-- specify.
+--
+-- 'imageY', 'insertableImage_imageY' - Specify the distance, in pixels, between the overlaid image and the top
+-- edge of the video frame. Required for any image overlay that you
+-- specify.
+--
+-- 'layer', 'insertableImage_layer' - Specify how overlapping inserted images appear. Images with higher
+-- values for Layer appear on top of images with lower values for Layer.
+--
+-- 'opacity', 'insertableImage_opacity' - Use Opacity (Opacity) to specify how much of the underlying video shows
+-- through the inserted image. 0 is transparent and 100 is fully opaque.
+-- Default is 50.
+--
+-- 'startTime', 'insertableImage_startTime' - Specify the timecode of the frame that you want the overlay to first
+-- appear on. This must be in timecode (HH:MM:SS:FF or HH:MM:SS;FF) format.
+-- Remember to take into account your timecode source settings.
+--
+-- 'width', 'insertableImage_width' - Specify the width of the inserted image in pixels. If you specify a
+-- value that\'s larger than the video resolution width, the service will
+-- crop your overlaid image to fit. To use the native width of the image,
+-- keep this setting blank.
+newInsertableImage ::
+  InsertableImage
+newInsertableImage =
+  InsertableImage'
+    { duration = Prelude.Nothing,
+      fadeIn = Prelude.Nothing,
+      fadeOut = Prelude.Nothing,
+      height = Prelude.Nothing,
+      imageInserterInput = Prelude.Nothing,
+      imageX = Prelude.Nothing,
+      imageY = Prelude.Nothing,
+      layer = Prelude.Nothing,
+      opacity = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      width = Prelude.Nothing
+    }
+
+-- | Specify the time, in milliseconds, for the image to remain on the output
+-- video. This duration includes fade-in time but not fade-out time.
+insertableImage_duration :: Lens.Lens' InsertableImage (Prelude.Maybe Prelude.Natural)
+insertableImage_duration = Lens.lens (\InsertableImage' {duration} -> duration) (\s@InsertableImage' {} a -> s {duration = a} :: InsertableImage)
+
+-- | Specify the length of time, in milliseconds, between the Start time that
+-- you specify for the image insertion and the time that the image appears
+-- at full opacity. Full opacity is the level that you specify for the
+-- opacity setting. If you don\'t specify a value for Fade-in, the image
+-- will appear abruptly at the overlay start time.
+insertableImage_fadeIn :: Lens.Lens' InsertableImage (Prelude.Maybe Prelude.Natural)
+insertableImage_fadeIn = Lens.lens (\InsertableImage' {fadeIn} -> fadeIn) (\s@InsertableImage' {} a -> s {fadeIn = a} :: InsertableImage)
+
+-- | Specify the length of time, in milliseconds, between the end of the time
+-- that you have specified for the image overlay Duration and when the
+-- overlaid image has faded to total transparency. If you don\'t specify a
+-- value for Fade-out, the image will disappear abruptly at the end of the
+-- inserted image duration.
+insertableImage_fadeOut :: Lens.Lens' InsertableImage (Prelude.Maybe Prelude.Natural)
+insertableImage_fadeOut = Lens.lens (\InsertableImage' {fadeOut} -> fadeOut) (\s@InsertableImage' {} a -> s {fadeOut = a} :: InsertableImage)
+
+-- | Specify the height of the inserted image in pixels. If you specify a
+-- value that\'s larger than the video resolution height, the service will
+-- crop your overlaid image to fit. To use the native height of the image,
+-- keep this setting blank.
+insertableImage_height :: Lens.Lens' InsertableImage (Prelude.Maybe Prelude.Natural)
+insertableImage_height = Lens.lens (\InsertableImage' {height} -> height) (\s@InsertableImage' {} a -> s {height = a} :: InsertableImage)
+
+-- | Specify the HTTP, HTTPS, or Amazon S3 location of the image that you
+-- want to overlay on the video. Use a PNG or TGA file.
+insertableImage_imageInserterInput :: Lens.Lens' InsertableImage (Prelude.Maybe Prelude.Text)
+insertableImage_imageInserterInput = Lens.lens (\InsertableImage' {imageInserterInput} -> imageInserterInput) (\s@InsertableImage' {} a -> s {imageInserterInput = a} :: InsertableImage)
+
+-- | Specify the distance, in pixels, between the inserted image and the left
+-- edge of the video frame. Required for any image overlay that you
+-- specify.
+insertableImage_imageX :: Lens.Lens' InsertableImage (Prelude.Maybe Prelude.Natural)
+insertableImage_imageX = Lens.lens (\InsertableImage' {imageX} -> imageX) (\s@InsertableImage' {} a -> s {imageX = a} :: InsertableImage)
+
+-- | Specify the distance, in pixels, between the overlaid image and the top
+-- edge of the video frame. Required for any image overlay that you
+-- specify.
+insertableImage_imageY :: Lens.Lens' InsertableImage (Prelude.Maybe Prelude.Natural)
+insertableImage_imageY = Lens.lens (\InsertableImage' {imageY} -> imageY) (\s@InsertableImage' {} a -> s {imageY = a} :: InsertableImage)
+
+-- | Specify how overlapping inserted images appear. Images with higher
+-- values for Layer appear on top of images with lower values for Layer.
+insertableImage_layer :: Lens.Lens' InsertableImage (Prelude.Maybe Prelude.Natural)
+insertableImage_layer = Lens.lens (\InsertableImage' {layer} -> layer) (\s@InsertableImage' {} a -> s {layer = a} :: InsertableImage)
+
+-- | Use Opacity (Opacity) to specify how much of the underlying video shows
+-- through the inserted image. 0 is transparent and 100 is fully opaque.
+-- Default is 50.
+insertableImage_opacity :: Lens.Lens' InsertableImage (Prelude.Maybe Prelude.Natural)
+insertableImage_opacity = Lens.lens (\InsertableImage' {opacity} -> opacity) (\s@InsertableImage' {} a -> s {opacity = a} :: InsertableImage)
+
+-- | Specify the timecode of the frame that you want the overlay to first
+-- appear on. This must be in timecode (HH:MM:SS:FF or HH:MM:SS;FF) format.
+-- Remember to take into account your timecode source settings.
+insertableImage_startTime :: Lens.Lens' InsertableImage (Prelude.Maybe Prelude.Text)
+insertableImage_startTime = Lens.lens (\InsertableImage' {startTime} -> startTime) (\s@InsertableImage' {} a -> s {startTime = a} :: InsertableImage)
+
+-- | Specify the width of the inserted image in pixels. If you specify a
+-- value that\'s larger than the video resolution width, the service will
+-- crop your overlaid image to fit. To use the native width of the image,
+-- keep this setting blank.
+insertableImage_width :: Lens.Lens' InsertableImage (Prelude.Maybe Prelude.Natural)
+insertableImage_width = Lens.lens (\InsertableImage' {width} -> width) (\s@InsertableImage' {} a -> s {width = a} :: InsertableImage)
+
+instance Data.FromJSON InsertableImage where
+  parseJSON =
+    Data.withObject
+      "InsertableImage"
+      ( \x ->
+          InsertableImage'
+            Prelude.<$> (x Data..:? "duration")
+            Prelude.<*> (x Data..:? "fadeIn")
+            Prelude.<*> (x Data..:? "fadeOut")
+            Prelude.<*> (x Data..:? "height")
+            Prelude.<*> (x Data..:? "imageInserterInput")
+            Prelude.<*> (x Data..:? "imageX")
+            Prelude.<*> (x Data..:? "imageY")
+            Prelude.<*> (x Data..:? "layer")
+            Prelude.<*> (x Data..:? "opacity")
+            Prelude.<*> (x Data..:? "startTime")
+            Prelude.<*> (x Data..:? "width")
+      )
+
+instance Prelude.Hashable InsertableImage where
+  hashWithSalt _salt InsertableImage' {..} =
+    _salt
+      `Prelude.hashWithSalt` duration
+      `Prelude.hashWithSalt` fadeIn
+      `Prelude.hashWithSalt` fadeOut
+      `Prelude.hashWithSalt` height
+      `Prelude.hashWithSalt` imageInserterInput
+      `Prelude.hashWithSalt` imageX
+      `Prelude.hashWithSalt` imageY
+      `Prelude.hashWithSalt` layer
+      `Prelude.hashWithSalt` opacity
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` width
+
+instance Prelude.NFData InsertableImage where
+  rnf InsertableImage' {..} =
+    Prelude.rnf duration
+      `Prelude.seq` Prelude.rnf fadeIn
+      `Prelude.seq` Prelude.rnf fadeOut
+      `Prelude.seq` Prelude.rnf height
+      `Prelude.seq` Prelude.rnf imageInserterInput
+      `Prelude.seq` Prelude.rnf imageX
+      `Prelude.seq` Prelude.rnf imageY
+      `Prelude.seq` Prelude.rnf layer
+      `Prelude.seq` Prelude.rnf opacity
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf width
+
+instance Data.ToJSON InsertableImage where
+  toJSON InsertableImage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("duration" Data..=) Prelude.<$> duration,
+            ("fadeIn" Data..=) Prelude.<$> fadeIn,
+            ("fadeOut" Data..=) Prelude.<$> fadeOut,
+            ("height" Data..=) Prelude.<$> height,
+            ("imageInserterInput" Data..=)
+              Prelude.<$> imageInserterInput,
+            ("imageX" Data..=) Prelude.<$> imageX,
+            ("imageY" Data..=) Prelude.<$> imageY,
+            ("layer" Data..=) Prelude.<$> layer,
+            ("opacity" Data..=) Prelude.<$> opacity,
+            ("startTime" Data..=) Prelude.<$> startTime,
+            ("width" Data..=) Prelude.<$> width
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Job.hs b/gen/Amazonka/MediaConvert/Types/Job.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Job.hs
@@ -0,0 +1,516 @@
+{-# 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.Job
+-- 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.Job 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.AccelerationSettings
+import Amazonka.MediaConvert.Types.AccelerationStatus
+import Amazonka.MediaConvert.Types.BillingTagsSource
+import Amazonka.MediaConvert.Types.HopDestination
+import Amazonka.MediaConvert.Types.JobMessages
+import Amazonka.MediaConvert.Types.JobPhase
+import Amazonka.MediaConvert.Types.JobSettings
+import Amazonka.MediaConvert.Types.JobStatus
+import Amazonka.MediaConvert.Types.OutputGroupDetail
+import Amazonka.MediaConvert.Types.QueueTransition
+import Amazonka.MediaConvert.Types.SimulateReservedQueue
+import Amazonka.MediaConvert.Types.StatusUpdateInterval
+import Amazonka.MediaConvert.Types.Timing
+import qualified Amazonka.Prelude as Prelude
+
+-- | Each job converts an input file into an output file or files. For more
+-- information, see the User Guide at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+--
+-- /See:/ 'newJob' smart constructor.
+data Job = Job'
+  { -- | Accelerated transcoding can significantly speed up jobs with long,
+    -- visually complex content.
+    accelerationSettings :: Prelude.Maybe AccelerationSettings,
+    -- | Describes whether the current job is running with accelerated
+    -- transcoding. For jobs that have Acceleration (AccelerationMode) set to
+    -- DISABLED, AccelerationStatus is always NOT_APPLICABLE. For jobs that
+    -- have Acceleration (AccelerationMode) set to ENABLED or PREFERRED,
+    -- AccelerationStatus is one of the other states. AccelerationStatus is
+    -- IN_PROGRESS initially, while the service determines whether the input
+    -- files and job settings are compatible with accelerated transcoding. If
+    -- they are, AcclerationStatus is ACCELERATED. If your input files and job
+    -- settings aren\'t compatible with accelerated transcoding, the service
+    -- either fails your job or runs it without accelerated transcoding,
+    -- depending on how you set Acceleration (AccelerationMode). When the
+    -- service runs your job without accelerated transcoding,
+    -- AccelerationStatus is NOT_ACCELERATED.
+    accelerationStatus :: Prelude.Maybe AccelerationStatus,
+    -- | An identifier for this resource that is unique within all of AWS.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The tag type that AWS Billing and Cost Management will use to sort your
+    -- AWS Elemental MediaConvert costs on any billing report that you set up.
+    billingTagsSource :: Prelude.Maybe BillingTagsSource,
+    -- | The time, in Unix epoch format in seconds, when the job got created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | A job\'s phase can be PROBING, TRANSCODING OR UPLOADING
+    currentPhase :: Prelude.Maybe JobPhase,
+    -- | Error code for the job
+    errorCode :: Prelude.Maybe Prelude.Int,
+    -- | Error message of Job
+    errorMessage :: Prelude.Maybe Prelude.Text,
+    -- | Optional list of hop destinations.
+    hopDestinations :: Prelude.Maybe [HopDestination],
+    -- | A portion of the job\'s ARN, unique within your AWS Elemental
+    -- MediaConvert resources
+    id :: Prelude.Maybe Prelude.Text,
+    -- | An estimate of how far your job has progressed. This estimate is shown
+    -- as a percentage of the total time from when your job leaves its queue to
+    -- when your output files appear in your output Amazon S3 bucket. AWS
+    -- Elemental MediaConvert provides jobPercentComplete in CloudWatch
+    -- STATUS_UPDATE events and in the response to GetJob and ListJobs
+    -- requests. The jobPercentComplete estimate is reliable for the following
+    -- input containers: Quicktime, Transport Stream, MP4, and MXF. For some
+    -- jobs, the service can\'t provide information about job progress. In
+    -- those cases, jobPercentComplete returns a null value.
+    jobPercentComplete :: Prelude.Maybe Prelude.Int,
+    -- | The job template that the job is created from, if it is created from a
+    -- job template.
+    jobTemplate :: Prelude.Maybe Prelude.Text,
+    -- | Provides messages from the service about jobs that you have already
+    -- successfully submitted.
+    messages :: Prelude.Maybe JobMessages,
+    -- | List of output group details
+    outputGroupDetails :: Prelude.Maybe [OutputGroupDetail],
+    -- | Relative priority on the job.
+    priority :: Prelude.Maybe Prelude.Int,
+    -- | When you create a job, you can specify a queue to send it to. If you
+    -- don\'t specify, the job will go to the default queue. For more about
+    -- queues, see the User Guide topic at
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+    queue :: Prelude.Maybe Prelude.Text,
+    -- | The job\'s queue hopping history.
+    queueTransitions :: Prelude.Maybe [QueueTransition],
+    -- | The number of times that the service automatically attempted to process
+    -- your job after encountering an error.
+    retryCount :: Prelude.Maybe Prelude.Int,
+    -- | Enable this setting when you run a test job to estimate how many
+    -- reserved transcoding slots (RTS) you need. When this is enabled,
+    -- MediaConvert runs your job from an on-demand queue with similar
+    -- performance to what you will see with one RTS in a reserved queue. This
+    -- setting is disabled by default.
+    simulateReservedQueue :: Prelude.Maybe SimulateReservedQueue,
+    -- | A job\'s status can be SUBMITTED, PROGRESSING, COMPLETE, CANCELED, or
+    -- ERROR.
+    status :: Prelude.Maybe JobStatus,
+    -- | Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
+    -- CloudWatch Events. Set the interval, in seconds, between status updates.
+    -- MediaConvert sends an update at this interval from the time the service
+    -- begins processing your job to the time it completes the transcode or
+    -- encounters an error.
+    statusUpdateInterval :: Prelude.Maybe StatusUpdateInterval,
+    -- | Information about when jobs are submitted, started, and finished is
+    -- specified in Unix epoch format in seconds.
+    timing :: Prelude.Maybe Timing,
+    -- | User-defined metadata that you want to associate with an MediaConvert
+    -- job. You specify metadata in key\/value pairs.
+    userMetadata :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The IAM role you use for creating this job. For details about
+    -- permissions, see the User Guide topic at the User Guide at
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html
+    role' :: Prelude.Text,
+    -- | JobSettings contains all the transcode settings for a job.
+    settings :: JobSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Job' 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:
+--
+-- 'accelerationSettings', 'job_accelerationSettings' - Accelerated transcoding can significantly speed up jobs with long,
+-- visually complex content.
+--
+-- 'accelerationStatus', 'job_accelerationStatus' - Describes whether the current job is running with accelerated
+-- transcoding. For jobs that have Acceleration (AccelerationMode) set to
+-- DISABLED, AccelerationStatus is always NOT_APPLICABLE. For jobs that
+-- have Acceleration (AccelerationMode) set to ENABLED or PREFERRED,
+-- AccelerationStatus is one of the other states. AccelerationStatus is
+-- IN_PROGRESS initially, while the service determines whether the input
+-- files and job settings are compatible with accelerated transcoding. If
+-- they are, AcclerationStatus is ACCELERATED. If your input files and job
+-- settings aren\'t compatible with accelerated transcoding, the service
+-- either fails your job or runs it without accelerated transcoding,
+-- depending on how you set Acceleration (AccelerationMode). When the
+-- service runs your job without accelerated transcoding,
+-- AccelerationStatus is NOT_ACCELERATED.
+--
+-- 'arn', 'job_arn' - An identifier for this resource that is unique within all of AWS.
+--
+-- 'billingTagsSource', 'job_billingTagsSource' - The tag type that AWS Billing and Cost Management will use to sort your
+-- AWS Elemental MediaConvert costs on any billing report that you set up.
+--
+-- 'createdAt', 'job_createdAt' - The time, in Unix epoch format in seconds, when the job got created.
+--
+-- 'currentPhase', 'job_currentPhase' - A job\'s phase can be PROBING, TRANSCODING OR UPLOADING
+--
+-- 'errorCode', 'job_errorCode' - Error code for the job
+--
+-- 'errorMessage', 'job_errorMessage' - Error message of Job
+--
+-- 'hopDestinations', 'job_hopDestinations' - Optional list of hop destinations.
+--
+-- 'id', 'job_id' - A portion of the job\'s ARN, unique within your AWS Elemental
+-- MediaConvert resources
+--
+-- 'jobPercentComplete', 'job_jobPercentComplete' - An estimate of how far your job has progressed. This estimate is shown
+-- as a percentage of the total time from when your job leaves its queue to
+-- when your output files appear in your output Amazon S3 bucket. AWS
+-- Elemental MediaConvert provides jobPercentComplete in CloudWatch
+-- STATUS_UPDATE events and in the response to GetJob and ListJobs
+-- requests. The jobPercentComplete estimate is reliable for the following
+-- input containers: Quicktime, Transport Stream, MP4, and MXF. For some
+-- jobs, the service can\'t provide information about job progress. In
+-- those cases, jobPercentComplete returns a null value.
+--
+-- 'jobTemplate', 'job_jobTemplate' - The job template that the job is created from, if it is created from a
+-- job template.
+--
+-- 'messages', 'job_messages' - Provides messages from the service about jobs that you have already
+-- successfully submitted.
+--
+-- 'outputGroupDetails', 'job_outputGroupDetails' - List of output group details
+--
+-- 'priority', 'job_priority' - Relative priority on the job.
+--
+-- 'queue', 'job_queue' - When you create a job, you can specify a queue to send it to. If you
+-- don\'t specify, the job will go to the default queue. For more about
+-- queues, see the User Guide topic at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+--
+-- 'queueTransitions', 'job_queueTransitions' - The job\'s queue hopping history.
+--
+-- 'retryCount', 'job_retryCount' - The number of times that the service automatically attempted to process
+-- your job after encountering an error.
+--
+-- 'simulateReservedQueue', 'job_simulateReservedQueue' - Enable this setting when you run a test job to estimate how many
+-- reserved transcoding slots (RTS) you need. When this is enabled,
+-- MediaConvert runs your job from an on-demand queue with similar
+-- performance to what you will see with one RTS in a reserved queue. This
+-- setting is disabled by default.
+--
+-- 'status', 'job_status' - A job\'s status can be SUBMITTED, PROGRESSING, COMPLETE, CANCELED, or
+-- ERROR.
+--
+-- 'statusUpdateInterval', 'job_statusUpdateInterval' - Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
+-- CloudWatch Events. Set the interval, in seconds, between status updates.
+-- MediaConvert sends an update at this interval from the time the service
+-- begins processing your job to the time it completes the transcode or
+-- encounters an error.
+--
+-- 'timing', 'job_timing' - Information about when jobs are submitted, started, and finished is
+-- specified in Unix epoch format in seconds.
+--
+-- 'userMetadata', 'job_userMetadata' - User-defined metadata that you want to associate with an MediaConvert
+-- job. You specify metadata in key\/value pairs.
+--
+-- 'role'', 'job_role' - The IAM role you use for creating this job. For details about
+-- permissions, see the User Guide topic at the User Guide at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html
+--
+-- 'settings', 'job_settings' - JobSettings contains all the transcode settings for a job.
+newJob ::
+  -- | 'role''
+  Prelude.Text ->
+  -- | 'settings'
+  JobSettings ->
+  Job
+newJob pRole_ pSettings_ =
+  Job'
+    { accelerationSettings = Prelude.Nothing,
+      accelerationStatus = Prelude.Nothing,
+      arn = Prelude.Nothing,
+      billingTagsSource = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      currentPhase = Prelude.Nothing,
+      errorCode = Prelude.Nothing,
+      errorMessage = Prelude.Nothing,
+      hopDestinations = Prelude.Nothing,
+      id = Prelude.Nothing,
+      jobPercentComplete = Prelude.Nothing,
+      jobTemplate = Prelude.Nothing,
+      messages = Prelude.Nothing,
+      outputGroupDetails = Prelude.Nothing,
+      priority = Prelude.Nothing,
+      queue = Prelude.Nothing,
+      queueTransitions = Prelude.Nothing,
+      retryCount = Prelude.Nothing,
+      simulateReservedQueue = Prelude.Nothing,
+      status = Prelude.Nothing,
+      statusUpdateInterval = Prelude.Nothing,
+      timing = Prelude.Nothing,
+      userMetadata = Prelude.Nothing,
+      role' = pRole_,
+      settings = pSettings_
+    }
+
+-- | Accelerated transcoding can significantly speed up jobs with long,
+-- visually complex content.
+job_accelerationSettings :: Lens.Lens' Job (Prelude.Maybe AccelerationSettings)
+job_accelerationSettings = Lens.lens (\Job' {accelerationSettings} -> accelerationSettings) (\s@Job' {} a -> s {accelerationSettings = a} :: Job)
+
+-- | Describes whether the current job is running with accelerated
+-- transcoding. For jobs that have Acceleration (AccelerationMode) set to
+-- DISABLED, AccelerationStatus is always NOT_APPLICABLE. For jobs that
+-- have Acceleration (AccelerationMode) set to ENABLED or PREFERRED,
+-- AccelerationStatus is one of the other states. AccelerationStatus is
+-- IN_PROGRESS initially, while the service determines whether the input
+-- files and job settings are compatible with accelerated transcoding. If
+-- they are, AcclerationStatus is ACCELERATED. If your input files and job
+-- settings aren\'t compatible with accelerated transcoding, the service
+-- either fails your job or runs it without accelerated transcoding,
+-- depending on how you set Acceleration (AccelerationMode). When the
+-- service runs your job without accelerated transcoding,
+-- AccelerationStatus is NOT_ACCELERATED.
+job_accelerationStatus :: Lens.Lens' Job (Prelude.Maybe AccelerationStatus)
+job_accelerationStatus = Lens.lens (\Job' {accelerationStatus} -> accelerationStatus) (\s@Job' {} a -> s {accelerationStatus = a} :: Job)
+
+-- | An identifier for this resource that is unique within all of AWS.
+job_arn :: Lens.Lens' Job (Prelude.Maybe Prelude.Text)
+job_arn = Lens.lens (\Job' {arn} -> arn) (\s@Job' {} a -> s {arn = a} :: Job)
+
+-- | The tag type that AWS Billing and Cost Management will use to sort your
+-- AWS Elemental MediaConvert costs on any billing report that you set up.
+job_billingTagsSource :: Lens.Lens' Job (Prelude.Maybe BillingTagsSource)
+job_billingTagsSource = Lens.lens (\Job' {billingTagsSource} -> billingTagsSource) (\s@Job' {} a -> s {billingTagsSource = a} :: Job)
+
+-- | The time, in Unix epoch format in seconds, when the job got created.
+job_createdAt :: Lens.Lens' Job (Prelude.Maybe Prelude.UTCTime)
+job_createdAt = Lens.lens (\Job' {createdAt} -> createdAt) (\s@Job' {} a -> s {createdAt = a} :: Job) Prelude.. Lens.mapping Data._Time
+
+-- | A job\'s phase can be PROBING, TRANSCODING OR UPLOADING
+job_currentPhase :: Lens.Lens' Job (Prelude.Maybe JobPhase)
+job_currentPhase = Lens.lens (\Job' {currentPhase} -> currentPhase) (\s@Job' {} a -> s {currentPhase = a} :: Job)
+
+-- | Error code for the job
+job_errorCode :: Lens.Lens' Job (Prelude.Maybe Prelude.Int)
+job_errorCode = Lens.lens (\Job' {errorCode} -> errorCode) (\s@Job' {} a -> s {errorCode = a} :: Job)
+
+-- | Error message of Job
+job_errorMessage :: Lens.Lens' Job (Prelude.Maybe Prelude.Text)
+job_errorMessage = Lens.lens (\Job' {errorMessage} -> errorMessage) (\s@Job' {} a -> s {errorMessage = a} :: Job)
+
+-- | Optional list of hop destinations.
+job_hopDestinations :: Lens.Lens' Job (Prelude.Maybe [HopDestination])
+job_hopDestinations = Lens.lens (\Job' {hopDestinations} -> hopDestinations) (\s@Job' {} a -> s {hopDestinations = a} :: Job) Prelude.. Lens.mapping Lens.coerced
+
+-- | A portion of the job\'s ARN, unique within your AWS Elemental
+-- MediaConvert resources
+job_id :: Lens.Lens' Job (Prelude.Maybe Prelude.Text)
+job_id = Lens.lens (\Job' {id} -> id) (\s@Job' {} a -> s {id = a} :: Job)
+
+-- | An estimate of how far your job has progressed. This estimate is shown
+-- as a percentage of the total time from when your job leaves its queue to
+-- when your output files appear in your output Amazon S3 bucket. AWS
+-- Elemental MediaConvert provides jobPercentComplete in CloudWatch
+-- STATUS_UPDATE events and in the response to GetJob and ListJobs
+-- requests. The jobPercentComplete estimate is reliable for the following
+-- input containers: Quicktime, Transport Stream, MP4, and MXF. For some
+-- jobs, the service can\'t provide information about job progress. In
+-- those cases, jobPercentComplete returns a null value.
+job_jobPercentComplete :: Lens.Lens' Job (Prelude.Maybe Prelude.Int)
+job_jobPercentComplete = Lens.lens (\Job' {jobPercentComplete} -> jobPercentComplete) (\s@Job' {} a -> s {jobPercentComplete = a} :: Job)
+
+-- | The job template that the job is created from, if it is created from a
+-- job template.
+job_jobTemplate :: Lens.Lens' Job (Prelude.Maybe Prelude.Text)
+job_jobTemplate = Lens.lens (\Job' {jobTemplate} -> jobTemplate) (\s@Job' {} a -> s {jobTemplate = a} :: Job)
+
+-- | Provides messages from the service about jobs that you have already
+-- successfully submitted.
+job_messages :: Lens.Lens' Job (Prelude.Maybe JobMessages)
+job_messages = Lens.lens (\Job' {messages} -> messages) (\s@Job' {} a -> s {messages = a} :: Job)
+
+-- | List of output group details
+job_outputGroupDetails :: Lens.Lens' Job (Prelude.Maybe [OutputGroupDetail])
+job_outputGroupDetails = Lens.lens (\Job' {outputGroupDetails} -> outputGroupDetails) (\s@Job' {} a -> s {outputGroupDetails = a} :: Job) Prelude.. Lens.mapping Lens.coerced
+
+-- | Relative priority on the job.
+job_priority :: Lens.Lens' Job (Prelude.Maybe Prelude.Int)
+job_priority = Lens.lens (\Job' {priority} -> priority) (\s@Job' {} a -> s {priority = a} :: Job)
+
+-- | When you create a job, you can specify a queue to send it to. If you
+-- don\'t specify, the job will go to the default queue. For more about
+-- queues, see the User Guide topic at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+job_queue :: Lens.Lens' Job (Prelude.Maybe Prelude.Text)
+job_queue = Lens.lens (\Job' {queue} -> queue) (\s@Job' {} a -> s {queue = a} :: Job)
+
+-- | The job\'s queue hopping history.
+job_queueTransitions :: Lens.Lens' Job (Prelude.Maybe [QueueTransition])
+job_queueTransitions = Lens.lens (\Job' {queueTransitions} -> queueTransitions) (\s@Job' {} a -> s {queueTransitions = a} :: Job) Prelude.. Lens.mapping Lens.coerced
+
+-- | The number of times that the service automatically attempted to process
+-- your job after encountering an error.
+job_retryCount :: Lens.Lens' Job (Prelude.Maybe Prelude.Int)
+job_retryCount = Lens.lens (\Job' {retryCount} -> retryCount) (\s@Job' {} a -> s {retryCount = a} :: Job)
+
+-- | Enable this setting when you run a test job to estimate how many
+-- reserved transcoding slots (RTS) you need. When this is enabled,
+-- MediaConvert runs your job from an on-demand queue with similar
+-- performance to what you will see with one RTS in a reserved queue. This
+-- setting is disabled by default.
+job_simulateReservedQueue :: Lens.Lens' Job (Prelude.Maybe SimulateReservedQueue)
+job_simulateReservedQueue = Lens.lens (\Job' {simulateReservedQueue} -> simulateReservedQueue) (\s@Job' {} a -> s {simulateReservedQueue = a} :: Job)
+
+-- | A job\'s status can be SUBMITTED, PROGRESSING, COMPLETE, CANCELED, or
+-- ERROR.
+job_status :: Lens.Lens' Job (Prelude.Maybe JobStatus)
+job_status = Lens.lens (\Job' {status} -> status) (\s@Job' {} a -> s {status = a} :: Job)
+
+-- | Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
+-- CloudWatch Events. Set the interval, in seconds, between status updates.
+-- MediaConvert sends an update at this interval from the time the service
+-- begins processing your job to the time it completes the transcode or
+-- encounters an error.
+job_statusUpdateInterval :: Lens.Lens' Job (Prelude.Maybe StatusUpdateInterval)
+job_statusUpdateInterval = Lens.lens (\Job' {statusUpdateInterval} -> statusUpdateInterval) (\s@Job' {} a -> s {statusUpdateInterval = a} :: Job)
+
+-- | Information about when jobs are submitted, started, and finished is
+-- specified in Unix epoch format in seconds.
+job_timing :: Lens.Lens' Job (Prelude.Maybe Timing)
+job_timing = Lens.lens (\Job' {timing} -> timing) (\s@Job' {} a -> s {timing = a} :: Job)
+
+-- | User-defined metadata that you want to associate with an MediaConvert
+-- job. You specify metadata in key\/value pairs.
+job_userMetadata :: Lens.Lens' Job (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+job_userMetadata = Lens.lens (\Job' {userMetadata} -> userMetadata) (\s@Job' {} a -> s {userMetadata = a} :: Job) Prelude.. Lens.mapping Lens.coerced
+
+-- | The IAM role you use for creating this job. For details about
+-- permissions, see the User Guide topic at the User Guide at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html
+job_role :: Lens.Lens' Job Prelude.Text
+job_role = Lens.lens (\Job' {role'} -> role') (\s@Job' {} a -> s {role' = a} :: Job)
+
+-- | JobSettings contains all the transcode settings for a job.
+job_settings :: Lens.Lens' Job JobSettings
+job_settings = Lens.lens (\Job' {settings} -> settings) (\s@Job' {} a -> s {settings = a} :: Job)
+
+instance Data.FromJSON Job where
+  parseJSON =
+    Data.withObject
+      "Job"
+      ( \x ->
+          Job'
+            Prelude.<$> (x Data..:? "accelerationSettings")
+            Prelude.<*> (x Data..:? "accelerationStatus")
+            Prelude.<*> (x Data..:? "arn")
+            Prelude.<*> (x Data..:? "billingTagsSource")
+            Prelude.<*> (x Data..:? "createdAt")
+            Prelude.<*> (x Data..:? "currentPhase")
+            Prelude.<*> (x Data..:? "errorCode")
+            Prelude.<*> (x Data..:? "errorMessage")
+            Prelude.<*> ( x
+                            Data..:? "hopDestinations"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "id")
+            Prelude.<*> (x Data..:? "jobPercentComplete")
+            Prelude.<*> (x Data..:? "jobTemplate")
+            Prelude.<*> (x Data..:? "messages")
+            Prelude.<*> ( x
+                            Data..:? "outputGroupDetails"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "priority")
+            Prelude.<*> (x Data..:? "queue")
+            Prelude.<*> ( x
+                            Data..:? "queueTransitions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "retryCount")
+            Prelude.<*> (x Data..:? "simulateReservedQueue")
+            Prelude.<*> (x Data..:? "status")
+            Prelude.<*> (x Data..:? "statusUpdateInterval")
+            Prelude.<*> (x Data..:? "timing")
+            Prelude.<*> (x Data..:? "userMetadata" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "role")
+            Prelude.<*> (x Data..: "settings")
+      )
+
+instance Prelude.Hashable Job where
+  hashWithSalt _salt Job' {..} =
+    _salt
+      `Prelude.hashWithSalt` accelerationSettings
+      `Prelude.hashWithSalt` accelerationStatus
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` billingTagsSource
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` currentPhase
+      `Prelude.hashWithSalt` errorCode
+      `Prelude.hashWithSalt` errorMessage
+      `Prelude.hashWithSalt` hopDestinations
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` jobPercentComplete
+      `Prelude.hashWithSalt` jobTemplate
+      `Prelude.hashWithSalt` messages
+      `Prelude.hashWithSalt` outputGroupDetails
+      `Prelude.hashWithSalt` priority
+      `Prelude.hashWithSalt` queue
+      `Prelude.hashWithSalt` queueTransitions
+      `Prelude.hashWithSalt` retryCount
+      `Prelude.hashWithSalt` simulateReservedQueue
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` statusUpdateInterval
+      `Prelude.hashWithSalt` timing
+      `Prelude.hashWithSalt` userMetadata
+      `Prelude.hashWithSalt` role'
+      `Prelude.hashWithSalt` settings
+
+instance Prelude.NFData Job where
+  rnf Job' {..} =
+    Prelude.rnf accelerationSettings
+      `Prelude.seq` Prelude.rnf accelerationStatus
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf billingTagsSource
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf currentPhase
+      `Prelude.seq` Prelude.rnf errorCode
+      `Prelude.seq` Prelude.rnf errorMessage
+      `Prelude.seq` Prelude.rnf hopDestinations
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf jobPercentComplete
+      `Prelude.seq` Prelude.rnf jobTemplate
+      `Prelude.seq` Prelude.rnf messages
+      `Prelude.seq` Prelude.rnf outputGroupDetails
+      `Prelude.seq` Prelude.rnf priority
+      `Prelude.seq` Prelude.rnf queue
+      `Prelude.seq` Prelude.rnf queueTransitions
+      `Prelude.seq` Prelude.rnf retryCount
+      `Prelude.seq` Prelude.rnf
+        simulateReservedQueue
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf
+        statusUpdateInterval
+      `Prelude.seq` Prelude.rnf timing
+      `Prelude.seq` Prelude.rnf userMetadata
+      `Prelude.seq` Prelude.rnf role'
+      `Prelude.seq` Prelude.rnf settings
diff --git a/gen/Amazonka/MediaConvert/Types/JobMessages.hs b/gen/Amazonka/MediaConvert/Types/JobMessages.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/JobMessages.hs
@@ -0,0 +1,90 @@
+{-# 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.JobMessages
+-- 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.JobMessages where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides messages from the service about jobs that you have already
+-- successfully submitted.
+--
+-- /See:/ 'newJobMessages' smart constructor.
+data JobMessages = JobMessages'
+  { -- | List of messages that are informational only and don\'t indicate a
+    -- problem with your job.
+    info :: Prelude.Maybe [Prelude.Text],
+    -- | List of messages that warn about conditions that might cause your job
+    -- not to run or to fail.
+    warning :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JobMessages' 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:
+--
+-- 'info', 'jobMessages_info' - List of messages that are informational only and don\'t indicate a
+-- problem with your job.
+--
+-- 'warning', 'jobMessages_warning' - List of messages that warn about conditions that might cause your job
+-- not to run or to fail.
+newJobMessages ::
+  JobMessages
+newJobMessages =
+  JobMessages'
+    { info = Prelude.Nothing,
+      warning = Prelude.Nothing
+    }
+
+-- | List of messages that are informational only and don\'t indicate a
+-- problem with your job.
+jobMessages_info :: Lens.Lens' JobMessages (Prelude.Maybe [Prelude.Text])
+jobMessages_info = Lens.lens (\JobMessages' {info} -> info) (\s@JobMessages' {} a -> s {info = a} :: JobMessages) Prelude.. Lens.mapping Lens.coerced
+
+-- | List of messages that warn about conditions that might cause your job
+-- not to run or to fail.
+jobMessages_warning :: Lens.Lens' JobMessages (Prelude.Maybe [Prelude.Text])
+jobMessages_warning = Lens.lens (\JobMessages' {warning} -> warning) (\s@JobMessages' {} a -> s {warning = a} :: JobMessages) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON JobMessages where
+  parseJSON =
+    Data.withObject
+      "JobMessages"
+      ( \x ->
+          JobMessages'
+            Prelude.<$> (x Data..:? "info" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "warning" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable JobMessages where
+  hashWithSalt _salt JobMessages' {..} =
+    _salt
+      `Prelude.hashWithSalt` info
+      `Prelude.hashWithSalt` warning
+
+instance Prelude.NFData JobMessages where
+  rnf JobMessages' {..} =
+    Prelude.rnf info `Prelude.seq` Prelude.rnf warning
diff --git a/gen/Amazonka/MediaConvert/Types/JobPhase.hs b/gen/Amazonka/MediaConvert/Types/JobPhase.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/JobPhase.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.JobPhase
+-- 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.JobPhase
+  ( JobPhase
+      ( ..,
+        JobPhase_PROBING,
+        JobPhase_TRANSCODING,
+        JobPhase_UPLOADING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A job\'s phase can be PROBING, TRANSCODING OR UPLOADING
+newtype JobPhase = JobPhase'
+  { fromJobPhase ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern JobPhase_PROBING :: JobPhase
+pattern JobPhase_PROBING = JobPhase' "PROBING"
+
+pattern JobPhase_TRANSCODING :: JobPhase
+pattern JobPhase_TRANSCODING = JobPhase' "TRANSCODING"
+
+pattern JobPhase_UPLOADING :: JobPhase
+pattern JobPhase_UPLOADING = JobPhase' "UPLOADING"
+
+{-# COMPLETE
+  JobPhase_PROBING,
+  JobPhase_TRANSCODING,
+  JobPhase_UPLOADING,
+  JobPhase'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/JobSettings.hs b/gen/Amazonka/MediaConvert/Types/JobSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/JobSettings.hs
@@ -0,0 +1,373 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.JobSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.MediaConvert.Types.JobSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaConvert.Types.AvailBlanking
+import Amazonka.MediaConvert.Types.EsamSettings
+import Amazonka.MediaConvert.Types.ExtendedDataServices
+import Amazonka.MediaConvert.Types.Input
+import Amazonka.MediaConvert.Types.KantarWatermarkSettings
+import Amazonka.MediaConvert.Types.MotionImageInserter
+import Amazonka.MediaConvert.Types.NielsenConfiguration
+import Amazonka.MediaConvert.Types.NielsenNonLinearWatermarkSettings
+import Amazonka.MediaConvert.Types.OutputGroup
+import Amazonka.MediaConvert.Types.TimecodeConfig
+import Amazonka.MediaConvert.Types.TimedMetadataInsertion
+import qualified Amazonka.Prelude as Prelude
+
+-- | JobSettings contains all the transcode settings for a job.
+--
+-- /See:/ 'newJobSettings' smart constructor.
+data JobSettings = JobSettings'
+  { -- | When specified, this offset (in milliseconds) is added to the input Ad
+    -- Avail PTS time.
+    adAvailOffset :: Prelude.Maybe Prelude.Int,
+    -- | Settings for ad avail blanking. Video can be blanked or overlaid with an
+    -- image, and audio muted during SCTE-35 triggered ad avails.
+    availBlanking :: Prelude.Maybe AvailBlanking,
+    -- | Settings for Event Signaling And Messaging (ESAM). If you don\'t do ad
+    -- insertion, you can ignore these settings.
+    esam :: Prelude.Maybe EsamSettings,
+    -- | If your source content has EIA-608 Line 21 Data Services, enable this
+    -- feature to specify what MediaConvert does with the Extended Data
+    -- Services (XDS) packets. You can choose to pass through XDS packets, or
+    -- remove them from the output. For more information about XDS, see EIA-608
+    -- Line Data Services, section 9.5.1.5 05h Content Advisory.
+    extendedDataServices :: Prelude.Maybe ExtendedDataServices,
+    -- | Use Inputs (inputs) to define source file used in the transcode job.
+    -- There can be multiple inputs add in a job. These inputs will be
+    -- concantenated together to create the output.
+    inputs :: Prelude.Maybe [Input],
+    -- | Use these settings only when you use Kantar watermarking. Specify the
+    -- values that MediaConvert uses to generate and place Kantar watermarks in
+    -- your output audio. These settings apply to every output in your job. In
+    -- addition to specifying these values, you also need to store your Kantar
+    -- credentials in AWS Secrets Manager. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/kantar-watermarking.html.
+    kantarWatermark :: Prelude.Maybe KantarWatermarkSettings,
+    -- | Overlay motion graphics on top of your video. The motion graphics that
+    -- you specify here appear on all outputs in all output groups. For more
+    -- information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/motion-graphic-overlay.html.
+    motionImageInserter :: Prelude.Maybe MotionImageInserter,
+    -- | Settings for your Nielsen configuration. If you don\'t do Nielsen
+    -- measurement and analytics, ignore these settings. When you enable
+    -- Nielsen configuration (nielsenConfiguration), MediaConvert enables PCM
+    -- to ID3 tagging for all outputs in the job. To enable Nielsen
+    -- configuration programmatically, include an instance of
+    -- nielsenConfiguration in your JSON job specification. Even if you don\'t
+    -- include any children of nielsenConfiguration, you still enable the
+    -- setting.
+    nielsenConfiguration :: Prelude.Maybe NielsenConfiguration,
+    -- | Ignore these settings unless you are using Nielsen non-linear
+    -- watermarking. Specify the values that MediaConvert uses to generate and
+    -- place Nielsen watermarks in your output audio. In addition to specifying
+    -- these values, you also need to set up your cloud TIC server. These
+    -- settings apply to every output in your job. The MediaConvert
+    -- implementation is currently with the following Nielsen versions: Nielsen
+    -- Watermark SDK Version 5.2.1 Nielsen NLM Watermark Engine Version 1.2.7
+    -- Nielsen Watermark Authenticator [SID_TIC] Version [5.0.0]
+    nielsenNonLinearWatermark :: Prelude.Maybe NielsenNonLinearWatermarkSettings,
+    -- | (OutputGroups) contains one group of settings for each set of outputs
+    -- that share a common package type. All unpackaged files (MPEG-4, MPEG-2
+    -- TS, Quicktime, MXF, and no container) are grouped in a single output
+    -- group as well. Required in (OutputGroups) is a group of settings that
+    -- apply to the whole group. This required object depends on the value you
+    -- set for (Type) under (OutputGroups)>(OutputGroupSettings). Type,
+    -- settings object pairs are as follows. * FILE_GROUP_SETTINGS,
+    -- FileGroupSettings * HLS_GROUP_SETTINGS, HlsGroupSettings *
+    -- DASH_ISO_GROUP_SETTINGS, DashIsoGroupSettings *
+    -- MS_SMOOTH_GROUP_SETTINGS, MsSmoothGroupSettings * CMAF_GROUP_SETTINGS,
+    -- CmafGroupSettings
+    outputGroups :: Prelude.Maybe [OutputGroup],
+    -- | These settings control how the service handles timecodes throughout the
+    -- job. These settings don\'t affect input clipping.
+    timecodeConfig :: Prelude.Maybe TimecodeConfig,
+    -- | Insert user-defined custom ID3 metadata (id3) at timecodes (timecode)
+    -- that you specify. In each output that you want to include this metadata,
+    -- you must set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH).
+    timedMetadataInsertion :: Prelude.Maybe TimedMetadataInsertion
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JobSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'adAvailOffset', 'jobSettings_adAvailOffset' - When specified, this offset (in milliseconds) is added to the input Ad
+-- Avail PTS time.
+--
+-- 'availBlanking', 'jobSettings_availBlanking' - Settings for ad avail blanking. Video can be blanked or overlaid with an
+-- image, and audio muted during SCTE-35 triggered ad avails.
+--
+-- 'esam', 'jobSettings_esam' - Settings for Event Signaling And Messaging (ESAM). If you don\'t do ad
+-- insertion, you can ignore these settings.
+--
+-- 'extendedDataServices', 'jobSettings_extendedDataServices' - If your source content has EIA-608 Line 21 Data Services, enable this
+-- feature to specify what MediaConvert does with the Extended Data
+-- Services (XDS) packets. You can choose to pass through XDS packets, or
+-- remove them from the output. For more information about XDS, see EIA-608
+-- Line Data Services, section 9.5.1.5 05h Content Advisory.
+--
+-- 'inputs', 'jobSettings_inputs' - Use Inputs (inputs) to define source file used in the transcode job.
+-- There can be multiple inputs add in a job. These inputs will be
+-- concantenated together to create the output.
+--
+-- 'kantarWatermark', 'jobSettings_kantarWatermark' - Use these settings only when you use Kantar watermarking. Specify the
+-- values that MediaConvert uses to generate and place Kantar watermarks in
+-- your output audio. These settings apply to every output in your job. In
+-- addition to specifying these values, you also need to store your Kantar
+-- credentials in AWS Secrets Manager. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/kantar-watermarking.html.
+--
+-- 'motionImageInserter', 'jobSettings_motionImageInserter' - Overlay motion graphics on top of your video. The motion graphics that
+-- you specify here appear on all outputs in all output groups. For more
+-- information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/motion-graphic-overlay.html.
+--
+-- 'nielsenConfiguration', 'jobSettings_nielsenConfiguration' - Settings for your Nielsen configuration. If you don\'t do Nielsen
+-- measurement and analytics, ignore these settings. When you enable
+-- Nielsen configuration (nielsenConfiguration), MediaConvert enables PCM
+-- to ID3 tagging for all outputs in the job. To enable Nielsen
+-- configuration programmatically, include an instance of
+-- nielsenConfiguration in your JSON job specification. Even if you don\'t
+-- include any children of nielsenConfiguration, you still enable the
+-- setting.
+--
+-- 'nielsenNonLinearWatermark', 'jobSettings_nielsenNonLinearWatermark' - Ignore these settings unless you are using Nielsen non-linear
+-- watermarking. Specify the values that MediaConvert uses to generate and
+-- place Nielsen watermarks in your output audio. In addition to specifying
+-- these values, you also need to set up your cloud TIC server. These
+-- settings apply to every output in your job. The MediaConvert
+-- implementation is currently with the following Nielsen versions: Nielsen
+-- Watermark SDK Version 5.2.1 Nielsen NLM Watermark Engine Version 1.2.7
+-- Nielsen Watermark Authenticator [SID_TIC] Version [5.0.0]
+--
+-- 'outputGroups', 'jobSettings_outputGroups' - (OutputGroups) contains one group of settings for each set of outputs
+-- that share a common package type. All unpackaged files (MPEG-4, MPEG-2
+-- TS, Quicktime, MXF, and no container) are grouped in a single output
+-- group as well. Required in (OutputGroups) is a group of settings that
+-- apply to the whole group. This required object depends on the value you
+-- set for (Type) under (OutputGroups)>(OutputGroupSettings). Type,
+-- settings object pairs are as follows. * FILE_GROUP_SETTINGS,
+-- FileGroupSettings * HLS_GROUP_SETTINGS, HlsGroupSettings *
+-- DASH_ISO_GROUP_SETTINGS, DashIsoGroupSettings *
+-- MS_SMOOTH_GROUP_SETTINGS, MsSmoothGroupSettings * CMAF_GROUP_SETTINGS,
+-- CmafGroupSettings
+--
+-- 'timecodeConfig', 'jobSettings_timecodeConfig' - These settings control how the service handles timecodes throughout the
+-- job. These settings don\'t affect input clipping.
+--
+-- 'timedMetadataInsertion', 'jobSettings_timedMetadataInsertion' - Insert user-defined custom ID3 metadata (id3) at timecodes (timecode)
+-- that you specify. In each output that you want to include this metadata,
+-- you must set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH).
+newJobSettings ::
+  JobSettings
+newJobSettings =
+  JobSettings'
+    { adAvailOffset = Prelude.Nothing,
+      availBlanking = Prelude.Nothing,
+      esam = Prelude.Nothing,
+      extendedDataServices = Prelude.Nothing,
+      inputs = Prelude.Nothing,
+      kantarWatermark = Prelude.Nothing,
+      motionImageInserter = Prelude.Nothing,
+      nielsenConfiguration = Prelude.Nothing,
+      nielsenNonLinearWatermark = Prelude.Nothing,
+      outputGroups = Prelude.Nothing,
+      timecodeConfig = Prelude.Nothing,
+      timedMetadataInsertion = Prelude.Nothing
+    }
+
+-- | When specified, this offset (in milliseconds) is added to the input Ad
+-- Avail PTS time.
+jobSettings_adAvailOffset :: Lens.Lens' JobSettings (Prelude.Maybe Prelude.Int)
+jobSettings_adAvailOffset = Lens.lens (\JobSettings' {adAvailOffset} -> adAvailOffset) (\s@JobSettings' {} a -> s {adAvailOffset = a} :: JobSettings)
+
+-- | Settings for ad avail blanking. Video can be blanked or overlaid with an
+-- image, and audio muted during SCTE-35 triggered ad avails.
+jobSettings_availBlanking :: Lens.Lens' JobSettings (Prelude.Maybe AvailBlanking)
+jobSettings_availBlanking = Lens.lens (\JobSettings' {availBlanking} -> availBlanking) (\s@JobSettings' {} a -> s {availBlanking = a} :: JobSettings)
+
+-- | Settings for Event Signaling And Messaging (ESAM). If you don\'t do ad
+-- insertion, you can ignore these settings.
+jobSettings_esam :: Lens.Lens' JobSettings (Prelude.Maybe EsamSettings)
+jobSettings_esam = Lens.lens (\JobSettings' {esam} -> esam) (\s@JobSettings' {} a -> s {esam = a} :: JobSettings)
+
+-- | If your source content has EIA-608 Line 21 Data Services, enable this
+-- feature to specify what MediaConvert does with the Extended Data
+-- Services (XDS) packets. You can choose to pass through XDS packets, or
+-- remove them from the output. For more information about XDS, see EIA-608
+-- Line Data Services, section 9.5.1.5 05h Content Advisory.
+jobSettings_extendedDataServices :: Lens.Lens' JobSettings (Prelude.Maybe ExtendedDataServices)
+jobSettings_extendedDataServices = Lens.lens (\JobSettings' {extendedDataServices} -> extendedDataServices) (\s@JobSettings' {} a -> s {extendedDataServices = a} :: JobSettings)
+
+-- | Use Inputs (inputs) to define source file used in the transcode job.
+-- There can be multiple inputs add in a job. These inputs will be
+-- concantenated together to create the output.
+jobSettings_inputs :: Lens.Lens' JobSettings (Prelude.Maybe [Input])
+jobSettings_inputs = Lens.lens (\JobSettings' {inputs} -> inputs) (\s@JobSettings' {} a -> s {inputs = a} :: JobSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use these settings only when you use Kantar watermarking. Specify the
+-- values that MediaConvert uses to generate and place Kantar watermarks in
+-- your output audio. These settings apply to every output in your job. In
+-- addition to specifying these values, you also need to store your Kantar
+-- credentials in AWS Secrets Manager. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/kantar-watermarking.html.
+jobSettings_kantarWatermark :: Lens.Lens' JobSettings (Prelude.Maybe KantarWatermarkSettings)
+jobSettings_kantarWatermark = Lens.lens (\JobSettings' {kantarWatermark} -> kantarWatermark) (\s@JobSettings' {} a -> s {kantarWatermark = a} :: JobSettings)
+
+-- | Overlay motion graphics on top of your video. The motion graphics that
+-- you specify here appear on all outputs in all output groups. For more
+-- information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/motion-graphic-overlay.html.
+jobSettings_motionImageInserter :: Lens.Lens' JobSettings (Prelude.Maybe MotionImageInserter)
+jobSettings_motionImageInserter = Lens.lens (\JobSettings' {motionImageInserter} -> motionImageInserter) (\s@JobSettings' {} a -> s {motionImageInserter = a} :: JobSettings)
+
+-- | Settings for your Nielsen configuration. If you don\'t do Nielsen
+-- measurement and analytics, ignore these settings. When you enable
+-- Nielsen configuration (nielsenConfiguration), MediaConvert enables PCM
+-- to ID3 tagging for all outputs in the job. To enable Nielsen
+-- configuration programmatically, include an instance of
+-- nielsenConfiguration in your JSON job specification. Even if you don\'t
+-- include any children of nielsenConfiguration, you still enable the
+-- setting.
+jobSettings_nielsenConfiguration :: Lens.Lens' JobSettings (Prelude.Maybe NielsenConfiguration)
+jobSettings_nielsenConfiguration = Lens.lens (\JobSettings' {nielsenConfiguration} -> nielsenConfiguration) (\s@JobSettings' {} a -> s {nielsenConfiguration = a} :: JobSettings)
+
+-- | Ignore these settings unless you are using Nielsen non-linear
+-- watermarking. Specify the values that MediaConvert uses to generate and
+-- place Nielsen watermarks in your output audio. In addition to specifying
+-- these values, you also need to set up your cloud TIC server. These
+-- settings apply to every output in your job. The MediaConvert
+-- implementation is currently with the following Nielsen versions: Nielsen
+-- Watermark SDK Version 5.2.1 Nielsen NLM Watermark Engine Version 1.2.7
+-- Nielsen Watermark Authenticator [SID_TIC] Version [5.0.0]
+jobSettings_nielsenNonLinearWatermark :: Lens.Lens' JobSettings (Prelude.Maybe NielsenNonLinearWatermarkSettings)
+jobSettings_nielsenNonLinearWatermark = Lens.lens (\JobSettings' {nielsenNonLinearWatermark} -> nielsenNonLinearWatermark) (\s@JobSettings' {} a -> s {nielsenNonLinearWatermark = a} :: JobSettings)
+
+-- | (OutputGroups) contains one group of settings for each set of outputs
+-- that share a common package type. All unpackaged files (MPEG-4, MPEG-2
+-- TS, Quicktime, MXF, and no container) are grouped in a single output
+-- group as well. Required in (OutputGroups) is a group of settings that
+-- apply to the whole group. This required object depends on the value you
+-- set for (Type) under (OutputGroups)>(OutputGroupSettings). Type,
+-- settings object pairs are as follows. * FILE_GROUP_SETTINGS,
+-- FileGroupSettings * HLS_GROUP_SETTINGS, HlsGroupSettings *
+-- DASH_ISO_GROUP_SETTINGS, DashIsoGroupSettings *
+-- MS_SMOOTH_GROUP_SETTINGS, MsSmoothGroupSettings * CMAF_GROUP_SETTINGS,
+-- CmafGroupSettings
+jobSettings_outputGroups :: Lens.Lens' JobSettings (Prelude.Maybe [OutputGroup])
+jobSettings_outputGroups = Lens.lens (\JobSettings' {outputGroups} -> outputGroups) (\s@JobSettings' {} a -> s {outputGroups = a} :: JobSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | These settings control how the service handles timecodes throughout the
+-- job. These settings don\'t affect input clipping.
+jobSettings_timecodeConfig :: Lens.Lens' JobSettings (Prelude.Maybe TimecodeConfig)
+jobSettings_timecodeConfig = Lens.lens (\JobSettings' {timecodeConfig} -> timecodeConfig) (\s@JobSettings' {} a -> s {timecodeConfig = a} :: JobSettings)
+
+-- | Insert user-defined custom ID3 metadata (id3) at timecodes (timecode)
+-- that you specify. In each output that you want to include this metadata,
+-- you must set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH).
+jobSettings_timedMetadataInsertion :: Lens.Lens' JobSettings (Prelude.Maybe TimedMetadataInsertion)
+jobSettings_timedMetadataInsertion = Lens.lens (\JobSettings' {timedMetadataInsertion} -> timedMetadataInsertion) (\s@JobSettings' {} a -> s {timedMetadataInsertion = a} :: JobSettings)
+
+instance Data.FromJSON JobSettings where
+  parseJSON =
+    Data.withObject
+      "JobSettings"
+      ( \x ->
+          JobSettings'
+            Prelude.<$> (x Data..:? "adAvailOffset")
+            Prelude.<*> (x Data..:? "availBlanking")
+            Prelude.<*> (x Data..:? "esam")
+            Prelude.<*> (x Data..:? "extendedDataServices")
+            Prelude.<*> (x Data..:? "inputs" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "kantarWatermark")
+            Prelude.<*> (x Data..:? "motionImageInserter")
+            Prelude.<*> (x Data..:? "nielsenConfiguration")
+            Prelude.<*> (x Data..:? "nielsenNonLinearWatermark")
+            Prelude.<*> (x Data..:? "outputGroups" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "timecodeConfig")
+            Prelude.<*> (x Data..:? "timedMetadataInsertion")
+      )
+
+instance Prelude.Hashable JobSettings where
+  hashWithSalt _salt JobSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` adAvailOffset
+      `Prelude.hashWithSalt` availBlanking
+      `Prelude.hashWithSalt` esam
+      `Prelude.hashWithSalt` extendedDataServices
+      `Prelude.hashWithSalt` inputs
+      `Prelude.hashWithSalt` kantarWatermark
+      `Prelude.hashWithSalt` motionImageInserter
+      `Prelude.hashWithSalt` nielsenConfiguration
+      `Prelude.hashWithSalt` nielsenNonLinearWatermark
+      `Prelude.hashWithSalt` outputGroups
+      `Prelude.hashWithSalt` timecodeConfig
+      `Prelude.hashWithSalt` timedMetadataInsertion
+
+instance Prelude.NFData JobSettings where
+  rnf JobSettings' {..} =
+    Prelude.rnf adAvailOffset
+      `Prelude.seq` Prelude.rnf availBlanking
+      `Prelude.seq` Prelude.rnf esam
+      `Prelude.seq` Prelude.rnf extendedDataServices
+      `Prelude.seq` Prelude.rnf inputs
+      `Prelude.seq` Prelude.rnf kantarWatermark
+      `Prelude.seq` Prelude.rnf motionImageInserter
+      `Prelude.seq` Prelude.rnf nielsenConfiguration
+      `Prelude.seq` Prelude.rnf nielsenNonLinearWatermark
+      `Prelude.seq` Prelude.rnf outputGroups
+      `Prelude.seq` Prelude.rnf timecodeConfig
+      `Prelude.seq` Prelude.rnf timedMetadataInsertion
+
+instance Data.ToJSON JobSettings where
+  toJSON JobSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("adAvailOffset" Data..=) Prelude.<$> adAvailOffset,
+            ("availBlanking" Data..=) Prelude.<$> availBlanking,
+            ("esam" Data..=) Prelude.<$> esam,
+            ("extendedDataServices" Data..=)
+              Prelude.<$> extendedDataServices,
+            ("inputs" Data..=) Prelude.<$> inputs,
+            ("kantarWatermark" Data..=)
+              Prelude.<$> kantarWatermark,
+            ("motionImageInserter" Data..=)
+              Prelude.<$> motionImageInserter,
+            ("nielsenConfiguration" Data..=)
+              Prelude.<$> nielsenConfiguration,
+            ("nielsenNonLinearWatermark" Data..=)
+              Prelude.<$> nielsenNonLinearWatermark,
+            ("outputGroups" Data..=) Prelude.<$> outputGroups,
+            ("timecodeConfig" Data..=)
+              Prelude.<$> timecodeConfig,
+            ("timedMetadataInsertion" Data..=)
+              Prelude.<$> timedMetadataInsertion
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/JobStatus.hs b/gen/Amazonka/MediaConvert/Types/JobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/JobStatus.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.JobStatus
+-- 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.JobStatus
+  ( JobStatus
+      ( ..,
+        JobStatus_CANCELED,
+        JobStatus_COMPLETE,
+        JobStatus_ERROR,
+        JobStatus_PROGRESSING,
+        JobStatus_SUBMITTED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A job\'s status can be SUBMITTED, PROGRESSING, COMPLETE, CANCELED, or
+-- ERROR.
+newtype JobStatus = JobStatus'
+  { fromJobStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern JobStatus_CANCELED :: JobStatus
+pattern JobStatus_CANCELED = JobStatus' "CANCELED"
+
+pattern JobStatus_COMPLETE :: JobStatus
+pattern JobStatus_COMPLETE = JobStatus' "COMPLETE"
+
+pattern JobStatus_ERROR :: JobStatus
+pattern JobStatus_ERROR = JobStatus' "ERROR"
+
+pattern JobStatus_PROGRESSING :: JobStatus
+pattern JobStatus_PROGRESSING = JobStatus' "PROGRESSING"
+
+pattern JobStatus_SUBMITTED :: JobStatus
+pattern JobStatus_SUBMITTED = JobStatus' "SUBMITTED"
+
+{-# COMPLETE
+  JobStatus_CANCELED,
+  JobStatus_COMPLETE,
+  JobStatus_ERROR,
+  JobStatus_PROGRESSING,
+  JobStatus_SUBMITTED,
+  JobStatus'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/JobTemplate.hs b/gen/Amazonka/MediaConvert/Types/JobTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/JobTemplate.hs
@@ -0,0 +1,257 @@
+{-# 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.JobTemplate
+-- 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.JobTemplate 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.AccelerationSettings
+import Amazonka.MediaConvert.Types.HopDestination
+import Amazonka.MediaConvert.Types.JobTemplateSettings
+import Amazonka.MediaConvert.Types.StatusUpdateInterval
+import Amazonka.MediaConvert.Types.Type
+import qualified Amazonka.Prelude as Prelude
+
+-- | A job template is a pre-made set of encoding instructions that you can
+-- use to quickly create a job.
+--
+-- /See:/ 'newJobTemplate' smart constructor.
+data JobTemplate = JobTemplate'
+  { -- | Accelerated transcoding can significantly speed up jobs with long,
+    -- visually complex content.
+    accelerationSettings :: Prelude.Maybe AccelerationSettings,
+    -- | An identifier for this resource that is unique within all of AWS.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | An optional category you create to organize your job templates.
+    category :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp in epoch seconds for Job template creation.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | An optional description you create for each job template.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Optional list of hop destinations.
+    hopDestinations :: Prelude.Maybe [HopDestination],
+    -- | The timestamp in epoch seconds when the Job template was last updated.
+    lastUpdated :: Prelude.Maybe Data.POSIX,
+    -- | Relative priority on the job.
+    priority :: Prelude.Maybe Prelude.Int,
+    -- | Optional. The queue that jobs created from this template are assigned
+    -- to. If you don\'t specify this, jobs will go to the default queue.
+    queue :: Prelude.Maybe Prelude.Text,
+    -- | Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
+    -- CloudWatch Events. Set the interval, in seconds, between status updates.
+    -- MediaConvert sends an update at this interval from the time the service
+    -- begins processing your job to the time it completes the transcode or
+    -- encounters an error.
+    statusUpdateInterval :: Prelude.Maybe StatusUpdateInterval,
+    -- | A job template can be of two types: system or custom. System or built-in
+    -- job templates can\'t be modified or deleted by the user.
+    type' :: Prelude.Maybe Type,
+    -- | JobTemplateSettings contains all the transcode settings saved in the
+    -- template that will be applied to jobs created from it.
+    settings :: JobTemplateSettings,
+    -- | A name you create for each job template. Each name must be unique within
+    -- your account.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JobTemplate' 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:
+--
+-- 'accelerationSettings', 'jobTemplate_accelerationSettings' - Accelerated transcoding can significantly speed up jobs with long,
+-- visually complex content.
+--
+-- 'arn', 'jobTemplate_arn' - An identifier for this resource that is unique within all of AWS.
+--
+-- 'category', 'jobTemplate_category' - An optional category you create to organize your job templates.
+--
+-- 'createdAt', 'jobTemplate_createdAt' - The timestamp in epoch seconds for Job template creation.
+--
+-- 'description', 'jobTemplate_description' - An optional description you create for each job template.
+--
+-- 'hopDestinations', 'jobTemplate_hopDestinations' - Optional list of hop destinations.
+--
+-- 'lastUpdated', 'jobTemplate_lastUpdated' - The timestamp in epoch seconds when the Job template was last updated.
+--
+-- 'priority', 'jobTemplate_priority' - Relative priority on the job.
+--
+-- 'queue', 'jobTemplate_queue' - Optional. The queue that jobs created from this template are assigned
+-- to. If you don\'t specify this, jobs will go to the default queue.
+--
+-- 'statusUpdateInterval', 'jobTemplate_statusUpdateInterval' - Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
+-- CloudWatch Events. Set the interval, in seconds, between status updates.
+-- MediaConvert sends an update at this interval from the time the service
+-- begins processing your job to the time it completes the transcode or
+-- encounters an error.
+--
+-- 'type'', 'jobTemplate_type' - A job template can be of two types: system or custom. System or built-in
+-- job templates can\'t be modified or deleted by the user.
+--
+-- 'settings', 'jobTemplate_settings' - JobTemplateSettings contains all the transcode settings saved in the
+-- template that will be applied to jobs created from it.
+--
+-- 'name', 'jobTemplate_name' - A name you create for each job template. Each name must be unique within
+-- your account.
+newJobTemplate ::
+  -- | 'settings'
+  JobTemplateSettings ->
+  -- | 'name'
+  Prelude.Text ->
+  JobTemplate
+newJobTemplate pSettings_ pName_ =
+  JobTemplate'
+    { accelerationSettings =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      category = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      hopDestinations = Prelude.Nothing,
+      lastUpdated = Prelude.Nothing,
+      priority = Prelude.Nothing,
+      queue = Prelude.Nothing,
+      statusUpdateInterval = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      settings = pSettings_,
+      name = pName_
+    }
+
+-- | Accelerated transcoding can significantly speed up jobs with long,
+-- visually complex content.
+jobTemplate_accelerationSettings :: Lens.Lens' JobTemplate (Prelude.Maybe AccelerationSettings)
+jobTemplate_accelerationSettings = Lens.lens (\JobTemplate' {accelerationSettings} -> accelerationSettings) (\s@JobTemplate' {} a -> s {accelerationSettings = a} :: JobTemplate)
+
+-- | An identifier for this resource that is unique within all of AWS.
+jobTemplate_arn :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.Text)
+jobTemplate_arn = Lens.lens (\JobTemplate' {arn} -> arn) (\s@JobTemplate' {} a -> s {arn = a} :: JobTemplate)
+
+-- | An optional category you create to organize your job templates.
+jobTemplate_category :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.Text)
+jobTemplate_category = Lens.lens (\JobTemplate' {category} -> category) (\s@JobTemplate' {} a -> s {category = a} :: JobTemplate)
+
+-- | The timestamp in epoch seconds for Job template creation.
+jobTemplate_createdAt :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.UTCTime)
+jobTemplate_createdAt = Lens.lens (\JobTemplate' {createdAt} -> createdAt) (\s@JobTemplate' {} a -> s {createdAt = a} :: JobTemplate) Prelude.. Lens.mapping Data._Time
+
+-- | An optional description you create for each job template.
+jobTemplate_description :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.Text)
+jobTemplate_description = Lens.lens (\JobTemplate' {description} -> description) (\s@JobTemplate' {} a -> s {description = a} :: JobTemplate)
+
+-- | Optional list of hop destinations.
+jobTemplate_hopDestinations :: Lens.Lens' JobTemplate (Prelude.Maybe [HopDestination])
+jobTemplate_hopDestinations = Lens.lens (\JobTemplate' {hopDestinations} -> hopDestinations) (\s@JobTemplate' {} a -> s {hopDestinations = a} :: JobTemplate) Prelude.. Lens.mapping Lens.coerced
+
+-- | The timestamp in epoch seconds when the Job template was last updated.
+jobTemplate_lastUpdated :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.UTCTime)
+jobTemplate_lastUpdated = Lens.lens (\JobTemplate' {lastUpdated} -> lastUpdated) (\s@JobTemplate' {} a -> s {lastUpdated = a} :: JobTemplate) Prelude.. Lens.mapping Data._Time
+
+-- | Relative priority on the job.
+jobTemplate_priority :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.Int)
+jobTemplate_priority = Lens.lens (\JobTemplate' {priority} -> priority) (\s@JobTemplate' {} a -> s {priority = a} :: JobTemplate)
+
+-- | Optional. The queue that jobs created from this template are assigned
+-- to. If you don\'t specify this, jobs will go to the default queue.
+jobTemplate_queue :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.Text)
+jobTemplate_queue = Lens.lens (\JobTemplate' {queue} -> queue) (\s@JobTemplate' {} a -> s {queue = a} :: JobTemplate)
+
+-- | Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
+-- CloudWatch Events. Set the interval, in seconds, between status updates.
+-- MediaConvert sends an update at this interval from the time the service
+-- begins processing your job to the time it completes the transcode or
+-- encounters an error.
+jobTemplate_statusUpdateInterval :: Lens.Lens' JobTemplate (Prelude.Maybe StatusUpdateInterval)
+jobTemplate_statusUpdateInterval = Lens.lens (\JobTemplate' {statusUpdateInterval} -> statusUpdateInterval) (\s@JobTemplate' {} a -> s {statusUpdateInterval = a} :: JobTemplate)
+
+-- | A job template can be of two types: system or custom. System or built-in
+-- job templates can\'t be modified or deleted by the user.
+jobTemplate_type :: Lens.Lens' JobTemplate (Prelude.Maybe Type)
+jobTemplate_type = Lens.lens (\JobTemplate' {type'} -> type') (\s@JobTemplate' {} a -> s {type' = a} :: JobTemplate)
+
+-- | JobTemplateSettings contains all the transcode settings saved in the
+-- template that will be applied to jobs created from it.
+jobTemplate_settings :: Lens.Lens' JobTemplate JobTemplateSettings
+jobTemplate_settings = Lens.lens (\JobTemplate' {settings} -> settings) (\s@JobTemplate' {} a -> s {settings = a} :: JobTemplate)
+
+-- | A name you create for each job template. Each name must be unique within
+-- your account.
+jobTemplate_name :: Lens.Lens' JobTemplate Prelude.Text
+jobTemplate_name = Lens.lens (\JobTemplate' {name} -> name) (\s@JobTemplate' {} a -> s {name = a} :: JobTemplate)
+
+instance Data.FromJSON JobTemplate where
+  parseJSON =
+    Data.withObject
+      "JobTemplate"
+      ( \x ->
+          JobTemplate'
+            Prelude.<$> (x Data..:? "accelerationSettings")
+            Prelude.<*> (x Data..:? "arn")
+            Prelude.<*> (x Data..:? "category")
+            Prelude.<*> (x Data..:? "createdAt")
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> ( x
+                            Data..:? "hopDestinations"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "lastUpdated")
+            Prelude.<*> (x Data..:? "priority")
+            Prelude.<*> (x Data..:? "queue")
+            Prelude.<*> (x Data..:? "statusUpdateInterval")
+            Prelude.<*> (x Data..:? "type")
+            Prelude.<*> (x Data..: "settings")
+            Prelude.<*> (x Data..: "name")
+      )
+
+instance Prelude.Hashable JobTemplate where
+  hashWithSalt _salt JobTemplate' {..} =
+    _salt
+      `Prelude.hashWithSalt` accelerationSettings
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` category
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` hopDestinations
+      `Prelude.hashWithSalt` lastUpdated
+      `Prelude.hashWithSalt` priority
+      `Prelude.hashWithSalt` queue
+      `Prelude.hashWithSalt` statusUpdateInterval
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` settings
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData JobTemplate where
+  rnf JobTemplate' {..} =
+    Prelude.rnf accelerationSettings
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf category
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf hopDestinations
+      `Prelude.seq` Prelude.rnf lastUpdated
+      `Prelude.seq` Prelude.rnf priority
+      `Prelude.seq` Prelude.rnf queue
+      `Prelude.seq` Prelude.rnf statusUpdateInterval
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf settings
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/MediaConvert/Types/JobTemplateListBy.hs b/gen/Amazonka/MediaConvert/Types/JobTemplateListBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/JobTemplateListBy.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.JobTemplateListBy
+-- 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.JobTemplateListBy
+  ( JobTemplateListBy
+      ( ..,
+        JobTemplateListBy_CREATION_DATE,
+        JobTemplateListBy_NAME,
+        JobTemplateListBy_SYSTEM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. When you request a list of job templates, you can choose to
+-- list them alphabetically by NAME or chronologically by CREATION_DATE. If
+-- you don\'t specify, the service will list them by name.
+newtype JobTemplateListBy = JobTemplateListBy'
+  { fromJobTemplateListBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern JobTemplateListBy_CREATION_DATE :: JobTemplateListBy
+pattern JobTemplateListBy_CREATION_DATE = JobTemplateListBy' "CREATION_DATE"
+
+pattern JobTemplateListBy_NAME :: JobTemplateListBy
+pattern JobTemplateListBy_NAME = JobTemplateListBy' "NAME"
+
+pattern JobTemplateListBy_SYSTEM :: JobTemplateListBy
+pattern JobTemplateListBy_SYSTEM = JobTemplateListBy' "SYSTEM"
+
+{-# COMPLETE
+  JobTemplateListBy_CREATION_DATE,
+  JobTemplateListBy_NAME,
+  JobTemplateListBy_SYSTEM,
+  JobTemplateListBy'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/JobTemplateSettings.hs b/gen/Amazonka/MediaConvert/Types/JobTemplateSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/JobTemplateSettings.hs
@@ -0,0 +1,375 @@
+{-# 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.JobTemplateSettings
+-- 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.JobTemplateSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaConvert.Types.AvailBlanking
+import Amazonka.MediaConvert.Types.EsamSettings
+import Amazonka.MediaConvert.Types.ExtendedDataServices
+import Amazonka.MediaConvert.Types.InputTemplate
+import Amazonka.MediaConvert.Types.KantarWatermarkSettings
+import Amazonka.MediaConvert.Types.MotionImageInserter
+import Amazonka.MediaConvert.Types.NielsenConfiguration
+import Amazonka.MediaConvert.Types.NielsenNonLinearWatermarkSettings
+import Amazonka.MediaConvert.Types.OutputGroup
+import Amazonka.MediaConvert.Types.TimecodeConfig
+import Amazonka.MediaConvert.Types.TimedMetadataInsertion
+import qualified Amazonka.Prelude as Prelude
+
+-- | JobTemplateSettings contains all the transcode settings saved in the
+-- template that will be applied to jobs created from it.
+--
+-- /See:/ 'newJobTemplateSettings' smart constructor.
+data JobTemplateSettings = JobTemplateSettings'
+  { -- | When specified, this offset (in milliseconds) is added to the input Ad
+    -- Avail PTS time.
+    adAvailOffset :: Prelude.Maybe Prelude.Int,
+    -- | Settings for ad avail blanking. Video can be blanked or overlaid with an
+    -- image, and audio muted during SCTE-35 triggered ad avails.
+    availBlanking :: Prelude.Maybe AvailBlanking,
+    -- | Settings for Event Signaling And Messaging (ESAM). If you don\'t do ad
+    -- insertion, you can ignore these settings.
+    esam :: Prelude.Maybe EsamSettings,
+    -- | If your source content has EIA-608 Line 21 Data Services, enable this
+    -- feature to specify what MediaConvert does with the Extended Data
+    -- Services (XDS) packets. You can choose to pass through XDS packets, or
+    -- remove them from the output. For more information about XDS, see EIA-608
+    -- Line Data Services, section 9.5.1.5 05h Content Advisory.
+    extendedDataServices :: Prelude.Maybe ExtendedDataServices,
+    -- | Use Inputs (inputs) to define the source file used in the transcode job.
+    -- There can only be one input in a job template. Using the API, you can
+    -- include multiple inputs when referencing a job template.
+    inputs :: Prelude.Maybe [InputTemplate],
+    -- | Use these settings only when you use Kantar watermarking. Specify the
+    -- values that MediaConvert uses to generate and place Kantar watermarks in
+    -- your output audio. These settings apply to every output in your job. In
+    -- addition to specifying these values, you also need to store your Kantar
+    -- credentials in AWS Secrets Manager. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/kantar-watermarking.html.
+    kantarWatermark :: Prelude.Maybe KantarWatermarkSettings,
+    -- | Overlay motion graphics on top of your video. The motion graphics that
+    -- you specify here appear on all outputs in all output groups. For more
+    -- information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/motion-graphic-overlay.html.
+    motionImageInserter :: Prelude.Maybe MotionImageInserter,
+    -- | Settings for your Nielsen configuration. If you don\'t do Nielsen
+    -- measurement and analytics, ignore these settings. When you enable
+    -- Nielsen configuration (nielsenConfiguration), MediaConvert enables PCM
+    -- to ID3 tagging for all outputs in the job. To enable Nielsen
+    -- configuration programmatically, include an instance of
+    -- nielsenConfiguration in your JSON job specification. Even if you don\'t
+    -- include any children of nielsenConfiguration, you still enable the
+    -- setting.
+    nielsenConfiguration :: Prelude.Maybe NielsenConfiguration,
+    -- | Ignore these settings unless you are using Nielsen non-linear
+    -- watermarking. Specify the values that MediaConvert uses to generate and
+    -- place Nielsen watermarks in your output audio. In addition to specifying
+    -- these values, you also need to set up your cloud TIC server. These
+    -- settings apply to every output in your job. The MediaConvert
+    -- implementation is currently with the following Nielsen versions: Nielsen
+    -- Watermark SDK Version 5.2.1 Nielsen NLM Watermark Engine Version 1.2.7
+    -- Nielsen Watermark Authenticator [SID_TIC] Version [5.0.0]
+    nielsenNonLinearWatermark :: Prelude.Maybe NielsenNonLinearWatermarkSettings,
+    -- | (OutputGroups) contains one group of settings for each set of outputs
+    -- that share a common package type. All unpackaged files (MPEG-4, MPEG-2
+    -- TS, Quicktime, MXF, and no container) are grouped in a single output
+    -- group as well. Required in (OutputGroups) is a group of settings that
+    -- apply to the whole group. This required object depends on the value you
+    -- set for (Type) under (OutputGroups)>(OutputGroupSettings). Type,
+    -- settings object pairs are as follows. * FILE_GROUP_SETTINGS,
+    -- FileGroupSettings * HLS_GROUP_SETTINGS, HlsGroupSettings *
+    -- DASH_ISO_GROUP_SETTINGS, DashIsoGroupSettings *
+    -- MS_SMOOTH_GROUP_SETTINGS, MsSmoothGroupSettings * CMAF_GROUP_SETTINGS,
+    -- CmafGroupSettings
+    outputGroups :: Prelude.Maybe [OutputGroup],
+    -- | These settings control how the service handles timecodes throughout the
+    -- job. These settings don\'t affect input clipping.
+    timecodeConfig :: Prelude.Maybe TimecodeConfig,
+    -- | Insert user-defined custom ID3 metadata (id3) at timecodes (timecode)
+    -- that you specify. In each output that you want to include this metadata,
+    -- you must set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH).
+    timedMetadataInsertion :: Prelude.Maybe TimedMetadataInsertion
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JobTemplateSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'adAvailOffset', 'jobTemplateSettings_adAvailOffset' - When specified, this offset (in milliseconds) is added to the input Ad
+-- Avail PTS time.
+--
+-- 'availBlanking', 'jobTemplateSettings_availBlanking' - Settings for ad avail blanking. Video can be blanked or overlaid with an
+-- image, and audio muted during SCTE-35 triggered ad avails.
+--
+-- 'esam', 'jobTemplateSettings_esam' - Settings for Event Signaling And Messaging (ESAM). If you don\'t do ad
+-- insertion, you can ignore these settings.
+--
+-- 'extendedDataServices', 'jobTemplateSettings_extendedDataServices' - If your source content has EIA-608 Line 21 Data Services, enable this
+-- feature to specify what MediaConvert does with the Extended Data
+-- Services (XDS) packets. You can choose to pass through XDS packets, or
+-- remove them from the output. For more information about XDS, see EIA-608
+-- Line Data Services, section 9.5.1.5 05h Content Advisory.
+--
+-- 'inputs', 'jobTemplateSettings_inputs' - Use Inputs (inputs) to define the source file used in the transcode job.
+-- There can only be one input in a job template. Using the API, you can
+-- include multiple inputs when referencing a job template.
+--
+-- 'kantarWatermark', 'jobTemplateSettings_kantarWatermark' - Use these settings only when you use Kantar watermarking. Specify the
+-- values that MediaConvert uses to generate and place Kantar watermarks in
+-- your output audio. These settings apply to every output in your job. In
+-- addition to specifying these values, you also need to store your Kantar
+-- credentials in AWS Secrets Manager. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/kantar-watermarking.html.
+--
+-- 'motionImageInserter', 'jobTemplateSettings_motionImageInserter' - Overlay motion graphics on top of your video. The motion graphics that
+-- you specify here appear on all outputs in all output groups. For more
+-- information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/motion-graphic-overlay.html.
+--
+-- 'nielsenConfiguration', 'jobTemplateSettings_nielsenConfiguration' - Settings for your Nielsen configuration. If you don\'t do Nielsen
+-- measurement and analytics, ignore these settings. When you enable
+-- Nielsen configuration (nielsenConfiguration), MediaConvert enables PCM
+-- to ID3 tagging for all outputs in the job. To enable Nielsen
+-- configuration programmatically, include an instance of
+-- nielsenConfiguration in your JSON job specification. Even if you don\'t
+-- include any children of nielsenConfiguration, you still enable the
+-- setting.
+--
+-- 'nielsenNonLinearWatermark', 'jobTemplateSettings_nielsenNonLinearWatermark' - Ignore these settings unless you are using Nielsen non-linear
+-- watermarking. Specify the values that MediaConvert uses to generate and
+-- place Nielsen watermarks in your output audio. In addition to specifying
+-- these values, you also need to set up your cloud TIC server. These
+-- settings apply to every output in your job. The MediaConvert
+-- implementation is currently with the following Nielsen versions: Nielsen
+-- Watermark SDK Version 5.2.1 Nielsen NLM Watermark Engine Version 1.2.7
+-- Nielsen Watermark Authenticator [SID_TIC] Version [5.0.0]
+--
+-- 'outputGroups', 'jobTemplateSettings_outputGroups' - (OutputGroups) contains one group of settings for each set of outputs
+-- that share a common package type. All unpackaged files (MPEG-4, MPEG-2
+-- TS, Quicktime, MXF, and no container) are grouped in a single output
+-- group as well. Required in (OutputGroups) is a group of settings that
+-- apply to the whole group. This required object depends on the value you
+-- set for (Type) under (OutputGroups)>(OutputGroupSettings). Type,
+-- settings object pairs are as follows. * FILE_GROUP_SETTINGS,
+-- FileGroupSettings * HLS_GROUP_SETTINGS, HlsGroupSettings *
+-- DASH_ISO_GROUP_SETTINGS, DashIsoGroupSettings *
+-- MS_SMOOTH_GROUP_SETTINGS, MsSmoothGroupSettings * CMAF_GROUP_SETTINGS,
+-- CmafGroupSettings
+--
+-- 'timecodeConfig', 'jobTemplateSettings_timecodeConfig' - These settings control how the service handles timecodes throughout the
+-- job. These settings don\'t affect input clipping.
+--
+-- 'timedMetadataInsertion', 'jobTemplateSettings_timedMetadataInsertion' - Insert user-defined custom ID3 metadata (id3) at timecodes (timecode)
+-- that you specify. In each output that you want to include this metadata,
+-- you must set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH).
+newJobTemplateSettings ::
+  JobTemplateSettings
+newJobTemplateSettings =
+  JobTemplateSettings'
+    { adAvailOffset =
+        Prelude.Nothing,
+      availBlanking = Prelude.Nothing,
+      esam = Prelude.Nothing,
+      extendedDataServices = Prelude.Nothing,
+      inputs = Prelude.Nothing,
+      kantarWatermark = Prelude.Nothing,
+      motionImageInserter = Prelude.Nothing,
+      nielsenConfiguration = Prelude.Nothing,
+      nielsenNonLinearWatermark = Prelude.Nothing,
+      outputGroups = Prelude.Nothing,
+      timecodeConfig = Prelude.Nothing,
+      timedMetadataInsertion = Prelude.Nothing
+    }
+
+-- | When specified, this offset (in milliseconds) is added to the input Ad
+-- Avail PTS time.
+jobTemplateSettings_adAvailOffset :: Lens.Lens' JobTemplateSettings (Prelude.Maybe Prelude.Int)
+jobTemplateSettings_adAvailOffset = Lens.lens (\JobTemplateSettings' {adAvailOffset} -> adAvailOffset) (\s@JobTemplateSettings' {} a -> s {adAvailOffset = a} :: JobTemplateSettings)
+
+-- | Settings for ad avail blanking. Video can be blanked or overlaid with an
+-- image, and audio muted during SCTE-35 triggered ad avails.
+jobTemplateSettings_availBlanking :: Lens.Lens' JobTemplateSettings (Prelude.Maybe AvailBlanking)
+jobTemplateSettings_availBlanking = Lens.lens (\JobTemplateSettings' {availBlanking} -> availBlanking) (\s@JobTemplateSettings' {} a -> s {availBlanking = a} :: JobTemplateSettings)
+
+-- | Settings for Event Signaling And Messaging (ESAM). If you don\'t do ad
+-- insertion, you can ignore these settings.
+jobTemplateSettings_esam :: Lens.Lens' JobTemplateSettings (Prelude.Maybe EsamSettings)
+jobTemplateSettings_esam = Lens.lens (\JobTemplateSettings' {esam} -> esam) (\s@JobTemplateSettings' {} a -> s {esam = a} :: JobTemplateSettings)
+
+-- | If your source content has EIA-608 Line 21 Data Services, enable this
+-- feature to specify what MediaConvert does with the Extended Data
+-- Services (XDS) packets. You can choose to pass through XDS packets, or
+-- remove them from the output. For more information about XDS, see EIA-608
+-- Line Data Services, section 9.5.1.5 05h Content Advisory.
+jobTemplateSettings_extendedDataServices :: Lens.Lens' JobTemplateSettings (Prelude.Maybe ExtendedDataServices)
+jobTemplateSettings_extendedDataServices = Lens.lens (\JobTemplateSettings' {extendedDataServices} -> extendedDataServices) (\s@JobTemplateSettings' {} a -> s {extendedDataServices = a} :: JobTemplateSettings)
+
+-- | Use Inputs (inputs) to define the source file used in the transcode job.
+-- There can only be one input in a job template. Using the API, you can
+-- include multiple inputs when referencing a job template.
+jobTemplateSettings_inputs :: Lens.Lens' JobTemplateSettings (Prelude.Maybe [InputTemplate])
+jobTemplateSettings_inputs = Lens.lens (\JobTemplateSettings' {inputs} -> inputs) (\s@JobTemplateSettings' {} a -> s {inputs = a} :: JobTemplateSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use these settings only when you use Kantar watermarking. Specify the
+-- values that MediaConvert uses to generate and place Kantar watermarks in
+-- your output audio. These settings apply to every output in your job. In
+-- addition to specifying these values, you also need to store your Kantar
+-- credentials in AWS Secrets Manager. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/kantar-watermarking.html.
+jobTemplateSettings_kantarWatermark :: Lens.Lens' JobTemplateSettings (Prelude.Maybe KantarWatermarkSettings)
+jobTemplateSettings_kantarWatermark = Lens.lens (\JobTemplateSettings' {kantarWatermark} -> kantarWatermark) (\s@JobTemplateSettings' {} a -> s {kantarWatermark = a} :: JobTemplateSettings)
+
+-- | Overlay motion graphics on top of your video. The motion graphics that
+-- you specify here appear on all outputs in all output groups. For more
+-- information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/motion-graphic-overlay.html.
+jobTemplateSettings_motionImageInserter :: Lens.Lens' JobTemplateSettings (Prelude.Maybe MotionImageInserter)
+jobTemplateSettings_motionImageInserter = Lens.lens (\JobTemplateSettings' {motionImageInserter} -> motionImageInserter) (\s@JobTemplateSettings' {} a -> s {motionImageInserter = a} :: JobTemplateSettings)
+
+-- | Settings for your Nielsen configuration. If you don\'t do Nielsen
+-- measurement and analytics, ignore these settings. When you enable
+-- Nielsen configuration (nielsenConfiguration), MediaConvert enables PCM
+-- to ID3 tagging for all outputs in the job. To enable Nielsen
+-- configuration programmatically, include an instance of
+-- nielsenConfiguration in your JSON job specification. Even if you don\'t
+-- include any children of nielsenConfiguration, you still enable the
+-- setting.
+jobTemplateSettings_nielsenConfiguration :: Lens.Lens' JobTemplateSettings (Prelude.Maybe NielsenConfiguration)
+jobTemplateSettings_nielsenConfiguration = Lens.lens (\JobTemplateSettings' {nielsenConfiguration} -> nielsenConfiguration) (\s@JobTemplateSettings' {} a -> s {nielsenConfiguration = a} :: JobTemplateSettings)
+
+-- | Ignore these settings unless you are using Nielsen non-linear
+-- watermarking. Specify the values that MediaConvert uses to generate and
+-- place Nielsen watermarks in your output audio. In addition to specifying
+-- these values, you also need to set up your cloud TIC server. These
+-- settings apply to every output in your job. The MediaConvert
+-- implementation is currently with the following Nielsen versions: Nielsen
+-- Watermark SDK Version 5.2.1 Nielsen NLM Watermark Engine Version 1.2.7
+-- Nielsen Watermark Authenticator [SID_TIC] Version [5.0.0]
+jobTemplateSettings_nielsenNonLinearWatermark :: Lens.Lens' JobTemplateSettings (Prelude.Maybe NielsenNonLinearWatermarkSettings)
+jobTemplateSettings_nielsenNonLinearWatermark = Lens.lens (\JobTemplateSettings' {nielsenNonLinearWatermark} -> nielsenNonLinearWatermark) (\s@JobTemplateSettings' {} a -> s {nielsenNonLinearWatermark = a} :: JobTemplateSettings)
+
+-- | (OutputGroups) contains one group of settings for each set of outputs
+-- that share a common package type. All unpackaged files (MPEG-4, MPEG-2
+-- TS, Quicktime, MXF, and no container) are grouped in a single output
+-- group as well. Required in (OutputGroups) is a group of settings that
+-- apply to the whole group. This required object depends on the value you
+-- set for (Type) under (OutputGroups)>(OutputGroupSettings). Type,
+-- settings object pairs are as follows. * FILE_GROUP_SETTINGS,
+-- FileGroupSettings * HLS_GROUP_SETTINGS, HlsGroupSettings *
+-- DASH_ISO_GROUP_SETTINGS, DashIsoGroupSettings *
+-- MS_SMOOTH_GROUP_SETTINGS, MsSmoothGroupSettings * CMAF_GROUP_SETTINGS,
+-- CmafGroupSettings
+jobTemplateSettings_outputGroups :: Lens.Lens' JobTemplateSettings (Prelude.Maybe [OutputGroup])
+jobTemplateSettings_outputGroups = Lens.lens (\JobTemplateSettings' {outputGroups} -> outputGroups) (\s@JobTemplateSettings' {} a -> s {outputGroups = a} :: JobTemplateSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | These settings control how the service handles timecodes throughout the
+-- job. These settings don\'t affect input clipping.
+jobTemplateSettings_timecodeConfig :: Lens.Lens' JobTemplateSettings (Prelude.Maybe TimecodeConfig)
+jobTemplateSettings_timecodeConfig = Lens.lens (\JobTemplateSettings' {timecodeConfig} -> timecodeConfig) (\s@JobTemplateSettings' {} a -> s {timecodeConfig = a} :: JobTemplateSettings)
+
+-- | Insert user-defined custom ID3 metadata (id3) at timecodes (timecode)
+-- that you specify. In each output that you want to include this metadata,
+-- you must set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH).
+jobTemplateSettings_timedMetadataInsertion :: Lens.Lens' JobTemplateSettings (Prelude.Maybe TimedMetadataInsertion)
+jobTemplateSettings_timedMetadataInsertion = Lens.lens (\JobTemplateSettings' {timedMetadataInsertion} -> timedMetadataInsertion) (\s@JobTemplateSettings' {} a -> s {timedMetadataInsertion = a} :: JobTemplateSettings)
+
+instance Data.FromJSON JobTemplateSettings where
+  parseJSON =
+    Data.withObject
+      "JobTemplateSettings"
+      ( \x ->
+          JobTemplateSettings'
+            Prelude.<$> (x Data..:? "adAvailOffset")
+            Prelude.<*> (x Data..:? "availBlanking")
+            Prelude.<*> (x Data..:? "esam")
+            Prelude.<*> (x Data..:? "extendedDataServices")
+            Prelude.<*> (x Data..:? "inputs" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "kantarWatermark")
+            Prelude.<*> (x Data..:? "motionImageInserter")
+            Prelude.<*> (x Data..:? "nielsenConfiguration")
+            Prelude.<*> (x Data..:? "nielsenNonLinearWatermark")
+            Prelude.<*> (x Data..:? "outputGroups" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "timecodeConfig")
+            Prelude.<*> (x Data..:? "timedMetadataInsertion")
+      )
+
+instance Prelude.Hashable JobTemplateSettings where
+  hashWithSalt _salt JobTemplateSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` adAvailOffset
+      `Prelude.hashWithSalt` availBlanking
+      `Prelude.hashWithSalt` esam
+      `Prelude.hashWithSalt` extendedDataServices
+      `Prelude.hashWithSalt` inputs
+      `Prelude.hashWithSalt` kantarWatermark
+      `Prelude.hashWithSalt` motionImageInserter
+      `Prelude.hashWithSalt` nielsenConfiguration
+      `Prelude.hashWithSalt` nielsenNonLinearWatermark
+      `Prelude.hashWithSalt` outputGroups
+      `Prelude.hashWithSalt` timecodeConfig
+      `Prelude.hashWithSalt` timedMetadataInsertion
+
+instance Prelude.NFData JobTemplateSettings where
+  rnf JobTemplateSettings' {..} =
+    Prelude.rnf adAvailOffset
+      `Prelude.seq` Prelude.rnf availBlanking
+      `Prelude.seq` Prelude.rnf esam
+      `Prelude.seq` Prelude.rnf extendedDataServices
+      `Prelude.seq` Prelude.rnf inputs
+      `Prelude.seq` Prelude.rnf kantarWatermark
+      `Prelude.seq` Prelude.rnf motionImageInserter
+      `Prelude.seq` Prelude.rnf nielsenConfiguration
+      `Prelude.seq` Prelude.rnf nielsenNonLinearWatermark
+      `Prelude.seq` Prelude.rnf outputGroups
+      `Prelude.seq` Prelude.rnf timecodeConfig
+      `Prelude.seq` Prelude.rnf timedMetadataInsertion
+
+instance Data.ToJSON JobTemplateSettings where
+  toJSON JobTemplateSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("adAvailOffset" Data..=) Prelude.<$> adAvailOffset,
+            ("availBlanking" Data..=) Prelude.<$> availBlanking,
+            ("esam" Data..=) Prelude.<$> esam,
+            ("extendedDataServices" Data..=)
+              Prelude.<$> extendedDataServices,
+            ("inputs" Data..=) Prelude.<$> inputs,
+            ("kantarWatermark" Data..=)
+              Prelude.<$> kantarWatermark,
+            ("motionImageInserter" Data..=)
+              Prelude.<$> motionImageInserter,
+            ("nielsenConfiguration" Data..=)
+              Prelude.<$> nielsenConfiguration,
+            ("nielsenNonLinearWatermark" Data..=)
+              Prelude.<$> nielsenNonLinearWatermark,
+            ("outputGroups" Data..=) Prelude.<$> outputGroups,
+            ("timecodeConfig" Data..=)
+              Prelude.<$> timecodeConfig,
+            ("timedMetadataInsertion" Data..=)
+              Prelude.<$> timedMetadataInsertion
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/KantarWatermarkSettings.hs b/gen/Amazonka/MediaConvert/Types/KantarWatermarkSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/KantarWatermarkSettings.hs
@@ -0,0 +1,322 @@
+{-# 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.KantarWatermarkSettings
+-- 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.KantarWatermarkSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use these settings only when you use Kantar watermarking. Specify the
+-- values that MediaConvert uses to generate and place Kantar watermarks in
+-- your output audio. These settings apply to every output in your job. In
+-- addition to specifying these values, you also need to store your Kantar
+-- credentials in AWS Secrets Manager. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/kantar-watermarking.html.
+--
+-- /See:/ 'newKantarWatermarkSettings' smart constructor.
+data KantarWatermarkSettings = KantarWatermarkSettings'
+  { -- | Provide an audio channel name from your Kantar audio license.
+    channelName :: Prelude.Maybe Prelude.Text,
+    -- | Specify a unique identifier for Kantar to use for this piece of content.
+    contentReference :: Prelude.Maybe Prelude.Text,
+    -- | Provide the name of the AWS Secrets Manager secret where your Kantar
+    -- credentials are stored. Note that your MediaConvert service role must
+    -- provide access to this secret. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/granting-permissions-for-mediaconvert-to-access-secrets-manager-secret.html.
+    -- For instructions on creating a secret, see
+    -- https:\/\/docs.aws.amazon.com\/secretsmanager\/latest\/userguide\/tutorials_basic.html,
+    -- in the AWS Secrets Manager User Guide.
+    credentialsSecretName :: Prelude.Maybe Prelude.Text,
+    -- | Optional. Specify an offset, in whole seconds, from the start of your
+    -- output and the beginning of the watermarking. When you don\'t specify an
+    -- offset, Kantar defaults to zero.
+    fileOffset :: Prelude.Maybe Prelude.Double,
+    -- | Provide your Kantar license ID number. You should get this number from
+    -- Kantar.
+    kantarLicenseId :: Prelude.Maybe Prelude.Natural,
+    -- | Provide the HTTPS endpoint to the Kantar server. You should get this
+    -- endpoint from Kantar.
+    kantarServerUrl :: Prelude.Maybe Prelude.Text,
+    -- | Optional. Specify the Amazon S3 bucket where you want MediaConvert to
+    -- store your Kantar watermark XML logs. When you don\'t specify a bucket,
+    -- MediaConvert doesn\'t save these logs. Note that your MediaConvert
+    -- service role must provide access to this location. For more information,
+    -- see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html
+    logDestination :: Prelude.Maybe Prelude.Text,
+    -- | You can optionally use this field to specify the first timestamp that
+    -- Kantar embeds during watermarking. Kantar suggests that you be very
+    -- cautious when using this Kantar feature, and that you use it only on
+    -- channels that are managed specifically for use with this feature by your
+    -- Audience Measurement Operator. For more information about this feature,
+    -- contact Kantar technical support.
+    metadata3 :: Prelude.Maybe Prelude.Text,
+    -- | Additional metadata that MediaConvert sends to Kantar. Maximum length is
+    -- 50 characters.
+    metadata4 :: Prelude.Maybe Prelude.Text,
+    -- | Additional metadata that MediaConvert sends to Kantar. Maximum length is
+    -- 50 characters.
+    metadata5 :: Prelude.Maybe Prelude.Text,
+    -- | Additional metadata that MediaConvert sends to Kantar. Maximum length is
+    -- 50 characters.
+    metadata6 :: Prelude.Maybe Prelude.Text,
+    -- | Additional metadata that MediaConvert sends to Kantar. Maximum length is
+    -- 50 characters.
+    metadata7 :: Prelude.Maybe Prelude.Text,
+    -- | Additional metadata that MediaConvert sends to Kantar. Maximum length is
+    -- 50 characters.
+    metadata8 :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KantarWatermarkSettings' 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:
+--
+-- 'channelName', 'kantarWatermarkSettings_channelName' - Provide an audio channel name from your Kantar audio license.
+--
+-- 'contentReference', 'kantarWatermarkSettings_contentReference' - Specify a unique identifier for Kantar to use for this piece of content.
+--
+-- 'credentialsSecretName', 'kantarWatermarkSettings_credentialsSecretName' - Provide the name of the AWS Secrets Manager secret where your Kantar
+-- credentials are stored. Note that your MediaConvert service role must
+-- provide access to this secret. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/granting-permissions-for-mediaconvert-to-access-secrets-manager-secret.html.
+-- For instructions on creating a secret, see
+-- https:\/\/docs.aws.amazon.com\/secretsmanager\/latest\/userguide\/tutorials_basic.html,
+-- in the AWS Secrets Manager User Guide.
+--
+-- 'fileOffset', 'kantarWatermarkSettings_fileOffset' - Optional. Specify an offset, in whole seconds, from the start of your
+-- output and the beginning of the watermarking. When you don\'t specify an
+-- offset, Kantar defaults to zero.
+--
+-- 'kantarLicenseId', 'kantarWatermarkSettings_kantarLicenseId' - Provide your Kantar license ID number. You should get this number from
+-- Kantar.
+--
+-- 'kantarServerUrl', 'kantarWatermarkSettings_kantarServerUrl' - Provide the HTTPS endpoint to the Kantar server. You should get this
+-- endpoint from Kantar.
+--
+-- 'logDestination', 'kantarWatermarkSettings_logDestination' - Optional. Specify the Amazon S3 bucket where you want MediaConvert to
+-- store your Kantar watermark XML logs. When you don\'t specify a bucket,
+-- MediaConvert doesn\'t save these logs. Note that your MediaConvert
+-- service role must provide access to this location. For more information,
+-- see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html
+--
+-- 'metadata3', 'kantarWatermarkSettings_metadata3' - You can optionally use this field to specify the first timestamp that
+-- Kantar embeds during watermarking. Kantar suggests that you be very
+-- cautious when using this Kantar feature, and that you use it only on
+-- channels that are managed specifically for use with this feature by your
+-- Audience Measurement Operator. For more information about this feature,
+-- contact Kantar technical support.
+--
+-- 'metadata4', 'kantarWatermarkSettings_metadata4' - Additional metadata that MediaConvert sends to Kantar. Maximum length is
+-- 50 characters.
+--
+-- 'metadata5', 'kantarWatermarkSettings_metadata5' - Additional metadata that MediaConvert sends to Kantar. Maximum length is
+-- 50 characters.
+--
+-- 'metadata6', 'kantarWatermarkSettings_metadata6' - Additional metadata that MediaConvert sends to Kantar. Maximum length is
+-- 50 characters.
+--
+-- 'metadata7', 'kantarWatermarkSettings_metadata7' - Additional metadata that MediaConvert sends to Kantar. Maximum length is
+-- 50 characters.
+--
+-- 'metadata8', 'kantarWatermarkSettings_metadata8' - Additional metadata that MediaConvert sends to Kantar. Maximum length is
+-- 50 characters.
+newKantarWatermarkSettings ::
+  KantarWatermarkSettings
+newKantarWatermarkSettings =
+  KantarWatermarkSettings'
+    { channelName =
+        Prelude.Nothing,
+      contentReference = Prelude.Nothing,
+      credentialsSecretName = Prelude.Nothing,
+      fileOffset = Prelude.Nothing,
+      kantarLicenseId = Prelude.Nothing,
+      kantarServerUrl = Prelude.Nothing,
+      logDestination = Prelude.Nothing,
+      metadata3 = Prelude.Nothing,
+      metadata4 = Prelude.Nothing,
+      metadata5 = Prelude.Nothing,
+      metadata6 = Prelude.Nothing,
+      metadata7 = Prelude.Nothing,
+      metadata8 = Prelude.Nothing
+    }
+
+-- | Provide an audio channel name from your Kantar audio license.
+kantarWatermarkSettings_channelName :: Lens.Lens' KantarWatermarkSettings (Prelude.Maybe Prelude.Text)
+kantarWatermarkSettings_channelName = Lens.lens (\KantarWatermarkSettings' {channelName} -> channelName) (\s@KantarWatermarkSettings' {} a -> s {channelName = a} :: KantarWatermarkSettings)
+
+-- | Specify a unique identifier for Kantar to use for this piece of content.
+kantarWatermarkSettings_contentReference :: Lens.Lens' KantarWatermarkSettings (Prelude.Maybe Prelude.Text)
+kantarWatermarkSettings_contentReference = Lens.lens (\KantarWatermarkSettings' {contentReference} -> contentReference) (\s@KantarWatermarkSettings' {} a -> s {contentReference = a} :: KantarWatermarkSettings)
+
+-- | Provide the name of the AWS Secrets Manager secret where your Kantar
+-- credentials are stored. Note that your MediaConvert service role must
+-- provide access to this secret. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/granting-permissions-for-mediaconvert-to-access-secrets-manager-secret.html.
+-- For instructions on creating a secret, see
+-- https:\/\/docs.aws.amazon.com\/secretsmanager\/latest\/userguide\/tutorials_basic.html,
+-- in the AWS Secrets Manager User Guide.
+kantarWatermarkSettings_credentialsSecretName :: Lens.Lens' KantarWatermarkSettings (Prelude.Maybe Prelude.Text)
+kantarWatermarkSettings_credentialsSecretName = Lens.lens (\KantarWatermarkSettings' {credentialsSecretName} -> credentialsSecretName) (\s@KantarWatermarkSettings' {} a -> s {credentialsSecretName = a} :: KantarWatermarkSettings)
+
+-- | Optional. Specify an offset, in whole seconds, from the start of your
+-- output and the beginning of the watermarking. When you don\'t specify an
+-- offset, Kantar defaults to zero.
+kantarWatermarkSettings_fileOffset :: Lens.Lens' KantarWatermarkSettings (Prelude.Maybe Prelude.Double)
+kantarWatermarkSettings_fileOffset = Lens.lens (\KantarWatermarkSettings' {fileOffset} -> fileOffset) (\s@KantarWatermarkSettings' {} a -> s {fileOffset = a} :: KantarWatermarkSettings)
+
+-- | Provide your Kantar license ID number. You should get this number from
+-- Kantar.
+kantarWatermarkSettings_kantarLicenseId :: Lens.Lens' KantarWatermarkSettings (Prelude.Maybe Prelude.Natural)
+kantarWatermarkSettings_kantarLicenseId = Lens.lens (\KantarWatermarkSettings' {kantarLicenseId} -> kantarLicenseId) (\s@KantarWatermarkSettings' {} a -> s {kantarLicenseId = a} :: KantarWatermarkSettings)
+
+-- | Provide the HTTPS endpoint to the Kantar server. You should get this
+-- endpoint from Kantar.
+kantarWatermarkSettings_kantarServerUrl :: Lens.Lens' KantarWatermarkSettings (Prelude.Maybe Prelude.Text)
+kantarWatermarkSettings_kantarServerUrl = Lens.lens (\KantarWatermarkSettings' {kantarServerUrl} -> kantarServerUrl) (\s@KantarWatermarkSettings' {} a -> s {kantarServerUrl = a} :: KantarWatermarkSettings)
+
+-- | Optional. Specify the Amazon S3 bucket where you want MediaConvert to
+-- store your Kantar watermark XML logs. When you don\'t specify a bucket,
+-- MediaConvert doesn\'t save these logs. Note that your MediaConvert
+-- service role must provide access to this location. For more information,
+-- see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/iam-role.html
+kantarWatermarkSettings_logDestination :: Lens.Lens' KantarWatermarkSettings (Prelude.Maybe Prelude.Text)
+kantarWatermarkSettings_logDestination = Lens.lens (\KantarWatermarkSettings' {logDestination} -> logDestination) (\s@KantarWatermarkSettings' {} a -> s {logDestination = a} :: KantarWatermarkSettings)
+
+-- | You can optionally use this field to specify the first timestamp that
+-- Kantar embeds during watermarking. Kantar suggests that you be very
+-- cautious when using this Kantar feature, and that you use it only on
+-- channels that are managed specifically for use with this feature by your
+-- Audience Measurement Operator. For more information about this feature,
+-- contact Kantar technical support.
+kantarWatermarkSettings_metadata3 :: Lens.Lens' KantarWatermarkSettings (Prelude.Maybe Prelude.Text)
+kantarWatermarkSettings_metadata3 = Lens.lens (\KantarWatermarkSettings' {metadata3} -> metadata3) (\s@KantarWatermarkSettings' {} a -> s {metadata3 = a} :: KantarWatermarkSettings)
+
+-- | Additional metadata that MediaConvert sends to Kantar. Maximum length is
+-- 50 characters.
+kantarWatermarkSettings_metadata4 :: Lens.Lens' KantarWatermarkSettings (Prelude.Maybe Prelude.Text)
+kantarWatermarkSettings_metadata4 = Lens.lens (\KantarWatermarkSettings' {metadata4} -> metadata4) (\s@KantarWatermarkSettings' {} a -> s {metadata4 = a} :: KantarWatermarkSettings)
+
+-- | Additional metadata that MediaConvert sends to Kantar. Maximum length is
+-- 50 characters.
+kantarWatermarkSettings_metadata5 :: Lens.Lens' KantarWatermarkSettings (Prelude.Maybe Prelude.Text)
+kantarWatermarkSettings_metadata5 = Lens.lens (\KantarWatermarkSettings' {metadata5} -> metadata5) (\s@KantarWatermarkSettings' {} a -> s {metadata5 = a} :: KantarWatermarkSettings)
+
+-- | Additional metadata that MediaConvert sends to Kantar. Maximum length is
+-- 50 characters.
+kantarWatermarkSettings_metadata6 :: Lens.Lens' KantarWatermarkSettings (Prelude.Maybe Prelude.Text)
+kantarWatermarkSettings_metadata6 = Lens.lens (\KantarWatermarkSettings' {metadata6} -> metadata6) (\s@KantarWatermarkSettings' {} a -> s {metadata6 = a} :: KantarWatermarkSettings)
+
+-- | Additional metadata that MediaConvert sends to Kantar. Maximum length is
+-- 50 characters.
+kantarWatermarkSettings_metadata7 :: Lens.Lens' KantarWatermarkSettings (Prelude.Maybe Prelude.Text)
+kantarWatermarkSettings_metadata7 = Lens.lens (\KantarWatermarkSettings' {metadata7} -> metadata7) (\s@KantarWatermarkSettings' {} a -> s {metadata7 = a} :: KantarWatermarkSettings)
+
+-- | Additional metadata that MediaConvert sends to Kantar. Maximum length is
+-- 50 characters.
+kantarWatermarkSettings_metadata8 :: Lens.Lens' KantarWatermarkSettings (Prelude.Maybe Prelude.Text)
+kantarWatermarkSettings_metadata8 = Lens.lens (\KantarWatermarkSettings' {metadata8} -> metadata8) (\s@KantarWatermarkSettings' {} a -> s {metadata8 = a} :: KantarWatermarkSettings)
+
+instance Data.FromJSON KantarWatermarkSettings where
+  parseJSON =
+    Data.withObject
+      "KantarWatermarkSettings"
+      ( \x ->
+          KantarWatermarkSettings'
+            Prelude.<$> (x Data..:? "channelName")
+            Prelude.<*> (x Data..:? "contentReference")
+            Prelude.<*> (x Data..:? "credentialsSecretName")
+            Prelude.<*> (x Data..:? "fileOffset")
+            Prelude.<*> (x Data..:? "kantarLicenseId")
+            Prelude.<*> (x Data..:? "kantarServerUrl")
+            Prelude.<*> (x Data..:? "logDestination")
+            Prelude.<*> (x Data..:? "metadata3")
+            Prelude.<*> (x Data..:? "metadata4")
+            Prelude.<*> (x Data..:? "metadata5")
+            Prelude.<*> (x Data..:? "metadata6")
+            Prelude.<*> (x Data..:? "metadata7")
+            Prelude.<*> (x Data..:? "metadata8")
+      )
+
+instance Prelude.Hashable KantarWatermarkSettings where
+  hashWithSalt _salt KantarWatermarkSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` channelName
+      `Prelude.hashWithSalt` contentReference
+      `Prelude.hashWithSalt` credentialsSecretName
+      `Prelude.hashWithSalt` fileOffset
+      `Prelude.hashWithSalt` kantarLicenseId
+      `Prelude.hashWithSalt` kantarServerUrl
+      `Prelude.hashWithSalt` logDestination
+      `Prelude.hashWithSalt` metadata3
+      `Prelude.hashWithSalt` metadata4
+      `Prelude.hashWithSalt` metadata5
+      `Prelude.hashWithSalt` metadata6
+      `Prelude.hashWithSalt` metadata7
+      `Prelude.hashWithSalt` metadata8
+
+instance Prelude.NFData KantarWatermarkSettings where
+  rnf KantarWatermarkSettings' {..} =
+    Prelude.rnf channelName
+      `Prelude.seq` Prelude.rnf contentReference
+      `Prelude.seq` Prelude.rnf credentialsSecretName
+      `Prelude.seq` Prelude.rnf fileOffset
+      `Prelude.seq` Prelude.rnf kantarLicenseId
+      `Prelude.seq` Prelude.rnf kantarServerUrl
+      `Prelude.seq` Prelude.rnf logDestination
+      `Prelude.seq` Prelude.rnf metadata3
+      `Prelude.seq` Prelude.rnf metadata4
+      `Prelude.seq` Prelude.rnf metadata5
+      `Prelude.seq` Prelude.rnf metadata6
+      `Prelude.seq` Prelude.rnf metadata7
+      `Prelude.seq` Prelude.rnf metadata8
+
+instance Data.ToJSON KantarWatermarkSettings where
+  toJSON KantarWatermarkSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("channelName" Data..=) Prelude.<$> channelName,
+            ("contentReference" Data..=)
+              Prelude.<$> contentReference,
+            ("credentialsSecretName" Data..=)
+              Prelude.<$> credentialsSecretName,
+            ("fileOffset" Data..=) Prelude.<$> fileOffset,
+            ("kantarLicenseId" Data..=)
+              Prelude.<$> kantarLicenseId,
+            ("kantarServerUrl" Data..=)
+              Prelude.<$> kantarServerUrl,
+            ("logDestination" Data..=)
+              Prelude.<$> logDestination,
+            ("metadata3" Data..=) Prelude.<$> metadata3,
+            ("metadata4" Data..=) Prelude.<$> metadata4,
+            ("metadata5" Data..=) Prelude.<$> metadata5,
+            ("metadata6" Data..=) Prelude.<$> metadata6,
+            ("metadata7" Data..=) Prelude.<$> metadata7,
+            ("metadata8" Data..=) Prelude.<$> metadata8
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/LanguageCode.hs b/gen/Amazonka/MediaConvert/Types/LanguageCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/LanguageCode.hs
@@ -0,0 +1,1023 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.LanguageCode
+-- 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.LanguageCode
+  ( LanguageCode
+      ( ..,
+        LanguageCode_AAR,
+        LanguageCode_ABK,
+        LanguageCode_AFR,
+        LanguageCode_AKA,
+        LanguageCode_AMH,
+        LanguageCode_ARA,
+        LanguageCode_ARG,
+        LanguageCode_ASM,
+        LanguageCode_AVA,
+        LanguageCode_AVE,
+        LanguageCode_AYM,
+        LanguageCode_AZE,
+        LanguageCode_BAK,
+        LanguageCode_BAM,
+        LanguageCode_BEL,
+        LanguageCode_BEN,
+        LanguageCode_BIH,
+        LanguageCode_BIS,
+        LanguageCode_BOD,
+        LanguageCode_BOS,
+        LanguageCode_BRE,
+        LanguageCode_BUL,
+        LanguageCode_CAT,
+        LanguageCode_CES,
+        LanguageCode_CHA,
+        LanguageCode_CHE,
+        LanguageCode_CHU,
+        LanguageCode_CHV,
+        LanguageCode_COR,
+        LanguageCode_COS,
+        LanguageCode_CRE,
+        LanguageCode_CYM,
+        LanguageCode_DAN,
+        LanguageCode_DEU,
+        LanguageCode_DIV,
+        LanguageCode_DZO,
+        LanguageCode_ELL,
+        LanguageCode_ENG,
+        LanguageCode_ENM,
+        LanguageCode_EPO,
+        LanguageCode_EST,
+        LanguageCode_EUS,
+        LanguageCode_EWE,
+        LanguageCode_FAO,
+        LanguageCode_FAS,
+        LanguageCode_FIJ,
+        LanguageCode_FIN,
+        LanguageCode_FRA,
+        LanguageCode_FRM,
+        LanguageCode_FRY,
+        LanguageCode_FUL,
+        LanguageCode_GER,
+        LanguageCode_GLA,
+        LanguageCode_GLE,
+        LanguageCode_GLG,
+        LanguageCode_GLV,
+        LanguageCode_GRN,
+        LanguageCode_GUJ,
+        LanguageCode_HAT,
+        LanguageCode_HAU,
+        LanguageCode_HEB,
+        LanguageCode_HER,
+        LanguageCode_HIN,
+        LanguageCode_HMO,
+        LanguageCode_HRV,
+        LanguageCode_HUN,
+        LanguageCode_HYE,
+        LanguageCode_IBO,
+        LanguageCode_IDO,
+        LanguageCode_III,
+        LanguageCode_IKU,
+        LanguageCode_ILE,
+        LanguageCode_INA,
+        LanguageCode_IND,
+        LanguageCode_IPK,
+        LanguageCode_ISL,
+        LanguageCode_ITA,
+        LanguageCode_JAV,
+        LanguageCode_JPN,
+        LanguageCode_KAL,
+        LanguageCode_KAN,
+        LanguageCode_KAS,
+        LanguageCode_KAT,
+        LanguageCode_KAU,
+        LanguageCode_KAZ,
+        LanguageCode_KHM,
+        LanguageCode_KIK,
+        LanguageCode_KIN,
+        LanguageCode_KIR,
+        LanguageCode_KOM,
+        LanguageCode_KON,
+        LanguageCode_KOR,
+        LanguageCode_KUA,
+        LanguageCode_KUR,
+        LanguageCode_LAO,
+        LanguageCode_LAT,
+        LanguageCode_LAV,
+        LanguageCode_LIM,
+        LanguageCode_LIN,
+        LanguageCode_LIT,
+        LanguageCode_LTZ,
+        LanguageCode_LUB,
+        LanguageCode_LUG,
+        LanguageCode_MAH,
+        LanguageCode_MAL,
+        LanguageCode_MAR,
+        LanguageCode_MKD,
+        LanguageCode_MLG,
+        LanguageCode_MLT,
+        LanguageCode_MON,
+        LanguageCode_MRI,
+        LanguageCode_MSA,
+        LanguageCode_MYA,
+        LanguageCode_NAU,
+        LanguageCode_NAV,
+        LanguageCode_NBL,
+        LanguageCode_NDE,
+        LanguageCode_NDO,
+        LanguageCode_NEP,
+        LanguageCode_NLD,
+        LanguageCode_NNO,
+        LanguageCode_NOB,
+        LanguageCode_NOR,
+        LanguageCode_NYA,
+        LanguageCode_OCI,
+        LanguageCode_OJI,
+        LanguageCode_ORI,
+        LanguageCode_ORJ,
+        LanguageCode_ORM,
+        LanguageCode_OSS,
+        LanguageCode_PAN,
+        LanguageCode_PLI,
+        LanguageCode_POL,
+        LanguageCode_POR,
+        LanguageCode_PUS,
+        LanguageCode_QAA,
+        LanguageCode_QPC,
+        LanguageCode_QUE,
+        LanguageCode_ROH,
+        LanguageCode_RON,
+        LanguageCode_RUN,
+        LanguageCode_RUS,
+        LanguageCode_SAG,
+        LanguageCode_SAN,
+        LanguageCode_SIN,
+        LanguageCode_SLK,
+        LanguageCode_SLV,
+        LanguageCode_SME,
+        LanguageCode_SMO,
+        LanguageCode_SNA,
+        LanguageCode_SND,
+        LanguageCode_SOM,
+        LanguageCode_SOT,
+        LanguageCode_SPA,
+        LanguageCode_SQI,
+        LanguageCode_SRB,
+        LanguageCode_SRD,
+        LanguageCode_SRP,
+        LanguageCode_SSW,
+        LanguageCode_SUN,
+        LanguageCode_SWA,
+        LanguageCode_SWE,
+        LanguageCode_TAH,
+        LanguageCode_TAM,
+        LanguageCode_TAT,
+        LanguageCode_TEL,
+        LanguageCode_TGK,
+        LanguageCode_TGL,
+        LanguageCode_THA,
+        LanguageCode_TIR,
+        LanguageCode_TNG,
+        LanguageCode_TON,
+        LanguageCode_TSN,
+        LanguageCode_TSO,
+        LanguageCode_TUK,
+        LanguageCode_TUR,
+        LanguageCode_TWI,
+        LanguageCode_UIG,
+        LanguageCode_UKR,
+        LanguageCode_URD,
+        LanguageCode_UZB,
+        LanguageCode_VEN,
+        LanguageCode_VIE,
+        LanguageCode_VOL,
+        LanguageCode_WLN,
+        LanguageCode_WOL,
+        LanguageCode_XHO,
+        LanguageCode_YID,
+        LanguageCode_YOR,
+        LanguageCode_ZHA,
+        LanguageCode_ZHO,
+        LanguageCode_ZUL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the language, using the ISO 639-2 three-letter code listed at
+-- https:\/\/www.loc.gov\/standards\/iso639-2\/php\/code_list.php.
+newtype LanguageCode = LanguageCode'
+  { fromLanguageCode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern LanguageCode_AAR :: LanguageCode
+pattern LanguageCode_AAR = LanguageCode' "AAR"
+
+pattern LanguageCode_ABK :: LanguageCode
+pattern LanguageCode_ABK = LanguageCode' "ABK"
+
+pattern LanguageCode_AFR :: LanguageCode
+pattern LanguageCode_AFR = LanguageCode' "AFR"
+
+pattern LanguageCode_AKA :: LanguageCode
+pattern LanguageCode_AKA = LanguageCode' "AKA"
+
+pattern LanguageCode_AMH :: LanguageCode
+pattern LanguageCode_AMH = LanguageCode' "AMH"
+
+pattern LanguageCode_ARA :: LanguageCode
+pattern LanguageCode_ARA = LanguageCode' "ARA"
+
+pattern LanguageCode_ARG :: LanguageCode
+pattern LanguageCode_ARG = LanguageCode' "ARG"
+
+pattern LanguageCode_ASM :: LanguageCode
+pattern LanguageCode_ASM = LanguageCode' "ASM"
+
+pattern LanguageCode_AVA :: LanguageCode
+pattern LanguageCode_AVA = LanguageCode' "AVA"
+
+pattern LanguageCode_AVE :: LanguageCode
+pattern LanguageCode_AVE = LanguageCode' "AVE"
+
+pattern LanguageCode_AYM :: LanguageCode
+pattern LanguageCode_AYM = LanguageCode' "AYM"
+
+pattern LanguageCode_AZE :: LanguageCode
+pattern LanguageCode_AZE = LanguageCode' "AZE"
+
+pattern LanguageCode_BAK :: LanguageCode
+pattern LanguageCode_BAK = LanguageCode' "BAK"
+
+pattern LanguageCode_BAM :: LanguageCode
+pattern LanguageCode_BAM = LanguageCode' "BAM"
+
+pattern LanguageCode_BEL :: LanguageCode
+pattern LanguageCode_BEL = LanguageCode' "BEL"
+
+pattern LanguageCode_BEN :: LanguageCode
+pattern LanguageCode_BEN = LanguageCode' "BEN"
+
+pattern LanguageCode_BIH :: LanguageCode
+pattern LanguageCode_BIH = LanguageCode' "BIH"
+
+pattern LanguageCode_BIS :: LanguageCode
+pattern LanguageCode_BIS = LanguageCode' "BIS"
+
+pattern LanguageCode_BOD :: LanguageCode
+pattern LanguageCode_BOD = LanguageCode' "BOD"
+
+pattern LanguageCode_BOS :: LanguageCode
+pattern LanguageCode_BOS = LanguageCode' "BOS"
+
+pattern LanguageCode_BRE :: LanguageCode
+pattern LanguageCode_BRE = LanguageCode' "BRE"
+
+pattern LanguageCode_BUL :: LanguageCode
+pattern LanguageCode_BUL = LanguageCode' "BUL"
+
+pattern LanguageCode_CAT :: LanguageCode
+pattern LanguageCode_CAT = LanguageCode' "CAT"
+
+pattern LanguageCode_CES :: LanguageCode
+pattern LanguageCode_CES = LanguageCode' "CES"
+
+pattern LanguageCode_CHA :: LanguageCode
+pattern LanguageCode_CHA = LanguageCode' "CHA"
+
+pattern LanguageCode_CHE :: LanguageCode
+pattern LanguageCode_CHE = LanguageCode' "CHE"
+
+pattern LanguageCode_CHU :: LanguageCode
+pattern LanguageCode_CHU = LanguageCode' "CHU"
+
+pattern LanguageCode_CHV :: LanguageCode
+pattern LanguageCode_CHV = LanguageCode' "CHV"
+
+pattern LanguageCode_COR :: LanguageCode
+pattern LanguageCode_COR = LanguageCode' "COR"
+
+pattern LanguageCode_COS :: LanguageCode
+pattern LanguageCode_COS = LanguageCode' "COS"
+
+pattern LanguageCode_CRE :: LanguageCode
+pattern LanguageCode_CRE = LanguageCode' "CRE"
+
+pattern LanguageCode_CYM :: LanguageCode
+pattern LanguageCode_CYM = LanguageCode' "CYM"
+
+pattern LanguageCode_DAN :: LanguageCode
+pattern LanguageCode_DAN = LanguageCode' "DAN"
+
+pattern LanguageCode_DEU :: LanguageCode
+pattern LanguageCode_DEU = LanguageCode' "DEU"
+
+pattern LanguageCode_DIV :: LanguageCode
+pattern LanguageCode_DIV = LanguageCode' "DIV"
+
+pattern LanguageCode_DZO :: LanguageCode
+pattern LanguageCode_DZO = LanguageCode' "DZO"
+
+pattern LanguageCode_ELL :: LanguageCode
+pattern LanguageCode_ELL = LanguageCode' "ELL"
+
+pattern LanguageCode_ENG :: LanguageCode
+pattern LanguageCode_ENG = LanguageCode' "ENG"
+
+pattern LanguageCode_ENM :: LanguageCode
+pattern LanguageCode_ENM = LanguageCode' "ENM"
+
+pattern LanguageCode_EPO :: LanguageCode
+pattern LanguageCode_EPO = LanguageCode' "EPO"
+
+pattern LanguageCode_EST :: LanguageCode
+pattern LanguageCode_EST = LanguageCode' "EST"
+
+pattern LanguageCode_EUS :: LanguageCode
+pattern LanguageCode_EUS = LanguageCode' "EUS"
+
+pattern LanguageCode_EWE :: LanguageCode
+pattern LanguageCode_EWE = LanguageCode' "EWE"
+
+pattern LanguageCode_FAO :: LanguageCode
+pattern LanguageCode_FAO = LanguageCode' "FAO"
+
+pattern LanguageCode_FAS :: LanguageCode
+pattern LanguageCode_FAS = LanguageCode' "FAS"
+
+pattern LanguageCode_FIJ :: LanguageCode
+pattern LanguageCode_FIJ = LanguageCode' "FIJ"
+
+pattern LanguageCode_FIN :: LanguageCode
+pattern LanguageCode_FIN = LanguageCode' "FIN"
+
+pattern LanguageCode_FRA :: LanguageCode
+pattern LanguageCode_FRA = LanguageCode' "FRA"
+
+pattern LanguageCode_FRM :: LanguageCode
+pattern LanguageCode_FRM = LanguageCode' "FRM"
+
+pattern LanguageCode_FRY :: LanguageCode
+pattern LanguageCode_FRY = LanguageCode' "FRY"
+
+pattern LanguageCode_FUL :: LanguageCode
+pattern LanguageCode_FUL = LanguageCode' "FUL"
+
+pattern LanguageCode_GER :: LanguageCode
+pattern LanguageCode_GER = LanguageCode' "GER"
+
+pattern LanguageCode_GLA :: LanguageCode
+pattern LanguageCode_GLA = LanguageCode' "GLA"
+
+pattern LanguageCode_GLE :: LanguageCode
+pattern LanguageCode_GLE = LanguageCode' "GLE"
+
+pattern LanguageCode_GLG :: LanguageCode
+pattern LanguageCode_GLG = LanguageCode' "GLG"
+
+pattern LanguageCode_GLV :: LanguageCode
+pattern LanguageCode_GLV = LanguageCode' "GLV"
+
+pattern LanguageCode_GRN :: LanguageCode
+pattern LanguageCode_GRN = LanguageCode' "GRN"
+
+pattern LanguageCode_GUJ :: LanguageCode
+pattern LanguageCode_GUJ = LanguageCode' "GUJ"
+
+pattern LanguageCode_HAT :: LanguageCode
+pattern LanguageCode_HAT = LanguageCode' "HAT"
+
+pattern LanguageCode_HAU :: LanguageCode
+pattern LanguageCode_HAU = LanguageCode' "HAU"
+
+pattern LanguageCode_HEB :: LanguageCode
+pattern LanguageCode_HEB = LanguageCode' "HEB"
+
+pattern LanguageCode_HER :: LanguageCode
+pattern LanguageCode_HER = LanguageCode' "HER"
+
+pattern LanguageCode_HIN :: LanguageCode
+pattern LanguageCode_HIN = LanguageCode' "HIN"
+
+pattern LanguageCode_HMO :: LanguageCode
+pattern LanguageCode_HMO = LanguageCode' "HMO"
+
+pattern LanguageCode_HRV :: LanguageCode
+pattern LanguageCode_HRV = LanguageCode' "HRV"
+
+pattern LanguageCode_HUN :: LanguageCode
+pattern LanguageCode_HUN = LanguageCode' "HUN"
+
+pattern LanguageCode_HYE :: LanguageCode
+pattern LanguageCode_HYE = LanguageCode' "HYE"
+
+pattern LanguageCode_IBO :: LanguageCode
+pattern LanguageCode_IBO = LanguageCode' "IBO"
+
+pattern LanguageCode_IDO :: LanguageCode
+pattern LanguageCode_IDO = LanguageCode' "IDO"
+
+pattern LanguageCode_III :: LanguageCode
+pattern LanguageCode_III = LanguageCode' "III"
+
+pattern LanguageCode_IKU :: LanguageCode
+pattern LanguageCode_IKU = LanguageCode' "IKU"
+
+pattern LanguageCode_ILE :: LanguageCode
+pattern LanguageCode_ILE = LanguageCode' "ILE"
+
+pattern LanguageCode_INA :: LanguageCode
+pattern LanguageCode_INA = LanguageCode' "INA"
+
+pattern LanguageCode_IND :: LanguageCode
+pattern LanguageCode_IND = LanguageCode' "IND"
+
+pattern LanguageCode_IPK :: LanguageCode
+pattern LanguageCode_IPK = LanguageCode' "IPK"
+
+pattern LanguageCode_ISL :: LanguageCode
+pattern LanguageCode_ISL = LanguageCode' "ISL"
+
+pattern LanguageCode_ITA :: LanguageCode
+pattern LanguageCode_ITA = LanguageCode' "ITA"
+
+pattern LanguageCode_JAV :: LanguageCode
+pattern LanguageCode_JAV = LanguageCode' "JAV"
+
+pattern LanguageCode_JPN :: LanguageCode
+pattern LanguageCode_JPN = LanguageCode' "JPN"
+
+pattern LanguageCode_KAL :: LanguageCode
+pattern LanguageCode_KAL = LanguageCode' "KAL"
+
+pattern LanguageCode_KAN :: LanguageCode
+pattern LanguageCode_KAN = LanguageCode' "KAN"
+
+pattern LanguageCode_KAS :: LanguageCode
+pattern LanguageCode_KAS = LanguageCode' "KAS"
+
+pattern LanguageCode_KAT :: LanguageCode
+pattern LanguageCode_KAT = LanguageCode' "KAT"
+
+pattern LanguageCode_KAU :: LanguageCode
+pattern LanguageCode_KAU = LanguageCode' "KAU"
+
+pattern LanguageCode_KAZ :: LanguageCode
+pattern LanguageCode_KAZ = LanguageCode' "KAZ"
+
+pattern LanguageCode_KHM :: LanguageCode
+pattern LanguageCode_KHM = LanguageCode' "KHM"
+
+pattern LanguageCode_KIK :: LanguageCode
+pattern LanguageCode_KIK = LanguageCode' "KIK"
+
+pattern LanguageCode_KIN :: LanguageCode
+pattern LanguageCode_KIN = LanguageCode' "KIN"
+
+pattern LanguageCode_KIR :: LanguageCode
+pattern LanguageCode_KIR = LanguageCode' "KIR"
+
+pattern LanguageCode_KOM :: LanguageCode
+pattern LanguageCode_KOM = LanguageCode' "KOM"
+
+pattern LanguageCode_KON :: LanguageCode
+pattern LanguageCode_KON = LanguageCode' "KON"
+
+pattern LanguageCode_KOR :: LanguageCode
+pattern LanguageCode_KOR = LanguageCode' "KOR"
+
+pattern LanguageCode_KUA :: LanguageCode
+pattern LanguageCode_KUA = LanguageCode' "KUA"
+
+pattern LanguageCode_KUR :: LanguageCode
+pattern LanguageCode_KUR = LanguageCode' "KUR"
+
+pattern LanguageCode_LAO :: LanguageCode
+pattern LanguageCode_LAO = LanguageCode' "LAO"
+
+pattern LanguageCode_LAT :: LanguageCode
+pattern LanguageCode_LAT = LanguageCode' "LAT"
+
+pattern LanguageCode_LAV :: LanguageCode
+pattern LanguageCode_LAV = LanguageCode' "LAV"
+
+pattern LanguageCode_LIM :: LanguageCode
+pattern LanguageCode_LIM = LanguageCode' "LIM"
+
+pattern LanguageCode_LIN :: LanguageCode
+pattern LanguageCode_LIN = LanguageCode' "LIN"
+
+pattern LanguageCode_LIT :: LanguageCode
+pattern LanguageCode_LIT = LanguageCode' "LIT"
+
+pattern LanguageCode_LTZ :: LanguageCode
+pattern LanguageCode_LTZ = LanguageCode' "LTZ"
+
+pattern LanguageCode_LUB :: LanguageCode
+pattern LanguageCode_LUB = LanguageCode' "LUB"
+
+pattern LanguageCode_LUG :: LanguageCode
+pattern LanguageCode_LUG = LanguageCode' "LUG"
+
+pattern LanguageCode_MAH :: LanguageCode
+pattern LanguageCode_MAH = LanguageCode' "MAH"
+
+pattern LanguageCode_MAL :: LanguageCode
+pattern LanguageCode_MAL = LanguageCode' "MAL"
+
+pattern LanguageCode_MAR :: LanguageCode
+pattern LanguageCode_MAR = LanguageCode' "MAR"
+
+pattern LanguageCode_MKD :: LanguageCode
+pattern LanguageCode_MKD = LanguageCode' "MKD"
+
+pattern LanguageCode_MLG :: LanguageCode
+pattern LanguageCode_MLG = LanguageCode' "MLG"
+
+pattern LanguageCode_MLT :: LanguageCode
+pattern LanguageCode_MLT = LanguageCode' "MLT"
+
+pattern LanguageCode_MON :: LanguageCode
+pattern LanguageCode_MON = LanguageCode' "MON"
+
+pattern LanguageCode_MRI :: LanguageCode
+pattern LanguageCode_MRI = LanguageCode' "MRI"
+
+pattern LanguageCode_MSA :: LanguageCode
+pattern LanguageCode_MSA = LanguageCode' "MSA"
+
+pattern LanguageCode_MYA :: LanguageCode
+pattern LanguageCode_MYA = LanguageCode' "MYA"
+
+pattern LanguageCode_NAU :: LanguageCode
+pattern LanguageCode_NAU = LanguageCode' "NAU"
+
+pattern LanguageCode_NAV :: LanguageCode
+pattern LanguageCode_NAV = LanguageCode' "NAV"
+
+pattern LanguageCode_NBL :: LanguageCode
+pattern LanguageCode_NBL = LanguageCode' "NBL"
+
+pattern LanguageCode_NDE :: LanguageCode
+pattern LanguageCode_NDE = LanguageCode' "NDE"
+
+pattern LanguageCode_NDO :: LanguageCode
+pattern LanguageCode_NDO = LanguageCode' "NDO"
+
+pattern LanguageCode_NEP :: LanguageCode
+pattern LanguageCode_NEP = LanguageCode' "NEP"
+
+pattern LanguageCode_NLD :: LanguageCode
+pattern LanguageCode_NLD = LanguageCode' "NLD"
+
+pattern LanguageCode_NNO :: LanguageCode
+pattern LanguageCode_NNO = LanguageCode' "NNO"
+
+pattern LanguageCode_NOB :: LanguageCode
+pattern LanguageCode_NOB = LanguageCode' "NOB"
+
+pattern LanguageCode_NOR :: LanguageCode
+pattern LanguageCode_NOR = LanguageCode' "NOR"
+
+pattern LanguageCode_NYA :: LanguageCode
+pattern LanguageCode_NYA = LanguageCode' "NYA"
+
+pattern LanguageCode_OCI :: LanguageCode
+pattern LanguageCode_OCI = LanguageCode' "OCI"
+
+pattern LanguageCode_OJI :: LanguageCode
+pattern LanguageCode_OJI = LanguageCode' "OJI"
+
+pattern LanguageCode_ORI :: LanguageCode
+pattern LanguageCode_ORI = LanguageCode' "ORI"
+
+pattern LanguageCode_ORJ :: LanguageCode
+pattern LanguageCode_ORJ = LanguageCode' "ORJ"
+
+pattern LanguageCode_ORM :: LanguageCode
+pattern LanguageCode_ORM = LanguageCode' "ORM"
+
+pattern LanguageCode_OSS :: LanguageCode
+pattern LanguageCode_OSS = LanguageCode' "OSS"
+
+pattern LanguageCode_PAN :: LanguageCode
+pattern LanguageCode_PAN = LanguageCode' "PAN"
+
+pattern LanguageCode_PLI :: LanguageCode
+pattern LanguageCode_PLI = LanguageCode' "PLI"
+
+pattern LanguageCode_POL :: LanguageCode
+pattern LanguageCode_POL = LanguageCode' "POL"
+
+pattern LanguageCode_POR :: LanguageCode
+pattern LanguageCode_POR = LanguageCode' "POR"
+
+pattern LanguageCode_PUS :: LanguageCode
+pattern LanguageCode_PUS = LanguageCode' "PUS"
+
+pattern LanguageCode_QAA :: LanguageCode
+pattern LanguageCode_QAA = LanguageCode' "QAA"
+
+pattern LanguageCode_QPC :: LanguageCode
+pattern LanguageCode_QPC = LanguageCode' "QPC"
+
+pattern LanguageCode_QUE :: LanguageCode
+pattern LanguageCode_QUE = LanguageCode' "QUE"
+
+pattern LanguageCode_ROH :: LanguageCode
+pattern LanguageCode_ROH = LanguageCode' "ROH"
+
+pattern LanguageCode_RON :: LanguageCode
+pattern LanguageCode_RON = LanguageCode' "RON"
+
+pattern LanguageCode_RUN :: LanguageCode
+pattern LanguageCode_RUN = LanguageCode' "RUN"
+
+pattern LanguageCode_RUS :: LanguageCode
+pattern LanguageCode_RUS = LanguageCode' "RUS"
+
+pattern LanguageCode_SAG :: LanguageCode
+pattern LanguageCode_SAG = LanguageCode' "SAG"
+
+pattern LanguageCode_SAN :: LanguageCode
+pattern LanguageCode_SAN = LanguageCode' "SAN"
+
+pattern LanguageCode_SIN :: LanguageCode
+pattern LanguageCode_SIN = LanguageCode' "SIN"
+
+pattern LanguageCode_SLK :: LanguageCode
+pattern LanguageCode_SLK = LanguageCode' "SLK"
+
+pattern LanguageCode_SLV :: LanguageCode
+pattern LanguageCode_SLV = LanguageCode' "SLV"
+
+pattern LanguageCode_SME :: LanguageCode
+pattern LanguageCode_SME = LanguageCode' "SME"
+
+pattern LanguageCode_SMO :: LanguageCode
+pattern LanguageCode_SMO = LanguageCode' "SMO"
+
+pattern LanguageCode_SNA :: LanguageCode
+pattern LanguageCode_SNA = LanguageCode' "SNA"
+
+pattern LanguageCode_SND :: LanguageCode
+pattern LanguageCode_SND = LanguageCode' "SND"
+
+pattern LanguageCode_SOM :: LanguageCode
+pattern LanguageCode_SOM = LanguageCode' "SOM"
+
+pattern LanguageCode_SOT :: LanguageCode
+pattern LanguageCode_SOT = LanguageCode' "SOT"
+
+pattern LanguageCode_SPA :: LanguageCode
+pattern LanguageCode_SPA = LanguageCode' "SPA"
+
+pattern LanguageCode_SQI :: LanguageCode
+pattern LanguageCode_SQI = LanguageCode' "SQI"
+
+pattern LanguageCode_SRB :: LanguageCode
+pattern LanguageCode_SRB = LanguageCode' "SRB"
+
+pattern LanguageCode_SRD :: LanguageCode
+pattern LanguageCode_SRD = LanguageCode' "SRD"
+
+pattern LanguageCode_SRP :: LanguageCode
+pattern LanguageCode_SRP = LanguageCode' "SRP"
+
+pattern LanguageCode_SSW :: LanguageCode
+pattern LanguageCode_SSW = LanguageCode' "SSW"
+
+pattern LanguageCode_SUN :: LanguageCode
+pattern LanguageCode_SUN = LanguageCode' "SUN"
+
+pattern LanguageCode_SWA :: LanguageCode
+pattern LanguageCode_SWA = LanguageCode' "SWA"
+
+pattern LanguageCode_SWE :: LanguageCode
+pattern LanguageCode_SWE = LanguageCode' "SWE"
+
+pattern LanguageCode_TAH :: LanguageCode
+pattern LanguageCode_TAH = LanguageCode' "TAH"
+
+pattern LanguageCode_TAM :: LanguageCode
+pattern LanguageCode_TAM = LanguageCode' "TAM"
+
+pattern LanguageCode_TAT :: LanguageCode
+pattern LanguageCode_TAT = LanguageCode' "TAT"
+
+pattern LanguageCode_TEL :: LanguageCode
+pattern LanguageCode_TEL = LanguageCode' "TEL"
+
+pattern LanguageCode_TGK :: LanguageCode
+pattern LanguageCode_TGK = LanguageCode' "TGK"
+
+pattern LanguageCode_TGL :: LanguageCode
+pattern LanguageCode_TGL = LanguageCode' "TGL"
+
+pattern LanguageCode_THA :: LanguageCode
+pattern LanguageCode_THA = LanguageCode' "THA"
+
+pattern LanguageCode_TIR :: LanguageCode
+pattern LanguageCode_TIR = LanguageCode' "TIR"
+
+pattern LanguageCode_TNG :: LanguageCode
+pattern LanguageCode_TNG = LanguageCode' "TNG"
+
+pattern LanguageCode_TON :: LanguageCode
+pattern LanguageCode_TON = LanguageCode' "TON"
+
+pattern LanguageCode_TSN :: LanguageCode
+pattern LanguageCode_TSN = LanguageCode' "TSN"
+
+pattern LanguageCode_TSO :: LanguageCode
+pattern LanguageCode_TSO = LanguageCode' "TSO"
+
+pattern LanguageCode_TUK :: LanguageCode
+pattern LanguageCode_TUK = LanguageCode' "TUK"
+
+pattern LanguageCode_TUR :: LanguageCode
+pattern LanguageCode_TUR = LanguageCode' "TUR"
+
+pattern LanguageCode_TWI :: LanguageCode
+pattern LanguageCode_TWI = LanguageCode' "TWI"
+
+pattern LanguageCode_UIG :: LanguageCode
+pattern LanguageCode_UIG = LanguageCode' "UIG"
+
+pattern LanguageCode_UKR :: LanguageCode
+pattern LanguageCode_UKR = LanguageCode' "UKR"
+
+pattern LanguageCode_URD :: LanguageCode
+pattern LanguageCode_URD = LanguageCode' "URD"
+
+pattern LanguageCode_UZB :: LanguageCode
+pattern LanguageCode_UZB = LanguageCode' "UZB"
+
+pattern LanguageCode_VEN :: LanguageCode
+pattern LanguageCode_VEN = LanguageCode' "VEN"
+
+pattern LanguageCode_VIE :: LanguageCode
+pattern LanguageCode_VIE = LanguageCode' "VIE"
+
+pattern LanguageCode_VOL :: LanguageCode
+pattern LanguageCode_VOL = LanguageCode' "VOL"
+
+pattern LanguageCode_WLN :: LanguageCode
+pattern LanguageCode_WLN = LanguageCode' "WLN"
+
+pattern LanguageCode_WOL :: LanguageCode
+pattern LanguageCode_WOL = LanguageCode' "WOL"
+
+pattern LanguageCode_XHO :: LanguageCode
+pattern LanguageCode_XHO = LanguageCode' "XHO"
+
+pattern LanguageCode_YID :: LanguageCode
+pattern LanguageCode_YID = LanguageCode' "YID"
+
+pattern LanguageCode_YOR :: LanguageCode
+pattern LanguageCode_YOR = LanguageCode' "YOR"
+
+pattern LanguageCode_ZHA :: LanguageCode
+pattern LanguageCode_ZHA = LanguageCode' "ZHA"
+
+pattern LanguageCode_ZHO :: LanguageCode
+pattern LanguageCode_ZHO = LanguageCode' "ZHO"
+
+pattern LanguageCode_ZUL :: LanguageCode
+pattern LanguageCode_ZUL = LanguageCode' "ZUL"
+
+{-# COMPLETE
+  LanguageCode_AAR,
+  LanguageCode_ABK,
+  LanguageCode_AFR,
+  LanguageCode_AKA,
+  LanguageCode_AMH,
+  LanguageCode_ARA,
+  LanguageCode_ARG,
+  LanguageCode_ASM,
+  LanguageCode_AVA,
+  LanguageCode_AVE,
+  LanguageCode_AYM,
+  LanguageCode_AZE,
+  LanguageCode_BAK,
+  LanguageCode_BAM,
+  LanguageCode_BEL,
+  LanguageCode_BEN,
+  LanguageCode_BIH,
+  LanguageCode_BIS,
+  LanguageCode_BOD,
+  LanguageCode_BOS,
+  LanguageCode_BRE,
+  LanguageCode_BUL,
+  LanguageCode_CAT,
+  LanguageCode_CES,
+  LanguageCode_CHA,
+  LanguageCode_CHE,
+  LanguageCode_CHU,
+  LanguageCode_CHV,
+  LanguageCode_COR,
+  LanguageCode_COS,
+  LanguageCode_CRE,
+  LanguageCode_CYM,
+  LanguageCode_DAN,
+  LanguageCode_DEU,
+  LanguageCode_DIV,
+  LanguageCode_DZO,
+  LanguageCode_ELL,
+  LanguageCode_ENG,
+  LanguageCode_ENM,
+  LanguageCode_EPO,
+  LanguageCode_EST,
+  LanguageCode_EUS,
+  LanguageCode_EWE,
+  LanguageCode_FAO,
+  LanguageCode_FAS,
+  LanguageCode_FIJ,
+  LanguageCode_FIN,
+  LanguageCode_FRA,
+  LanguageCode_FRM,
+  LanguageCode_FRY,
+  LanguageCode_FUL,
+  LanguageCode_GER,
+  LanguageCode_GLA,
+  LanguageCode_GLE,
+  LanguageCode_GLG,
+  LanguageCode_GLV,
+  LanguageCode_GRN,
+  LanguageCode_GUJ,
+  LanguageCode_HAT,
+  LanguageCode_HAU,
+  LanguageCode_HEB,
+  LanguageCode_HER,
+  LanguageCode_HIN,
+  LanguageCode_HMO,
+  LanguageCode_HRV,
+  LanguageCode_HUN,
+  LanguageCode_HYE,
+  LanguageCode_IBO,
+  LanguageCode_IDO,
+  LanguageCode_III,
+  LanguageCode_IKU,
+  LanguageCode_ILE,
+  LanguageCode_INA,
+  LanguageCode_IND,
+  LanguageCode_IPK,
+  LanguageCode_ISL,
+  LanguageCode_ITA,
+  LanguageCode_JAV,
+  LanguageCode_JPN,
+  LanguageCode_KAL,
+  LanguageCode_KAN,
+  LanguageCode_KAS,
+  LanguageCode_KAT,
+  LanguageCode_KAU,
+  LanguageCode_KAZ,
+  LanguageCode_KHM,
+  LanguageCode_KIK,
+  LanguageCode_KIN,
+  LanguageCode_KIR,
+  LanguageCode_KOM,
+  LanguageCode_KON,
+  LanguageCode_KOR,
+  LanguageCode_KUA,
+  LanguageCode_KUR,
+  LanguageCode_LAO,
+  LanguageCode_LAT,
+  LanguageCode_LAV,
+  LanguageCode_LIM,
+  LanguageCode_LIN,
+  LanguageCode_LIT,
+  LanguageCode_LTZ,
+  LanguageCode_LUB,
+  LanguageCode_LUG,
+  LanguageCode_MAH,
+  LanguageCode_MAL,
+  LanguageCode_MAR,
+  LanguageCode_MKD,
+  LanguageCode_MLG,
+  LanguageCode_MLT,
+  LanguageCode_MON,
+  LanguageCode_MRI,
+  LanguageCode_MSA,
+  LanguageCode_MYA,
+  LanguageCode_NAU,
+  LanguageCode_NAV,
+  LanguageCode_NBL,
+  LanguageCode_NDE,
+  LanguageCode_NDO,
+  LanguageCode_NEP,
+  LanguageCode_NLD,
+  LanguageCode_NNO,
+  LanguageCode_NOB,
+  LanguageCode_NOR,
+  LanguageCode_NYA,
+  LanguageCode_OCI,
+  LanguageCode_OJI,
+  LanguageCode_ORI,
+  LanguageCode_ORJ,
+  LanguageCode_ORM,
+  LanguageCode_OSS,
+  LanguageCode_PAN,
+  LanguageCode_PLI,
+  LanguageCode_POL,
+  LanguageCode_POR,
+  LanguageCode_PUS,
+  LanguageCode_QAA,
+  LanguageCode_QPC,
+  LanguageCode_QUE,
+  LanguageCode_ROH,
+  LanguageCode_RON,
+  LanguageCode_RUN,
+  LanguageCode_RUS,
+  LanguageCode_SAG,
+  LanguageCode_SAN,
+  LanguageCode_SIN,
+  LanguageCode_SLK,
+  LanguageCode_SLV,
+  LanguageCode_SME,
+  LanguageCode_SMO,
+  LanguageCode_SNA,
+  LanguageCode_SND,
+  LanguageCode_SOM,
+  LanguageCode_SOT,
+  LanguageCode_SPA,
+  LanguageCode_SQI,
+  LanguageCode_SRB,
+  LanguageCode_SRD,
+  LanguageCode_SRP,
+  LanguageCode_SSW,
+  LanguageCode_SUN,
+  LanguageCode_SWA,
+  LanguageCode_SWE,
+  LanguageCode_TAH,
+  LanguageCode_TAM,
+  LanguageCode_TAT,
+  LanguageCode_TEL,
+  LanguageCode_TGK,
+  LanguageCode_TGL,
+  LanguageCode_THA,
+  LanguageCode_TIR,
+  LanguageCode_TNG,
+  LanguageCode_TON,
+  LanguageCode_TSN,
+  LanguageCode_TSO,
+  LanguageCode_TUK,
+  LanguageCode_TUR,
+  LanguageCode_TWI,
+  LanguageCode_UIG,
+  LanguageCode_UKR,
+  LanguageCode_URD,
+  LanguageCode_UZB,
+  LanguageCode_VEN,
+  LanguageCode_VIE,
+  LanguageCode_VOL,
+  LanguageCode_WLN,
+  LanguageCode_WOL,
+  LanguageCode_XHO,
+  LanguageCode_YID,
+  LanguageCode_YOR,
+  LanguageCode_ZHA,
+  LanguageCode_ZHO,
+  LanguageCode_ZUL,
+  LanguageCode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsAudioBufferModel.hs b/gen/Amazonka/MediaConvert/Types/M2tsAudioBufferModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsAudioBufferModel.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsAudioBufferModel
+-- 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.M2tsAudioBufferModel
+  ( M2tsAudioBufferModel
+      ( ..,
+        M2tsAudioBufferModel_ATSC,
+        M2tsAudioBufferModel_DVB
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Selects between the DVB and ATSC buffer models for Dolby Digital audio.
+newtype M2tsAudioBufferModel = M2tsAudioBufferModel'
+  { fromM2tsAudioBufferModel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsAudioBufferModel_ATSC :: M2tsAudioBufferModel
+pattern M2tsAudioBufferModel_ATSC = M2tsAudioBufferModel' "ATSC"
+
+pattern M2tsAudioBufferModel_DVB :: M2tsAudioBufferModel
+pattern M2tsAudioBufferModel_DVB = M2tsAudioBufferModel' "DVB"
+
+{-# COMPLETE
+  M2tsAudioBufferModel_ATSC,
+  M2tsAudioBufferModel_DVB,
+  M2tsAudioBufferModel'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsAudioDuration.hs b/gen/Amazonka/MediaConvert/Types/M2tsAudioDuration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsAudioDuration.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsAudioDuration
+-- 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.M2tsAudioDuration
+  ( M2tsAudioDuration
+      ( ..,
+        M2tsAudioDuration_DEFAULT_CODEC_DURATION,
+        M2tsAudioDuration_MATCH_VIDEO_DURATION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+newtype M2tsAudioDuration = M2tsAudioDuration'
+  { fromM2tsAudioDuration ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsAudioDuration_DEFAULT_CODEC_DURATION :: M2tsAudioDuration
+pattern M2tsAudioDuration_DEFAULT_CODEC_DURATION = M2tsAudioDuration' "DEFAULT_CODEC_DURATION"
+
+pattern M2tsAudioDuration_MATCH_VIDEO_DURATION :: M2tsAudioDuration
+pattern M2tsAudioDuration_MATCH_VIDEO_DURATION = M2tsAudioDuration' "MATCH_VIDEO_DURATION"
+
+{-# COMPLETE
+  M2tsAudioDuration_DEFAULT_CODEC_DURATION,
+  M2tsAudioDuration_MATCH_VIDEO_DURATION,
+  M2tsAudioDuration'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsBufferModel.hs b/gen/Amazonka/MediaConvert/Types/M2tsBufferModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsBufferModel.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsBufferModel
+-- 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.M2tsBufferModel
+  ( M2tsBufferModel
+      ( ..,
+        M2tsBufferModel_MULTIPLEX,
+        M2tsBufferModel_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Controls what buffer model to use for accurate interleaving. If set to
+-- MULTIPLEX, use multiplex buffer model. If set to NONE, this can lead to
+-- lower latency, but low-memory devices may not be able to play back the
+-- stream without interruptions.
+newtype M2tsBufferModel = M2tsBufferModel'
+  { fromM2tsBufferModel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsBufferModel_MULTIPLEX :: M2tsBufferModel
+pattern M2tsBufferModel_MULTIPLEX = M2tsBufferModel' "MULTIPLEX"
+
+pattern M2tsBufferModel_NONE :: M2tsBufferModel
+pattern M2tsBufferModel_NONE = M2tsBufferModel' "NONE"
+
+{-# COMPLETE
+  M2tsBufferModel_MULTIPLEX,
+  M2tsBufferModel_NONE,
+  M2tsBufferModel'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsDataPtsControl.hs b/gen/Amazonka/MediaConvert/Types/M2tsDataPtsControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsDataPtsControl.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsDataPtsControl
+-- 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.M2tsDataPtsControl
+  ( M2tsDataPtsControl
+      ( ..,
+        M2tsDataPtsControl_ALIGN_TO_VIDEO,
+        M2tsDataPtsControl_AUTO
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you select ALIGN_TO_VIDEO, MediaConvert writes captions and data
+-- packets with Presentation Timestamp (PTS) values greater than or equal
+-- to the first video packet PTS (MediaConvert drops captions and data
+-- packets with lesser PTS values). Keep the default value (AUTO) to allow
+-- all PTS values.
+newtype M2tsDataPtsControl = M2tsDataPtsControl'
+  { fromM2tsDataPtsControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsDataPtsControl_ALIGN_TO_VIDEO :: M2tsDataPtsControl
+pattern M2tsDataPtsControl_ALIGN_TO_VIDEO = M2tsDataPtsControl' "ALIGN_TO_VIDEO"
+
+pattern M2tsDataPtsControl_AUTO :: M2tsDataPtsControl
+pattern M2tsDataPtsControl_AUTO = M2tsDataPtsControl' "AUTO"
+
+{-# COMPLETE
+  M2tsDataPtsControl_ALIGN_TO_VIDEO,
+  M2tsDataPtsControl_AUTO,
+  M2tsDataPtsControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsEbpAudioInterval.hs b/gen/Amazonka/MediaConvert/Types/M2tsEbpAudioInterval.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsEbpAudioInterval.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsEbpAudioInterval
+-- 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.M2tsEbpAudioInterval
+  ( M2tsEbpAudioInterval
+      ( ..,
+        M2tsEbpAudioInterval_VIDEO_AND_FIXED_INTERVALS,
+        M2tsEbpAudioInterval_VIDEO_INTERVAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to VIDEO_AND_FIXED_INTERVALS, audio EBP markers will be added
+-- to partitions 3 and 4. The interval between these additional markers
+-- will be fixed, and will be slightly shorter than the video EBP marker
+-- interval. When set to VIDEO_INTERVAL, these additional markers will not
+-- be inserted. Only applicable when EBP segmentation markers are is
+-- selected (segmentationMarkers is EBP or EBP_LEGACY).
+newtype M2tsEbpAudioInterval = M2tsEbpAudioInterval'
+  { fromM2tsEbpAudioInterval ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsEbpAudioInterval_VIDEO_AND_FIXED_INTERVALS :: M2tsEbpAudioInterval
+pattern M2tsEbpAudioInterval_VIDEO_AND_FIXED_INTERVALS = M2tsEbpAudioInterval' "VIDEO_AND_FIXED_INTERVALS"
+
+pattern M2tsEbpAudioInterval_VIDEO_INTERVAL :: M2tsEbpAudioInterval
+pattern M2tsEbpAudioInterval_VIDEO_INTERVAL = M2tsEbpAudioInterval' "VIDEO_INTERVAL"
+
+{-# COMPLETE
+  M2tsEbpAudioInterval_VIDEO_AND_FIXED_INTERVALS,
+  M2tsEbpAudioInterval_VIDEO_INTERVAL,
+  M2tsEbpAudioInterval'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsEbpPlacement.hs b/gen/Amazonka/MediaConvert/Types/M2tsEbpPlacement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsEbpPlacement.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsEbpPlacement
+-- 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.M2tsEbpPlacement
+  ( M2tsEbpPlacement
+      ( ..,
+        M2tsEbpPlacement_VIDEO_AND_AUDIO_PIDS,
+        M2tsEbpPlacement_VIDEO_PID
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Selects which PIDs to place EBP markers on. They can either be placed
+-- only on the video PID, or on both the video PID and all audio PIDs. Only
+-- applicable when EBP segmentation markers are is selected
+-- (segmentationMarkers is EBP or EBP_LEGACY).
+newtype M2tsEbpPlacement = M2tsEbpPlacement'
+  { fromM2tsEbpPlacement ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsEbpPlacement_VIDEO_AND_AUDIO_PIDS :: M2tsEbpPlacement
+pattern M2tsEbpPlacement_VIDEO_AND_AUDIO_PIDS = M2tsEbpPlacement' "VIDEO_AND_AUDIO_PIDS"
+
+pattern M2tsEbpPlacement_VIDEO_PID :: M2tsEbpPlacement
+pattern M2tsEbpPlacement_VIDEO_PID = M2tsEbpPlacement' "VIDEO_PID"
+
+{-# COMPLETE
+  M2tsEbpPlacement_VIDEO_AND_AUDIO_PIDS,
+  M2tsEbpPlacement_VIDEO_PID,
+  M2tsEbpPlacement'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsEsRateInPes.hs b/gen/Amazonka/MediaConvert/Types/M2tsEsRateInPes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsEsRateInPes.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsEsRateInPes
+-- 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.M2tsEsRateInPes
+  ( M2tsEsRateInPes
+      ( ..,
+        M2tsEsRateInPes_EXCLUDE,
+        M2tsEsRateInPes_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Controls whether to include the ES Rate field in the PES header.
+newtype M2tsEsRateInPes = M2tsEsRateInPes'
+  { fromM2tsEsRateInPes ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsEsRateInPes_EXCLUDE :: M2tsEsRateInPes
+pattern M2tsEsRateInPes_EXCLUDE = M2tsEsRateInPes' "EXCLUDE"
+
+pattern M2tsEsRateInPes_INCLUDE :: M2tsEsRateInPes
+pattern M2tsEsRateInPes_INCLUDE = M2tsEsRateInPes' "INCLUDE"
+
+{-# COMPLETE
+  M2tsEsRateInPes_EXCLUDE,
+  M2tsEsRateInPes_INCLUDE,
+  M2tsEsRateInPes'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsForceTsVideoEbpOrder.hs b/gen/Amazonka/MediaConvert/Types/M2tsForceTsVideoEbpOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsForceTsVideoEbpOrder.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsForceTsVideoEbpOrder
+-- 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.M2tsForceTsVideoEbpOrder
+  ( M2tsForceTsVideoEbpOrder
+      ( ..,
+        M2tsForceTsVideoEbpOrder_DEFAULT,
+        M2tsForceTsVideoEbpOrder_FORCE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Keep the default value (DEFAULT) unless you know that your audio EBP
+-- markers are incorrectly appearing before your video EBP markers. To
+-- correct this problem, set this value to Force (FORCE).
+newtype M2tsForceTsVideoEbpOrder = M2tsForceTsVideoEbpOrder'
+  { fromM2tsForceTsVideoEbpOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsForceTsVideoEbpOrder_DEFAULT :: M2tsForceTsVideoEbpOrder
+pattern M2tsForceTsVideoEbpOrder_DEFAULT = M2tsForceTsVideoEbpOrder' "DEFAULT"
+
+pattern M2tsForceTsVideoEbpOrder_FORCE :: M2tsForceTsVideoEbpOrder
+pattern M2tsForceTsVideoEbpOrder_FORCE = M2tsForceTsVideoEbpOrder' "FORCE"
+
+{-# COMPLETE
+  M2tsForceTsVideoEbpOrder_DEFAULT,
+  M2tsForceTsVideoEbpOrder_FORCE,
+  M2tsForceTsVideoEbpOrder'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsKlvMetadata.hs b/gen/Amazonka/MediaConvert/Types/M2tsKlvMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsKlvMetadata.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsKlvMetadata
+-- 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.M2tsKlvMetadata
+  ( M2tsKlvMetadata
+      ( ..,
+        M2tsKlvMetadata_NONE,
+        M2tsKlvMetadata_PASSTHROUGH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | To include key-length-value metadata in this output: Set KLV metadata
+-- insertion to Passthrough. MediaConvert reads KLV metadata present in
+-- your input and passes it through to the output transport stream. To
+-- exclude this KLV metadata: Set KLV metadata insertion to None or leave
+-- blank.
+newtype M2tsKlvMetadata = M2tsKlvMetadata'
+  { fromM2tsKlvMetadata ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsKlvMetadata_NONE :: M2tsKlvMetadata
+pattern M2tsKlvMetadata_NONE = M2tsKlvMetadata' "NONE"
+
+pattern M2tsKlvMetadata_PASSTHROUGH :: M2tsKlvMetadata
+pattern M2tsKlvMetadata_PASSTHROUGH = M2tsKlvMetadata' "PASSTHROUGH"
+
+{-# COMPLETE
+  M2tsKlvMetadata_NONE,
+  M2tsKlvMetadata_PASSTHROUGH,
+  M2tsKlvMetadata'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsNielsenId3.hs b/gen/Amazonka/MediaConvert/Types/M2tsNielsenId3.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsNielsenId3.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsNielsenId3
+-- 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.M2tsNielsenId3
+  ( M2tsNielsenId3
+      ( ..,
+        M2tsNielsenId3_INSERT,
+        M2tsNielsenId3_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If INSERT, Nielsen inaudible tones for media tracking will be detected
+-- in the input audio and an equivalent ID3 tag will be inserted in the
+-- output.
+newtype M2tsNielsenId3 = M2tsNielsenId3'
+  { fromM2tsNielsenId3 ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsNielsenId3_INSERT :: M2tsNielsenId3
+pattern M2tsNielsenId3_INSERT = M2tsNielsenId3' "INSERT"
+
+pattern M2tsNielsenId3_NONE :: M2tsNielsenId3
+pattern M2tsNielsenId3_NONE = M2tsNielsenId3' "NONE"
+
+{-# COMPLETE
+  M2tsNielsenId3_INSERT,
+  M2tsNielsenId3_NONE,
+  M2tsNielsenId3'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsPcrControl.hs b/gen/Amazonka/MediaConvert/Types/M2tsPcrControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsPcrControl.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsPcrControl
+-- 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.M2tsPcrControl
+  ( M2tsPcrControl
+      ( ..,
+        M2tsPcrControl_CONFIGURED_PCR_PERIOD,
+        M2tsPcrControl_PCR_EVERY_PES_PACKET
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to PCR_EVERY_PES_PACKET, a Program Clock Reference value is
+-- inserted for every Packetized Elementary Stream (PES) header. This is
+-- effective only when the PCR PID is the same as the video or audio
+-- elementary stream.
+newtype M2tsPcrControl = M2tsPcrControl'
+  { fromM2tsPcrControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsPcrControl_CONFIGURED_PCR_PERIOD :: M2tsPcrControl
+pattern M2tsPcrControl_CONFIGURED_PCR_PERIOD = M2tsPcrControl' "CONFIGURED_PCR_PERIOD"
+
+pattern M2tsPcrControl_PCR_EVERY_PES_PACKET :: M2tsPcrControl
+pattern M2tsPcrControl_PCR_EVERY_PES_PACKET = M2tsPcrControl' "PCR_EVERY_PES_PACKET"
+
+{-# COMPLETE
+  M2tsPcrControl_CONFIGURED_PCR_PERIOD,
+  M2tsPcrControl_PCR_EVERY_PES_PACKET,
+  M2tsPcrControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsRateMode.hs b/gen/Amazonka/MediaConvert/Types/M2tsRateMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsRateMode.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsRateMode
+-- 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.M2tsRateMode
+  ( M2tsRateMode
+      ( ..,
+        M2tsRateMode_CBR,
+        M2tsRateMode_VBR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to CBR, inserts null packets into transport stream to fill
+-- specified bitrate. When set to VBR, the bitrate setting acts as the
+-- maximum bitrate, but the output will not be padded up to that bitrate.
+newtype M2tsRateMode = M2tsRateMode'
+  { fromM2tsRateMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsRateMode_CBR :: M2tsRateMode
+pattern M2tsRateMode_CBR = M2tsRateMode' "CBR"
+
+pattern M2tsRateMode_VBR :: M2tsRateMode
+pattern M2tsRateMode_VBR = M2tsRateMode' "VBR"
+
+{-# COMPLETE
+  M2tsRateMode_CBR,
+  M2tsRateMode_VBR,
+  M2tsRateMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsScte35Esam.hs b/gen/Amazonka/MediaConvert/Types/M2tsScte35Esam.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsScte35Esam.hs
@@ -0,0 +1,83 @@
+{-# 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.M2tsScte35Esam
+-- 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.M2tsScte35Esam where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for SCTE-35 signals from ESAM. Include this in your job
+-- settings to put SCTE-35 markers in your HLS and transport stream outputs
+-- at the insertion points that you specify in an ESAM XML document.
+-- Provide the document in the setting SCC XML (sccXml).
+--
+-- /See:/ 'newM2tsScte35Esam' smart constructor.
+data M2tsScte35Esam = M2tsScte35Esam'
+  { -- | Packet Identifier (PID) of the SCTE-35 stream in the transport stream
+    -- generated by ESAM.
+    scte35EsamPid :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'M2tsScte35Esam' 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:
+--
+-- 'scte35EsamPid', 'm2tsScte35Esam_scte35EsamPid' - Packet Identifier (PID) of the SCTE-35 stream in the transport stream
+-- generated by ESAM.
+newM2tsScte35Esam ::
+  M2tsScte35Esam
+newM2tsScte35Esam =
+  M2tsScte35Esam' {scte35EsamPid = Prelude.Nothing}
+
+-- | Packet Identifier (PID) of the SCTE-35 stream in the transport stream
+-- generated by ESAM.
+m2tsScte35Esam_scte35EsamPid :: Lens.Lens' M2tsScte35Esam (Prelude.Maybe Prelude.Natural)
+m2tsScte35Esam_scte35EsamPid = Lens.lens (\M2tsScte35Esam' {scte35EsamPid} -> scte35EsamPid) (\s@M2tsScte35Esam' {} a -> s {scte35EsamPid = a} :: M2tsScte35Esam)
+
+instance Data.FromJSON M2tsScte35Esam where
+  parseJSON =
+    Data.withObject
+      "M2tsScte35Esam"
+      ( \x ->
+          M2tsScte35Esam'
+            Prelude.<$> (x Data..:? "scte35EsamPid")
+      )
+
+instance Prelude.Hashable M2tsScte35Esam where
+  hashWithSalt _salt M2tsScte35Esam' {..} =
+    _salt `Prelude.hashWithSalt` scte35EsamPid
+
+instance Prelude.NFData M2tsScte35Esam where
+  rnf M2tsScte35Esam' {..} = Prelude.rnf scte35EsamPid
+
+instance Data.ToJSON M2tsScte35Esam where
+  toJSON M2tsScte35Esam' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("scte35EsamPid" Data..=)
+              Prelude.<$> scte35EsamPid
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsScte35Source.hs b/gen/Amazonka/MediaConvert/Types/M2tsScte35Source.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsScte35Source.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsScte35Source
+-- 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.M2tsScte35Source
+  ( M2tsScte35Source
+      ( ..,
+        M2tsScte35Source_NONE,
+        M2tsScte35Source_PASSTHROUGH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | For SCTE-35 markers from your input-- Choose Passthrough (PASSTHROUGH)
+-- if you want SCTE-35 markers that appear in your input to also appear in
+-- this output. Choose None (NONE) if you don\'t want SCTE-35 markers in
+-- this output. For SCTE-35 markers from an ESAM XML document-- Choose None
+-- (NONE). Also provide the ESAM XML as a string in the setting Signal
+-- processing notification XML (sccXml). Also enable ESAM SCTE-35 (include
+-- the property scte35Esam).
+newtype M2tsScte35Source = M2tsScte35Source'
+  { fromM2tsScte35Source ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsScte35Source_NONE :: M2tsScte35Source
+pattern M2tsScte35Source_NONE = M2tsScte35Source' "NONE"
+
+pattern M2tsScte35Source_PASSTHROUGH :: M2tsScte35Source
+pattern M2tsScte35Source_PASSTHROUGH = M2tsScte35Source' "PASSTHROUGH"
+
+{-# COMPLETE
+  M2tsScte35Source_NONE,
+  M2tsScte35Source_PASSTHROUGH,
+  M2tsScte35Source'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsSegmentationMarkers.hs b/gen/Amazonka/MediaConvert/Types/M2tsSegmentationMarkers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsSegmentationMarkers.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsSegmentationMarkers
+-- 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.M2tsSegmentationMarkers
+  ( M2tsSegmentationMarkers
+      ( ..,
+        M2tsSegmentationMarkers_EBP,
+        M2tsSegmentationMarkers_EBP_LEGACY,
+        M2tsSegmentationMarkers_NONE,
+        M2tsSegmentationMarkers_PSI_SEGSTART,
+        M2tsSegmentationMarkers_RAI_ADAPT,
+        M2tsSegmentationMarkers_RAI_SEGSTART
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Inserts segmentation markers at each segmentation_time period.
+-- rai_segstart sets the Random Access Indicator bit in the adaptation
+-- field. rai_adapt sets the RAI bit and adds the current timecode in the
+-- private data bytes. psi_segstart inserts PAT and PMT tables at the start
+-- of segments. ebp adds Encoder Boundary Point information to the
+-- adaptation field as per OpenCable specification OC-SP-EBP-I01-130118.
+-- ebp_legacy adds Encoder Boundary Point information to the adaptation
+-- field using a legacy proprietary format.
+newtype M2tsSegmentationMarkers = M2tsSegmentationMarkers'
+  { fromM2tsSegmentationMarkers ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsSegmentationMarkers_EBP :: M2tsSegmentationMarkers
+pattern M2tsSegmentationMarkers_EBP = M2tsSegmentationMarkers' "EBP"
+
+pattern M2tsSegmentationMarkers_EBP_LEGACY :: M2tsSegmentationMarkers
+pattern M2tsSegmentationMarkers_EBP_LEGACY = M2tsSegmentationMarkers' "EBP_LEGACY"
+
+pattern M2tsSegmentationMarkers_NONE :: M2tsSegmentationMarkers
+pattern M2tsSegmentationMarkers_NONE = M2tsSegmentationMarkers' "NONE"
+
+pattern M2tsSegmentationMarkers_PSI_SEGSTART :: M2tsSegmentationMarkers
+pattern M2tsSegmentationMarkers_PSI_SEGSTART = M2tsSegmentationMarkers' "PSI_SEGSTART"
+
+pattern M2tsSegmentationMarkers_RAI_ADAPT :: M2tsSegmentationMarkers
+pattern M2tsSegmentationMarkers_RAI_ADAPT = M2tsSegmentationMarkers' "RAI_ADAPT"
+
+pattern M2tsSegmentationMarkers_RAI_SEGSTART :: M2tsSegmentationMarkers
+pattern M2tsSegmentationMarkers_RAI_SEGSTART = M2tsSegmentationMarkers' "RAI_SEGSTART"
+
+{-# COMPLETE
+  M2tsSegmentationMarkers_EBP,
+  M2tsSegmentationMarkers_EBP_LEGACY,
+  M2tsSegmentationMarkers_NONE,
+  M2tsSegmentationMarkers_PSI_SEGSTART,
+  M2tsSegmentationMarkers_RAI_ADAPT,
+  M2tsSegmentationMarkers_RAI_SEGSTART,
+  M2tsSegmentationMarkers'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsSegmentationStyle.hs b/gen/Amazonka/MediaConvert/Types/M2tsSegmentationStyle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsSegmentationStyle.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M2tsSegmentationStyle
+-- 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.M2tsSegmentationStyle
+  ( M2tsSegmentationStyle
+      ( ..,
+        M2tsSegmentationStyle_MAINTAIN_CADENCE,
+        M2tsSegmentationStyle_RESET_CADENCE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The segmentation style parameter controls how segmentation markers are
+-- inserted into the transport stream. With avails, it is possible that
+-- segments may be truncated, which can influence where future segmentation
+-- markers are inserted. When a segmentation style of \"reset_cadence\" is
+-- selected and a segment is truncated due to an avail, we will reset the
+-- segmentation cadence. This means the subsequent segment will have a
+-- duration of of $segmentation_time seconds. When a segmentation style of
+-- \"maintain_cadence\" is selected and a segment is truncated due to an
+-- avail, we will not reset the segmentation cadence. This means the
+-- subsequent segment will likely be truncated as well. However, all
+-- segments after that will have a duration of $segmentation_time seconds.
+-- Note that EBP lookahead is a slight exception to this rule.
+newtype M2tsSegmentationStyle = M2tsSegmentationStyle'
+  { fromM2tsSegmentationStyle ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M2tsSegmentationStyle_MAINTAIN_CADENCE :: M2tsSegmentationStyle
+pattern M2tsSegmentationStyle_MAINTAIN_CADENCE = M2tsSegmentationStyle' "MAINTAIN_CADENCE"
+
+pattern M2tsSegmentationStyle_RESET_CADENCE :: M2tsSegmentationStyle
+pattern M2tsSegmentationStyle_RESET_CADENCE = M2tsSegmentationStyle' "RESET_CADENCE"
+
+{-# COMPLETE
+  M2tsSegmentationStyle_MAINTAIN_CADENCE,
+  M2tsSegmentationStyle_RESET_CADENCE,
+  M2tsSegmentationStyle'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M2tsSettings.hs b/gen/Amazonka/MediaConvert/Types/M2tsSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M2tsSettings.hs
@@ -0,0 +1,966 @@
+{-# 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.M2tsSettings
+-- 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.M2tsSettings 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.DvbNitSettings
+import Amazonka.MediaConvert.Types.DvbSdtSettings
+import Amazonka.MediaConvert.Types.DvbTdtSettings
+import Amazonka.MediaConvert.Types.M2tsAudioBufferModel
+import Amazonka.MediaConvert.Types.M2tsAudioDuration
+import Amazonka.MediaConvert.Types.M2tsBufferModel
+import Amazonka.MediaConvert.Types.M2tsDataPtsControl
+import Amazonka.MediaConvert.Types.M2tsEbpAudioInterval
+import Amazonka.MediaConvert.Types.M2tsEbpPlacement
+import Amazonka.MediaConvert.Types.M2tsEsRateInPes
+import Amazonka.MediaConvert.Types.M2tsForceTsVideoEbpOrder
+import Amazonka.MediaConvert.Types.M2tsKlvMetadata
+import Amazonka.MediaConvert.Types.M2tsNielsenId3
+import Amazonka.MediaConvert.Types.M2tsPcrControl
+import Amazonka.MediaConvert.Types.M2tsRateMode
+import Amazonka.MediaConvert.Types.M2tsScte35Esam
+import Amazonka.MediaConvert.Types.M2tsScte35Source
+import Amazonka.MediaConvert.Types.M2tsSegmentationMarkers
+import Amazonka.MediaConvert.Types.M2tsSegmentationStyle
+import qualified Amazonka.Prelude as Prelude
+
+-- | MPEG-2 TS container settings. These apply to outputs in a File output
+-- group when the output\'s container (ContainerType) is MPEG-2 Transport
+-- Stream (M2TS). In these assets, data is organized by the program map
+-- table (PMT). Each transport stream program contains subsets of data,
+-- including audio, video, and metadata. Each of these subsets of data has
+-- a numerical label called a packet identifier (PID). Each transport
+-- stream program corresponds to one MediaConvert output. The PMT lists the
+-- types of data in a program along with their PID. Downstream systems and
+-- players use the program map table to look up the PID for each type of
+-- data it accesses and then uses the PIDs to locate specific data within
+-- the asset.
+--
+-- /See:/ 'newM2tsSettings' smart constructor.
+data M2tsSettings = M2tsSettings'
+  { -- | Selects between the DVB and ATSC buffer models for Dolby Digital audio.
+    audioBufferModel :: Prelude.Maybe M2tsAudioBufferModel,
+    -- | Specify this setting only when your output will be consumed by a
+    -- downstream repackaging workflow that is sensitive to very small duration
+    -- differences between video and audio. For this situation, choose Match
+    -- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+    -- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+    -- choose Match video duration, MediaConvert pads the output audio streams
+    -- with silence or trims them to ensure that the total duration of each
+    -- audio stream is at least as long as the total duration of the video
+    -- stream. After padding or trimming, the audio stream duration is no more
+    -- than one frame longer than the video stream. MediaConvert applies audio
+    -- padding or trimming only to the end of the last segment of the output.
+    -- For unsegmented outputs, MediaConvert adds padding only to the end of
+    -- the file. When you keep the default value, any minor discrepancies
+    -- between audio and video duration will depend on your output audio codec.
+    audioDuration :: Prelude.Maybe M2tsAudioDuration,
+    -- | The number of audio frames to insert for each PES packet.
+    audioFramesPerPes :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the packet identifiers (PIDs) for any elementary audio streams
+    -- you include in this output. Specify multiple PIDs as a JSON array.
+    -- Default is the range 482-492.
+    audioPids :: Prelude.Maybe [Prelude.Natural],
+    -- | Specify the output bitrate of the transport stream in bits per second.
+    -- Setting to 0 lets the muxer automatically determine the appropriate
+    -- bitrate. Other common values are 3750000, 7500000, and 15000000.
+    bitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Controls what buffer model to use for accurate interleaving. If set to
+    -- MULTIPLEX, use multiplex buffer model. If set to NONE, this can lead to
+    -- lower latency, but low-memory devices may not be able to play back the
+    -- stream without interruptions.
+    bufferModel :: Prelude.Maybe M2tsBufferModel,
+    -- | If you select ALIGN_TO_VIDEO, MediaConvert writes captions and data
+    -- packets with Presentation Timestamp (PTS) values greater than or equal
+    -- to the first video packet PTS (MediaConvert drops captions and data
+    -- packets with lesser PTS values). Keep the default value (AUTO) to allow
+    -- all PTS values.
+    dataPTSControl :: Prelude.Maybe M2tsDataPtsControl,
+    -- | Use these settings to insert a DVB Network Information Table (NIT) in
+    -- the transport stream of this output. When you work directly in your JSON
+    -- job specification, include this object only when your job has a
+    -- transport stream output and the container settings contain the object
+    -- M2tsSettings.
+    dvbNitSettings :: Prelude.Maybe DvbNitSettings,
+    -- | Use these settings to insert a DVB Service Description Table (SDT) in
+    -- the transport stream of this output. When you work directly in your JSON
+    -- job specification, include this object only when your job has a
+    -- transport stream output and the container settings contain the object
+    -- M2tsSettings.
+    dvbSdtSettings :: Prelude.Maybe DvbSdtSettings,
+    -- | Specify the packet identifiers (PIDs) for DVB subtitle data included in
+    -- this output. Specify multiple PIDs as a JSON array. Default is the range
+    -- 460-479.
+    dvbSubPids :: Prelude.Maybe [Prelude.Natural],
+    -- | Use these settings to insert a DVB Time and Date Table (TDT) in the
+    -- transport stream of this output. When you work directly in your JSON job
+    -- specification, include this object only when your job has a transport
+    -- stream output and the container settings contain the object
+    -- M2tsSettings.
+    dvbTdtSettings :: Prelude.Maybe DvbTdtSettings,
+    -- | Specify the packet identifier (PID) for DVB teletext data you include in
+    -- this output. Default is 499.
+    dvbTeletextPid :: Prelude.Maybe Prelude.Natural,
+    -- | When set to VIDEO_AND_FIXED_INTERVALS, audio EBP markers will be added
+    -- to partitions 3 and 4. The interval between these additional markers
+    -- will be fixed, and will be slightly shorter than the video EBP marker
+    -- interval. When set to VIDEO_INTERVAL, these additional markers will not
+    -- be inserted. Only applicable when EBP segmentation markers are is
+    -- selected (segmentationMarkers is EBP or EBP_LEGACY).
+    ebpAudioInterval :: Prelude.Maybe M2tsEbpAudioInterval,
+    -- | Selects which PIDs to place EBP markers on. They can either be placed
+    -- only on the video PID, or on both the video PID and all audio PIDs. Only
+    -- applicable when EBP segmentation markers are is selected
+    -- (segmentationMarkers is EBP or EBP_LEGACY).
+    ebpPlacement :: Prelude.Maybe M2tsEbpPlacement,
+    -- | Controls whether to include the ES Rate field in the PES header.
+    esRateInPes :: Prelude.Maybe M2tsEsRateInPes,
+    -- | Keep the default value (DEFAULT) unless you know that your audio EBP
+    -- markers are incorrectly appearing before your video EBP markers. To
+    -- correct this problem, set this value to Force (FORCE).
+    forceTsVideoEbpOrder :: Prelude.Maybe M2tsForceTsVideoEbpOrder,
+    -- | The length, in seconds, of each fragment. Only used with EBP markers.
+    fragmentTime :: Prelude.Maybe Prelude.Double,
+    -- | To include key-length-value metadata in this output: Set KLV metadata
+    -- insertion to Passthrough. MediaConvert reads KLV metadata present in
+    -- your input and passes it through to the output transport stream. To
+    -- exclude this KLV metadata: Set KLV metadata insertion to None or leave
+    -- blank.
+    klvMetadata :: Prelude.Maybe M2tsKlvMetadata,
+    -- | Specify the maximum time, in milliseconds, between Program Clock
+    -- References (PCRs) inserted into the transport stream.
+    maxPcrInterval :: Prelude.Maybe Prelude.Natural,
+    -- | When set, enforces that Encoder Boundary Points do not come within the
+    -- specified time interval of each other by looking ahead at input video.
+    -- If another EBP is going to come in within the specified time interval,
+    -- the current EBP is not emitted, and the segment is \"stretched\" to the
+    -- next marker. The lookahead value does not add latency to the system. The
+    -- Live Event must be configured elsewhere to create sufficient latency to
+    -- make the lookahead accurate.
+    minEbpInterval :: Prelude.Maybe Prelude.Natural,
+    -- | If INSERT, Nielsen inaudible tones for media tracking will be detected
+    -- in the input audio and an equivalent ID3 tag will be inserted in the
+    -- output.
+    nielsenId3 :: Prelude.Maybe M2tsNielsenId3,
+    -- | Value in bits per second of extra null packets to insert into the
+    -- transport stream. This can be used if a downstream encryption system
+    -- requires periodic null packets.
+    nullPacketBitrate :: Prelude.Maybe Prelude.Double,
+    -- | The number of milliseconds between instances of this table in the output
+    -- transport stream.
+    patInterval :: Prelude.Maybe Prelude.Natural,
+    -- | When set to PCR_EVERY_PES_PACKET, a Program Clock Reference value is
+    -- inserted for every Packetized Elementary Stream (PES) header. This is
+    -- effective only when the PCR PID is the same as the video or audio
+    -- elementary stream.
+    pcrControl :: Prelude.Maybe M2tsPcrControl,
+    -- | Specify the packet identifier (PID) for the program clock reference
+    -- (PCR) in this output. If you do not specify a value, the service will
+    -- use the value for Video PID (VideoPid).
+    pcrPid :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the number of milliseconds between instances of the program map
+    -- table (PMT) in the output transport stream.
+    pmtInterval :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the packet identifier (PID) for the program map table (PMT)
+    -- itself. Default is 480.
+    pmtPid :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the packet identifier (PID) of the private metadata stream.
+    -- Default is 503.
+    privateMetadataPid :: Prelude.Maybe Prelude.Natural,
+    -- | Use Program number (programNumber) to specify the program number used in
+    -- the program map table (PMT) for this output. Default is 1. Program
+    -- numbers and program map tables are parts of MPEG-2 transport stream
+    -- containers, used for organizing data.
+    programNumber :: Prelude.Maybe Prelude.Natural,
+    -- | When set to CBR, inserts null packets into transport stream to fill
+    -- specified bitrate. When set to VBR, the bitrate setting acts as the
+    -- maximum bitrate, but the output will not be padded up to that bitrate.
+    rateMode :: Prelude.Maybe M2tsRateMode,
+    -- | Include this in your job settings to put SCTE-35 markers in your HLS and
+    -- transport stream outputs at the insertion points that you specify in an
+    -- ESAM XML document. Provide the document in the setting SCC XML (sccXml).
+    scte35Esam :: Prelude.Maybe M2tsScte35Esam,
+    -- | Specify the packet identifier (PID) of the SCTE-35 stream in the
+    -- transport stream.
+    scte35Pid :: Prelude.Maybe Prelude.Natural,
+    -- | For SCTE-35 markers from your input-- Choose Passthrough (PASSTHROUGH)
+    -- if you want SCTE-35 markers that appear in your input to also appear in
+    -- this output. Choose None (NONE) if you don\'t want SCTE-35 markers in
+    -- this output. For SCTE-35 markers from an ESAM XML document-- Choose None
+    -- (NONE). Also provide the ESAM XML as a string in the setting Signal
+    -- processing notification XML (sccXml). Also enable ESAM SCTE-35 (include
+    -- the property scte35Esam).
+    scte35Source :: Prelude.Maybe M2tsScte35Source,
+    -- | Inserts segmentation markers at each segmentation_time period.
+    -- rai_segstart sets the Random Access Indicator bit in the adaptation
+    -- field. rai_adapt sets the RAI bit and adds the current timecode in the
+    -- private data bytes. psi_segstart inserts PAT and PMT tables at the start
+    -- of segments. ebp adds Encoder Boundary Point information to the
+    -- adaptation field as per OpenCable specification OC-SP-EBP-I01-130118.
+    -- ebp_legacy adds Encoder Boundary Point information to the adaptation
+    -- field using a legacy proprietary format.
+    segmentationMarkers :: Prelude.Maybe M2tsSegmentationMarkers,
+    -- | The segmentation style parameter controls how segmentation markers are
+    -- inserted into the transport stream. With avails, it is possible that
+    -- segments may be truncated, which can influence where future segmentation
+    -- markers are inserted. When a segmentation style of \"reset_cadence\" is
+    -- selected and a segment is truncated due to an avail, we will reset the
+    -- segmentation cadence. This means the subsequent segment will have a
+    -- duration of of $segmentation_time seconds. When a segmentation style of
+    -- \"maintain_cadence\" is selected and a segment is truncated due to an
+    -- avail, we will not reset the segmentation cadence. This means the
+    -- subsequent segment will likely be truncated as well. However, all
+    -- segments after that will have a duration of $segmentation_time seconds.
+    -- Note that EBP lookahead is a slight exception to this rule.
+    segmentationStyle :: Prelude.Maybe M2tsSegmentationStyle,
+    -- | Specify the length, in seconds, of each segment. Required unless markers
+    -- is set to _none_.
+    segmentationTime :: Prelude.Maybe Prelude.Double,
+    -- | Packet Identifier (PID) of the ID3 metadata stream in the transport
+    -- stream.
+    timedMetadataPid :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the ID for the transport stream itself in the program map table
+    -- for this output. Transport stream IDs and program map tables are parts
+    -- of MPEG-2 transport stream containers, used for organizing data.
+    transportStreamId :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the packet identifier (PID) of the elementary video stream in
+    -- the transport stream.
+    videoPid :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'M2tsSettings' 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:
+--
+-- 'audioBufferModel', 'm2tsSettings_audioBufferModel' - Selects between the DVB and ATSC buffer models for Dolby Digital audio.
+--
+-- 'audioDuration', 'm2tsSettings_audioDuration' - Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+--
+-- 'audioFramesPerPes', 'm2tsSettings_audioFramesPerPes' - The number of audio frames to insert for each PES packet.
+--
+-- 'audioPids', 'm2tsSettings_audioPids' - Specify the packet identifiers (PIDs) for any elementary audio streams
+-- you include in this output. Specify multiple PIDs as a JSON array.
+-- Default is the range 482-492.
+--
+-- 'bitrate', 'm2tsSettings_bitrate' - Specify the output bitrate of the transport stream in bits per second.
+-- Setting to 0 lets the muxer automatically determine the appropriate
+-- bitrate. Other common values are 3750000, 7500000, and 15000000.
+--
+-- 'bufferModel', 'm2tsSettings_bufferModel' - Controls what buffer model to use for accurate interleaving. If set to
+-- MULTIPLEX, use multiplex buffer model. If set to NONE, this can lead to
+-- lower latency, but low-memory devices may not be able to play back the
+-- stream without interruptions.
+--
+-- 'dataPTSControl', 'm2tsSettings_dataPTSControl' - If you select ALIGN_TO_VIDEO, MediaConvert writes captions and data
+-- packets with Presentation Timestamp (PTS) values greater than or equal
+-- to the first video packet PTS (MediaConvert drops captions and data
+-- packets with lesser PTS values). Keep the default value (AUTO) to allow
+-- all PTS values.
+--
+-- 'dvbNitSettings', 'm2tsSettings_dvbNitSettings' - Use these settings to insert a DVB Network Information Table (NIT) in
+-- the transport stream of this output. When you work directly in your JSON
+-- job specification, include this object only when your job has a
+-- transport stream output and the container settings contain the object
+-- M2tsSettings.
+--
+-- 'dvbSdtSettings', 'm2tsSettings_dvbSdtSettings' - Use these settings to insert a DVB Service Description Table (SDT) in
+-- the transport stream of this output. When you work directly in your JSON
+-- job specification, include this object only when your job has a
+-- transport stream output and the container settings contain the object
+-- M2tsSettings.
+--
+-- 'dvbSubPids', 'm2tsSettings_dvbSubPids' - Specify the packet identifiers (PIDs) for DVB subtitle data included in
+-- this output. Specify multiple PIDs as a JSON array. Default is the range
+-- 460-479.
+--
+-- 'dvbTdtSettings', 'm2tsSettings_dvbTdtSettings' - Use these settings to insert a DVB Time and Date Table (TDT) in the
+-- transport stream of this output. When you work directly in your JSON job
+-- specification, include this object only when your job has a transport
+-- stream output and the container settings contain the object
+-- M2tsSettings.
+--
+-- 'dvbTeletextPid', 'm2tsSettings_dvbTeletextPid' - Specify the packet identifier (PID) for DVB teletext data you include in
+-- this output. Default is 499.
+--
+-- 'ebpAudioInterval', 'm2tsSettings_ebpAudioInterval' - When set to VIDEO_AND_FIXED_INTERVALS, audio EBP markers will be added
+-- to partitions 3 and 4. The interval between these additional markers
+-- will be fixed, and will be slightly shorter than the video EBP marker
+-- interval. When set to VIDEO_INTERVAL, these additional markers will not
+-- be inserted. Only applicable when EBP segmentation markers are is
+-- selected (segmentationMarkers is EBP or EBP_LEGACY).
+--
+-- 'ebpPlacement', 'm2tsSettings_ebpPlacement' - Selects which PIDs to place EBP markers on. They can either be placed
+-- only on the video PID, or on both the video PID and all audio PIDs. Only
+-- applicable when EBP segmentation markers are is selected
+-- (segmentationMarkers is EBP or EBP_LEGACY).
+--
+-- 'esRateInPes', 'm2tsSettings_esRateInPes' - Controls whether to include the ES Rate field in the PES header.
+--
+-- 'forceTsVideoEbpOrder', 'm2tsSettings_forceTsVideoEbpOrder' - Keep the default value (DEFAULT) unless you know that your audio EBP
+-- markers are incorrectly appearing before your video EBP markers. To
+-- correct this problem, set this value to Force (FORCE).
+--
+-- 'fragmentTime', 'm2tsSettings_fragmentTime' - The length, in seconds, of each fragment. Only used with EBP markers.
+--
+-- 'klvMetadata', 'm2tsSettings_klvMetadata' - To include key-length-value metadata in this output: Set KLV metadata
+-- insertion to Passthrough. MediaConvert reads KLV metadata present in
+-- your input and passes it through to the output transport stream. To
+-- exclude this KLV metadata: Set KLV metadata insertion to None or leave
+-- blank.
+--
+-- 'maxPcrInterval', 'm2tsSettings_maxPcrInterval' - Specify the maximum time, in milliseconds, between Program Clock
+-- References (PCRs) inserted into the transport stream.
+--
+-- 'minEbpInterval', 'm2tsSettings_minEbpInterval' - When set, enforces that Encoder Boundary Points do not come within the
+-- specified time interval of each other by looking ahead at input video.
+-- If another EBP is going to come in within the specified time interval,
+-- the current EBP is not emitted, and the segment is \"stretched\" to the
+-- next marker. The lookahead value does not add latency to the system. The
+-- Live Event must be configured elsewhere to create sufficient latency to
+-- make the lookahead accurate.
+--
+-- 'nielsenId3', 'm2tsSettings_nielsenId3' - If INSERT, Nielsen inaudible tones for media tracking will be detected
+-- in the input audio and an equivalent ID3 tag will be inserted in the
+-- output.
+--
+-- 'nullPacketBitrate', 'm2tsSettings_nullPacketBitrate' - Value in bits per second of extra null packets to insert into the
+-- transport stream. This can be used if a downstream encryption system
+-- requires periodic null packets.
+--
+-- 'patInterval', 'm2tsSettings_patInterval' - The number of milliseconds between instances of this table in the output
+-- transport stream.
+--
+-- 'pcrControl', 'm2tsSettings_pcrControl' - When set to PCR_EVERY_PES_PACKET, a Program Clock Reference value is
+-- inserted for every Packetized Elementary Stream (PES) header. This is
+-- effective only when the PCR PID is the same as the video or audio
+-- elementary stream.
+--
+-- 'pcrPid', 'm2tsSettings_pcrPid' - Specify the packet identifier (PID) for the program clock reference
+-- (PCR) in this output. If you do not specify a value, the service will
+-- use the value for Video PID (VideoPid).
+--
+-- 'pmtInterval', 'm2tsSettings_pmtInterval' - Specify the number of milliseconds between instances of the program map
+-- table (PMT) in the output transport stream.
+--
+-- 'pmtPid', 'm2tsSettings_pmtPid' - Specify the packet identifier (PID) for the program map table (PMT)
+-- itself. Default is 480.
+--
+-- 'privateMetadataPid', 'm2tsSettings_privateMetadataPid' - Specify the packet identifier (PID) of the private metadata stream.
+-- Default is 503.
+--
+-- 'programNumber', 'm2tsSettings_programNumber' - Use Program number (programNumber) to specify the program number used in
+-- the program map table (PMT) for this output. Default is 1. Program
+-- numbers and program map tables are parts of MPEG-2 transport stream
+-- containers, used for organizing data.
+--
+-- 'rateMode', 'm2tsSettings_rateMode' - When set to CBR, inserts null packets into transport stream to fill
+-- specified bitrate. When set to VBR, the bitrate setting acts as the
+-- maximum bitrate, but the output will not be padded up to that bitrate.
+--
+-- 'scte35Esam', 'm2tsSettings_scte35Esam' - Include this in your job settings to put SCTE-35 markers in your HLS and
+-- transport stream outputs at the insertion points that you specify in an
+-- ESAM XML document. Provide the document in the setting SCC XML (sccXml).
+--
+-- 'scte35Pid', 'm2tsSettings_scte35Pid' - Specify the packet identifier (PID) of the SCTE-35 stream in the
+-- transport stream.
+--
+-- 'scte35Source', 'm2tsSettings_scte35Source' - For SCTE-35 markers from your input-- Choose Passthrough (PASSTHROUGH)
+-- if you want SCTE-35 markers that appear in your input to also appear in
+-- this output. Choose None (NONE) if you don\'t want SCTE-35 markers in
+-- this output. For SCTE-35 markers from an ESAM XML document-- Choose None
+-- (NONE). Also provide the ESAM XML as a string in the setting Signal
+-- processing notification XML (sccXml). Also enable ESAM SCTE-35 (include
+-- the property scte35Esam).
+--
+-- 'segmentationMarkers', 'm2tsSettings_segmentationMarkers' - Inserts segmentation markers at each segmentation_time period.
+-- rai_segstart sets the Random Access Indicator bit in the adaptation
+-- field. rai_adapt sets the RAI bit and adds the current timecode in the
+-- private data bytes. psi_segstart inserts PAT and PMT tables at the start
+-- of segments. ebp adds Encoder Boundary Point information to the
+-- adaptation field as per OpenCable specification OC-SP-EBP-I01-130118.
+-- ebp_legacy adds Encoder Boundary Point information to the adaptation
+-- field using a legacy proprietary format.
+--
+-- 'segmentationStyle', 'm2tsSettings_segmentationStyle' - The segmentation style parameter controls how segmentation markers are
+-- inserted into the transport stream. With avails, it is possible that
+-- segments may be truncated, which can influence where future segmentation
+-- markers are inserted. When a segmentation style of \"reset_cadence\" is
+-- selected and a segment is truncated due to an avail, we will reset the
+-- segmentation cadence. This means the subsequent segment will have a
+-- duration of of $segmentation_time seconds. When a segmentation style of
+-- \"maintain_cadence\" is selected and a segment is truncated due to an
+-- avail, we will not reset the segmentation cadence. This means the
+-- subsequent segment will likely be truncated as well. However, all
+-- segments after that will have a duration of $segmentation_time seconds.
+-- Note that EBP lookahead is a slight exception to this rule.
+--
+-- 'segmentationTime', 'm2tsSettings_segmentationTime' - Specify the length, in seconds, of each segment. Required unless markers
+-- is set to _none_.
+--
+-- 'timedMetadataPid', 'm2tsSettings_timedMetadataPid' - Packet Identifier (PID) of the ID3 metadata stream in the transport
+-- stream.
+--
+-- 'transportStreamId', 'm2tsSettings_transportStreamId' - Specify the ID for the transport stream itself in the program map table
+-- for this output. Transport stream IDs and program map tables are parts
+-- of MPEG-2 transport stream containers, used for organizing data.
+--
+-- 'videoPid', 'm2tsSettings_videoPid' - Specify the packet identifier (PID) of the elementary video stream in
+-- the transport stream.
+newM2tsSettings ::
+  M2tsSettings
+newM2tsSettings =
+  M2tsSettings'
+    { audioBufferModel = Prelude.Nothing,
+      audioDuration = Prelude.Nothing,
+      audioFramesPerPes = Prelude.Nothing,
+      audioPids = Prelude.Nothing,
+      bitrate = Prelude.Nothing,
+      bufferModel = Prelude.Nothing,
+      dataPTSControl = Prelude.Nothing,
+      dvbNitSettings = Prelude.Nothing,
+      dvbSdtSettings = Prelude.Nothing,
+      dvbSubPids = Prelude.Nothing,
+      dvbTdtSettings = Prelude.Nothing,
+      dvbTeletextPid = Prelude.Nothing,
+      ebpAudioInterval = Prelude.Nothing,
+      ebpPlacement = Prelude.Nothing,
+      esRateInPes = Prelude.Nothing,
+      forceTsVideoEbpOrder = Prelude.Nothing,
+      fragmentTime = Prelude.Nothing,
+      klvMetadata = Prelude.Nothing,
+      maxPcrInterval = Prelude.Nothing,
+      minEbpInterval = Prelude.Nothing,
+      nielsenId3 = Prelude.Nothing,
+      nullPacketBitrate = Prelude.Nothing,
+      patInterval = Prelude.Nothing,
+      pcrControl = Prelude.Nothing,
+      pcrPid = Prelude.Nothing,
+      pmtInterval = Prelude.Nothing,
+      pmtPid = Prelude.Nothing,
+      privateMetadataPid = Prelude.Nothing,
+      programNumber = Prelude.Nothing,
+      rateMode = Prelude.Nothing,
+      scte35Esam = Prelude.Nothing,
+      scte35Pid = Prelude.Nothing,
+      scte35Source = Prelude.Nothing,
+      segmentationMarkers = Prelude.Nothing,
+      segmentationStyle = Prelude.Nothing,
+      segmentationTime = Prelude.Nothing,
+      timedMetadataPid = Prelude.Nothing,
+      transportStreamId = Prelude.Nothing,
+      videoPid = Prelude.Nothing
+    }
+
+-- | Selects between the DVB and ATSC buffer models for Dolby Digital audio.
+m2tsSettings_audioBufferModel :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsAudioBufferModel)
+m2tsSettings_audioBufferModel = Lens.lens (\M2tsSettings' {audioBufferModel} -> audioBufferModel) (\s@M2tsSettings' {} a -> s {audioBufferModel = a} :: M2tsSettings)
+
+-- | Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+m2tsSettings_audioDuration :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsAudioDuration)
+m2tsSettings_audioDuration = Lens.lens (\M2tsSettings' {audioDuration} -> audioDuration) (\s@M2tsSettings' {} a -> s {audioDuration = a} :: M2tsSettings)
+
+-- | The number of audio frames to insert for each PES packet.
+m2tsSettings_audioFramesPerPes :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_audioFramesPerPes = Lens.lens (\M2tsSettings' {audioFramesPerPes} -> audioFramesPerPes) (\s@M2tsSettings' {} a -> s {audioFramesPerPes = a} :: M2tsSettings)
+
+-- | Specify the packet identifiers (PIDs) for any elementary audio streams
+-- you include in this output. Specify multiple PIDs as a JSON array.
+-- Default is the range 482-492.
+m2tsSettings_audioPids :: Lens.Lens' M2tsSettings (Prelude.Maybe [Prelude.Natural])
+m2tsSettings_audioPids = Lens.lens (\M2tsSettings' {audioPids} -> audioPids) (\s@M2tsSettings' {} a -> s {audioPids = a} :: M2tsSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specify the output bitrate of the transport stream in bits per second.
+-- Setting to 0 lets the muxer automatically determine the appropriate
+-- bitrate. Other common values are 3750000, 7500000, and 15000000.
+m2tsSettings_bitrate :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_bitrate = Lens.lens (\M2tsSettings' {bitrate} -> bitrate) (\s@M2tsSettings' {} a -> s {bitrate = a} :: M2tsSettings)
+
+-- | Controls what buffer model to use for accurate interleaving. If set to
+-- MULTIPLEX, use multiplex buffer model. If set to NONE, this can lead to
+-- lower latency, but low-memory devices may not be able to play back the
+-- stream without interruptions.
+m2tsSettings_bufferModel :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsBufferModel)
+m2tsSettings_bufferModel = Lens.lens (\M2tsSettings' {bufferModel} -> bufferModel) (\s@M2tsSettings' {} a -> s {bufferModel = a} :: M2tsSettings)
+
+-- | If you select ALIGN_TO_VIDEO, MediaConvert writes captions and data
+-- packets with Presentation Timestamp (PTS) values greater than or equal
+-- to the first video packet PTS (MediaConvert drops captions and data
+-- packets with lesser PTS values). Keep the default value (AUTO) to allow
+-- all PTS values.
+m2tsSettings_dataPTSControl :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsDataPtsControl)
+m2tsSettings_dataPTSControl = Lens.lens (\M2tsSettings' {dataPTSControl} -> dataPTSControl) (\s@M2tsSettings' {} a -> s {dataPTSControl = a} :: M2tsSettings)
+
+-- | Use these settings to insert a DVB Network Information Table (NIT) in
+-- the transport stream of this output. When you work directly in your JSON
+-- job specification, include this object only when your job has a
+-- transport stream output and the container settings contain the object
+-- M2tsSettings.
+m2tsSettings_dvbNitSettings :: Lens.Lens' M2tsSettings (Prelude.Maybe DvbNitSettings)
+m2tsSettings_dvbNitSettings = Lens.lens (\M2tsSettings' {dvbNitSettings} -> dvbNitSettings) (\s@M2tsSettings' {} a -> s {dvbNitSettings = a} :: M2tsSettings)
+
+-- | Use these settings to insert a DVB Service Description Table (SDT) in
+-- the transport stream of this output. When you work directly in your JSON
+-- job specification, include this object only when your job has a
+-- transport stream output and the container settings contain the object
+-- M2tsSettings.
+m2tsSettings_dvbSdtSettings :: Lens.Lens' M2tsSettings (Prelude.Maybe DvbSdtSettings)
+m2tsSettings_dvbSdtSettings = Lens.lens (\M2tsSettings' {dvbSdtSettings} -> dvbSdtSettings) (\s@M2tsSettings' {} a -> s {dvbSdtSettings = a} :: M2tsSettings)
+
+-- | Specify the packet identifiers (PIDs) for DVB subtitle data included in
+-- this output. Specify multiple PIDs as a JSON array. Default is the range
+-- 460-479.
+m2tsSettings_dvbSubPids :: Lens.Lens' M2tsSettings (Prelude.Maybe [Prelude.Natural])
+m2tsSettings_dvbSubPids = Lens.lens (\M2tsSettings' {dvbSubPids} -> dvbSubPids) (\s@M2tsSettings' {} a -> s {dvbSubPids = a} :: M2tsSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use these settings to insert a DVB Time and Date Table (TDT) in the
+-- transport stream of this output. When you work directly in your JSON job
+-- specification, include this object only when your job has a transport
+-- stream output and the container settings contain the object
+-- M2tsSettings.
+m2tsSettings_dvbTdtSettings :: Lens.Lens' M2tsSettings (Prelude.Maybe DvbTdtSettings)
+m2tsSettings_dvbTdtSettings = Lens.lens (\M2tsSettings' {dvbTdtSettings} -> dvbTdtSettings) (\s@M2tsSettings' {} a -> s {dvbTdtSettings = a} :: M2tsSettings)
+
+-- | Specify the packet identifier (PID) for DVB teletext data you include in
+-- this output. Default is 499.
+m2tsSettings_dvbTeletextPid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_dvbTeletextPid = Lens.lens (\M2tsSettings' {dvbTeletextPid} -> dvbTeletextPid) (\s@M2tsSettings' {} a -> s {dvbTeletextPid = a} :: M2tsSettings)
+
+-- | When set to VIDEO_AND_FIXED_INTERVALS, audio EBP markers will be added
+-- to partitions 3 and 4. The interval between these additional markers
+-- will be fixed, and will be slightly shorter than the video EBP marker
+-- interval. When set to VIDEO_INTERVAL, these additional markers will not
+-- be inserted. Only applicable when EBP segmentation markers are is
+-- selected (segmentationMarkers is EBP or EBP_LEGACY).
+m2tsSettings_ebpAudioInterval :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsEbpAudioInterval)
+m2tsSettings_ebpAudioInterval = Lens.lens (\M2tsSettings' {ebpAudioInterval} -> ebpAudioInterval) (\s@M2tsSettings' {} a -> s {ebpAudioInterval = a} :: M2tsSettings)
+
+-- | Selects which PIDs to place EBP markers on. They can either be placed
+-- only on the video PID, or on both the video PID and all audio PIDs. Only
+-- applicable when EBP segmentation markers are is selected
+-- (segmentationMarkers is EBP or EBP_LEGACY).
+m2tsSettings_ebpPlacement :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsEbpPlacement)
+m2tsSettings_ebpPlacement = Lens.lens (\M2tsSettings' {ebpPlacement} -> ebpPlacement) (\s@M2tsSettings' {} a -> s {ebpPlacement = a} :: M2tsSettings)
+
+-- | Controls whether to include the ES Rate field in the PES header.
+m2tsSettings_esRateInPes :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsEsRateInPes)
+m2tsSettings_esRateInPes = Lens.lens (\M2tsSettings' {esRateInPes} -> esRateInPes) (\s@M2tsSettings' {} a -> s {esRateInPes = a} :: M2tsSettings)
+
+-- | Keep the default value (DEFAULT) unless you know that your audio EBP
+-- markers are incorrectly appearing before your video EBP markers. To
+-- correct this problem, set this value to Force (FORCE).
+m2tsSettings_forceTsVideoEbpOrder :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsForceTsVideoEbpOrder)
+m2tsSettings_forceTsVideoEbpOrder = Lens.lens (\M2tsSettings' {forceTsVideoEbpOrder} -> forceTsVideoEbpOrder) (\s@M2tsSettings' {} a -> s {forceTsVideoEbpOrder = a} :: M2tsSettings)
+
+-- | The length, in seconds, of each fragment. Only used with EBP markers.
+m2tsSettings_fragmentTime :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Double)
+m2tsSettings_fragmentTime = Lens.lens (\M2tsSettings' {fragmentTime} -> fragmentTime) (\s@M2tsSettings' {} a -> s {fragmentTime = a} :: M2tsSettings)
+
+-- | To include key-length-value metadata in this output: Set KLV metadata
+-- insertion to Passthrough. MediaConvert reads KLV metadata present in
+-- your input and passes it through to the output transport stream. To
+-- exclude this KLV metadata: Set KLV metadata insertion to None or leave
+-- blank.
+m2tsSettings_klvMetadata :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsKlvMetadata)
+m2tsSettings_klvMetadata = Lens.lens (\M2tsSettings' {klvMetadata} -> klvMetadata) (\s@M2tsSettings' {} a -> s {klvMetadata = a} :: M2tsSettings)
+
+-- | Specify the maximum time, in milliseconds, between Program Clock
+-- References (PCRs) inserted into the transport stream.
+m2tsSettings_maxPcrInterval :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_maxPcrInterval = Lens.lens (\M2tsSettings' {maxPcrInterval} -> maxPcrInterval) (\s@M2tsSettings' {} a -> s {maxPcrInterval = a} :: M2tsSettings)
+
+-- | When set, enforces that Encoder Boundary Points do not come within the
+-- specified time interval of each other by looking ahead at input video.
+-- If another EBP is going to come in within the specified time interval,
+-- the current EBP is not emitted, and the segment is \"stretched\" to the
+-- next marker. The lookahead value does not add latency to the system. The
+-- Live Event must be configured elsewhere to create sufficient latency to
+-- make the lookahead accurate.
+m2tsSettings_minEbpInterval :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_minEbpInterval = Lens.lens (\M2tsSettings' {minEbpInterval} -> minEbpInterval) (\s@M2tsSettings' {} a -> s {minEbpInterval = a} :: M2tsSettings)
+
+-- | If INSERT, Nielsen inaudible tones for media tracking will be detected
+-- in the input audio and an equivalent ID3 tag will be inserted in the
+-- output.
+m2tsSettings_nielsenId3 :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsNielsenId3)
+m2tsSettings_nielsenId3 = Lens.lens (\M2tsSettings' {nielsenId3} -> nielsenId3) (\s@M2tsSettings' {} a -> s {nielsenId3 = a} :: M2tsSettings)
+
+-- | Value in bits per second of extra null packets to insert into the
+-- transport stream. This can be used if a downstream encryption system
+-- requires periodic null packets.
+m2tsSettings_nullPacketBitrate :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Double)
+m2tsSettings_nullPacketBitrate = Lens.lens (\M2tsSettings' {nullPacketBitrate} -> nullPacketBitrate) (\s@M2tsSettings' {} a -> s {nullPacketBitrate = a} :: M2tsSettings)
+
+-- | The number of milliseconds between instances of this table in the output
+-- transport stream.
+m2tsSettings_patInterval :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_patInterval = Lens.lens (\M2tsSettings' {patInterval} -> patInterval) (\s@M2tsSettings' {} a -> s {patInterval = a} :: M2tsSettings)
+
+-- | When set to PCR_EVERY_PES_PACKET, a Program Clock Reference value is
+-- inserted for every Packetized Elementary Stream (PES) header. This is
+-- effective only when the PCR PID is the same as the video or audio
+-- elementary stream.
+m2tsSettings_pcrControl :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsPcrControl)
+m2tsSettings_pcrControl = Lens.lens (\M2tsSettings' {pcrControl} -> pcrControl) (\s@M2tsSettings' {} a -> s {pcrControl = a} :: M2tsSettings)
+
+-- | Specify the packet identifier (PID) for the program clock reference
+-- (PCR) in this output. If you do not specify a value, the service will
+-- use the value for Video PID (VideoPid).
+m2tsSettings_pcrPid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_pcrPid = Lens.lens (\M2tsSettings' {pcrPid} -> pcrPid) (\s@M2tsSettings' {} a -> s {pcrPid = a} :: M2tsSettings)
+
+-- | Specify the number of milliseconds between instances of the program map
+-- table (PMT) in the output transport stream.
+m2tsSettings_pmtInterval :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_pmtInterval = Lens.lens (\M2tsSettings' {pmtInterval} -> pmtInterval) (\s@M2tsSettings' {} a -> s {pmtInterval = a} :: M2tsSettings)
+
+-- | Specify the packet identifier (PID) for the program map table (PMT)
+-- itself. Default is 480.
+m2tsSettings_pmtPid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_pmtPid = Lens.lens (\M2tsSettings' {pmtPid} -> pmtPid) (\s@M2tsSettings' {} a -> s {pmtPid = a} :: M2tsSettings)
+
+-- | Specify the packet identifier (PID) of the private metadata stream.
+-- Default is 503.
+m2tsSettings_privateMetadataPid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_privateMetadataPid = Lens.lens (\M2tsSettings' {privateMetadataPid} -> privateMetadataPid) (\s@M2tsSettings' {} a -> s {privateMetadataPid = a} :: M2tsSettings)
+
+-- | Use Program number (programNumber) to specify the program number used in
+-- the program map table (PMT) for this output. Default is 1. Program
+-- numbers and program map tables are parts of MPEG-2 transport stream
+-- containers, used for organizing data.
+m2tsSettings_programNumber :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_programNumber = Lens.lens (\M2tsSettings' {programNumber} -> programNumber) (\s@M2tsSettings' {} a -> s {programNumber = a} :: M2tsSettings)
+
+-- | When set to CBR, inserts null packets into transport stream to fill
+-- specified bitrate. When set to VBR, the bitrate setting acts as the
+-- maximum bitrate, but the output will not be padded up to that bitrate.
+m2tsSettings_rateMode :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsRateMode)
+m2tsSettings_rateMode = Lens.lens (\M2tsSettings' {rateMode} -> rateMode) (\s@M2tsSettings' {} a -> s {rateMode = a} :: M2tsSettings)
+
+-- | Include this in your job settings to put SCTE-35 markers in your HLS and
+-- transport stream outputs at the insertion points that you specify in an
+-- ESAM XML document. Provide the document in the setting SCC XML (sccXml).
+m2tsSettings_scte35Esam :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsScte35Esam)
+m2tsSettings_scte35Esam = Lens.lens (\M2tsSettings' {scte35Esam} -> scte35Esam) (\s@M2tsSettings' {} a -> s {scte35Esam = a} :: M2tsSettings)
+
+-- | Specify the packet identifier (PID) of the SCTE-35 stream in the
+-- transport stream.
+m2tsSettings_scte35Pid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_scte35Pid = Lens.lens (\M2tsSettings' {scte35Pid} -> scte35Pid) (\s@M2tsSettings' {} a -> s {scte35Pid = a} :: M2tsSettings)
+
+-- | For SCTE-35 markers from your input-- Choose Passthrough (PASSTHROUGH)
+-- if you want SCTE-35 markers that appear in your input to also appear in
+-- this output. Choose None (NONE) if you don\'t want SCTE-35 markers in
+-- this output. For SCTE-35 markers from an ESAM XML document-- Choose None
+-- (NONE). Also provide the ESAM XML as a string in the setting Signal
+-- processing notification XML (sccXml). Also enable ESAM SCTE-35 (include
+-- the property scte35Esam).
+m2tsSettings_scte35Source :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsScte35Source)
+m2tsSettings_scte35Source = Lens.lens (\M2tsSettings' {scte35Source} -> scte35Source) (\s@M2tsSettings' {} a -> s {scte35Source = a} :: M2tsSettings)
+
+-- | Inserts segmentation markers at each segmentation_time period.
+-- rai_segstart sets the Random Access Indicator bit in the adaptation
+-- field. rai_adapt sets the RAI bit and adds the current timecode in the
+-- private data bytes. psi_segstart inserts PAT and PMT tables at the start
+-- of segments. ebp adds Encoder Boundary Point information to the
+-- adaptation field as per OpenCable specification OC-SP-EBP-I01-130118.
+-- ebp_legacy adds Encoder Boundary Point information to the adaptation
+-- field using a legacy proprietary format.
+m2tsSettings_segmentationMarkers :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsSegmentationMarkers)
+m2tsSettings_segmentationMarkers = Lens.lens (\M2tsSettings' {segmentationMarkers} -> segmentationMarkers) (\s@M2tsSettings' {} a -> s {segmentationMarkers = a} :: M2tsSettings)
+
+-- | The segmentation style parameter controls how segmentation markers are
+-- inserted into the transport stream. With avails, it is possible that
+-- segments may be truncated, which can influence where future segmentation
+-- markers are inserted. When a segmentation style of \"reset_cadence\" is
+-- selected and a segment is truncated due to an avail, we will reset the
+-- segmentation cadence. This means the subsequent segment will have a
+-- duration of of $segmentation_time seconds. When a segmentation style of
+-- \"maintain_cadence\" is selected and a segment is truncated due to an
+-- avail, we will not reset the segmentation cadence. This means the
+-- subsequent segment will likely be truncated as well. However, all
+-- segments after that will have a duration of $segmentation_time seconds.
+-- Note that EBP lookahead is a slight exception to this rule.
+m2tsSettings_segmentationStyle :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsSegmentationStyle)
+m2tsSettings_segmentationStyle = Lens.lens (\M2tsSettings' {segmentationStyle} -> segmentationStyle) (\s@M2tsSettings' {} a -> s {segmentationStyle = a} :: M2tsSettings)
+
+-- | Specify the length, in seconds, of each segment. Required unless markers
+-- is set to _none_.
+m2tsSettings_segmentationTime :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Double)
+m2tsSettings_segmentationTime = Lens.lens (\M2tsSettings' {segmentationTime} -> segmentationTime) (\s@M2tsSettings' {} a -> s {segmentationTime = a} :: M2tsSettings)
+
+-- | Packet Identifier (PID) of the ID3 metadata stream in the transport
+-- stream.
+m2tsSettings_timedMetadataPid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_timedMetadataPid = Lens.lens (\M2tsSettings' {timedMetadataPid} -> timedMetadataPid) (\s@M2tsSettings' {} a -> s {timedMetadataPid = a} :: M2tsSettings)
+
+-- | Specify the ID for the transport stream itself in the program map table
+-- for this output. Transport stream IDs and program map tables are parts
+-- of MPEG-2 transport stream containers, used for organizing data.
+m2tsSettings_transportStreamId :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_transportStreamId = Lens.lens (\M2tsSettings' {transportStreamId} -> transportStreamId) (\s@M2tsSettings' {} a -> s {transportStreamId = a} :: M2tsSettings)
+
+-- | Specify the packet identifier (PID) of the elementary video stream in
+-- the transport stream.
+m2tsSettings_videoPid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
+m2tsSettings_videoPid = Lens.lens (\M2tsSettings' {videoPid} -> videoPid) (\s@M2tsSettings' {} a -> s {videoPid = a} :: M2tsSettings)
+
+instance Data.FromJSON M2tsSettings where
+  parseJSON =
+    Data.withObject
+      "M2tsSettings"
+      ( \x ->
+          M2tsSettings'
+            Prelude.<$> (x Data..:? "audioBufferModel")
+            Prelude.<*> (x Data..:? "audioDuration")
+            Prelude.<*> (x Data..:? "audioFramesPerPes")
+            Prelude.<*> (x Data..:? "audioPids" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "bitrate")
+            Prelude.<*> (x Data..:? "bufferModel")
+            Prelude.<*> (x Data..:? "dataPTSControl")
+            Prelude.<*> (x Data..:? "dvbNitSettings")
+            Prelude.<*> (x Data..:? "dvbSdtSettings")
+            Prelude.<*> (x Data..:? "dvbSubPids" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "dvbTdtSettings")
+            Prelude.<*> (x Data..:? "dvbTeletextPid")
+            Prelude.<*> (x Data..:? "ebpAudioInterval")
+            Prelude.<*> (x Data..:? "ebpPlacement")
+            Prelude.<*> (x Data..:? "esRateInPes")
+            Prelude.<*> (x Data..:? "forceTsVideoEbpOrder")
+            Prelude.<*> (x Data..:? "fragmentTime")
+            Prelude.<*> (x Data..:? "klvMetadata")
+            Prelude.<*> (x Data..:? "maxPcrInterval")
+            Prelude.<*> (x Data..:? "minEbpInterval")
+            Prelude.<*> (x Data..:? "nielsenId3")
+            Prelude.<*> (x Data..:? "nullPacketBitrate")
+            Prelude.<*> (x Data..:? "patInterval")
+            Prelude.<*> (x Data..:? "pcrControl")
+            Prelude.<*> (x Data..:? "pcrPid")
+            Prelude.<*> (x Data..:? "pmtInterval")
+            Prelude.<*> (x Data..:? "pmtPid")
+            Prelude.<*> (x Data..:? "privateMetadataPid")
+            Prelude.<*> (x Data..:? "programNumber")
+            Prelude.<*> (x Data..:? "rateMode")
+            Prelude.<*> (x Data..:? "scte35Esam")
+            Prelude.<*> (x Data..:? "scte35Pid")
+            Prelude.<*> (x Data..:? "scte35Source")
+            Prelude.<*> (x Data..:? "segmentationMarkers")
+            Prelude.<*> (x Data..:? "segmentationStyle")
+            Prelude.<*> (x Data..:? "segmentationTime")
+            Prelude.<*> (x Data..:? "timedMetadataPid")
+            Prelude.<*> (x Data..:? "transportStreamId")
+            Prelude.<*> (x Data..:? "videoPid")
+      )
+
+instance Prelude.Hashable M2tsSettings where
+  hashWithSalt _salt M2tsSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` audioBufferModel
+      `Prelude.hashWithSalt` audioDuration
+      `Prelude.hashWithSalt` audioFramesPerPes
+      `Prelude.hashWithSalt` audioPids
+      `Prelude.hashWithSalt` bitrate
+      `Prelude.hashWithSalt` bufferModel
+      `Prelude.hashWithSalt` dataPTSControl
+      `Prelude.hashWithSalt` dvbNitSettings
+      `Prelude.hashWithSalt` dvbSdtSettings
+      `Prelude.hashWithSalt` dvbSubPids
+      `Prelude.hashWithSalt` dvbTdtSettings
+      `Prelude.hashWithSalt` dvbTeletextPid
+      `Prelude.hashWithSalt` ebpAudioInterval
+      `Prelude.hashWithSalt` ebpPlacement
+      `Prelude.hashWithSalt` esRateInPes
+      `Prelude.hashWithSalt` forceTsVideoEbpOrder
+      `Prelude.hashWithSalt` fragmentTime
+      `Prelude.hashWithSalt` klvMetadata
+      `Prelude.hashWithSalt` maxPcrInterval
+      `Prelude.hashWithSalt` minEbpInterval
+      `Prelude.hashWithSalt` nielsenId3
+      `Prelude.hashWithSalt` nullPacketBitrate
+      `Prelude.hashWithSalt` patInterval
+      `Prelude.hashWithSalt` pcrControl
+      `Prelude.hashWithSalt` pcrPid
+      `Prelude.hashWithSalt` pmtInterval
+      `Prelude.hashWithSalt` pmtPid
+      `Prelude.hashWithSalt` privateMetadataPid
+      `Prelude.hashWithSalt` programNumber
+      `Prelude.hashWithSalt` rateMode
+      `Prelude.hashWithSalt` scte35Esam
+      `Prelude.hashWithSalt` scte35Pid
+      `Prelude.hashWithSalt` scte35Source
+      `Prelude.hashWithSalt` segmentationMarkers
+      `Prelude.hashWithSalt` segmentationStyle
+      `Prelude.hashWithSalt` segmentationTime
+      `Prelude.hashWithSalt` timedMetadataPid
+      `Prelude.hashWithSalt` transportStreamId
+      `Prelude.hashWithSalt` videoPid
+
+instance Prelude.NFData M2tsSettings where
+  rnf M2tsSettings' {..} =
+    Prelude.rnf audioBufferModel
+      `Prelude.seq` Prelude.rnf audioDuration
+      `Prelude.seq` Prelude.rnf audioFramesPerPes
+      `Prelude.seq` Prelude.rnf audioPids
+      `Prelude.seq` Prelude.rnf bitrate
+      `Prelude.seq` Prelude.rnf bufferModel
+      `Prelude.seq` Prelude.rnf dataPTSControl
+      `Prelude.seq` Prelude.rnf dvbNitSettings
+      `Prelude.seq` Prelude.rnf dvbSdtSettings
+      `Prelude.seq` Prelude.rnf dvbSubPids
+      `Prelude.seq` Prelude.rnf dvbTdtSettings
+      `Prelude.seq` Prelude.rnf dvbTeletextPid
+      `Prelude.seq` Prelude.rnf ebpAudioInterval
+      `Prelude.seq` Prelude.rnf ebpPlacement
+      `Prelude.seq` Prelude.rnf esRateInPes
+      `Prelude.seq` Prelude.rnf forceTsVideoEbpOrder
+      `Prelude.seq` Prelude.rnf fragmentTime
+      `Prelude.seq` Prelude.rnf klvMetadata
+      `Prelude.seq` Prelude.rnf maxPcrInterval
+      `Prelude.seq` Prelude.rnf minEbpInterval
+      `Prelude.seq` Prelude.rnf nielsenId3
+      `Prelude.seq` Prelude.rnf
+        nullPacketBitrate
+      `Prelude.seq` Prelude.rnf patInterval
+      `Prelude.seq` Prelude.rnf pcrControl
+      `Prelude.seq` Prelude.rnf pcrPid
+      `Prelude.seq` Prelude.rnf
+        pmtInterval
+      `Prelude.seq` Prelude.rnf
+        pmtPid
+      `Prelude.seq` Prelude.rnf
+        privateMetadataPid
+      `Prelude.seq` Prelude.rnf
+        programNumber
+      `Prelude.seq` Prelude.rnf
+        rateMode
+      `Prelude.seq` Prelude.rnf
+        scte35Esam
+      `Prelude.seq` Prelude.rnf
+        scte35Pid
+      `Prelude.seq` Prelude.rnf
+        scte35Source
+      `Prelude.seq` Prelude.rnf
+        segmentationMarkers
+      `Prelude.seq` Prelude.rnf
+        segmentationStyle
+      `Prelude.seq` Prelude.rnf
+        segmentationTime
+      `Prelude.seq` Prelude.rnf
+        timedMetadataPid
+      `Prelude.seq` Prelude.rnf
+        transportStreamId
+      `Prelude.seq` Prelude.rnf
+        videoPid
+
+instance Data.ToJSON M2tsSettings where
+  toJSON M2tsSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("audioBufferModel" Data..=)
+              Prelude.<$> audioBufferModel,
+            ("audioDuration" Data..=) Prelude.<$> audioDuration,
+            ("audioFramesPerPes" Data..=)
+              Prelude.<$> audioFramesPerPes,
+            ("audioPids" Data..=) Prelude.<$> audioPids,
+            ("bitrate" Data..=) Prelude.<$> bitrate,
+            ("bufferModel" Data..=) Prelude.<$> bufferModel,
+            ("dataPTSControl" Data..=)
+              Prelude.<$> dataPTSControl,
+            ("dvbNitSettings" Data..=)
+              Prelude.<$> dvbNitSettings,
+            ("dvbSdtSettings" Data..=)
+              Prelude.<$> dvbSdtSettings,
+            ("dvbSubPids" Data..=) Prelude.<$> dvbSubPids,
+            ("dvbTdtSettings" Data..=)
+              Prelude.<$> dvbTdtSettings,
+            ("dvbTeletextPid" Data..=)
+              Prelude.<$> dvbTeletextPid,
+            ("ebpAudioInterval" Data..=)
+              Prelude.<$> ebpAudioInterval,
+            ("ebpPlacement" Data..=) Prelude.<$> ebpPlacement,
+            ("esRateInPes" Data..=) Prelude.<$> esRateInPes,
+            ("forceTsVideoEbpOrder" Data..=)
+              Prelude.<$> forceTsVideoEbpOrder,
+            ("fragmentTime" Data..=) Prelude.<$> fragmentTime,
+            ("klvMetadata" Data..=) Prelude.<$> klvMetadata,
+            ("maxPcrInterval" Data..=)
+              Prelude.<$> maxPcrInterval,
+            ("minEbpInterval" Data..=)
+              Prelude.<$> minEbpInterval,
+            ("nielsenId3" Data..=) Prelude.<$> nielsenId3,
+            ("nullPacketBitrate" Data..=)
+              Prelude.<$> nullPacketBitrate,
+            ("patInterval" Data..=) Prelude.<$> patInterval,
+            ("pcrControl" Data..=) Prelude.<$> pcrControl,
+            ("pcrPid" Data..=) Prelude.<$> pcrPid,
+            ("pmtInterval" Data..=) Prelude.<$> pmtInterval,
+            ("pmtPid" Data..=) Prelude.<$> pmtPid,
+            ("privateMetadataPid" Data..=)
+              Prelude.<$> privateMetadataPid,
+            ("programNumber" Data..=) Prelude.<$> programNumber,
+            ("rateMode" Data..=) Prelude.<$> rateMode,
+            ("scte35Esam" Data..=) Prelude.<$> scte35Esam,
+            ("scte35Pid" Data..=) Prelude.<$> scte35Pid,
+            ("scte35Source" Data..=) Prelude.<$> scte35Source,
+            ("segmentationMarkers" Data..=)
+              Prelude.<$> segmentationMarkers,
+            ("segmentationStyle" Data..=)
+              Prelude.<$> segmentationStyle,
+            ("segmentationTime" Data..=)
+              Prelude.<$> segmentationTime,
+            ("timedMetadataPid" Data..=)
+              Prelude.<$> timedMetadataPid,
+            ("transportStreamId" Data..=)
+              Prelude.<$> transportStreamId,
+            ("videoPid" Data..=) Prelude.<$> videoPid
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/M3u8AudioDuration.hs b/gen/Amazonka/MediaConvert/Types/M3u8AudioDuration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M3u8AudioDuration.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M3u8AudioDuration
+-- 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.M3u8AudioDuration
+  ( M3u8AudioDuration
+      ( ..,
+        M3u8AudioDuration_DEFAULT_CODEC_DURATION,
+        M3u8AudioDuration_MATCH_VIDEO_DURATION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+newtype M3u8AudioDuration = M3u8AudioDuration'
+  { fromM3u8AudioDuration ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M3u8AudioDuration_DEFAULT_CODEC_DURATION :: M3u8AudioDuration
+pattern M3u8AudioDuration_DEFAULT_CODEC_DURATION = M3u8AudioDuration' "DEFAULT_CODEC_DURATION"
+
+pattern M3u8AudioDuration_MATCH_VIDEO_DURATION :: M3u8AudioDuration
+pattern M3u8AudioDuration_MATCH_VIDEO_DURATION = M3u8AudioDuration' "MATCH_VIDEO_DURATION"
+
+{-# COMPLETE
+  M3u8AudioDuration_DEFAULT_CODEC_DURATION,
+  M3u8AudioDuration_MATCH_VIDEO_DURATION,
+  M3u8AudioDuration'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M3u8DataPtsControl.hs b/gen/Amazonka/MediaConvert/Types/M3u8DataPtsControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M3u8DataPtsControl.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M3u8DataPtsControl
+-- 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.M3u8DataPtsControl
+  ( M3u8DataPtsControl
+      ( ..,
+        M3u8DataPtsControl_ALIGN_TO_VIDEO,
+        M3u8DataPtsControl_AUTO
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you select ALIGN_TO_VIDEO, MediaConvert writes captions and data
+-- packets with Presentation Timestamp (PTS) values greater than or equal
+-- to the first video packet PTS (MediaConvert drops captions and data
+-- packets with lesser PTS values). Keep the default value (AUTO) to allow
+-- all PTS values.
+newtype M3u8DataPtsControl = M3u8DataPtsControl'
+  { fromM3u8DataPtsControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M3u8DataPtsControl_ALIGN_TO_VIDEO :: M3u8DataPtsControl
+pattern M3u8DataPtsControl_ALIGN_TO_VIDEO = M3u8DataPtsControl' "ALIGN_TO_VIDEO"
+
+pattern M3u8DataPtsControl_AUTO :: M3u8DataPtsControl
+pattern M3u8DataPtsControl_AUTO = M3u8DataPtsControl' "AUTO"
+
+{-# COMPLETE
+  M3u8DataPtsControl_ALIGN_TO_VIDEO,
+  M3u8DataPtsControl_AUTO,
+  M3u8DataPtsControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M3u8NielsenId3.hs b/gen/Amazonka/MediaConvert/Types/M3u8NielsenId3.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M3u8NielsenId3.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M3u8NielsenId3
+-- 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.M3u8NielsenId3
+  ( M3u8NielsenId3
+      ( ..,
+        M3u8NielsenId3_INSERT,
+        M3u8NielsenId3_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If INSERT, Nielsen inaudible tones for media tracking will be detected
+-- in the input audio and an equivalent ID3 tag will be inserted in the
+-- output.
+newtype M3u8NielsenId3 = M3u8NielsenId3'
+  { fromM3u8NielsenId3 ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M3u8NielsenId3_INSERT :: M3u8NielsenId3
+pattern M3u8NielsenId3_INSERT = M3u8NielsenId3' "INSERT"
+
+pattern M3u8NielsenId3_NONE :: M3u8NielsenId3
+pattern M3u8NielsenId3_NONE = M3u8NielsenId3' "NONE"
+
+{-# COMPLETE
+  M3u8NielsenId3_INSERT,
+  M3u8NielsenId3_NONE,
+  M3u8NielsenId3'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M3u8PcrControl.hs b/gen/Amazonka/MediaConvert/Types/M3u8PcrControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M3u8PcrControl.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M3u8PcrControl
+-- 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.M3u8PcrControl
+  ( M3u8PcrControl
+      ( ..,
+        M3u8PcrControl_CONFIGURED_PCR_PERIOD,
+        M3u8PcrControl_PCR_EVERY_PES_PACKET
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to PCR_EVERY_PES_PACKET a Program Clock Reference value is
+-- inserted for every Packetized Elementary Stream (PES) header. This
+-- parameter is effective only when the PCR PID is the same as the video or
+-- audio elementary stream.
+newtype M3u8PcrControl = M3u8PcrControl'
+  { fromM3u8PcrControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M3u8PcrControl_CONFIGURED_PCR_PERIOD :: M3u8PcrControl
+pattern M3u8PcrControl_CONFIGURED_PCR_PERIOD = M3u8PcrControl' "CONFIGURED_PCR_PERIOD"
+
+pattern M3u8PcrControl_PCR_EVERY_PES_PACKET :: M3u8PcrControl
+pattern M3u8PcrControl_PCR_EVERY_PES_PACKET = M3u8PcrControl' "PCR_EVERY_PES_PACKET"
+
+{-# COMPLETE
+  M3u8PcrControl_CONFIGURED_PCR_PERIOD,
+  M3u8PcrControl_PCR_EVERY_PES_PACKET,
+  M3u8PcrControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M3u8Scte35Source.hs b/gen/Amazonka/MediaConvert/Types/M3u8Scte35Source.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M3u8Scte35Source.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.M3u8Scte35Source
+-- 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.M3u8Scte35Source
+  ( M3u8Scte35Source
+      ( ..,
+        M3u8Scte35Source_NONE,
+        M3u8Scte35Source_PASSTHROUGH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | For SCTE-35 markers from your input-- Choose Passthrough (PASSTHROUGH)
+-- if you want SCTE-35 markers that appear in your input to also appear in
+-- this output. Choose None (NONE) if you don\'t want SCTE-35 markers in
+-- this output. For SCTE-35 markers from an ESAM XML document-- Choose None
+-- (NONE) if you don\'t want manifest conditioning. Choose Passthrough
+-- (PASSTHROUGH) and choose Ad markers (adMarkers) if you do want manifest
+-- conditioning. In both cases, also provide the ESAM XML as a string in
+-- the setting Signal processing notification XML (sccXml).
+newtype M3u8Scte35Source = M3u8Scte35Source'
+  { fromM3u8Scte35Source ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern M3u8Scte35Source_NONE :: M3u8Scte35Source
+pattern M3u8Scte35Source_NONE = M3u8Scte35Source' "NONE"
+
+pattern M3u8Scte35Source_PASSTHROUGH :: M3u8Scte35Source
+pattern M3u8Scte35Source_PASSTHROUGH = M3u8Scte35Source' "PASSTHROUGH"
+
+{-# COMPLETE
+  M3u8Scte35Source_NONE,
+  M3u8Scte35Source_PASSTHROUGH,
+  M3u8Scte35Source'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/M3u8Settings.hs b/gen/Amazonka/MediaConvert/Types/M3u8Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/M3u8Settings.hs
@@ -0,0 +1,462 @@
+{-# 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.M3u8Settings
+-- 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.M3u8Settings 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.M3u8AudioDuration
+import Amazonka.MediaConvert.Types.M3u8DataPtsControl
+import Amazonka.MediaConvert.Types.M3u8NielsenId3
+import Amazonka.MediaConvert.Types.M3u8PcrControl
+import Amazonka.MediaConvert.Types.M3u8Scte35Source
+import Amazonka.MediaConvert.Types.TimedMetadata
+import qualified Amazonka.Prelude as Prelude
+
+-- | These settings relate to the MPEG-2 transport stream (MPEG2-TS)
+-- container for the MPEG2-TS segments in your HLS outputs.
+--
+-- /See:/ 'newM3u8Settings' smart constructor.
+data M3u8Settings = M3u8Settings'
+  { -- | Specify this setting only when your output will be consumed by a
+    -- downstream repackaging workflow that is sensitive to very small duration
+    -- differences between video and audio. For this situation, choose Match
+    -- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+    -- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+    -- choose Match video duration, MediaConvert pads the output audio streams
+    -- with silence or trims them to ensure that the total duration of each
+    -- audio stream is at least as long as the total duration of the video
+    -- stream. After padding or trimming, the audio stream duration is no more
+    -- than one frame longer than the video stream. MediaConvert applies audio
+    -- padding or trimming only to the end of the last segment of the output.
+    -- For unsegmented outputs, MediaConvert adds padding only to the end of
+    -- the file. When you keep the default value, any minor discrepancies
+    -- between audio and video duration will depend on your output audio codec.
+    audioDuration :: Prelude.Maybe M3u8AudioDuration,
+    -- | The number of audio frames to insert for each PES packet.
+    audioFramesPerPes :: Prelude.Maybe Prelude.Natural,
+    -- | Packet Identifier (PID) of the elementary audio stream(s) in the
+    -- transport stream. Multiple values are accepted, and can be entered in
+    -- ranges and\/or by comma separation.
+    audioPids :: Prelude.Maybe [Prelude.Natural],
+    -- | If you select ALIGN_TO_VIDEO, MediaConvert writes captions and data
+    -- packets with Presentation Timestamp (PTS) values greater than or equal
+    -- to the first video packet PTS (MediaConvert drops captions and data
+    -- packets with lesser PTS values). Keep the default value (AUTO) to allow
+    -- all PTS values.
+    dataPTSControl :: Prelude.Maybe M3u8DataPtsControl,
+    -- | Specify the maximum time, in milliseconds, between Program Clock
+    -- References (PCRs) inserted into the transport stream.
+    maxPcrInterval :: Prelude.Maybe Prelude.Natural,
+    -- | If INSERT, Nielsen inaudible tones for media tracking will be detected
+    -- in the input audio and an equivalent ID3 tag will be inserted in the
+    -- output.
+    nielsenId3 :: Prelude.Maybe M3u8NielsenId3,
+    -- | The number of milliseconds between instances of this table in the output
+    -- transport stream.
+    patInterval :: Prelude.Maybe Prelude.Natural,
+    -- | When set to PCR_EVERY_PES_PACKET a Program Clock Reference value is
+    -- inserted for every Packetized Elementary Stream (PES) header. This
+    -- parameter is effective only when the PCR PID is the same as the video or
+    -- audio elementary stream.
+    pcrControl :: Prelude.Maybe M3u8PcrControl,
+    -- | Packet Identifier (PID) of the Program Clock Reference (PCR) in the
+    -- transport stream. When no value is given, the encoder will assign the
+    -- same value as the Video PID.
+    pcrPid :: Prelude.Maybe Prelude.Natural,
+    -- | The number of milliseconds between instances of this table in the output
+    -- transport stream.
+    pmtInterval :: Prelude.Maybe Prelude.Natural,
+    -- | Packet Identifier (PID) for the Program Map Table (PMT) in the transport
+    -- stream.
+    pmtPid :: Prelude.Maybe Prelude.Natural,
+    -- | Packet Identifier (PID) of the private metadata stream in the transport
+    -- stream.
+    privateMetadataPid :: Prelude.Maybe Prelude.Natural,
+    -- | The value of the program number field in the Program Map Table.
+    programNumber :: Prelude.Maybe Prelude.Natural,
+    -- | Packet Identifier (PID) of the SCTE-35 stream in the transport stream.
+    scte35Pid :: Prelude.Maybe Prelude.Natural,
+    -- | For SCTE-35 markers from your input-- Choose Passthrough (PASSTHROUGH)
+    -- if you want SCTE-35 markers that appear in your input to also appear in
+    -- this output. Choose None (NONE) if you don\'t want SCTE-35 markers in
+    -- this output. For SCTE-35 markers from an ESAM XML document-- Choose None
+    -- (NONE) if you don\'t want manifest conditioning. Choose Passthrough
+    -- (PASSTHROUGH) and choose Ad markers (adMarkers) if you do want manifest
+    -- conditioning. In both cases, also provide the ESAM XML as a string in
+    -- the setting Signal processing notification XML (sccXml).
+    scte35Source :: Prelude.Maybe M3u8Scte35Source,
+    -- | Set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH) to include
+    -- ID3 metadata in this output. This includes ID3 metadata from the
+    -- following features: ID3 timestamp period (timedMetadataId3Period), and
+    -- Custom ID3 metadata inserter (timedMetadataInsertion). To exclude this
+    -- ID3 metadata in this output: set ID3 metadata to None (NONE) or leave
+    -- blank.
+    timedMetadata :: Prelude.Maybe TimedMetadata,
+    -- | Packet Identifier (PID) of the ID3 metadata stream in the transport
+    -- stream.
+    timedMetadataPid :: Prelude.Maybe Prelude.Natural,
+    -- | The value of the transport stream ID field in the Program Map Table.
+    transportStreamId :: Prelude.Maybe Prelude.Natural,
+    -- | Packet Identifier (PID) of the elementary video stream in the transport
+    -- stream.
+    videoPid :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'M3u8Settings' 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:
+--
+-- 'audioDuration', 'm3u8Settings_audioDuration' - Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+--
+-- 'audioFramesPerPes', 'm3u8Settings_audioFramesPerPes' - The number of audio frames to insert for each PES packet.
+--
+-- 'audioPids', 'm3u8Settings_audioPids' - Packet Identifier (PID) of the elementary audio stream(s) in the
+-- transport stream. Multiple values are accepted, and can be entered in
+-- ranges and\/or by comma separation.
+--
+-- 'dataPTSControl', 'm3u8Settings_dataPTSControl' - If you select ALIGN_TO_VIDEO, MediaConvert writes captions and data
+-- packets with Presentation Timestamp (PTS) values greater than or equal
+-- to the first video packet PTS (MediaConvert drops captions and data
+-- packets with lesser PTS values). Keep the default value (AUTO) to allow
+-- all PTS values.
+--
+-- 'maxPcrInterval', 'm3u8Settings_maxPcrInterval' - Specify the maximum time, in milliseconds, between Program Clock
+-- References (PCRs) inserted into the transport stream.
+--
+-- 'nielsenId3', 'm3u8Settings_nielsenId3' - If INSERT, Nielsen inaudible tones for media tracking will be detected
+-- in the input audio and an equivalent ID3 tag will be inserted in the
+-- output.
+--
+-- 'patInterval', 'm3u8Settings_patInterval' - The number of milliseconds between instances of this table in the output
+-- transport stream.
+--
+-- 'pcrControl', 'm3u8Settings_pcrControl' - When set to PCR_EVERY_PES_PACKET a Program Clock Reference value is
+-- inserted for every Packetized Elementary Stream (PES) header. This
+-- parameter is effective only when the PCR PID is the same as the video or
+-- audio elementary stream.
+--
+-- 'pcrPid', 'm3u8Settings_pcrPid' - Packet Identifier (PID) of the Program Clock Reference (PCR) in the
+-- transport stream. When no value is given, the encoder will assign the
+-- same value as the Video PID.
+--
+-- 'pmtInterval', 'm3u8Settings_pmtInterval' - The number of milliseconds between instances of this table in the output
+-- transport stream.
+--
+-- 'pmtPid', 'm3u8Settings_pmtPid' - Packet Identifier (PID) for the Program Map Table (PMT) in the transport
+-- stream.
+--
+-- 'privateMetadataPid', 'm3u8Settings_privateMetadataPid' - Packet Identifier (PID) of the private metadata stream in the transport
+-- stream.
+--
+-- 'programNumber', 'm3u8Settings_programNumber' - The value of the program number field in the Program Map Table.
+--
+-- 'scte35Pid', 'm3u8Settings_scte35Pid' - Packet Identifier (PID) of the SCTE-35 stream in the transport stream.
+--
+-- 'scte35Source', 'm3u8Settings_scte35Source' - For SCTE-35 markers from your input-- Choose Passthrough (PASSTHROUGH)
+-- if you want SCTE-35 markers that appear in your input to also appear in
+-- this output. Choose None (NONE) if you don\'t want SCTE-35 markers in
+-- this output. For SCTE-35 markers from an ESAM XML document-- Choose None
+-- (NONE) if you don\'t want manifest conditioning. Choose Passthrough
+-- (PASSTHROUGH) and choose Ad markers (adMarkers) if you do want manifest
+-- conditioning. In both cases, also provide the ESAM XML as a string in
+-- the setting Signal processing notification XML (sccXml).
+--
+-- 'timedMetadata', 'm3u8Settings_timedMetadata' - Set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH) to include
+-- ID3 metadata in this output. This includes ID3 metadata from the
+-- following features: ID3 timestamp period (timedMetadataId3Period), and
+-- Custom ID3 metadata inserter (timedMetadataInsertion). To exclude this
+-- ID3 metadata in this output: set ID3 metadata to None (NONE) or leave
+-- blank.
+--
+-- 'timedMetadataPid', 'm3u8Settings_timedMetadataPid' - Packet Identifier (PID) of the ID3 metadata stream in the transport
+-- stream.
+--
+-- 'transportStreamId', 'm3u8Settings_transportStreamId' - The value of the transport stream ID field in the Program Map Table.
+--
+-- 'videoPid', 'm3u8Settings_videoPid' - Packet Identifier (PID) of the elementary video stream in the transport
+-- stream.
+newM3u8Settings ::
+  M3u8Settings
+newM3u8Settings =
+  M3u8Settings'
+    { audioDuration = Prelude.Nothing,
+      audioFramesPerPes = Prelude.Nothing,
+      audioPids = Prelude.Nothing,
+      dataPTSControl = Prelude.Nothing,
+      maxPcrInterval = Prelude.Nothing,
+      nielsenId3 = Prelude.Nothing,
+      patInterval = Prelude.Nothing,
+      pcrControl = Prelude.Nothing,
+      pcrPid = Prelude.Nothing,
+      pmtInterval = Prelude.Nothing,
+      pmtPid = Prelude.Nothing,
+      privateMetadataPid = Prelude.Nothing,
+      programNumber = Prelude.Nothing,
+      scte35Pid = Prelude.Nothing,
+      scte35Source = Prelude.Nothing,
+      timedMetadata = Prelude.Nothing,
+      timedMetadataPid = Prelude.Nothing,
+      transportStreamId = Prelude.Nothing,
+      videoPid = Prelude.Nothing
+    }
+
+-- | Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+m3u8Settings_audioDuration :: Lens.Lens' M3u8Settings (Prelude.Maybe M3u8AudioDuration)
+m3u8Settings_audioDuration = Lens.lens (\M3u8Settings' {audioDuration} -> audioDuration) (\s@M3u8Settings' {} a -> s {audioDuration = a} :: M3u8Settings)
+
+-- | The number of audio frames to insert for each PES packet.
+m3u8Settings_audioFramesPerPes :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
+m3u8Settings_audioFramesPerPes = Lens.lens (\M3u8Settings' {audioFramesPerPes} -> audioFramesPerPes) (\s@M3u8Settings' {} a -> s {audioFramesPerPes = a} :: M3u8Settings)
+
+-- | Packet Identifier (PID) of the elementary audio stream(s) in the
+-- transport stream. Multiple values are accepted, and can be entered in
+-- ranges and\/or by comma separation.
+m3u8Settings_audioPids :: Lens.Lens' M3u8Settings (Prelude.Maybe [Prelude.Natural])
+m3u8Settings_audioPids = Lens.lens (\M3u8Settings' {audioPids} -> audioPids) (\s@M3u8Settings' {} a -> s {audioPids = a} :: M3u8Settings) Prelude.. Lens.mapping Lens.coerced
+
+-- | If you select ALIGN_TO_VIDEO, MediaConvert writes captions and data
+-- packets with Presentation Timestamp (PTS) values greater than or equal
+-- to the first video packet PTS (MediaConvert drops captions and data
+-- packets with lesser PTS values). Keep the default value (AUTO) to allow
+-- all PTS values.
+m3u8Settings_dataPTSControl :: Lens.Lens' M3u8Settings (Prelude.Maybe M3u8DataPtsControl)
+m3u8Settings_dataPTSControl = Lens.lens (\M3u8Settings' {dataPTSControl} -> dataPTSControl) (\s@M3u8Settings' {} a -> s {dataPTSControl = a} :: M3u8Settings)
+
+-- | Specify the maximum time, in milliseconds, between Program Clock
+-- References (PCRs) inserted into the transport stream.
+m3u8Settings_maxPcrInterval :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
+m3u8Settings_maxPcrInterval = Lens.lens (\M3u8Settings' {maxPcrInterval} -> maxPcrInterval) (\s@M3u8Settings' {} a -> s {maxPcrInterval = a} :: M3u8Settings)
+
+-- | If INSERT, Nielsen inaudible tones for media tracking will be detected
+-- in the input audio and an equivalent ID3 tag will be inserted in the
+-- output.
+m3u8Settings_nielsenId3 :: Lens.Lens' M3u8Settings (Prelude.Maybe M3u8NielsenId3)
+m3u8Settings_nielsenId3 = Lens.lens (\M3u8Settings' {nielsenId3} -> nielsenId3) (\s@M3u8Settings' {} a -> s {nielsenId3 = a} :: M3u8Settings)
+
+-- | The number of milliseconds between instances of this table in the output
+-- transport stream.
+m3u8Settings_patInterval :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
+m3u8Settings_patInterval = Lens.lens (\M3u8Settings' {patInterval} -> patInterval) (\s@M3u8Settings' {} a -> s {patInterval = a} :: M3u8Settings)
+
+-- | When set to PCR_EVERY_PES_PACKET a Program Clock Reference value is
+-- inserted for every Packetized Elementary Stream (PES) header. This
+-- parameter is effective only when the PCR PID is the same as the video or
+-- audio elementary stream.
+m3u8Settings_pcrControl :: Lens.Lens' M3u8Settings (Prelude.Maybe M3u8PcrControl)
+m3u8Settings_pcrControl = Lens.lens (\M3u8Settings' {pcrControl} -> pcrControl) (\s@M3u8Settings' {} a -> s {pcrControl = a} :: M3u8Settings)
+
+-- | Packet Identifier (PID) of the Program Clock Reference (PCR) in the
+-- transport stream. When no value is given, the encoder will assign the
+-- same value as the Video PID.
+m3u8Settings_pcrPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
+m3u8Settings_pcrPid = Lens.lens (\M3u8Settings' {pcrPid} -> pcrPid) (\s@M3u8Settings' {} a -> s {pcrPid = a} :: M3u8Settings)
+
+-- | The number of milliseconds between instances of this table in the output
+-- transport stream.
+m3u8Settings_pmtInterval :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
+m3u8Settings_pmtInterval = Lens.lens (\M3u8Settings' {pmtInterval} -> pmtInterval) (\s@M3u8Settings' {} a -> s {pmtInterval = a} :: M3u8Settings)
+
+-- | Packet Identifier (PID) for the Program Map Table (PMT) in the transport
+-- stream.
+m3u8Settings_pmtPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
+m3u8Settings_pmtPid = Lens.lens (\M3u8Settings' {pmtPid} -> pmtPid) (\s@M3u8Settings' {} a -> s {pmtPid = a} :: M3u8Settings)
+
+-- | Packet Identifier (PID) of the private metadata stream in the transport
+-- stream.
+m3u8Settings_privateMetadataPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
+m3u8Settings_privateMetadataPid = Lens.lens (\M3u8Settings' {privateMetadataPid} -> privateMetadataPid) (\s@M3u8Settings' {} a -> s {privateMetadataPid = a} :: M3u8Settings)
+
+-- | The value of the program number field in the Program Map Table.
+m3u8Settings_programNumber :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
+m3u8Settings_programNumber = Lens.lens (\M3u8Settings' {programNumber} -> programNumber) (\s@M3u8Settings' {} a -> s {programNumber = a} :: M3u8Settings)
+
+-- | Packet Identifier (PID) of the SCTE-35 stream in the transport stream.
+m3u8Settings_scte35Pid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
+m3u8Settings_scte35Pid = Lens.lens (\M3u8Settings' {scte35Pid} -> scte35Pid) (\s@M3u8Settings' {} a -> s {scte35Pid = a} :: M3u8Settings)
+
+-- | For SCTE-35 markers from your input-- Choose Passthrough (PASSTHROUGH)
+-- if you want SCTE-35 markers that appear in your input to also appear in
+-- this output. Choose None (NONE) if you don\'t want SCTE-35 markers in
+-- this output. For SCTE-35 markers from an ESAM XML document-- Choose None
+-- (NONE) if you don\'t want manifest conditioning. Choose Passthrough
+-- (PASSTHROUGH) and choose Ad markers (adMarkers) if you do want manifest
+-- conditioning. In both cases, also provide the ESAM XML as a string in
+-- the setting Signal processing notification XML (sccXml).
+m3u8Settings_scte35Source :: Lens.Lens' M3u8Settings (Prelude.Maybe M3u8Scte35Source)
+m3u8Settings_scte35Source = Lens.lens (\M3u8Settings' {scte35Source} -> scte35Source) (\s@M3u8Settings' {} a -> s {scte35Source = a} :: M3u8Settings)
+
+-- | Set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH) to include
+-- ID3 metadata in this output. This includes ID3 metadata from the
+-- following features: ID3 timestamp period (timedMetadataId3Period), and
+-- Custom ID3 metadata inserter (timedMetadataInsertion). To exclude this
+-- ID3 metadata in this output: set ID3 metadata to None (NONE) or leave
+-- blank.
+m3u8Settings_timedMetadata :: Lens.Lens' M3u8Settings (Prelude.Maybe TimedMetadata)
+m3u8Settings_timedMetadata = Lens.lens (\M3u8Settings' {timedMetadata} -> timedMetadata) (\s@M3u8Settings' {} a -> s {timedMetadata = a} :: M3u8Settings)
+
+-- | Packet Identifier (PID) of the ID3 metadata stream in the transport
+-- stream.
+m3u8Settings_timedMetadataPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
+m3u8Settings_timedMetadataPid = Lens.lens (\M3u8Settings' {timedMetadataPid} -> timedMetadataPid) (\s@M3u8Settings' {} a -> s {timedMetadataPid = a} :: M3u8Settings)
+
+-- | The value of the transport stream ID field in the Program Map Table.
+m3u8Settings_transportStreamId :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
+m3u8Settings_transportStreamId = Lens.lens (\M3u8Settings' {transportStreamId} -> transportStreamId) (\s@M3u8Settings' {} a -> s {transportStreamId = a} :: M3u8Settings)
+
+-- | Packet Identifier (PID) of the elementary video stream in the transport
+-- stream.
+m3u8Settings_videoPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
+m3u8Settings_videoPid = Lens.lens (\M3u8Settings' {videoPid} -> videoPid) (\s@M3u8Settings' {} a -> s {videoPid = a} :: M3u8Settings)
+
+instance Data.FromJSON M3u8Settings where
+  parseJSON =
+    Data.withObject
+      "M3u8Settings"
+      ( \x ->
+          M3u8Settings'
+            Prelude.<$> (x Data..:? "audioDuration")
+            Prelude.<*> (x Data..:? "audioFramesPerPes")
+            Prelude.<*> (x Data..:? "audioPids" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "dataPTSControl")
+            Prelude.<*> (x Data..:? "maxPcrInterval")
+            Prelude.<*> (x Data..:? "nielsenId3")
+            Prelude.<*> (x Data..:? "patInterval")
+            Prelude.<*> (x Data..:? "pcrControl")
+            Prelude.<*> (x Data..:? "pcrPid")
+            Prelude.<*> (x Data..:? "pmtInterval")
+            Prelude.<*> (x Data..:? "pmtPid")
+            Prelude.<*> (x Data..:? "privateMetadataPid")
+            Prelude.<*> (x Data..:? "programNumber")
+            Prelude.<*> (x Data..:? "scte35Pid")
+            Prelude.<*> (x Data..:? "scte35Source")
+            Prelude.<*> (x Data..:? "timedMetadata")
+            Prelude.<*> (x Data..:? "timedMetadataPid")
+            Prelude.<*> (x Data..:? "transportStreamId")
+            Prelude.<*> (x Data..:? "videoPid")
+      )
+
+instance Prelude.Hashable M3u8Settings where
+  hashWithSalt _salt M3u8Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` audioDuration
+      `Prelude.hashWithSalt` audioFramesPerPes
+      `Prelude.hashWithSalt` audioPids
+      `Prelude.hashWithSalt` dataPTSControl
+      `Prelude.hashWithSalt` maxPcrInterval
+      `Prelude.hashWithSalt` nielsenId3
+      `Prelude.hashWithSalt` patInterval
+      `Prelude.hashWithSalt` pcrControl
+      `Prelude.hashWithSalt` pcrPid
+      `Prelude.hashWithSalt` pmtInterval
+      `Prelude.hashWithSalt` pmtPid
+      `Prelude.hashWithSalt` privateMetadataPid
+      `Prelude.hashWithSalt` programNumber
+      `Prelude.hashWithSalt` scte35Pid
+      `Prelude.hashWithSalt` scte35Source
+      `Prelude.hashWithSalt` timedMetadata
+      `Prelude.hashWithSalt` timedMetadataPid
+      `Prelude.hashWithSalt` transportStreamId
+      `Prelude.hashWithSalt` videoPid
+
+instance Prelude.NFData M3u8Settings where
+  rnf M3u8Settings' {..} =
+    Prelude.rnf audioDuration
+      `Prelude.seq` Prelude.rnf audioFramesPerPes
+      `Prelude.seq` Prelude.rnf audioPids
+      `Prelude.seq` Prelude.rnf dataPTSControl
+      `Prelude.seq` Prelude.rnf maxPcrInterval
+      `Prelude.seq` Prelude.rnf nielsenId3
+      `Prelude.seq` Prelude.rnf patInterval
+      `Prelude.seq` Prelude.rnf pcrControl
+      `Prelude.seq` Prelude.rnf pcrPid
+      `Prelude.seq` Prelude.rnf pmtInterval
+      `Prelude.seq` Prelude.rnf pmtPid
+      `Prelude.seq` Prelude.rnf privateMetadataPid
+      `Prelude.seq` Prelude.rnf programNumber
+      `Prelude.seq` Prelude.rnf scte35Pid
+      `Prelude.seq` Prelude.rnf scte35Source
+      `Prelude.seq` Prelude.rnf timedMetadata
+      `Prelude.seq` Prelude.rnf timedMetadataPid
+      `Prelude.seq` Prelude.rnf transportStreamId
+      `Prelude.seq` Prelude.rnf videoPid
+
+instance Data.ToJSON M3u8Settings where
+  toJSON M3u8Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("audioDuration" Data..=) Prelude.<$> audioDuration,
+            ("audioFramesPerPes" Data..=)
+              Prelude.<$> audioFramesPerPes,
+            ("audioPids" Data..=) Prelude.<$> audioPids,
+            ("dataPTSControl" Data..=)
+              Prelude.<$> dataPTSControl,
+            ("maxPcrInterval" Data..=)
+              Prelude.<$> maxPcrInterval,
+            ("nielsenId3" Data..=) Prelude.<$> nielsenId3,
+            ("patInterval" Data..=) Prelude.<$> patInterval,
+            ("pcrControl" Data..=) Prelude.<$> pcrControl,
+            ("pcrPid" Data..=) Prelude.<$> pcrPid,
+            ("pmtInterval" Data..=) Prelude.<$> pmtInterval,
+            ("pmtPid" Data..=) Prelude.<$> pmtPid,
+            ("privateMetadataPid" Data..=)
+              Prelude.<$> privateMetadataPid,
+            ("programNumber" Data..=) Prelude.<$> programNumber,
+            ("scte35Pid" Data..=) Prelude.<$> scte35Pid,
+            ("scte35Source" Data..=) Prelude.<$> scte35Source,
+            ("timedMetadata" Data..=) Prelude.<$> timedMetadata,
+            ("timedMetadataPid" Data..=)
+              Prelude.<$> timedMetadataPid,
+            ("transportStreamId" Data..=)
+              Prelude.<$> transportStreamId,
+            ("videoPid" Data..=) Prelude.<$> videoPid
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/MinBottomRenditionSize.hs b/gen/Amazonka/MediaConvert/Types/MinBottomRenditionSize.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MinBottomRenditionSize.hs
@@ -0,0 +1,104 @@
+{-# 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.MinBottomRenditionSize
+-- 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.MinBottomRenditionSize where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Min bottom rendition size to specify a minimum size for the lowest
+-- resolution in your ABR stack. * The lowest resolution in your ABR stack
+-- will be equal to or greater than the value that you enter. For example:
+-- If you specify 640x360 the lowest resolution in your ABR stack will be
+-- equal to or greater than to 640x360. * If you specify a Min top
+-- rendition size rule, the value that you specify for Min bottom rendition
+-- size must be less than, or equal to, Min top rendition size.
+--
+-- /See:/ 'newMinBottomRenditionSize' smart constructor.
+data MinBottomRenditionSize = MinBottomRenditionSize'
+  { -- | Use Height to define the video resolution height, in pixels, for this
+    -- rule.
+    height :: Prelude.Maybe Prelude.Natural,
+    -- | Use Width to define the video resolution width, in pixels, for this
+    -- rule.
+    width :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MinBottomRenditionSize' 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:
+--
+-- 'height', 'minBottomRenditionSize_height' - Use Height to define the video resolution height, in pixels, for this
+-- rule.
+--
+-- 'width', 'minBottomRenditionSize_width' - Use Width to define the video resolution width, in pixels, for this
+-- rule.
+newMinBottomRenditionSize ::
+  MinBottomRenditionSize
+newMinBottomRenditionSize =
+  MinBottomRenditionSize'
+    { height = Prelude.Nothing,
+      width = Prelude.Nothing
+    }
+
+-- | Use Height to define the video resolution height, in pixels, for this
+-- rule.
+minBottomRenditionSize_height :: Lens.Lens' MinBottomRenditionSize (Prelude.Maybe Prelude.Natural)
+minBottomRenditionSize_height = Lens.lens (\MinBottomRenditionSize' {height} -> height) (\s@MinBottomRenditionSize' {} a -> s {height = a} :: MinBottomRenditionSize)
+
+-- | Use Width to define the video resolution width, in pixels, for this
+-- rule.
+minBottomRenditionSize_width :: Lens.Lens' MinBottomRenditionSize (Prelude.Maybe Prelude.Natural)
+minBottomRenditionSize_width = Lens.lens (\MinBottomRenditionSize' {width} -> width) (\s@MinBottomRenditionSize' {} a -> s {width = a} :: MinBottomRenditionSize)
+
+instance Data.FromJSON MinBottomRenditionSize where
+  parseJSON =
+    Data.withObject
+      "MinBottomRenditionSize"
+      ( \x ->
+          MinBottomRenditionSize'
+            Prelude.<$> (x Data..:? "height")
+            Prelude.<*> (x Data..:? "width")
+      )
+
+instance Prelude.Hashable MinBottomRenditionSize where
+  hashWithSalt _salt MinBottomRenditionSize' {..} =
+    _salt
+      `Prelude.hashWithSalt` height
+      `Prelude.hashWithSalt` width
+
+instance Prelude.NFData MinBottomRenditionSize where
+  rnf MinBottomRenditionSize' {..} =
+    Prelude.rnf height `Prelude.seq` Prelude.rnf width
+
+instance Data.ToJSON MinBottomRenditionSize where
+  toJSON MinBottomRenditionSize' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("height" Data..=) Prelude.<$> height,
+            ("width" Data..=) Prelude.<$> width
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/MinTopRenditionSize.hs b/gen/Amazonka/MediaConvert/Types/MinTopRenditionSize.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MinTopRenditionSize.hs
@@ -0,0 +1,104 @@
+{-# 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.MinTopRenditionSize
+-- 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.MinTopRenditionSize where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Min top rendition size to specify a minimum size for the highest
+-- resolution in your ABR stack. * The highest resolution in your ABR stack
+-- will be equal to or greater than the value that you enter. For example:
+-- If you specify 1280x720 the highest resolution in your ABR stack will be
+-- equal to or greater than 1280x720. * If you specify a value for Max
+-- resolution, the value that you specify for Min top rendition size must
+-- be less than, or equal to, Max resolution.
+--
+-- /See:/ 'newMinTopRenditionSize' smart constructor.
+data MinTopRenditionSize = MinTopRenditionSize'
+  { -- | Use Height to define the video resolution height, in pixels, for this
+    -- rule.
+    height :: Prelude.Maybe Prelude.Natural,
+    -- | Use Width to define the video resolution width, in pixels, for this
+    -- rule.
+    width :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MinTopRenditionSize' 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:
+--
+-- 'height', 'minTopRenditionSize_height' - Use Height to define the video resolution height, in pixels, for this
+-- rule.
+--
+-- 'width', 'minTopRenditionSize_width' - Use Width to define the video resolution width, in pixels, for this
+-- rule.
+newMinTopRenditionSize ::
+  MinTopRenditionSize
+newMinTopRenditionSize =
+  MinTopRenditionSize'
+    { height = Prelude.Nothing,
+      width = Prelude.Nothing
+    }
+
+-- | Use Height to define the video resolution height, in pixels, for this
+-- rule.
+minTopRenditionSize_height :: Lens.Lens' MinTopRenditionSize (Prelude.Maybe Prelude.Natural)
+minTopRenditionSize_height = Lens.lens (\MinTopRenditionSize' {height} -> height) (\s@MinTopRenditionSize' {} a -> s {height = a} :: MinTopRenditionSize)
+
+-- | Use Width to define the video resolution width, in pixels, for this
+-- rule.
+minTopRenditionSize_width :: Lens.Lens' MinTopRenditionSize (Prelude.Maybe Prelude.Natural)
+minTopRenditionSize_width = Lens.lens (\MinTopRenditionSize' {width} -> width) (\s@MinTopRenditionSize' {} a -> s {width = a} :: MinTopRenditionSize)
+
+instance Data.FromJSON MinTopRenditionSize where
+  parseJSON =
+    Data.withObject
+      "MinTopRenditionSize"
+      ( \x ->
+          MinTopRenditionSize'
+            Prelude.<$> (x Data..:? "height")
+            Prelude.<*> (x Data..:? "width")
+      )
+
+instance Prelude.Hashable MinTopRenditionSize where
+  hashWithSalt _salt MinTopRenditionSize' {..} =
+    _salt
+      `Prelude.hashWithSalt` height
+      `Prelude.hashWithSalt` width
+
+instance Prelude.NFData MinTopRenditionSize where
+  rnf MinTopRenditionSize' {..} =
+    Prelude.rnf height `Prelude.seq` Prelude.rnf width
+
+instance Data.ToJSON MinTopRenditionSize where
+  toJSON MinTopRenditionSize' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("height" Data..=) Prelude.<$> height,
+            ("width" Data..=) Prelude.<$> width
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/MotionImageInserter.hs b/gen/Amazonka/MediaConvert/Types/MotionImageInserter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MotionImageInserter.hs
@@ -0,0 +1,257 @@
+{-# 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.MotionImageInserter
+-- 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.MotionImageInserter 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.MotionImageInsertionFramerate
+import Amazonka.MediaConvert.Types.MotionImageInsertionMode
+import Amazonka.MediaConvert.Types.MotionImageInsertionOffset
+import Amazonka.MediaConvert.Types.MotionImagePlayback
+import qualified Amazonka.Prelude as Prelude
+
+-- | Overlay motion graphics on top of your video. The motion graphics that
+-- you specify here appear on all outputs in all output groups. For more
+-- information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/motion-graphic-overlay.html.
+--
+-- /See:/ 'newMotionImageInserter' smart constructor.
+data MotionImageInserter = MotionImageInserter'
+  { -- | If your motion graphic asset is a .mov file, keep this setting
+    -- unspecified. If your motion graphic asset is a series of .png files,
+    -- specify the frame rate of the overlay in frames per second, as a
+    -- fraction. For example, specify 24 fps as 24\/1. Make sure that the
+    -- number of images in your series matches the frame rate and your intended
+    -- overlay duration. For example, if you want a 30-second overlay at 30
+    -- fps, you should have 900 .png images. This overlay frame rate doesn\'t
+    -- need to match the frame rate of the underlying video.
+    framerate :: Prelude.Maybe MotionImageInsertionFramerate,
+    -- | Specify the .mov file or series of .png files that you want to overlay
+    -- on your video. For .png files, provide the file name of the first file
+    -- in the series. Make sure that the names of the .png files end with
+    -- sequential numbers that specify the order that they are played in. For
+    -- example, overlay_000.png, overlay_001.png, overlay_002.png, and so on.
+    -- The sequence must start at zero, and each image file name must have the
+    -- same number of digits. Pad your initial file names with enough zeros to
+    -- complete the sequence. For example, if the first image is overlay_0.png,
+    -- there can be only 10 images in the sequence, with the last image being
+    -- overlay_9.png. But if the first image is overlay_00.png, there can be
+    -- 100 images in the sequence.
+    input :: Prelude.Maybe Prelude.Text,
+    -- | Choose the type of motion graphic asset that you are providing for your
+    -- overlay. You can choose either a .mov file or a series of .png files.
+    insertionMode :: Prelude.Maybe MotionImageInsertionMode,
+    -- | Use Offset to specify the placement of your motion graphic overlay on
+    -- the video frame. Specify in pixels, from the upper-left corner of the
+    -- frame. If you don\'t specify an offset, the service scales your overlay
+    -- to the full size of the frame. Otherwise, the service inserts the
+    -- overlay at its native resolution and scales the size up or down with any
+    -- video scaling.
+    offset :: Prelude.Maybe MotionImageInsertionOffset,
+    -- | Specify whether your motion graphic overlay repeats on a loop or plays
+    -- only once.
+    playback :: Prelude.Maybe MotionImagePlayback,
+    -- | Specify when the motion overlay begins. Use timecode format (HH:MM:SS:FF
+    -- or HH:MM:SS;FF). Make sure that the timecode you provide here takes into
+    -- account how you have set up your timecode configuration under both job
+    -- settings and input settings. The simplest way to do that is to set both
+    -- to start at 0. If you need to set up your job to follow timecodes
+    -- embedded in your source that don\'t start at zero, make sure that you
+    -- specify a start time that is after the first embedded timecode. For more
+    -- information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/setting-up-timecode.html
+    -- Find job-wide and input timecode configuration settings in your JSON job
+    -- settings specification at settings>timecodeConfig>source and
+    -- settings>inputs>timecodeSource.
+    startTime :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MotionImageInserter' 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:
+--
+-- 'framerate', 'motionImageInserter_framerate' - If your motion graphic asset is a .mov file, keep this setting
+-- unspecified. If your motion graphic asset is a series of .png files,
+-- specify the frame rate of the overlay in frames per second, as a
+-- fraction. For example, specify 24 fps as 24\/1. Make sure that the
+-- number of images in your series matches the frame rate and your intended
+-- overlay duration. For example, if you want a 30-second overlay at 30
+-- fps, you should have 900 .png images. This overlay frame rate doesn\'t
+-- need to match the frame rate of the underlying video.
+--
+-- 'input', 'motionImageInserter_input' - Specify the .mov file or series of .png files that you want to overlay
+-- on your video. For .png files, provide the file name of the first file
+-- in the series. Make sure that the names of the .png files end with
+-- sequential numbers that specify the order that they are played in. For
+-- example, overlay_000.png, overlay_001.png, overlay_002.png, and so on.
+-- The sequence must start at zero, and each image file name must have the
+-- same number of digits. Pad your initial file names with enough zeros to
+-- complete the sequence. For example, if the first image is overlay_0.png,
+-- there can be only 10 images in the sequence, with the last image being
+-- overlay_9.png. But if the first image is overlay_00.png, there can be
+-- 100 images in the sequence.
+--
+-- 'insertionMode', 'motionImageInserter_insertionMode' - Choose the type of motion graphic asset that you are providing for your
+-- overlay. You can choose either a .mov file or a series of .png files.
+--
+-- 'offset', 'motionImageInserter_offset' - Use Offset to specify the placement of your motion graphic overlay on
+-- the video frame. Specify in pixels, from the upper-left corner of the
+-- frame. If you don\'t specify an offset, the service scales your overlay
+-- to the full size of the frame. Otherwise, the service inserts the
+-- overlay at its native resolution and scales the size up or down with any
+-- video scaling.
+--
+-- 'playback', 'motionImageInserter_playback' - Specify whether your motion graphic overlay repeats on a loop or plays
+-- only once.
+--
+-- 'startTime', 'motionImageInserter_startTime' - Specify when the motion overlay begins. Use timecode format (HH:MM:SS:FF
+-- or HH:MM:SS;FF). Make sure that the timecode you provide here takes into
+-- account how you have set up your timecode configuration under both job
+-- settings and input settings. The simplest way to do that is to set both
+-- to start at 0. If you need to set up your job to follow timecodes
+-- embedded in your source that don\'t start at zero, make sure that you
+-- specify a start time that is after the first embedded timecode. For more
+-- information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/setting-up-timecode.html
+-- Find job-wide and input timecode configuration settings in your JSON job
+-- settings specification at settings>timecodeConfig>source and
+-- settings>inputs>timecodeSource.
+newMotionImageInserter ::
+  MotionImageInserter
+newMotionImageInserter =
+  MotionImageInserter'
+    { framerate = Prelude.Nothing,
+      input = Prelude.Nothing,
+      insertionMode = Prelude.Nothing,
+      offset = Prelude.Nothing,
+      playback = Prelude.Nothing,
+      startTime = Prelude.Nothing
+    }
+
+-- | If your motion graphic asset is a .mov file, keep this setting
+-- unspecified. If your motion graphic asset is a series of .png files,
+-- specify the frame rate of the overlay in frames per second, as a
+-- fraction. For example, specify 24 fps as 24\/1. Make sure that the
+-- number of images in your series matches the frame rate and your intended
+-- overlay duration. For example, if you want a 30-second overlay at 30
+-- fps, you should have 900 .png images. This overlay frame rate doesn\'t
+-- need to match the frame rate of the underlying video.
+motionImageInserter_framerate :: Lens.Lens' MotionImageInserter (Prelude.Maybe MotionImageInsertionFramerate)
+motionImageInserter_framerate = Lens.lens (\MotionImageInserter' {framerate} -> framerate) (\s@MotionImageInserter' {} a -> s {framerate = a} :: MotionImageInserter)
+
+-- | Specify the .mov file or series of .png files that you want to overlay
+-- on your video. For .png files, provide the file name of the first file
+-- in the series. Make sure that the names of the .png files end with
+-- sequential numbers that specify the order that they are played in. For
+-- example, overlay_000.png, overlay_001.png, overlay_002.png, and so on.
+-- The sequence must start at zero, and each image file name must have the
+-- same number of digits. Pad your initial file names with enough zeros to
+-- complete the sequence. For example, if the first image is overlay_0.png,
+-- there can be only 10 images in the sequence, with the last image being
+-- overlay_9.png. But if the first image is overlay_00.png, there can be
+-- 100 images in the sequence.
+motionImageInserter_input :: Lens.Lens' MotionImageInserter (Prelude.Maybe Prelude.Text)
+motionImageInserter_input = Lens.lens (\MotionImageInserter' {input} -> input) (\s@MotionImageInserter' {} a -> s {input = a} :: MotionImageInserter)
+
+-- | Choose the type of motion graphic asset that you are providing for your
+-- overlay. You can choose either a .mov file or a series of .png files.
+motionImageInserter_insertionMode :: Lens.Lens' MotionImageInserter (Prelude.Maybe MotionImageInsertionMode)
+motionImageInserter_insertionMode = Lens.lens (\MotionImageInserter' {insertionMode} -> insertionMode) (\s@MotionImageInserter' {} a -> s {insertionMode = a} :: MotionImageInserter)
+
+-- | Use Offset to specify the placement of your motion graphic overlay on
+-- the video frame. Specify in pixels, from the upper-left corner of the
+-- frame. If you don\'t specify an offset, the service scales your overlay
+-- to the full size of the frame. Otherwise, the service inserts the
+-- overlay at its native resolution and scales the size up or down with any
+-- video scaling.
+motionImageInserter_offset :: Lens.Lens' MotionImageInserter (Prelude.Maybe MotionImageInsertionOffset)
+motionImageInserter_offset = Lens.lens (\MotionImageInserter' {offset} -> offset) (\s@MotionImageInserter' {} a -> s {offset = a} :: MotionImageInserter)
+
+-- | Specify whether your motion graphic overlay repeats on a loop or plays
+-- only once.
+motionImageInserter_playback :: Lens.Lens' MotionImageInserter (Prelude.Maybe MotionImagePlayback)
+motionImageInserter_playback = Lens.lens (\MotionImageInserter' {playback} -> playback) (\s@MotionImageInserter' {} a -> s {playback = a} :: MotionImageInserter)
+
+-- | Specify when the motion overlay begins. Use timecode format (HH:MM:SS:FF
+-- or HH:MM:SS;FF). Make sure that the timecode you provide here takes into
+-- account how you have set up your timecode configuration under both job
+-- settings and input settings. The simplest way to do that is to set both
+-- to start at 0. If you need to set up your job to follow timecodes
+-- embedded in your source that don\'t start at zero, make sure that you
+-- specify a start time that is after the first embedded timecode. For more
+-- information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/setting-up-timecode.html
+-- Find job-wide and input timecode configuration settings in your JSON job
+-- settings specification at settings>timecodeConfig>source and
+-- settings>inputs>timecodeSource.
+motionImageInserter_startTime :: Lens.Lens' MotionImageInserter (Prelude.Maybe Prelude.Text)
+motionImageInserter_startTime = Lens.lens (\MotionImageInserter' {startTime} -> startTime) (\s@MotionImageInserter' {} a -> s {startTime = a} :: MotionImageInserter)
+
+instance Data.FromJSON MotionImageInserter where
+  parseJSON =
+    Data.withObject
+      "MotionImageInserter"
+      ( \x ->
+          MotionImageInserter'
+            Prelude.<$> (x Data..:? "framerate")
+            Prelude.<*> (x Data..:? "input")
+            Prelude.<*> (x Data..:? "insertionMode")
+            Prelude.<*> (x Data..:? "offset")
+            Prelude.<*> (x Data..:? "playback")
+            Prelude.<*> (x Data..:? "startTime")
+      )
+
+instance Prelude.Hashable MotionImageInserter where
+  hashWithSalt _salt MotionImageInserter' {..} =
+    _salt
+      `Prelude.hashWithSalt` framerate
+      `Prelude.hashWithSalt` input
+      `Prelude.hashWithSalt` insertionMode
+      `Prelude.hashWithSalt` offset
+      `Prelude.hashWithSalt` playback
+      `Prelude.hashWithSalt` startTime
+
+instance Prelude.NFData MotionImageInserter where
+  rnf MotionImageInserter' {..} =
+    Prelude.rnf framerate
+      `Prelude.seq` Prelude.rnf input
+      `Prelude.seq` Prelude.rnf insertionMode
+      `Prelude.seq` Prelude.rnf offset
+      `Prelude.seq` Prelude.rnf playback
+      `Prelude.seq` Prelude.rnf startTime
+
+instance Data.ToJSON MotionImageInserter where
+  toJSON MotionImageInserter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("framerate" Data..=) Prelude.<$> framerate,
+            ("input" Data..=) Prelude.<$> input,
+            ("insertionMode" Data..=) Prelude.<$> insertionMode,
+            ("offset" Data..=) Prelude.<$> offset,
+            ("playback" Data..=) Prelude.<$> playback,
+            ("startTime" Data..=) Prelude.<$> startTime
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/MotionImageInsertionFramerate.hs b/gen/Amazonka/MediaConvert/Types/MotionImageInsertionFramerate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MotionImageInsertionFramerate.hs
@@ -0,0 +1,108 @@
+{-# 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.MotionImageInsertionFramerate
+-- 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.MotionImageInsertionFramerate where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | For motion overlays that don\'t have a built-in frame rate, specify the
+-- frame rate of the overlay in frames per second, as a fraction. For
+-- example, specify 24 fps as 24\/1. The overlay frame rate doesn\'t need
+-- to match the frame rate of the underlying video.
+--
+-- /See:/ 'newMotionImageInsertionFramerate' smart constructor.
+data MotionImageInsertionFramerate = MotionImageInsertionFramerate'
+  { -- | The bottom of the fraction that expresses your overlay frame rate. For
+    -- example, if your frame rate is 24 fps, set this value to 1.
+    framerateDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | The top of the fraction that expresses your overlay frame rate. For
+    -- example, if your frame rate is 24 fps, set this value to 24.
+    framerateNumerator :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MotionImageInsertionFramerate' 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:
+--
+-- 'framerateDenominator', 'motionImageInsertionFramerate_framerateDenominator' - The bottom of the fraction that expresses your overlay frame rate. For
+-- example, if your frame rate is 24 fps, set this value to 1.
+--
+-- 'framerateNumerator', 'motionImageInsertionFramerate_framerateNumerator' - The top of the fraction that expresses your overlay frame rate. For
+-- example, if your frame rate is 24 fps, set this value to 24.
+newMotionImageInsertionFramerate ::
+  MotionImageInsertionFramerate
+newMotionImageInsertionFramerate =
+  MotionImageInsertionFramerate'
+    { framerateDenominator =
+        Prelude.Nothing,
+      framerateNumerator = Prelude.Nothing
+    }
+
+-- | The bottom of the fraction that expresses your overlay frame rate. For
+-- example, if your frame rate is 24 fps, set this value to 1.
+motionImageInsertionFramerate_framerateDenominator :: Lens.Lens' MotionImageInsertionFramerate (Prelude.Maybe Prelude.Natural)
+motionImageInsertionFramerate_framerateDenominator = Lens.lens (\MotionImageInsertionFramerate' {framerateDenominator} -> framerateDenominator) (\s@MotionImageInsertionFramerate' {} a -> s {framerateDenominator = a} :: MotionImageInsertionFramerate)
+
+-- | The top of the fraction that expresses your overlay frame rate. For
+-- example, if your frame rate is 24 fps, set this value to 24.
+motionImageInsertionFramerate_framerateNumerator :: Lens.Lens' MotionImageInsertionFramerate (Prelude.Maybe Prelude.Natural)
+motionImageInsertionFramerate_framerateNumerator = Lens.lens (\MotionImageInsertionFramerate' {framerateNumerator} -> framerateNumerator) (\s@MotionImageInsertionFramerate' {} a -> s {framerateNumerator = a} :: MotionImageInsertionFramerate)
+
+instance Data.FromJSON MotionImageInsertionFramerate where
+  parseJSON =
+    Data.withObject
+      "MotionImageInsertionFramerate"
+      ( \x ->
+          MotionImageInsertionFramerate'
+            Prelude.<$> (x Data..:? "framerateDenominator")
+            Prelude.<*> (x Data..:? "framerateNumerator")
+      )
+
+instance
+  Prelude.Hashable
+    MotionImageInsertionFramerate
+  where
+  hashWithSalt _salt MotionImageInsertionFramerate' {..} =
+    _salt
+      `Prelude.hashWithSalt` framerateDenominator
+      `Prelude.hashWithSalt` framerateNumerator
+
+instance Prelude.NFData MotionImageInsertionFramerate where
+  rnf MotionImageInsertionFramerate' {..} =
+    Prelude.rnf framerateDenominator
+      `Prelude.seq` Prelude.rnf framerateNumerator
+
+instance Data.ToJSON MotionImageInsertionFramerate where
+  toJSON MotionImageInsertionFramerate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("framerateDenominator" Data..=)
+              Prelude.<$> framerateDenominator,
+            ("framerateNumerator" Data..=)
+              Prelude.<$> framerateNumerator
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/MotionImageInsertionMode.hs b/gen/Amazonka/MediaConvert/Types/MotionImageInsertionMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MotionImageInsertionMode.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MotionImageInsertionMode
+-- 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.MotionImageInsertionMode
+  ( MotionImageInsertionMode
+      ( ..,
+        MotionImageInsertionMode_MOV,
+        MotionImageInsertionMode_PNG
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the type of motion graphic asset that you are providing for your
+-- overlay. You can choose either a .mov file or a series of .png files.
+newtype MotionImageInsertionMode = MotionImageInsertionMode'
+  { fromMotionImageInsertionMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MotionImageInsertionMode_MOV :: MotionImageInsertionMode
+pattern MotionImageInsertionMode_MOV = MotionImageInsertionMode' "MOV"
+
+pattern MotionImageInsertionMode_PNG :: MotionImageInsertionMode
+pattern MotionImageInsertionMode_PNG = MotionImageInsertionMode' "PNG"
+
+{-# COMPLETE
+  MotionImageInsertionMode_MOV,
+  MotionImageInsertionMode_PNG,
+  MotionImageInsertionMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MotionImageInsertionOffset.hs b/gen/Amazonka/MediaConvert/Types/MotionImageInsertionOffset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MotionImageInsertionOffset.hs
@@ -0,0 +1,100 @@
+{-# 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.MotionImageInsertionOffset
+-- 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.MotionImageInsertionOffset where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the offset between the upper-left corner of the video frame and
+-- the top left corner of the overlay.
+--
+-- /See:/ 'newMotionImageInsertionOffset' smart constructor.
+data MotionImageInsertionOffset = MotionImageInsertionOffset'
+  { -- | Set the distance, in pixels, between the overlay and the left edge of
+    -- the video frame.
+    imageX :: Prelude.Maybe Prelude.Natural,
+    -- | Set the distance, in pixels, between the overlay and the top edge of the
+    -- video frame.
+    imageY :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MotionImageInsertionOffset' 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:
+--
+-- 'imageX', 'motionImageInsertionOffset_imageX' - Set the distance, in pixels, between the overlay and the left edge of
+-- the video frame.
+--
+-- 'imageY', 'motionImageInsertionOffset_imageY' - Set the distance, in pixels, between the overlay and the top edge of the
+-- video frame.
+newMotionImageInsertionOffset ::
+  MotionImageInsertionOffset
+newMotionImageInsertionOffset =
+  MotionImageInsertionOffset'
+    { imageX =
+        Prelude.Nothing,
+      imageY = Prelude.Nothing
+    }
+
+-- | Set the distance, in pixels, between the overlay and the left edge of
+-- the video frame.
+motionImageInsertionOffset_imageX :: Lens.Lens' MotionImageInsertionOffset (Prelude.Maybe Prelude.Natural)
+motionImageInsertionOffset_imageX = Lens.lens (\MotionImageInsertionOffset' {imageX} -> imageX) (\s@MotionImageInsertionOffset' {} a -> s {imageX = a} :: MotionImageInsertionOffset)
+
+-- | Set the distance, in pixels, between the overlay and the top edge of the
+-- video frame.
+motionImageInsertionOffset_imageY :: Lens.Lens' MotionImageInsertionOffset (Prelude.Maybe Prelude.Natural)
+motionImageInsertionOffset_imageY = Lens.lens (\MotionImageInsertionOffset' {imageY} -> imageY) (\s@MotionImageInsertionOffset' {} a -> s {imageY = a} :: MotionImageInsertionOffset)
+
+instance Data.FromJSON MotionImageInsertionOffset where
+  parseJSON =
+    Data.withObject
+      "MotionImageInsertionOffset"
+      ( \x ->
+          MotionImageInsertionOffset'
+            Prelude.<$> (x Data..:? "imageX")
+            Prelude.<*> (x Data..:? "imageY")
+      )
+
+instance Prelude.Hashable MotionImageInsertionOffset where
+  hashWithSalt _salt MotionImageInsertionOffset' {..} =
+    _salt
+      `Prelude.hashWithSalt` imageX
+      `Prelude.hashWithSalt` imageY
+
+instance Prelude.NFData MotionImageInsertionOffset where
+  rnf MotionImageInsertionOffset' {..} =
+    Prelude.rnf imageX `Prelude.seq` Prelude.rnf imageY
+
+instance Data.ToJSON MotionImageInsertionOffset where
+  toJSON MotionImageInsertionOffset' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("imageX" Data..=) Prelude.<$> imageX,
+            ("imageY" Data..=) Prelude.<$> imageY
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/MotionImagePlayback.hs b/gen/Amazonka/MediaConvert/Types/MotionImagePlayback.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MotionImagePlayback.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MotionImagePlayback
+-- 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.MotionImagePlayback
+  ( MotionImagePlayback
+      ( ..,
+        MotionImagePlayback_ONCE,
+        MotionImagePlayback_REPEAT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether your motion graphic overlay repeats on a loop or plays
+-- only once.
+newtype MotionImagePlayback = MotionImagePlayback'
+  { fromMotionImagePlayback ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MotionImagePlayback_ONCE :: MotionImagePlayback
+pattern MotionImagePlayback_ONCE = MotionImagePlayback' "ONCE"
+
+pattern MotionImagePlayback_REPEAT :: MotionImagePlayback
+pattern MotionImagePlayback_REPEAT = MotionImagePlayback' "REPEAT"
+
+{-# COMPLETE
+  MotionImagePlayback_ONCE,
+  MotionImagePlayback_REPEAT,
+  MotionImagePlayback'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MovClapAtom.hs b/gen/Amazonka/MediaConvert/Types/MovClapAtom.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MovClapAtom.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MovClapAtom
+-- 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.MovClapAtom
+  ( MovClapAtom
+      ( ..,
+        MovClapAtom_EXCLUDE,
+        MovClapAtom_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When enabled, include \'clap\' atom if appropriate for the video output
+-- settings.
+newtype MovClapAtom = MovClapAtom'
+  { fromMovClapAtom ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MovClapAtom_EXCLUDE :: MovClapAtom
+pattern MovClapAtom_EXCLUDE = MovClapAtom' "EXCLUDE"
+
+pattern MovClapAtom_INCLUDE :: MovClapAtom
+pattern MovClapAtom_INCLUDE = MovClapAtom' "INCLUDE"
+
+{-# COMPLETE
+  MovClapAtom_EXCLUDE,
+  MovClapAtom_INCLUDE,
+  MovClapAtom'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MovCslgAtom.hs b/gen/Amazonka/MediaConvert/Types/MovCslgAtom.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MovCslgAtom.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MovCslgAtom
+-- 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.MovCslgAtom
+  ( MovCslgAtom
+      ( ..,
+        MovCslgAtom_EXCLUDE,
+        MovCslgAtom_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When enabled, file composition times will start at zero, composition
+-- times in the \'ctts\' (composition time to sample) box for B-frames will
+-- be negative, and a \'cslg\' (composition shift least greatest) box will
+-- be included per 14496-1 amendment 1. This improves compatibility with
+-- Apple players and tools.
+newtype MovCslgAtom = MovCslgAtom'
+  { fromMovCslgAtom ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MovCslgAtom_EXCLUDE :: MovCslgAtom
+pattern MovCslgAtom_EXCLUDE = MovCslgAtom' "EXCLUDE"
+
+pattern MovCslgAtom_INCLUDE :: MovCslgAtom
+pattern MovCslgAtom_INCLUDE = MovCslgAtom' "INCLUDE"
+
+{-# COMPLETE
+  MovCslgAtom_EXCLUDE,
+  MovCslgAtom_INCLUDE,
+  MovCslgAtom'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MovMpeg2FourCCControl.hs b/gen/Amazonka/MediaConvert/Types/MovMpeg2FourCCControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MovMpeg2FourCCControl.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MovMpeg2FourCCControl
+-- 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.MovMpeg2FourCCControl
+  ( MovMpeg2FourCCControl
+      ( ..,
+        MovMpeg2FourCCControl_MPEG,
+        MovMpeg2FourCCControl_XDCAM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When set to XDCAM, writes MPEG2 video streams into the QuickTime file
+-- using XDCAM fourcc codes. This increases compatibility with Apple
+-- editors and players, but may decrease compatibility with other players.
+-- Only applicable when the video codec is MPEG2.
+newtype MovMpeg2FourCCControl = MovMpeg2FourCCControl'
+  { fromMovMpeg2FourCCControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MovMpeg2FourCCControl_MPEG :: MovMpeg2FourCCControl
+pattern MovMpeg2FourCCControl_MPEG = MovMpeg2FourCCControl' "MPEG"
+
+pattern MovMpeg2FourCCControl_XDCAM :: MovMpeg2FourCCControl
+pattern MovMpeg2FourCCControl_XDCAM = MovMpeg2FourCCControl' "XDCAM"
+
+{-# COMPLETE
+  MovMpeg2FourCCControl_MPEG,
+  MovMpeg2FourCCControl_XDCAM,
+  MovMpeg2FourCCControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MovPaddingControl.hs b/gen/Amazonka/MediaConvert/Types/MovPaddingControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MovPaddingControl.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MovPaddingControl
+-- 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.MovPaddingControl
+  ( MovPaddingControl
+      ( ..,
+        MovPaddingControl_NONE,
+        MovPaddingControl_OMNEON
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | To make this output compatible with Omenon, keep the default value,
+-- OMNEON. Unless you need Omneon compatibility, set this value to NONE.
+-- When you keep the default value, OMNEON, MediaConvert increases the
+-- length of the edit list atom. This might cause file rejections when a
+-- recipient of the output file doesn\'t expct this extra padding.
+newtype MovPaddingControl = MovPaddingControl'
+  { fromMovPaddingControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MovPaddingControl_NONE :: MovPaddingControl
+pattern MovPaddingControl_NONE = MovPaddingControl' "NONE"
+
+pattern MovPaddingControl_OMNEON :: MovPaddingControl
+pattern MovPaddingControl_OMNEON = MovPaddingControl' "OMNEON"
+
+{-# COMPLETE
+  MovPaddingControl_NONE,
+  MovPaddingControl_OMNEON,
+  MovPaddingControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MovReference.hs b/gen/Amazonka/MediaConvert/Types/MovReference.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MovReference.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MovReference
+-- 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.MovReference
+  ( MovReference
+      ( ..,
+        MovReference_EXTERNAL,
+        MovReference_SELF_CONTAINED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Always keep the default value (SELF_CONTAINED) for this setting.
+newtype MovReference = MovReference'
+  { fromMovReference ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MovReference_EXTERNAL :: MovReference
+pattern MovReference_EXTERNAL = MovReference' "EXTERNAL"
+
+pattern MovReference_SELF_CONTAINED :: MovReference
+pattern MovReference_SELF_CONTAINED = MovReference' "SELF_CONTAINED"
+
+{-# COMPLETE
+  MovReference_EXTERNAL,
+  MovReference_SELF_CONTAINED,
+  MovReference'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MovSettings.hs b/gen/Amazonka/MediaConvert/Types/MovSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MovSettings.hs
@@ -0,0 +1,175 @@
+{-# 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.MovSettings
+-- 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.MovSettings 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.MovClapAtom
+import Amazonka.MediaConvert.Types.MovCslgAtom
+import Amazonka.MediaConvert.Types.MovMpeg2FourCCControl
+import Amazonka.MediaConvert.Types.MovPaddingControl
+import Amazonka.MediaConvert.Types.MovReference
+import qualified Amazonka.Prelude as Prelude
+
+-- | These settings relate to your QuickTime MOV output container.
+--
+-- /See:/ 'newMovSettings' smart constructor.
+data MovSettings = MovSettings'
+  { -- | When enabled, include \'clap\' atom if appropriate for the video output
+    -- settings.
+    clapAtom :: Prelude.Maybe MovClapAtom,
+    -- | When enabled, file composition times will start at zero, composition
+    -- times in the \'ctts\' (composition time to sample) box for B-frames will
+    -- be negative, and a \'cslg\' (composition shift least greatest) box will
+    -- be included per 14496-1 amendment 1. This improves compatibility with
+    -- Apple players and tools.
+    cslgAtom :: Prelude.Maybe MovCslgAtom,
+    -- | When set to XDCAM, writes MPEG2 video streams into the QuickTime file
+    -- using XDCAM fourcc codes. This increases compatibility with Apple
+    -- editors and players, but may decrease compatibility with other players.
+    -- Only applicable when the video codec is MPEG2.
+    mpeg2FourCCControl :: Prelude.Maybe MovMpeg2FourCCControl,
+    -- | To make this output compatible with Omenon, keep the default value,
+    -- OMNEON. Unless you need Omneon compatibility, set this value to NONE.
+    -- When you keep the default value, OMNEON, MediaConvert increases the
+    -- length of the edit list atom. This might cause file rejections when a
+    -- recipient of the output file doesn\'t expct this extra padding.
+    paddingControl :: Prelude.Maybe MovPaddingControl,
+    -- | Always keep the default value (SELF_CONTAINED) for this setting.
+    reference :: Prelude.Maybe MovReference
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MovSettings' 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:
+--
+-- 'clapAtom', 'movSettings_clapAtom' - When enabled, include \'clap\' atom if appropriate for the video output
+-- settings.
+--
+-- 'cslgAtom', 'movSettings_cslgAtom' - When enabled, file composition times will start at zero, composition
+-- times in the \'ctts\' (composition time to sample) box for B-frames will
+-- be negative, and a \'cslg\' (composition shift least greatest) box will
+-- be included per 14496-1 amendment 1. This improves compatibility with
+-- Apple players and tools.
+--
+-- 'mpeg2FourCCControl', 'movSettings_mpeg2FourCCControl' - When set to XDCAM, writes MPEG2 video streams into the QuickTime file
+-- using XDCAM fourcc codes. This increases compatibility with Apple
+-- editors and players, but may decrease compatibility with other players.
+-- Only applicable when the video codec is MPEG2.
+--
+-- 'paddingControl', 'movSettings_paddingControl' - To make this output compatible with Omenon, keep the default value,
+-- OMNEON. Unless you need Omneon compatibility, set this value to NONE.
+-- When you keep the default value, OMNEON, MediaConvert increases the
+-- length of the edit list atom. This might cause file rejections when a
+-- recipient of the output file doesn\'t expct this extra padding.
+--
+-- 'reference', 'movSettings_reference' - Always keep the default value (SELF_CONTAINED) for this setting.
+newMovSettings ::
+  MovSettings
+newMovSettings =
+  MovSettings'
+    { clapAtom = Prelude.Nothing,
+      cslgAtom = Prelude.Nothing,
+      mpeg2FourCCControl = Prelude.Nothing,
+      paddingControl = Prelude.Nothing,
+      reference = Prelude.Nothing
+    }
+
+-- | When enabled, include \'clap\' atom if appropriate for the video output
+-- settings.
+movSettings_clapAtom :: Lens.Lens' MovSettings (Prelude.Maybe MovClapAtom)
+movSettings_clapAtom = Lens.lens (\MovSettings' {clapAtom} -> clapAtom) (\s@MovSettings' {} a -> s {clapAtom = a} :: MovSettings)
+
+-- | When enabled, file composition times will start at zero, composition
+-- times in the \'ctts\' (composition time to sample) box for B-frames will
+-- be negative, and a \'cslg\' (composition shift least greatest) box will
+-- be included per 14496-1 amendment 1. This improves compatibility with
+-- Apple players and tools.
+movSettings_cslgAtom :: Lens.Lens' MovSettings (Prelude.Maybe MovCslgAtom)
+movSettings_cslgAtom = Lens.lens (\MovSettings' {cslgAtom} -> cslgAtom) (\s@MovSettings' {} a -> s {cslgAtom = a} :: MovSettings)
+
+-- | When set to XDCAM, writes MPEG2 video streams into the QuickTime file
+-- using XDCAM fourcc codes. This increases compatibility with Apple
+-- editors and players, but may decrease compatibility with other players.
+-- Only applicable when the video codec is MPEG2.
+movSettings_mpeg2FourCCControl :: Lens.Lens' MovSettings (Prelude.Maybe MovMpeg2FourCCControl)
+movSettings_mpeg2FourCCControl = Lens.lens (\MovSettings' {mpeg2FourCCControl} -> mpeg2FourCCControl) (\s@MovSettings' {} a -> s {mpeg2FourCCControl = a} :: MovSettings)
+
+-- | To make this output compatible with Omenon, keep the default value,
+-- OMNEON. Unless you need Omneon compatibility, set this value to NONE.
+-- When you keep the default value, OMNEON, MediaConvert increases the
+-- length of the edit list atom. This might cause file rejections when a
+-- recipient of the output file doesn\'t expct this extra padding.
+movSettings_paddingControl :: Lens.Lens' MovSettings (Prelude.Maybe MovPaddingControl)
+movSettings_paddingControl = Lens.lens (\MovSettings' {paddingControl} -> paddingControl) (\s@MovSettings' {} a -> s {paddingControl = a} :: MovSettings)
+
+-- | Always keep the default value (SELF_CONTAINED) for this setting.
+movSettings_reference :: Lens.Lens' MovSettings (Prelude.Maybe MovReference)
+movSettings_reference = Lens.lens (\MovSettings' {reference} -> reference) (\s@MovSettings' {} a -> s {reference = a} :: MovSettings)
+
+instance Data.FromJSON MovSettings where
+  parseJSON =
+    Data.withObject
+      "MovSettings"
+      ( \x ->
+          MovSettings'
+            Prelude.<$> (x Data..:? "clapAtom")
+            Prelude.<*> (x Data..:? "cslgAtom")
+            Prelude.<*> (x Data..:? "mpeg2FourCCControl")
+            Prelude.<*> (x Data..:? "paddingControl")
+            Prelude.<*> (x Data..:? "reference")
+      )
+
+instance Prelude.Hashable MovSettings where
+  hashWithSalt _salt MovSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` clapAtom
+      `Prelude.hashWithSalt` cslgAtom
+      `Prelude.hashWithSalt` mpeg2FourCCControl
+      `Prelude.hashWithSalt` paddingControl
+      `Prelude.hashWithSalt` reference
+
+instance Prelude.NFData MovSettings where
+  rnf MovSettings' {..} =
+    Prelude.rnf clapAtom
+      `Prelude.seq` Prelude.rnf cslgAtom
+      `Prelude.seq` Prelude.rnf mpeg2FourCCControl
+      `Prelude.seq` Prelude.rnf paddingControl
+      `Prelude.seq` Prelude.rnf reference
+
+instance Data.ToJSON MovSettings where
+  toJSON MovSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clapAtom" Data..=) Prelude.<$> clapAtom,
+            ("cslgAtom" Data..=) Prelude.<$> cslgAtom,
+            ("mpeg2FourCCControl" Data..=)
+              Prelude.<$> mpeg2FourCCControl,
+            ("paddingControl" Data..=)
+              Prelude.<$> paddingControl,
+            ("reference" Data..=) Prelude.<$> reference
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Mp2Settings.hs b/gen/Amazonka/MediaConvert/Types/Mp2Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mp2Settings.hs
@@ -0,0 +1,113 @@
+{-# 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.Mp2Settings
+-- 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.Mp2Settings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value MP2.
+--
+-- /See:/ 'newMp2Settings' smart constructor.
+data Mp2Settings = Mp2Settings'
+  { -- | Specify the average bitrate in bits per second.
+    bitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Set Channels to specify the number of channels in this output audio
+    -- track. Choosing Mono in the console will give you 1 output channel;
+    -- choosing Stereo will give you 2. In the API, valid values are 1 and 2.
+    channels :: Prelude.Maybe Prelude.Natural,
+    -- | Sample rate in hz.
+    sampleRate :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Mp2Settings' 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:
+--
+-- 'bitrate', 'mp2Settings_bitrate' - Specify the average bitrate in bits per second.
+--
+-- 'channels', 'mp2Settings_channels' - Set Channels to specify the number of channels in this output audio
+-- track. Choosing Mono in the console will give you 1 output channel;
+-- choosing Stereo will give you 2. In the API, valid values are 1 and 2.
+--
+-- 'sampleRate', 'mp2Settings_sampleRate' - Sample rate in hz.
+newMp2Settings ::
+  Mp2Settings
+newMp2Settings =
+  Mp2Settings'
+    { bitrate = Prelude.Nothing,
+      channels = Prelude.Nothing,
+      sampleRate = Prelude.Nothing
+    }
+
+-- | Specify the average bitrate in bits per second.
+mp2Settings_bitrate :: Lens.Lens' Mp2Settings (Prelude.Maybe Prelude.Natural)
+mp2Settings_bitrate = Lens.lens (\Mp2Settings' {bitrate} -> bitrate) (\s@Mp2Settings' {} a -> s {bitrate = a} :: Mp2Settings)
+
+-- | Set Channels to specify the number of channels in this output audio
+-- track. Choosing Mono in the console will give you 1 output channel;
+-- choosing Stereo will give you 2. In the API, valid values are 1 and 2.
+mp2Settings_channels :: Lens.Lens' Mp2Settings (Prelude.Maybe Prelude.Natural)
+mp2Settings_channels = Lens.lens (\Mp2Settings' {channels} -> channels) (\s@Mp2Settings' {} a -> s {channels = a} :: Mp2Settings)
+
+-- | Sample rate in hz.
+mp2Settings_sampleRate :: Lens.Lens' Mp2Settings (Prelude.Maybe Prelude.Natural)
+mp2Settings_sampleRate = Lens.lens (\Mp2Settings' {sampleRate} -> sampleRate) (\s@Mp2Settings' {} a -> s {sampleRate = a} :: Mp2Settings)
+
+instance Data.FromJSON Mp2Settings where
+  parseJSON =
+    Data.withObject
+      "Mp2Settings"
+      ( \x ->
+          Mp2Settings'
+            Prelude.<$> (x Data..:? "bitrate")
+            Prelude.<*> (x Data..:? "channels")
+            Prelude.<*> (x Data..:? "sampleRate")
+      )
+
+instance Prelude.Hashable Mp2Settings where
+  hashWithSalt _salt Mp2Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` bitrate
+      `Prelude.hashWithSalt` channels
+      `Prelude.hashWithSalt` sampleRate
+
+instance Prelude.NFData Mp2Settings where
+  rnf Mp2Settings' {..} =
+    Prelude.rnf bitrate
+      `Prelude.seq` Prelude.rnf channels
+      `Prelude.seq` Prelude.rnf sampleRate
+
+instance Data.ToJSON Mp2Settings where
+  toJSON Mp2Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bitrate" Data..=) Prelude.<$> bitrate,
+            ("channels" Data..=) Prelude.<$> channels,
+            ("sampleRate" Data..=) Prelude.<$> sampleRate
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Mp3RateControlMode.hs b/gen/Amazonka/MediaConvert/Types/Mp3RateControlMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mp3RateControlMode.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mp3RateControlMode
+-- 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.Mp3RateControlMode
+  ( Mp3RateControlMode
+      ( ..,
+        Mp3RateControlMode_CBR,
+        Mp3RateControlMode_VBR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether the service encodes this MP3 audio output with a
+-- constant bitrate (CBR) or a variable bitrate (VBR).
+newtype Mp3RateControlMode = Mp3RateControlMode'
+  { fromMp3RateControlMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mp3RateControlMode_CBR :: Mp3RateControlMode
+pattern Mp3RateControlMode_CBR = Mp3RateControlMode' "CBR"
+
+pattern Mp3RateControlMode_VBR :: Mp3RateControlMode
+pattern Mp3RateControlMode_VBR = Mp3RateControlMode' "VBR"
+
+{-# COMPLETE
+  Mp3RateControlMode_CBR,
+  Mp3RateControlMode_VBR,
+  Mp3RateControlMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mp3Settings.hs b/gen/Amazonka/MediaConvert/Types/Mp3Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mp3Settings.hs
@@ -0,0 +1,150 @@
+{-# 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.Mp3Settings
+-- 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.Mp3Settings 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.Mp3RateControlMode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set Codec, under AudioDescriptions>CodecSettings, to
+-- the value MP3.
+--
+-- /See:/ 'newMp3Settings' smart constructor.
+data Mp3Settings = Mp3Settings'
+  { -- | Specify the average bitrate in bits per second.
+    bitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the number of channels in this output audio track. Choosing Mono
+    -- on the console gives you 1 output channel; choosing Stereo gives you 2.
+    -- In the API, valid values are 1 and 2.
+    channels :: Prelude.Maybe Prelude.Natural,
+    -- | Specify whether the service encodes this MP3 audio output with a
+    -- constant bitrate (CBR) or a variable bitrate (VBR).
+    rateControlMode :: Prelude.Maybe Mp3RateControlMode,
+    -- | Sample rate in hz.
+    sampleRate :: Prelude.Maybe Prelude.Natural,
+    -- | Required when you set Bitrate control mode (rateControlMode) to VBR.
+    -- Specify the audio quality of this MP3 output from 0 (highest quality) to
+    -- 9 (lowest quality).
+    vbrQuality :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Mp3Settings' 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:
+--
+-- 'bitrate', 'mp3Settings_bitrate' - Specify the average bitrate in bits per second.
+--
+-- 'channels', 'mp3Settings_channels' - Specify the number of channels in this output audio track. Choosing Mono
+-- on the console gives you 1 output channel; choosing Stereo gives you 2.
+-- In the API, valid values are 1 and 2.
+--
+-- 'rateControlMode', 'mp3Settings_rateControlMode' - Specify whether the service encodes this MP3 audio output with a
+-- constant bitrate (CBR) or a variable bitrate (VBR).
+--
+-- 'sampleRate', 'mp3Settings_sampleRate' - Sample rate in hz.
+--
+-- 'vbrQuality', 'mp3Settings_vbrQuality' - Required when you set Bitrate control mode (rateControlMode) to VBR.
+-- Specify the audio quality of this MP3 output from 0 (highest quality) to
+-- 9 (lowest quality).
+newMp3Settings ::
+  Mp3Settings
+newMp3Settings =
+  Mp3Settings'
+    { bitrate = Prelude.Nothing,
+      channels = Prelude.Nothing,
+      rateControlMode = Prelude.Nothing,
+      sampleRate = Prelude.Nothing,
+      vbrQuality = Prelude.Nothing
+    }
+
+-- | Specify the average bitrate in bits per second.
+mp3Settings_bitrate :: Lens.Lens' Mp3Settings (Prelude.Maybe Prelude.Natural)
+mp3Settings_bitrate = Lens.lens (\Mp3Settings' {bitrate} -> bitrate) (\s@Mp3Settings' {} a -> s {bitrate = a} :: Mp3Settings)
+
+-- | Specify the number of channels in this output audio track. Choosing Mono
+-- on the console gives you 1 output channel; choosing Stereo gives you 2.
+-- In the API, valid values are 1 and 2.
+mp3Settings_channels :: Lens.Lens' Mp3Settings (Prelude.Maybe Prelude.Natural)
+mp3Settings_channels = Lens.lens (\Mp3Settings' {channels} -> channels) (\s@Mp3Settings' {} a -> s {channels = a} :: Mp3Settings)
+
+-- | Specify whether the service encodes this MP3 audio output with a
+-- constant bitrate (CBR) or a variable bitrate (VBR).
+mp3Settings_rateControlMode :: Lens.Lens' Mp3Settings (Prelude.Maybe Mp3RateControlMode)
+mp3Settings_rateControlMode = Lens.lens (\Mp3Settings' {rateControlMode} -> rateControlMode) (\s@Mp3Settings' {} a -> s {rateControlMode = a} :: Mp3Settings)
+
+-- | Sample rate in hz.
+mp3Settings_sampleRate :: Lens.Lens' Mp3Settings (Prelude.Maybe Prelude.Natural)
+mp3Settings_sampleRate = Lens.lens (\Mp3Settings' {sampleRate} -> sampleRate) (\s@Mp3Settings' {} a -> s {sampleRate = a} :: Mp3Settings)
+
+-- | Required when you set Bitrate control mode (rateControlMode) to VBR.
+-- Specify the audio quality of this MP3 output from 0 (highest quality) to
+-- 9 (lowest quality).
+mp3Settings_vbrQuality :: Lens.Lens' Mp3Settings (Prelude.Maybe Prelude.Natural)
+mp3Settings_vbrQuality = Lens.lens (\Mp3Settings' {vbrQuality} -> vbrQuality) (\s@Mp3Settings' {} a -> s {vbrQuality = a} :: Mp3Settings)
+
+instance Data.FromJSON Mp3Settings where
+  parseJSON =
+    Data.withObject
+      "Mp3Settings"
+      ( \x ->
+          Mp3Settings'
+            Prelude.<$> (x Data..:? "bitrate")
+            Prelude.<*> (x Data..:? "channels")
+            Prelude.<*> (x Data..:? "rateControlMode")
+            Prelude.<*> (x Data..:? "sampleRate")
+            Prelude.<*> (x Data..:? "vbrQuality")
+      )
+
+instance Prelude.Hashable Mp3Settings where
+  hashWithSalt _salt Mp3Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` bitrate
+      `Prelude.hashWithSalt` channels
+      `Prelude.hashWithSalt` rateControlMode
+      `Prelude.hashWithSalt` sampleRate
+      `Prelude.hashWithSalt` vbrQuality
+
+instance Prelude.NFData Mp3Settings where
+  rnf Mp3Settings' {..} =
+    Prelude.rnf bitrate
+      `Prelude.seq` Prelude.rnf channels
+      `Prelude.seq` Prelude.rnf rateControlMode
+      `Prelude.seq` Prelude.rnf sampleRate
+      `Prelude.seq` Prelude.rnf vbrQuality
+
+instance Data.ToJSON Mp3Settings where
+  toJSON Mp3Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bitrate" Data..=) Prelude.<$> bitrate,
+            ("channels" Data..=) Prelude.<$> channels,
+            ("rateControlMode" Data..=)
+              Prelude.<$> rateControlMode,
+            ("sampleRate" Data..=) Prelude.<$> sampleRate,
+            ("vbrQuality" Data..=) Prelude.<$> vbrQuality
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Mp4CslgAtom.hs b/gen/Amazonka/MediaConvert/Types/Mp4CslgAtom.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mp4CslgAtom.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mp4CslgAtom
+-- 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.Mp4CslgAtom
+  ( Mp4CslgAtom
+      ( ..,
+        Mp4CslgAtom_EXCLUDE,
+        Mp4CslgAtom_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When enabled, file composition times will start at zero, composition
+-- times in the \'ctts\' (composition time to sample) box for B-frames will
+-- be negative, and a \'cslg\' (composition shift least greatest) box will
+-- be included per 14496-1 amendment 1. This improves compatibility with
+-- Apple players and tools.
+newtype Mp4CslgAtom = Mp4CslgAtom'
+  { fromMp4CslgAtom ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mp4CslgAtom_EXCLUDE :: Mp4CslgAtom
+pattern Mp4CslgAtom_EXCLUDE = Mp4CslgAtom' "EXCLUDE"
+
+pattern Mp4CslgAtom_INCLUDE :: Mp4CslgAtom
+pattern Mp4CslgAtom_INCLUDE = Mp4CslgAtom' "INCLUDE"
+
+{-# COMPLETE
+  Mp4CslgAtom_EXCLUDE,
+  Mp4CslgAtom_INCLUDE,
+  Mp4CslgAtom'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mp4FreeSpaceBox.hs b/gen/Amazonka/MediaConvert/Types/Mp4FreeSpaceBox.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mp4FreeSpaceBox.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mp4FreeSpaceBox
+-- 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.Mp4FreeSpaceBox
+  ( Mp4FreeSpaceBox
+      ( ..,
+        Mp4FreeSpaceBox_EXCLUDE,
+        Mp4FreeSpaceBox_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Inserts a free-space box immediately after the moov box.
+newtype Mp4FreeSpaceBox = Mp4FreeSpaceBox'
+  { fromMp4FreeSpaceBox ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mp4FreeSpaceBox_EXCLUDE :: Mp4FreeSpaceBox
+pattern Mp4FreeSpaceBox_EXCLUDE = Mp4FreeSpaceBox' "EXCLUDE"
+
+pattern Mp4FreeSpaceBox_INCLUDE :: Mp4FreeSpaceBox
+pattern Mp4FreeSpaceBox_INCLUDE = Mp4FreeSpaceBox' "INCLUDE"
+
+{-# COMPLETE
+  Mp4FreeSpaceBox_EXCLUDE,
+  Mp4FreeSpaceBox_INCLUDE,
+  Mp4FreeSpaceBox'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mp4MoovPlacement.hs b/gen/Amazonka/MediaConvert/Types/Mp4MoovPlacement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mp4MoovPlacement.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mp4MoovPlacement
+-- 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.Mp4MoovPlacement
+  ( Mp4MoovPlacement
+      ( ..,
+        Mp4MoovPlacement_NORMAL,
+        Mp4MoovPlacement_PROGRESSIVE_DOWNLOAD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If set to PROGRESSIVE_DOWNLOAD, the MOOV atom is relocated to the
+-- beginning of the archive as required for progressive downloading.
+-- Otherwise it is placed normally at the end.
+newtype Mp4MoovPlacement = Mp4MoovPlacement'
+  { fromMp4MoovPlacement ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mp4MoovPlacement_NORMAL :: Mp4MoovPlacement
+pattern Mp4MoovPlacement_NORMAL = Mp4MoovPlacement' "NORMAL"
+
+pattern Mp4MoovPlacement_PROGRESSIVE_DOWNLOAD :: Mp4MoovPlacement
+pattern Mp4MoovPlacement_PROGRESSIVE_DOWNLOAD = Mp4MoovPlacement' "PROGRESSIVE_DOWNLOAD"
+
+{-# COMPLETE
+  Mp4MoovPlacement_NORMAL,
+  Mp4MoovPlacement_PROGRESSIVE_DOWNLOAD,
+  Mp4MoovPlacement'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mp4Settings.hs b/gen/Amazonka/MediaConvert/Types/Mp4Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mp4Settings.hs
@@ -0,0 +1,229 @@
+{-# 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.Mp4Settings
+-- 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.Mp4Settings 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.CmfcAudioDuration
+import Amazonka.MediaConvert.Types.Mp4CslgAtom
+import Amazonka.MediaConvert.Types.Mp4FreeSpaceBox
+import Amazonka.MediaConvert.Types.Mp4MoovPlacement
+import qualified Amazonka.Prelude as Prelude
+
+-- | These settings relate to your MP4 output container. You can create audio
+-- only outputs with this container. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/supported-codecs-containers-audio-only.html#output-codecs-and-containers-supported-for-audio-only.
+--
+-- /See:/ 'newMp4Settings' smart constructor.
+data Mp4Settings = Mp4Settings'
+  { -- | Specify this setting only when your output will be consumed by a
+    -- downstream repackaging workflow that is sensitive to very small duration
+    -- differences between video and audio. For this situation, choose Match
+    -- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+    -- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+    -- choose Match video duration, MediaConvert pads the output audio streams
+    -- with silence or trims them to ensure that the total duration of each
+    -- audio stream is at least as long as the total duration of the video
+    -- stream. After padding or trimming, the audio stream duration is no more
+    -- than one frame longer than the video stream. MediaConvert applies audio
+    -- padding or trimming only to the end of the last segment of the output.
+    -- For unsegmented outputs, MediaConvert adds padding only to the end of
+    -- the file. When you keep the default value, any minor discrepancies
+    -- between audio and video duration will depend on your output audio codec.
+    audioDuration :: Prelude.Maybe CmfcAudioDuration,
+    -- | When enabled, file composition times will start at zero, composition
+    -- times in the \'ctts\' (composition time to sample) box for B-frames will
+    -- be negative, and a \'cslg\' (composition shift least greatest) box will
+    -- be included per 14496-1 amendment 1. This improves compatibility with
+    -- Apple players and tools.
+    cslgAtom :: Prelude.Maybe Mp4CslgAtom,
+    -- | Ignore this setting unless compliance to the CTTS box version
+    -- specification matters in your workflow. Specify a value of 1 to set your
+    -- CTTS box version to 1 and make your output compliant with the
+    -- specification. When you specify a value of 1, you must also set CSLG
+    -- atom (cslgAtom) to the value INCLUDE. Keep the default value 0 to set
+    -- your CTTS box version to 0. This can provide backward compatibility for
+    -- some players and packagers.
+    cttsVersion :: Prelude.Maybe Prelude.Natural,
+    -- | Inserts a free-space box immediately after the moov box.
+    freeSpaceBox :: Prelude.Maybe Mp4FreeSpaceBox,
+    -- | If set to PROGRESSIVE_DOWNLOAD, the MOOV atom is relocated to the
+    -- beginning of the archive as required for progressive downloading.
+    -- Otherwise it is placed normally at the end.
+    moovPlacement :: Prelude.Maybe Mp4MoovPlacement,
+    -- | Overrides the \"Major Brand\" field in the output file. Usually not
+    -- necessary to specify.
+    mp4MajorBrand :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Mp4Settings' 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:
+--
+-- 'audioDuration', 'mp4Settings_audioDuration' - Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+--
+-- 'cslgAtom', 'mp4Settings_cslgAtom' - When enabled, file composition times will start at zero, composition
+-- times in the \'ctts\' (composition time to sample) box for B-frames will
+-- be negative, and a \'cslg\' (composition shift least greatest) box will
+-- be included per 14496-1 amendment 1. This improves compatibility with
+-- Apple players and tools.
+--
+-- 'cttsVersion', 'mp4Settings_cttsVersion' - Ignore this setting unless compliance to the CTTS box version
+-- specification matters in your workflow. Specify a value of 1 to set your
+-- CTTS box version to 1 and make your output compliant with the
+-- specification. When you specify a value of 1, you must also set CSLG
+-- atom (cslgAtom) to the value INCLUDE. Keep the default value 0 to set
+-- your CTTS box version to 0. This can provide backward compatibility for
+-- some players and packagers.
+--
+-- 'freeSpaceBox', 'mp4Settings_freeSpaceBox' - Inserts a free-space box immediately after the moov box.
+--
+-- 'moovPlacement', 'mp4Settings_moovPlacement' - If set to PROGRESSIVE_DOWNLOAD, the MOOV atom is relocated to the
+-- beginning of the archive as required for progressive downloading.
+-- Otherwise it is placed normally at the end.
+--
+-- 'mp4MajorBrand', 'mp4Settings_mp4MajorBrand' - Overrides the \"Major Brand\" field in the output file. Usually not
+-- necessary to specify.
+newMp4Settings ::
+  Mp4Settings
+newMp4Settings =
+  Mp4Settings'
+    { audioDuration = Prelude.Nothing,
+      cslgAtom = Prelude.Nothing,
+      cttsVersion = Prelude.Nothing,
+      freeSpaceBox = Prelude.Nothing,
+      moovPlacement = Prelude.Nothing,
+      mp4MajorBrand = Prelude.Nothing
+    }
+
+-- | Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+mp4Settings_audioDuration :: Lens.Lens' Mp4Settings (Prelude.Maybe CmfcAudioDuration)
+mp4Settings_audioDuration = Lens.lens (\Mp4Settings' {audioDuration} -> audioDuration) (\s@Mp4Settings' {} a -> s {audioDuration = a} :: Mp4Settings)
+
+-- | When enabled, file composition times will start at zero, composition
+-- times in the \'ctts\' (composition time to sample) box for B-frames will
+-- be negative, and a \'cslg\' (composition shift least greatest) box will
+-- be included per 14496-1 amendment 1. This improves compatibility with
+-- Apple players and tools.
+mp4Settings_cslgAtom :: Lens.Lens' Mp4Settings (Prelude.Maybe Mp4CslgAtom)
+mp4Settings_cslgAtom = Lens.lens (\Mp4Settings' {cslgAtom} -> cslgAtom) (\s@Mp4Settings' {} a -> s {cslgAtom = a} :: Mp4Settings)
+
+-- | Ignore this setting unless compliance to the CTTS box version
+-- specification matters in your workflow. Specify a value of 1 to set your
+-- CTTS box version to 1 and make your output compliant with the
+-- specification. When you specify a value of 1, you must also set CSLG
+-- atom (cslgAtom) to the value INCLUDE. Keep the default value 0 to set
+-- your CTTS box version to 0. This can provide backward compatibility for
+-- some players and packagers.
+mp4Settings_cttsVersion :: Lens.Lens' Mp4Settings (Prelude.Maybe Prelude.Natural)
+mp4Settings_cttsVersion = Lens.lens (\Mp4Settings' {cttsVersion} -> cttsVersion) (\s@Mp4Settings' {} a -> s {cttsVersion = a} :: Mp4Settings)
+
+-- | Inserts a free-space box immediately after the moov box.
+mp4Settings_freeSpaceBox :: Lens.Lens' Mp4Settings (Prelude.Maybe Mp4FreeSpaceBox)
+mp4Settings_freeSpaceBox = Lens.lens (\Mp4Settings' {freeSpaceBox} -> freeSpaceBox) (\s@Mp4Settings' {} a -> s {freeSpaceBox = a} :: Mp4Settings)
+
+-- | If set to PROGRESSIVE_DOWNLOAD, the MOOV atom is relocated to the
+-- beginning of the archive as required for progressive downloading.
+-- Otherwise it is placed normally at the end.
+mp4Settings_moovPlacement :: Lens.Lens' Mp4Settings (Prelude.Maybe Mp4MoovPlacement)
+mp4Settings_moovPlacement = Lens.lens (\Mp4Settings' {moovPlacement} -> moovPlacement) (\s@Mp4Settings' {} a -> s {moovPlacement = a} :: Mp4Settings)
+
+-- | Overrides the \"Major Brand\" field in the output file. Usually not
+-- necessary to specify.
+mp4Settings_mp4MajorBrand :: Lens.Lens' Mp4Settings (Prelude.Maybe Prelude.Text)
+mp4Settings_mp4MajorBrand = Lens.lens (\Mp4Settings' {mp4MajorBrand} -> mp4MajorBrand) (\s@Mp4Settings' {} a -> s {mp4MajorBrand = a} :: Mp4Settings)
+
+instance Data.FromJSON Mp4Settings where
+  parseJSON =
+    Data.withObject
+      "Mp4Settings"
+      ( \x ->
+          Mp4Settings'
+            Prelude.<$> (x Data..:? "audioDuration")
+            Prelude.<*> (x Data..:? "cslgAtom")
+            Prelude.<*> (x Data..:? "cttsVersion")
+            Prelude.<*> (x Data..:? "freeSpaceBox")
+            Prelude.<*> (x Data..:? "moovPlacement")
+            Prelude.<*> (x Data..:? "mp4MajorBrand")
+      )
+
+instance Prelude.Hashable Mp4Settings where
+  hashWithSalt _salt Mp4Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` audioDuration
+      `Prelude.hashWithSalt` cslgAtom
+      `Prelude.hashWithSalt` cttsVersion
+      `Prelude.hashWithSalt` freeSpaceBox
+      `Prelude.hashWithSalt` moovPlacement
+      `Prelude.hashWithSalt` mp4MajorBrand
+
+instance Prelude.NFData Mp4Settings where
+  rnf Mp4Settings' {..} =
+    Prelude.rnf audioDuration
+      `Prelude.seq` Prelude.rnf cslgAtom
+      `Prelude.seq` Prelude.rnf cttsVersion
+      `Prelude.seq` Prelude.rnf freeSpaceBox
+      `Prelude.seq` Prelude.rnf moovPlacement
+      `Prelude.seq` Prelude.rnf mp4MajorBrand
+
+instance Data.ToJSON Mp4Settings where
+  toJSON Mp4Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("audioDuration" Data..=) Prelude.<$> audioDuration,
+            ("cslgAtom" Data..=) Prelude.<$> cslgAtom,
+            ("cttsVersion" Data..=) Prelude.<$> cttsVersion,
+            ("freeSpaceBox" Data..=) Prelude.<$> freeSpaceBox,
+            ("moovPlacement" Data..=) Prelude.<$> moovPlacement,
+            ("mp4MajorBrand" Data..=) Prelude.<$> mp4MajorBrand
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/MpdAccessibilityCaptionHints.hs b/gen/Amazonka/MediaConvert/Types/MpdAccessibilityCaptionHints.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MpdAccessibilityCaptionHints.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MpdAccessibilityCaptionHints
+-- 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.MpdAccessibilityCaptionHints
+  ( MpdAccessibilityCaptionHints
+      ( ..,
+        MpdAccessibilityCaptionHints_EXCLUDE,
+        MpdAccessibilityCaptionHints_INCLUDE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Choose Include (INCLUDE) to have MediaConvert mark up your
+-- DASH manifest with elements for embedded 608 captions. This markup
+-- isn\'t generally required, but some video players require it to discover
+-- and play embedded 608 captions. Keep the default value, Exclude
+-- (EXCLUDE), to leave these elements out. When you enable this setting,
+-- this is the markup that MediaConvert includes in your manifest:
+newtype MpdAccessibilityCaptionHints = MpdAccessibilityCaptionHints'
+  { fromMpdAccessibilityCaptionHints ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MpdAccessibilityCaptionHints_EXCLUDE :: MpdAccessibilityCaptionHints
+pattern MpdAccessibilityCaptionHints_EXCLUDE = MpdAccessibilityCaptionHints' "EXCLUDE"
+
+pattern MpdAccessibilityCaptionHints_INCLUDE :: MpdAccessibilityCaptionHints
+pattern MpdAccessibilityCaptionHints_INCLUDE = MpdAccessibilityCaptionHints' "INCLUDE"
+
+{-# COMPLETE
+  MpdAccessibilityCaptionHints_EXCLUDE,
+  MpdAccessibilityCaptionHints_INCLUDE,
+  MpdAccessibilityCaptionHints'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MpdAudioDuration.hs b/gen/Amazonka/MediaConvert/Types/MpdAudioDuration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MpdAudioDuration.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MpdAudioDuration
+-- 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.MpdAudioDuration
+  ( MpdAudioDuration
+      ( ..,
+        MpdAudioDuration_DEFAULT_CODEC_DURATION,
+        MpdAudioDuration_MATCH_VIDEO_DURATION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+newtype MpdAudioDuration = MpdAudioDuration'
+  { fromMpdAudioDuration ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MpdAudioDuration_DEFAULT_CODEC_DURATION :: MpdAudioDuration
+pattern MpdAudioDuration_DEFAULT_CODEC_DURATION = MpdAudioDuration' "DEFAULT_CODEC_DURATION"
+
+pattern MpdAudioDuration_MATCH_VIDEO_DURATION :: MpdAudioDuration
+pattern MpdAudioDuration_MATCH_VIDEO_DURATION = MpdAudioDuration' "MATCH_VIDEO_DURATION"
+
+{-# COMPLETE
+  MpdAudioDuration_DEFAULT_CODEC_DURATION,
+  MpdAudioDuration_MATCH_VIDEO_DURATION,
+  MpdAudioDuration'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MpdCaptionContainerType.hs b/gen/Amazonka/MediaConvert/Types/MpdCaptionContainerType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MpdCaptionContainerType.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MpdCaptionContainerType
+-- 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.MpdCaptionContainerType
+  ( MpdCaptionContainerType
+      ( ..,
+        MpdCaptionContainerType_FRAGMENTED_MP4,
+        MpdCaptionContainerType_RAW
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting only in DASH output groups that include sidecar TTML or
+-- IMSC captions. You specify sidecar captions in a separate output from
+-- your audio and video. Choose Raw (RAW) for captions in a single XML file
+-- in a raw container. Choose Fragmented MPEG-4 (FRAGMENTED_MP4) for
+-- captions in XML format contained within fragmented MP4 files. This set
+-- of fragmented MP4 files is separate from your video and audio fragmented
+-- MP4 files.
+newtype MpdCaptionContainerType = MpdCaptionContainerType'
+  { fromMpdCaptionContainerType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MpdCaptionContainerType_FRAGMENTED_MP4 :: MpdCaptionContainerType
+pattern MpdCaptionContainerType_FRAGMENTED_MP4 = MpdCaptionContainerType' "FRAGMENTED_MP4"
+
+pattern MpdCaptionContainerType_RAW :: MpdCaptionContainerType
+pattern MpdCaptionContainerType_RAW = MpdCaptionContainerType' "RAW"
+
+{-# COMPLETE
+  MpdCaptionContainerType_FRAGMENTED_MP4,
+  MpdCaptionContainerType_RAW,
+  MpdCaptionContainerType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MpdKlvMetadata.hs b/gen/Amazonka/MediaConvert/Types/MpdKlvMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MpdKlvMetadata.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MpdKlvMetadata
+-- 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.MpdKlvMetadata
+  ( MpdKlvMetadata
+      ( ..,
+        MpdKlvMetadata_NONE,
+        MpdKlvMetadata_PASSTHROUGH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | To include key-length-value metadata in this output: Set KLV metadata
+-- insertion to Passthrough. MediaConvert reads KLV metadata present in
+-- your input and writes each instance to a separate event message box in
+-- the output, according to MISB ST1910.1. To exclude this KLV metadata:
+-- Set KLV metadata insertion to None or leave blank.
+newtype MpdKlvMetadata = MpdKlvMetadata'
+  { fromMpdKlvMetadata ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MpdKlvMetadata_NONE :: MpdKlvMetadata
+pattern MpdKlvMetadata_NONE = MpdKlvMetadata' "NONE"
+
+pattern MpdKlvMetadata_PASSTHROUGH :: MpdKlvMetadata
+pattern MpdKlvMetadata_PASSTHROUGH = MpdKlvMetadata' "PASSTHROUGH"
+
+{-# COMPLETE
+  MpdKlvMetadata_NONE,
+  MpdKlvMetadata_PASSTHROUGH,
+  MpdKlvMetadata'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MpdManifestMetadataSignaling.hs b/gen/Amazonka/MediaConvert/Types/MpdManifestMetadataSignaling.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MpdManifestMetadataSignaling.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MpdManifestMetadataSignaling
+-- 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.MpdManifestMetadataSignaling
+  ( MpdManifestMetadataSignaling
+      ( ..,
+        MpdManifestMetadataSignaling_DISABLED,
+        MpdManifestMetadataSignaling_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | To add an InbandEventStream element in your output MPD manifest for each
+-- type of event message, set Manifest metadata signaling to Enabled. For
+-- ID3 event messages, the InbandEventStream element schemeIdUri will be
+-- same value that you specify for ID3 metadata scheme ID URI. For SCTE35
+-- event messages, the InbandEventStream element schemeIdUri will be
+-- \"urn:scte:scte35:2013:bin\". To leave these elements out of your output
+-- MPD manifest, set Manifest metadata signaling to Disabled.
+newtype MpdManifestMetadataSignaling = MpdManifestMetadataSignaling'
+  { fromMpdManifestMetadataSignaling ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MpdManifestMetadataSignaling_DISABLED :: MpdManifestMetadataSignaling
+pattern MpdManifestMetadataSignaling_DISABLED = MpdManifestMetadataSignaling' "DISABLED"
+
+pattern MpdManifestMetadataSignaling_ENABLED :: MpdManifestMetadataSignaling
+pattern MpdManifestMetadataSignaling_ENABLED = MpdManifestMetadataSignaling' "ENABLED"
+
+{-# COMPLETE
+  MpdManifestMetadataSignaling_DISABLED,
+  MpdManifestMetadataSignaling_ENABLED,
+  MpdManifestMetadataSignaling'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MpdScte35Esam.hs b/gen/Amazonka/MediaConvert/Types/MpdScte35Esam.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MpdScte35Esam.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MpdScte35Esam
+-- 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.MpdScte35Esam
+  ( MpdScte35Esam
+      ( ..,
+        MpdScte35Esam_INSERT,
+        MpdScte35Esam_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting only when you specify SCTE-35 markers from ESAM. Choose
+-- INSERT to put SCTE-35 markers in this output at the insertion points
+-- that you specify in an ESAM XML document. Provide the document in the
+-- setting SCC XML (sccXml).
+newtype MpdScte35Esam = MpdScte35Esam'
+  { fromMpdScte35Esam ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MpdScte35Esam_INSERT :: MpdScte35Esam
+pattern MpdScte35Esam_INSERT = MpdScte35Esam' "INSERT"
+
+pattern MpdScte35Esam_NONE :: MpdScte35Esam
+pattern MpdScte35Esam_NONE = MpdScte35Esam' "NONE"
+
+{-# COMPLETE
+  MpdScte35Esam_INSERT,
+  MpdScte35Esam_NONE,
+  MpdScte35Esam'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MpdScte35Source.hs b/gen/Amazonka/MediaConvert/Types/MpdScte35Source.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MpdScte35Source.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MpdScte35Source
+-- 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.MpdScte35Source
+  ( MpdScte35Source
+      ( ..,
+        MpdScte35Source_NONE,
+        MpdScte35Source_PASSTHROUGH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless you have SCTE-35 markers in your input video
+-- file. Choose Passthrough (PASSTHROUGH) if you want SCTE-35 markers that
+-- appear in your input to also appear in this output. Choose None (NONE)
+-- if you don\'t want those SCTE-35 markers in this output.
+newtype MpdScte35Source = MpdScte35Source'
+  { fromMpdScte35Source ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MpdScte35Source_NONE :: MpdScte35Source
+pattern MpdScte35Source_NONE = MpdScte35Source' "NONE"
+
+pattern MpdScte35Source_PASSTHROUGH :: MpdScte35Source
+pattern MpdScte35Source_PASSTHROUGH = MpdScte35Source' "PASSTHROUGH"
+
+{-# COMPLETE
+  MpdScte35Source_NONE,
+  MpdScte35Source_PASSTHROUGH,
+  MpdScte35Source'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MpdSettings.hs b/gen/Amazonka/MediaConvert/Types/MpdSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MpdSettings.hs
@@ -0,0 +1,398 @@
+{-# 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.MpdSettings
+-- 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.MpdSettings 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.MpdAccessibilityCaptionHints
+import Amazonka.MediaConvert.Types.MpdAudioDuration
+import Amazonka.MediaConvert.Types.MpdCaptionContainerType
+import Amazonka.MediaConvert.Types.MpdKlvMetadata
+import Amazonka.MediaConvert.Types.MpdManifestMetadataSignaling
+import Amazonka.MediaConvert.Types.MpdScte35Esam
+import Amazonka.MediaConvert.Types.MpdScte35Source
+import Amazonka.MediaConvert.Types.MpdTimedMetadata
+import Amazonka.MediaConvert.Types.MpdTimedMetadataBoxVersion
+import qualified Amazonka.Prelude as Prelude
+
+-- | These settings relate to the fragmented MP4 container for the segments
+-- in your DASH outputs.
+--
+-- /See:/ 'newMpdSettings' smart constructor.
+data MpdSettings = MpdSettings'
+  { -- | Optional. Choose Include (INCLUDE) to have MediaConvert mark up your
+    -- DASH manifest with elements for embedded 608 captions. This markup
+    -- isn\'t generally required, but some video players require it to discover
+    -- and play embedded 608 captions. Keep the default value, Exclude
+    -- (EXCLUDE), to leave these elements out. When you enable this setting,
+    -- this is the markup that MediaConvert includes in your manifest:
+    accessibilityCaptionHints :: Prelude.Maybe MpdAccessibilityCaptionHints,
+    -- | Specify this setting only when your output will be consumed by a
+    -- downstream repackaging workflow that is sensitive to very small duration
+    -- differences between video and audio. For this situation, choose Match
+    -- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+    -- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+    -- choose Match video duration, MediaConvert pads the output audio streams
+    -- with silence or trims them to ensure that the total duration of each
+    -- audio stream is at least as long as the total duration of the video
+    -- stream. After padding or trimming, the audio stream duration is no more
+    -- than one frame longer than the video stream. MediaConvert applies audio
+    -- padding or trimming only to the end of the last segment of the output.
+    -- For unsegmented outputs, MediaConvert adds padding only to the end of
+    -- the file. When you keep the default value, any minor discrepancies
+    -- between audio and video duration will depend on your output audio codec.
+    audioDuration :: Prelude.Maybe MpdAudioDuration,
+    -- | Use this setting only in DASH output groups that include sidecar TTML or
+    -- IMSC captions. You specify sidecar captions in a separate output from
+    -- your audio and video. Choose Raw (RAW) for captions in a single XML file
+    -- in a raw container. Choose Fragmented MPEG-4 (FRAGMENTED_MP4) for
+    -- captions in XML format contained within fragmented MP4 files. This set
+    -- of fragmented MP4 files is separate from your video and audio fragmented
+    -- MP4 files.
+    captionContainerType :: Prelude.Maybe MpdCaptionContainerType,
+    -- | To include key-length-value metadata in this output: Set KLV metadata
+    -- insertion to Passthrough. MediaConvert reads KLV metadata present in
+    -- your input and writes each instance to a separate event message box in
+    -- the output, according to MISB ST1910.1. To exclude this KLV metadata:
+    -- Set KLV metadata insertion to None or leave blank.
+    klvMetadata :: Prelude.Maybe MpdKlvMetadata,
+    -- | To add an InbandEventStream element in your output MPD manifest for each
+    -- type of event message, set Manifest metadata signaling to Enabled. For
+    -- ID3 event messages, the InbandEventStream element schemeIdUri will be
+    -- same value that you specify for ID3 metadata scheme ID URI. For SCTE35
+    -- event messages, the InbandEventStream element schemeIdUri will be
+    -- \"urn:scte:scte35:2013:bin\". To leave these elements out of your output
+    -- MPD manifest, set Manifest metadata signaling to Disabled.
+    manifestMetadataSignaling :: Prelude.Maybe MpdManifestMetadataSignaling,
+    -- | Use this setting only when you specify SCTE-35 markers from ESAM. Choose
+    -- INSERT to put SCTE-35 markers in this output at the insertion points
+    -- that you specify in an ESAM XML document. Provide the document in the
+    -- setting SCC XML (sccXml).
+    scte35Esam :: Prelude.Maybe MpdScte35Esam,
+    -- | Ignore this setting unless you have SCTE-35 markers in your input video
+    -- file. Choose Passthrough (PASSTHROUGH) if you want SCTE-35 markers that
+    -- appear in your input to also appear in this output. Choose None (NONE)
+    -- if you don\'t want those SCTE-35 markers in this output.
+    scte35Source :: Prelude.Maybe MpdScte35Source,
+    -- | To include ID3 metadata in this output: Set ID3 metadata (timedMetadata)
+    -- to Passthrough (PASSTHROUGH). Specify this ID3 metadata in Custom ID3
+    -- metadata inserter (timedMetadataInsertion). MediaConvert writes each
+    -- instance of ID3 metadata in a separate Event Message (eMSG) box. To
+    -- exclude this ID3 metadata: Set ID3 metadata to None (NONE) or leave
+    -- blank.
+    timedMetadata :: Prelude.Maybe MpdTimedMetadata,
+    -- | Specify the event message box (eMSG) version for ID3 timed metadata in
+    -- your output. For more information, see ISO\/IEC 23009-1:2022 section
+    -- 5.10.3.3.3 Syntax. Leave blank to use the default value Version 0. When
+    -- you specify Version 1, you must also set ID3 metadata (timedMetadata) to
+    -- Passthrough.
+    timedMetadataBoxVersion :: Prelude.Maybe MpdTimedMetadataBoxVersion,
+    -- | Specify the event message box (eMSG) scheme ID URI (scheme_id_uri) for
+    -- ID3 timed metadata in your output. For more informaiton, see ISO\/IEC
+    -- 23009-1:2022 section 5.10.3.3.4 Semantics. Leave blank to use the
+    -- default value: https:\/\/aomedia.org\/emsg\/ID3 When you specify a value
+    -- for ID3 metadata scheme ID URI, you must also set ID3 metadata
+    -- (timedMetadata) to Passthrough.
+    timedMetadataSchemeIdUri :: Prelude.Maybe Prelude.Text,
+    -- | Specify the event message box (eMSG) value for ID3 timed metadata in
+    -- your output. For more informaiton, see ISO\/IEC 23009-1:2022 section
+    -- 5.10.3.3.4 Semantics. When you specify a value for ID3 Metadata Value,
+    -- you must also set ID3 metadata (timedMetadata) to Passthrough.
+    timedMetadataValue :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MpdSettings' 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:
+--
+-- 'accessibilityCaptionHints', 'mpdSettings_accessibilityCaptionHints' - Optional. Choose Include (INCLUDE) to have MediaConvert mark up your
+-- DASH manifest with elements for embedded 608 captions. This markup
+-- isn\'t generally required, but some video players require it to discover
+-- and play embedded 608 captions. Keep the default value, Exclude
+-- (EXCLUDE), to leave these elements out. When you enable this setting,
+-- this is the markup that MediaConvert includes in your manifest:
+--
+-- 'audioDuration', 'mpdSettings_audioDuration' - Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+--
+-- 'captionContainerType', 'mpdSettings_captionContainerType' - Use this setting only in DASH output groups that include sidecar TTML or
+-- IMSC captions. You specify sidecar captions in a separate output from
+-- your audio and video. Choose Raw (RAW) for captions in a single XML file
+-- in a raw container. Choose Fragmented MPEG-4 (FRAGMENTED_MP4) for
+-- captions in XML format contained within fragmented MP4 files. This set
+-- of fragmented MP4 files is separate from your video and audio fragmented
+-- MP4 files.
+--
+-- 'klvMetadata', 'mpdSettings_klvMetadata' - To include key-length-value metadata in this output: Set KLV metadata
+-- insertion to Passthrough. MediaConvert reads KLV metadata present in
+-- your input and writes each instance to a separate event message box in
+-- the output, according to MISB ST1910.1. To exclude this KLV metadata:
+-- Set KLV metadata insertion to None or leave blank.
+--
+-- 'manifestMetadataSignaling', 'mpdSettings_manifestMetadataSignaling' - To add an InbandEventStream element in your output MPD manifest for each
+-- type of event message, set Manifest metadata signaling to Enabled. For
+-- ID3 event messages, the InbandEventStream element schemeIdUri will be
+-- same value that you specify for ID3 metadata scheme ID URI. For SCTE35
+-- event messages, the InbandEventStream element schemeIdUri will be
+-- \"urn:scte:scte35:2013:bin\". To leave these elements out of your output
+-- MPD manifest, set Manifest metadata signaling to Disabled.
+--
+-- 'scte35Esam', 'mpdSettings_scte35Esam' - Use this setting only when you specify SCTE-35 markers from ESAM. Choose
+-- INSERT to put SCTE-35 markers in this output at the insertion points
+-- that you specify in an ESAM XML document. Provide the document in the
+-- setting SCC XML (sccXml).
+--
+-- 'scte35Source', 'mpdSettings_scte35Source' - Ignore this setting unless you have SCTE-35 markers in your input video
+-- file. Choose Passthrough (PASSTHROUGH) if you want SCTE-35 markers that
+-- appear in your input to also appear in this output. Choose None (NONE)
+-- if you don\'t want those SCTE-35 markers in this output.
+--
+-- 'timedMetadata', 'mpdSettings_timedMetadata' - To include ID3 metadata in this output: Set ID3 metadata (timedMetadata)
+-- to Passthrough (PASSTHROUGH). Specify this ID3 metadata in Custom ID3
+-- metadata inserter (timedMetadataInsertion). MediaConvert writes each
+-- instance of ID3 metadata in a separate Event Message (eMSG) box. To
+-- exclude this ID3 metadata: Set ID3 metadata to None (NONE) or leave
+-- blank.
+--
+-- 'timedMetadataBoxVersion', 'mpdSettings_timedMetadataBoxVersion' - Specify the event message box (eMSG) version for ID3 timed metadata in
+-- your output. For more information, see ISO\/IEC 23009-1:2022 section
+-- 5.10.3.3.3 Syntax. Leave blank to use the default value Version 0. When
+-- you specify Version 1, you must also set ID3 metadata (timedMetadata) to
+-- Passthrough.
+--
+-- 'timedMetadataSchemeIdUri', 'mpdSettings_timedMetadataSchemeIdUri' - Specify the event message box (eMSG) scheme ID URI (scheme_id_uri) for
+-- ID3 timed metadata in your output. For more informaiton, see ISO\/IEC
+-- 23009-1:2022 section 5.10.3.3.4 Semantics. Leave blank to use the
+-- default value: https:\/\/aomedia.org\/emsg\/ID3 When you specify a value
+-- for ID3 metadata scheme ID URI, you must also set ID3 metadata
+-- (timedMetadata) to Passthrough.
+--
+-- 'timedMetadataValue', 'mpdSettings_timedMetadataValue' - Specify the event message box (eMSG) value for ID3 timed metadata in
+-- your output. For more informaiton, see ISO\/IEC 23009-1:2022 section
+-- 5.10.3.3.4 Semantics. When you specify a value for ID3 Metadata Value,
+-- you must also set ID3 metadata (timedMetadata) to Passthrough.
+newMpdSettings ::
+  MpdSettings
+newMpdSettings =
+  MpdSettings'
+    { accessibilityCaptionHints =
+        Prelude.Nothing,
+      audioDuration = Prelude.Nothing,
+      captionContainerType = Prelude.Nothing,
+      klvMetadata = Prelude.Nothing,
+      manifestMetadataSignaling = Prelude.Nothing,
+      scte35Esam = Prelude.Nothing,
+      scte35Source = Prelude.Nothing,
+      timedMetadata = Prelude.Nothing,
+      timedMetadataBoxVersion = Prelude.Nothing,
+      timedMetadataSchemeIdUri = Prelude.Nothing,
+      timedMetadataValue = Prelude.Nothing
+    }
+
+-- | Optional. Choose Include (INCLUDE) to have MediaConvert mark up your
+-- DASH manifest with elements for embedded 608 captions. This markup
+-- isn\'t generally required, but some video players require it to discover
+-- and play embedded 608 captions. Keep the default value, Exclude
+-- (EXCLUDE), to leave these elements out. When you enable this setting,
+-- this is the markup that MediaConvert includes in your manifest:
+mpdSettings_accessibilityCaptionHints :: Lens.Lens' MpdSettings (Prelude.Maybe MpdAccessibilityCaptionHints)
+mpdSettings_accessibilityCaptionHints = Lens.lens (\MpdSettings' {accessibilityCaptionHints} -> accessibilityCaptionHints) (\s@MpdSettings' {} a -> s {accessibilityCaptionHints = a} :: MpdSettings)
+
+-- | Specify this setting only when your output will be consumed by a
+-- downstream repackaging workflow that is sensitive to very small duration
+-- differences between video and audio. For this situation, choose Match
+-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
+-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
+-- choose Match video duration, MediaConvert pads the output audio streams
+-- with silence or trims them to ensure that the total duration of each
+-- audio stream is at least as long as the total duration of the video
+-- stream. After padding or trimming, the audio stream duration is no more
+-- than one frame longer than the video stream. MediaConvert applies audio
+-- padding or trimming only to the end of the last segment of the output.
+-- For unsegmented outputs, MediaConvert adds padding only to the end of
+-- the file. When you keep the default value, any minor discrepancies
+-- between audio and video duration will depend on your output audio codec.
+mpdSettings_audioDuration :: Lens.Lens' MpdSettings (Prelude.Maybe MpdAudioDuration)
+mpdSettings_audioDuration = Lens.lens (\MpdSettings' {audioDuration} -> audioDuration) (\s@MpdSettings' {} a -> s {audioDuration = a} :: MpdSettings)
+
+-- | Use this setting only in DASH output groups that include sidecar TTML or
+-- IMSC captions. You specify sidecar captions in a separate output from
+-- your audio and video. Choose Raw (RAW) for captions in a single XML file
+-- in a raw container. Choose Fragmented MPEG-4 (FRAGMENTED_MP4) for
+-- captions in XML format contained within fragmented MP4 files. This set
+-- of fragmented MP4 files is separate from your video and audio fragmented
+-- MP4 files.
+mpdSettings_captionContainerType :: Lens.Lens' MpdSettings (Prelude.Maybe MpdCaptionContainerType)
+mpdSettings_captionContainerType = Lens.lens (\MpdSettings' {captionContainerType} -> captionContainerType) (\s@MpdSettings' {} a -> s {captionContainerType = a} :: MpdSettings)
+
+-- | To include key-length-value metadata in this output: Set KLV metadata
+-- insertion to Passthrough. MediaConvert reads KLV metadata present in
+-- your input and writes each instance to a separate event message box in
+-- the output, according to MISB ST1910.1. To exclude this KLV metadata:
+-- Set KLV metadata insertion to None or leave blank.
+mpdSettings_klvMetadata :: Lens.Lens' MpdSettings (Prelude.Maybe MpdKlvMetadata)
+mpdSettings_klvMetadata = Lens.lens (\MpdSettings' {klvMetadata} -> klvMetadata) (\s@MpdSettings' {} a -> s {klvMetadata = a} :: MpdSettings)
+
+-- | To add an InbandEventStream element in your output MPD manifest for each
+-- type of event message, set Manifest metadata signaling to Enabled. For
+-- ID3 event messages, the InbandEventStream element schemeIdUri will be
+-- same value that you specify for ID3 metadata scheme ID URI. For SCTE35
+-- event messages, the InbandEventStream element schemeIdUri will be
+-- \"urn:scte:scte35:2013:bin\". To leave these elements out of your output
+-- MPD manifest, set Manifest metadata signaling to Disabled.
+mpdSettings_manifestMetadataSignaling :: Lens.Lens' MpdSettings (Prelude.Maybe MpdManifestMetadataSignaling)
+mpdSettings_manifestMetadataSignaling = Lens.lens (\MpdSettings' {manifestMetadataSignaling} -> manifestMetadataSignaling) (\s@MpdSettings' {} a -> s {manifestMetadataSignaling = a} :: MpdSettings)
+
+-- | Use this setting only when you specify SCTE-35 markers from ESAM. Choose
+-- INSERT to put SCTE-35 markers in this output at the insertion points
+-- that you specify in an ESAM XML document. Provide the document in the
+-- setting SCC XML (sccXml).
+mpdSettings_scte35Esam :: Lens.Lens' MpdSettings (Prelude.Maybe MpdScte35Esam)
+mpdSettings_scte35Esam = Lens.lens (\MpdSettings' {scte35Esam} -> scte35Esam) (\s@MpdSettings' {} a -> s {scte35Esam = a} :: MpdSettings)
+
+-- | Ignore this setting unless you have SCTE-35 markers in your input video
+-- file. Choose Passthrough (PASSTHROUGH) if you want SCTE-35 markers that
+-- appear in your input to also appear in this output. Choose None (NONE)
+-- if you don\'t want those SCTE-35 markers in this output.
+mpdSettings_scte35Source :: Lens.Lens' MpdSettings (Prelude.Maybe MpdScte35Source)
+mpdSettings_scte35Source = Lens.lens (\MpdSettings' {scte35Source} -> scte35Source) (\s@MpdSettings' {} a -> s {scte35Source = a} :: MpdSettings)
+
+-- | To include ID3 metadata in this output: Set ID3 metadata (timedMetadata)
+-- to Passthrough (PASSTHROUGH). Specify this ID3 metadata in Custom ID3
+-- metadata inserter (timedMetadataInsertion). MediaConvert writes each
+-- instance of ID3 metadata in a separate Event Message (eMSG) box. To
+-- exclude this ID3 metadata: Set ID3 metadata to None (NONE) or leave
+-- blank.
+mpdSettings_timedMetadata :: Lens.Lens' MpdSettings (Prelude.Maybe MpdTimedMetadata)
+mpdSettings_timedMetadata = Lens.lens (\MpdSettings' {timedMetadata} -> timedMetadata) (\s@MpdSettings' {} a -> s {timedMetadata = a} :: MpdSettings)
+
+-- | Specify the event message box (eMSG) version for ID3 timed metadata in
+-- your output. For more information, see ISO\/IEC 23009-1:2022 section
+-- 5.10.3.3.3 Syntax. Leave blank to use the default value Version 0. When
+-- you specify Version 1, you must also set ID3 metadata (timedMetadata) to
+-- Passthrough.
+mpdSettings_timedMetadataBoxVersion :: Lens.Lens' MpdSettings (Prelude.Maybe MpdTimedMetadataBoxVersion)
+mpdSettings_timedMetadataBoxVersion = Lens.lens (\MpdSettings' {timedMetadataBoxVersion} -> timedMetadataBoxVersion) (\s@MpdSettings' {} a -> s {timedMetadataBoxVersion = a} :: MpdSettings)
+
+-- | Specify the event message box (eMSG) scheme ID URI (scheme_id_uri) for
+-- ID3 timed metadata in your output. For more informaiton, see ISO\/IEC
+-- 23009-1:2022 section 5.10.3.3.4 Semantics. Leave blank to use the
+-- default value: https:\/\/aomedia.org\/emsg\/ID3 When you specify a value
+-- for ID3 metadata scheme ID URI, you must also set ID3 metadata
+-- (timedMetadata) to Passthrough.
+mpdSettings_timedMetadataSchemeIdUri :: Lens.Lens' MpdSettings (Prelude.Maybe Prelude.Text)
+mpdSettings_timedMetadataSchemeIdUri = Lens.lens (\MpdSettings' {timedMetadataSchemeIdUri} -> timedMetadataSchemeIdUri) (\s@MpdSettings' {} a -> s {timedMetadataSchemeIdUri = a} :: MpdSettings)
+
+-- | Specify the event message box (eMSG) value for ID3 timed metadata in
+-- your output. For more informaiton, see ISO\/IEC 23009-1:2022 section
+-- 5.10.3.3.4 Semantics. When you specify a value for ID3 Metadata Value,
+-- you must also set ID3 metadata (timedMetadata) to Passthrough.
+mpdSettings_timedMetadataValue :: Lens.Lens' MpdSettings (Prelude.Maybe Prelude.Text)
+mpdSettings_timedMetadataValue = Lens.lens (\MpdSettings' {timedMetadataValue} -> timedMetadataValue) (\s@MpdSettings' {} a -> s {timedMetadataValue = a} :: MpdSettings)
+
+instance Data.FromJSON MpdSettings where
+  parseJSON =
+    Data.withObject
+      "MpdSettings"
+      ( \x ->
+          MpdSettings'
+            Prelude.<$> (x Data..:? "accessibilityCaptionHints")
+            Prelude.<*> (x Data..:? "audioDuration")
+            Prelude.<*> (x Data..:? "captionContainerType")
+            Prelude.<*> (x Data..:? "klvMetadata")
+            Prelude.<*> (x Data..:? "manifestMetadataSignaling")
+            Prelude.<*> (x Data..:? "scte35Esam")
+            Prelude.<*> (x Data..:? "scte35Source")
+            Prelude.<*> (x Data..:? "timedMetadata")
+            Prelude.<*> (x Data..:? "timedMetadataBoxVersion")
+            Prelude.<*> (x Data..:? "timedMetadataSchemeIdUri")
+            Prelude.<*> (x Data..:? "timedMetadataValue")
+      )
+
+instance Prelude.Hashable MpdSettings where
+  hashWithSalt _salt MpdSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` accessibilityCaptionHints
+      `Prelude.hashWithSalt` audioDuration
+      `Prelude.hashWithSalt` captionContainerType
+      `Prelude.hashWithSalt` klvMetadata
+      `Prelude.hashWithSalt` manifestMetadataSignaling
+      `Prelude.hashWithSalt` scte35Esam
+      `Prelude.hashWithSalt` scte35Source
+      `Prelude.hashWithSalt` timedMetadata
+      `Prelude.hashWithSalt` timedMetadataBoxVersion
+      `Prelude.hashWithSalt` timedMetadataSchemeIdUri
+      `Prelude.hashWithSalt` timedMetadataValue
+
+instance Prelude.NFData MpdSettings where
+  rnf MpdSettings' {..} =
+    Prelude.rnf accessibilityCaptionHints
+      `Prelude.seq` Prelude.rnf audioDuration
+      `Prelude.seq` Prelude.rnf captionContainerType
+      `Prelude.seq` Prelude.rnf klvMetadata
+      `Prelude.seq` Prelude.rnf manifestMetadataSignaling
+      `Prelude.seq` Prelude.rnf scte35Esam
+      `Prelude.seq` Prelude.rnf scte35Source
+      `Prelude.seq` Prelude.rnf timedMetadata
+      `Prelude.seq` Prelude.rnf timedMetadataBoxVersion
+      `Prelude.seq` Prelude.rnf timedMetadataSchemeIdUri
+      `Prelude.seq` Prelude.rnf timedMetadataValue
+
+instance Data.ToJSON MpdSettings where
+  toJSON MpdSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accessibilityCaptionHints" Data..=)
+              Prelude.<$> accessibilityCaptionHints,
+            ("audioDuration" Data..=) Prelude.<$> audioDuration,
+            ("captionContainerType" Data..=)
+              Prelude.<$> captionContainerType,
+            ("klvMetadata" Data..=) Prelude.<$> klvMetadata,
+            ("manifestMetadataSignaling" Data..=)
+              Prelude.<$> manifestMetadataSignaling,
+            ("scte35Esam" Data..=) Prelude.<$> scte35Esam,
+            ("scte35Source" Data..=) Prelude.<$> scte35Source,
+            ("timedMetadata" Data..=) Prelude.<$> timedMetadata,
+            ("timedMetadataBoxVersion" Data..=)
+              Prelude.<$> timedMetadataBoxVersion,
+            ("timedMetadataSchemeIdUri" Data..=)
+              Prelude.<$> timedMetadataSchemeIdUri,
+            ("timedMetadataValue" Data..=)
+              Prelude.<$> timedMetadataValue
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/MpdTimedMetadata.hs b/gen/Amazonka/MediaConvert/Types/MpdTimedMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MpdTimedMetadata.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MpdTimedMetadata
+-- 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.MpdTimedMetadata
+  ( MpdTimedMetadata
+      ( ..,
+        MpdTimedMetadata_NONE,
+        MpdTimedMetadata_PASSTHROUGH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | To include ID3 metadata in this output: Set ID3 metadata (timedMetadata)
+-- to Passthrough (PASSTHROUGH). Specify this ID3 metadata in Custom ID3
+-- metadata inserter (timedMetadataInsertion). MediaConvert writes each
+-- instance of ID3 metadata in a separate Event Message (eMSG) box. To
+-- exclude this ID3 metadata: Set ID3 metadata to None (NONE) or leave
+-- blank.
+newtype MpdTimedMetadata = MpdTimedMetadata'
+  { fromMpdTimedMetadata ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MpdTimedMetadata_NONE :: MpdTimedMetadata
+pattern MpdTimedMetadata_NONE = MpdTimedMetadata' "NONE"
+
+pattern MpdTimedMetadata_PASSTHROUGH :: MpdTimedMetadata
+pattern MpdTimedMetadata_PASSTHROUGH = MpdTimedMetadata' "PASSTHROUGH"
+
+{-# COMPLETE
+  MpdTimedMetadata_NONE,
+  MpdTimedMetadata_PASSTHROUGH,
+  MpdTimedMetadata'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MpdTimedMetadataBoxVersion.hs b/gen/Amazonka/MediaConvert/Types/MpdTimedMetadataBoxVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MpdTimedMetadataBoxVersion.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MpdTimedMetadataBoxVersion
+-- 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.MpdTimedMetadataBoxVersion
+  ( MpdTimedMetadataBoxVersion
+      ( ..,
+        MpdTimedMetadataBoxVersion_VERSION_0,
+        MpdTimedMetadataBoxVersion_VERSION_1
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the event message box (eMSG) version for ID3 timed metadata in
+-- your output. For more information, see ISO\/IEC 23009-1:2022 section
+-- 5.10.3.3.3 Syntax. Leave blank to use the default value Version 0. When
+-- you specify Version 1, you must also set ID3 metadata (timedMetadata) to
+-- Passthrough.
+newtype MpdTimedMetadataBoxVersion = MpdTimedMetadataBoxVersion'
+  { fromMpdTimedMetadataBoxVersion ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MpdTimedMetadataBoxVersion_VERSION_0 :: MpdTimedMetadataBoxVersion
+pattern MpdTimedMetadataBoxVersion_VERSION_0 = MpdTimedMetadataBoxVersion' "VERSION_0"
+
+pattern MpdTimedMetadataBoxVersion_VERSION_1 :: MpdTimedMetadataBoxVersion
+pattern MpdTimedMetadataBoxVersion_VERSION_1 = MpdTimedMetadataBoxVersion' "VERSION_1"
+
+{-# COMPLETE
+  MpdTimedMetadataBoxVersion_VERSION_0,
+  MpdTimedMetadataBoxVersion_VERSION_1,
+  MpdTimedMetadataBoxVersion'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2AdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2AdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2AdaptiveQuantization.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2AdaptiveQuantization
+-- 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.Mpeg2AdaptiveQuantization
+  ( Mpeg2AdaptiveQuantization
+      ( ..,
+        Mpeg2AdaptiveQuantization_HIGH,
+        Mpeg2AdaptiveQuantization_LOW,
+        Mpeg2AdaptiveQuantization_MEDIUM,
+        Mpeg2AdaptiveQuantization_OFF
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the strength of any adaptive quantization filters that you
+-- enable. The value that you choose here applies to the following
+-- settings: Spatial adaptive quantization (spatialAdaptiveQuantization),
+-- and Temporal adaptive quantization (temporalAdaptiveQuantization).
+newtype Mpeg2AdaptiveQuantization = Mpeg2AdaptiveQuantization'
+  { fromMpeg2AdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2AdaptiveQuantization_HIGH :: Mpeg2AdaptiveQuantization
+pattern Mpeg2AdaptiveQuantization_HIGH = Mpeg2AdaptiveQuantization' "HIGH"
+
+pattern Mpeg2AdaptiveQuantization_LOW :: Mpeg2AdaptiveQuantization
+pattern Mpeg2AdaptiveQuantization_LOW = Mpeg2AdaptiveQuantization' "LOW"
+
+pattern Mpeg2AdaptiveQuantization_MEDIUM :: Mpeg2AdaptiveQuantization
+pattern Mpeg2AdaptiveQuantization_MEDIUM = Mpeg2AdaptiveQuantization' "MEDIUM"
+
+pattern Mpeg2AdaptiveQuantization_OFF :: Mpeg2AdaptiveQuantization
+pattern Mpeg2AdaptiveQuantization_OFF = Mpeg2AdaptiveQuantization' "OFF"
+
+{-# COMPLETE
+  Mpeg2AdaptiveQuantization_HIGH,
+  Mpeg2AdaptiveQuantization_LOW,
+  Mpeg2AdaptiveQuantization_MEDIUM,
+  Mpeg2AdaptiveQuantization_OFF,
+  Mpeg2AdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2CodecLevel.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2CodecLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2CodecLevel.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2CodecLevel
+-- 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.Mpeg2CodecLevel
+  ( Mpeg2CodecLevel
+      ( ..,
+        Mpeg2CodecLevel_AUTO,
+        Mpeg2CodecLevel_HIGH,
+        Mpeg2CodecLevel_HIGH1440,
+        Mpeg2CodecLevel_LOW,
+        Mpeg2CodecLevel_MAIN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Level (Mpeg2CodecLevel) to set the MPEG-2 level for the video
+-- output.
+newtype Mpeg2CodecLevel = Mpeg2CodecLevel'
+  { fromMpeg2CodecLevel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2CodecLevel_AUTO :: Mpeg2CodecLevel
+pattern Mpeg2CodecLevel_AUTO = Mpeg2CodecLevel' "AUTO"
+
+pattern Mpeg2CodecLevel_HIGH :: Mpeg2CodecLevel
+pattern Mpeg2CodecLevel_HIGH = Mpeg2CodecLevel' "HIGH"
+
+pattern Mpeg2CodecLevel_HIGH1440 :: Mpeg2CodecLevel
+pattern Mpeg2CodecLevel_HIGH1440 = Mpeg2CodecLevel' "HIGH1440"
+
+pattern Mpeg2CodecLevel_LOW :: Mpeg2CodecLevel
+pattern Mpeg2CodecLevel_LOW = Mpeg2CodecLevel' "LOW"
+
+pattern Mpeg2CodecLevel_MAIN :: Mpeg2CodecLevel
+pattern Mpeg2CodecLevel_MAIN = Mpeg2CodecLevel' "MAIN"
+
+{-# COMPLETE
+  Mpeg2CodecLevel_AUTO,
+  Mpeg2CodecLevel_HIGH,
+  Mpeg2CodecLevel_HIGH1440,
+  Mpeg2CodecLevel_LOW,
+  Mpeg2CodecLevel_MAIN,
+  Mpeg2CodecLevel'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2CodecProfile.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2CodecProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2CodecProfile.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2CodecProfile
+-- 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.Mpeg2CodecProfile
+  ( Mpeg2CodecProfile
+      ( ..,
+        Mpeg2CodecProfile_MAIN,
+        Mpeg2CodecProfile_PROFILE_422
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Profile (Mpeg2CodecProfile) to set the MPEG-2 profile for the video
+-- output.
+newtype Mpeg2CodecProfile = Mpeg2CodecProfile'
+  { fromMpeg2CodecProfile ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2CodecProfile_MAIN :: Mpeg2CodecProfile
+pattern Mpeg2CodecProfile_MAIN = Mpeg2CodecProfile' "MAIN"
+
+pattern Mpeg2CodecProfile_PROFILE_422 :: Mpeg2CodecProfile
+pattern Mpeg2CodecProfile_PROFILE_422 = Mpeg2CodecProfile' "PROFILE_422"
+
+{-# COMPLETE
+  Mpeg2CodecProfile_MAIN,
+  Mpeg2CodecProfile_PROFILE_422,
+  Mpeg2CodecProfile'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2DynamicSubGop.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2DynamicSubGop.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2DynamicSubGop.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2DynamicSubGop
+-- 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.Mpeg2DynamicSubGop
+  ( Mpeg2DynamicSubGop
+      ( ..,
+        Mpeg2DynamicSubGop_ADAPTIVE,
+        Mpeg2DynamicSubGop_STATIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose Adaptive to improve subjective video quality for high-motion
+-- content. This will cause the service to use fewer B-frames (which infer
+-- information based on other frames) for high-motion portions of the video
+-- and more B-frames for low-motion portions. The maximum number of
+-- B-frames is limited by the value you provide for the setting B frames
+-- between reference frames (numberBFramesBetweenReferenceFrames).
+newtype Mpeg2DynamicSubGop = Mpeg2DynamicSubGop'
+  { fromMpeg2DynamicSubGop ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2DynamicSubGop_ADAPTIVE :: Mpeg2DynamicSubGop
+pattern Mpeg2DynamicSubGop_ADAPTIVE = Mpeg2DynamicSubGop' "ADAPTIVE"
+
+pattern Mpeg2DynamicSubGop_STATIC :: Mpeg2DynamicSubGop
+pattern Mpeg2DynamicSubGop_STATIC = Mpeg2DynamicSubGop' "STATIC"
+
+{-# COMPLETE
+  Mpeg2DynamicSubGop_ADAPTIVE,
+  Mpeg2DynamicSubGop_STATIC,
+  Mpeg2DynamicSubGop'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2FramerateControl.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2FramerateControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2FramerateControl.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2FramerateControl
+-- 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.Mpeg2FramerateControl
+  ( Mpeg2FramerateControl
+      ( ..,
+        Mpeg2FramerateControl_INITIALIZE_FROM_SOURCE,
+        Mpeg2FramerateControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+newtype Mpeg2FramerateControl = Mpeg2FramerateControl'
+  { fromMpeg2FramerateControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2FramerateControl_INITIALIZE_FROM_SOURCE :: Mpeg2FramerateControl
+pattern Mpeg2FramerateControl_INITIALIZE_FROM_SOURCE = Mpeg2FramerateControl' "INITIALIZE_FROM_SOURCE"
+
+pattern Mpeg2FramerateControl_SPECIFIED :: Mpeg2FramerateControl
+pattern Mpeg2FramerateControl_SPECIFIED = Mpeg2FramerateControl' "SPECIFIED"
+
+{-# COMPLETE
+  Mpeg2FramerateControl_INITIALIZE_FROM_SOURCE,
+  Mpeg2FramerateControl_SPECIFIED,
+  Mpeg2FramerateControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2FramerateConversionAlgorithm.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2FramerateConversionAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2FramerateConversionAlgorithm.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2FramerateConversionAlgorithm
+-- 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.Mpeg2FramerateConversionAlgorithm
+  ( Mpeg2FramerateConversionAlgorithm
+      ( ..,
+        Mpeg2FramerateConversionAlgorithm_DUPLICATE_DROP,
+        Mpeg2FramerateConversionAlgorithm_FRAMEFORMER,
+        Mpeg2FramerateConversionAlgorithm_INTERPOLATE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+newtype Mpeg2FramerateConversionAlgorithm = Mpeg2FramerateConversionAlgorithm'
+  { fromMpeg2FramerateConversionAlgorithm ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2FramerateConversionAlgorithm_DUPLICATE_DROP :: Mpeg2FramerateConversionAlgorithm
+pattern Mpeg2FramerateConversionAlgorithm_DUPLICATE_DROP = Mpeg2FramerateConversionAlgorithm' "DUPLICATE_DROP"
+
+pattern Mpeg2FramerateConversionAlgorithm_FRAMEFORMER :: Mpeg2FramerateConversionAlgorithm
+pattern Mpeg2FramerateConversionAlgorithm_FRAMEFORMER = Mpeg2FramerateConversionAlgorithm' "FRAMEFORMER"
+
+pattern Mpeg2FramerateConversionAlgorithm_INTERPOLATE :: Mpeg2FramerateConversionAlgorithm
+pattern Mpeg2FramerateConversionAlgorithm_INTERPOLATE = Mpeg2FramerateConversionAlgorithm' "INTERPOLATE"
+
+{-# COMPLETE
+  Mpeg2FramerateConversionAlgorithm_DUPLICATE_DROP,
+  Mpeg2FramerateConversionAlgorithm_FRAMEFORMER,
+  Mpeg2FramerateConversionAlgorithm_INTERPOLATE,
+  Mpeg2FramerateConversionAlgorithm'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2GopSizeUnits.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2GopSizeUnits.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2GopSizeUnits.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2GopSizeUnits
+-- 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.Mpeg2GopSizeUnits
+  ( Mpeg2GopSizeUnits
+      ( ..,
+        Mpeg2GopSizeUnits_FRAMES,
+        Mpeg2GopSizeUnits_SECONDS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the units for GOP size (GopSize). If you don\'t specify a value
+-- here, by default the encoder measures GOP size in frames.
+newtype Mpeg2GopSizeUnits = Mpeg2GopSizeUnits'
+  { fromMpeg2GopSizeUnits ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2GopSizeUnits_FRAMES :: Mpeg2GopSizeUnits
+pattern Mpeg2GopSizeUnits_FRAMES = Mpeg2GopSizeUnits' "FRAMES"
+
+pattern Mpeg2GopSizeUnits_SECONDS :: Mpeg2GopSizeUnits
+pattern Mpeg2GopSizeUnits_SECONDS = Mpeg2GopSizeUnits' "SECONDS"
+
+{-# COMPLETE
+  Mpeg2GopSizeUnits_FRAMES,
+  Mpeg2GopSizeUnits_SECONDS,
+  Mpeg2GopSizeUnits'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2InterlaceMode.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2InterlaceMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2InterlaceMode.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2InterlaceMode
+-- 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.Mpeg2InterlaceMode
+  ( Mpeg2InterlaceMode
+      ( ..,
+        Mpeg2InterlaceMode_BOTTOM_FIELD,
+        Mpeg2InterlaceMode_FOLLOW_BOTTOM_FIELD,
+        Mpeg2InterlaceMode_FOLLOW_TOP_FIELD,
+        Mpeg2InterlaceMode_PROGRESSIVE,
+        Mpeg2InterlaceMode_TOP_FIELD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+newtype Mpeg2InterlaceMode = Mpeg2InterlaceMode'
+  { fromMpeg2InterlaceMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2InterlaceMode_BOTTOM_FIELD :: Mpeg2InterlaceMode
+pattern Mpeg2InterlaceMode_BOTTOM_FIELD = Mpeg2InterlaceMode' "BOTTOM_FIELD"
+
+pattern Mpeg2InterlaceMode_FOLLOW_BOTTOM_FIELD :: Mpeg2InterlaceMode
+pattern Mpeg2InterlaceMode_FOLLOW_BOTTOM_FIELD = Mpeg2InterlaceMode' "FOLLOW_BOTTOM_FIELD"
+
+pattern Mpeg2InterlaceMode_FOLLOW_TOP_FIELD :: Mpeg2InterlaceMode
+pattern Mpeg2InterlaceMode_FOLLOW_TOP_FIELD = Mpeg2InterlaceMode' "FOLLOW_TOP_FIELD"
+
+pattern Mpeg2InterlaceMode_PROGRESSIVE :: Mpeg2InterlaceMode
+pattern Mpeg2InterlaceMode_PROGRESSIVE = Mpeg2InterlaceMode' "PROGRESSIVE"
+
+pattern Mpeg2InterlaceMode_TOP_FIELD :: Mpeg2InterlaceMode
+pattern Mpeg2InterlaceMode_TOP_FIELD = Mpeg2InterlaceMode' "TOP_FIELD"
+
+{-# COMPLETE
+  Mpeg2InterlaceMode_BOTTOM_FIELD,
+  Mpeg2InterlaceMode_FOLLOW_BOTTOM_FIELD,
+  Mpeg2InterlaceMode_FOLLOW_TOP_FIELD,
+  Mpeg2InterlaceMode_PROGRESSIVE,
+  Mpeg2InterlaceMode_TOP_FIELD,
+  Mpeg2InterlaceMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2IntraDcPrecision.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2IntraDcPrecision.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2IntraDcPrecision.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2IntraDcPrecision
+-- 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.Mpeg2IntraDcPrecision
+  ( Mpeg2IntraDcPrecision
+      ( ..,
+        Mpeg2IntraDcPrecision_AUTO,
+        Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_10,
+        Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_11,
+        Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_8,
+        Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_9
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Intra DC precision (Mpeg2IntraDcPrecision) to set quantization
+-- precision for intra-block DC coefficients. If you choose the value auto,
+-- the service will automatically select the precision based on the
+-- per-frame compression ratio.
+newtype Mpeg2IntraDcPrecision = Mpeg2IntraDcPrecision'
+  { fromMpeg2IntraDcPrecision ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2IntraDcPrecision_AUTO :: Mpeg2IntraDcPrecision
+pattern Mpeg2IntraDcPrecision_AUTO = Mpeg2IntraDcPrecision' "AUTO"
+
+pattern Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_10 :: Mpeg2IntraDcPrecision
+pattern Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_10 = Mpeg2IntraDcPrecision' "INTRA_DC_PRECISION_10"
+
+pattern Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_11 :: Mpeg2IntraDcPrecision
+pattern Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_11 = Mpeg2IntraDcPrecision' "INTRA_DC_PRECISION_11"
+
+pattern Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_8 :: Mpeg2IntraDcPrecision
+pattern Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_8 = Mpeg2IntraDcPrecision' "INTRA_DC_PRECISION_8"
+
+pattern Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_9 :: Mpeg2IntraDcPrecision
+pattern Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_9 = Mpeg2IntraDcPrecision' "INTRA_DC_PRECISION_9"
+
+{-# COMPLETE
+  Mpeg2IntraDcPrecision_AUTO,
+  Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_10,
+  Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_11,
+  Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_8,
+  Mpeg2IntraDcPrecision_INTRA_DC_PRECISION_9,
+  Mpeg2IntraDcPrecision'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2ParControl.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2ParControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2ParControl.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2ParControl
+-- 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.Mpeg2ParControl
+  ( Mpeg2ParControl
+      ( ..,
+        Mpeg2ParControl_INITIALIZE_FROM_SOURCE,
+        Mpeg2ParControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+newtype Mpeg2ParControl = Mpeg2ParControl'
+  { fromMpeg2ParControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2ParControl_INITIALIZE_FROM_SOURCE :: Mpeg2ParControl
+pattern Mpeg2ParControl_INITIALIZE_FROM_SOURCE = Mpeg2ParControl' "INITIALIZE_FROM_SOURCE"
+
+pattern Mpeg2ParControl_SPECIFIED :: Mpeg2ParControl
+pattern Mpeg2ParControl_SPECIFIED = Mpeg2ParControl' "SPECIFIED"
+
+{-# COMPLETE
+  Mpeg2ParControl_INITIALIZE_FROM_SOURCE,
+  Mpeg2ParControl_SPECIFIED,
+  Mpeg2ParControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2QualityTuningLevel.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2QualityTuningLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2QualityTuningLevel.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2QualityTuningLevel
+-- 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.Mpeg2QualityTuningLevel
+  ( Mpeg2QualityTuningLevel
+      ( ..,
+        Mpeg2QualityTuningLevel_MULTI_PASS,
+        Mpeg2QualityTuningLevel_SINGLE_PASS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+newtype Mpeg2QualityTuningLevel = Mpeg2QualityTuningLevel'
+  { fromMpeg2QualityTuningLevel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2QualityTuningLevel_MULTI_PASS :: Mpeg2QualityTuningLevel
+pattern Mpeg2QualityTuningLevel_MULTI_PASS = Mpeg2QualityTuningLevel' "MULTI_PASS"
+
+pattern Mpeg2QualityTuningLevel_SINGLE_PASS :: Mpeg2QualityTuningLevel
+pattern Mpeg2QualityTuningLevel_SINGLE_PASS = Mpeg2QualityTuningLevel' "SINGLE_PASS"
+
+{-# COMPLETE
+  Mpeg2QualityTuningLevel_MULTI_PASS,
+  Mpeg2QualityTuningLevel_SINGLE_PASS,
+  Mpeg2QualityTuningLevel'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2RateControlMode.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2RateControlMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2RateControlMode.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2RateControlMode
+-- 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.Mpeg2RateControlMode
+  ( Mpeg2RateControlMode
+      ( ..,
+        Mpeg2RateControlMode_CBR,
+        Mpeg2RateControlMode_VBR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Rate control mode (Mpeg2RateControlMode) to specify whether the
+-- bitrate is variable (vbr) or constant (cbr).
+newtype Mpeg2RateControlMode = Mpeg2RateControlMode'
+  { fromMpeg2RateControlMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2RateControlMode_CBR :: Mpeg2RateControlMode
+pattern Mpeg2RateControlMode_CBR = Mpeg2RateControlMode' "CBR"
+
+pattern Mpeg2RateControlMode_VBR :: Mpeg2RateControlMode
+pattern Mpeg2RateControlMode_VBR = Mpeg2RateControlMode' "VBR"
+
+{-# COMPLETE
+  Mpeg2RateControlMode_CBR,
+  Mpeg2RateControlMode_VBR,
+  Mpeg2RateControlMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2ScanTypeConversionMode.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2ScanTypeConversionMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2ScanTypeConversionMode.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2ScanTypeConversionMode
+-- 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.Mpeg2ScanTypeConversionMode
+  ( Mpeg2ScanTypeConversionMode
+      ( ..,
+        Mpeg2ScanTypeConversionMode_INTERLACED,
+        Mpeg2ScanTypeConversionMode_INTERLACED_OPTIMIZE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+newtype Mpeg2ScanTypeConversionMode = Mpeg2ScanTypeConversionMode'
+  { fromMpeg2ScanTypeConversionMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2ScanTypeConversionMode_INTERLACED :: Mpeg2ScanTypeConversionMode
+pattern Mpeg2ScanTypeConversionMode_INTERLACED = Mpeg2ScanTypeConversionMode' "INTERLACED"
+
+pattern Mpeg2ScanTypeConversionMode_INTERLACED_OPTIMIZE :: Mpeg2ScanTypeConversionMode
+pattern Mpeg2ScanTypeConversionMode_INTERLACED_OPTIMIZE = Mpeg2ScanTypeConversionMode' "INTERLACED_OPTIMIZE"
+
+{-# COMPLETE
+  Mpeg2ScanTypeConversionMode_INTERLACED,
+  Mpeg2ScanTypeConversionMode_INTERLACED_OPTIMIZE,
+  Mpeg2ScanTypeConversionMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2SceneChangeDetect.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2SceneChangeDetect.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2SceneChangeDetect.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2SceneChangeDetect
+-- 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.Mpeg2SceneChangeDetect
+  ( Mpeg2SceneChangeDetect
+      ( ..,
+        Mpeg2SceneChangeDetect_DISABLED,
+        Mpeg2SceneChangeDetect_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enable this setting to insert I-frames at scene changes that the service
+-- automatically detects. This improves video quality and is enabled by
+-- default.
+newtype Mpeg2SceneChangeDetect = Mpeg2SceneChangeDetect'
+  { fromMpeg2SceneChangeDetect ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2SceneChangeDetect_DISABLED :: Mpeg2SceneChangeDetect
+pattern Mpeg2SceneChangeDetect_DISABLED = Mpeg2SceneChangeDetect' "DISABLED"
+
+pattern Mpeg2SceneChangeDetect_ENABLED :: Mpeg2SceneChangeDetect
+pattern Mpeg2SceneChangeDetect_ENABLED = Mpeg2SceneChangeDetect' "ENABLED"
+
+{-# COMPLETE
+  Mpeg2SceneChangeDetect_DISABLED,
+  Mpeg2SceneChangeDetect_ENABLED,
+  Mpeg2SceneChangeDetect'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2Settings.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2Settings.hs
@@ -0,0 +1,1092 @@
+{-# 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.Mpeg2Settings
+-- 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.Mpeg2Settings 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.Mpeg2AdaptiveQuantization
+import Amazonka.MediaConvert.Types.Mpeg2CodecLevel
+import Amazonka.MediaConvert.Types.Mpeg2CodecProfile
+import Amazonka.MediaConvert.Types.Mpeg2DynamicSubGop
+import Amazonka.MediaConvert.Types.Mpeg2FramerateControl
+import Amazonka.MediaConvert.Types.Mpeg2FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.Mpeg2GopSizeUnits
+import Amazonka.MediaConvert.Types.Mpeg2InterlaceMode
+import Amazonka.MediaConvert.Types.Mpeg2IntraDcPrecision
+import Amazonka.MediaConvert.Types.Mpeg2ParControl
+import Amazonka.MediaConvert.Types.Mpeg2QualityTuningLevel
+import Amazonka.MediaConvert.Types.Mpeg2RateControlMode
+import Amazonka.MediaConvert.Types.Mpeg2ScanTypeConversionMode
+import Amazonka.MediaConvert.Types.Mpeg2SceneChangeDetect
+import Amazonka.MediaConvert.Types.Mpeg2SlowPal
+import Amazonka.MediaConvert.Types.Mpeg2SpatialAdaptiveQuantization
+import Amazonka.MediaConvert.Types.Mpeg2Syntax
+import Amazonka.MediaConvert.Types.Mpeg2Telecine
+import Amazonka.MediaConvert.Types.Mpeg2TemporalAdaptiveQuantization
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value MPEG2.
+--
+-- /See:/ 'newMpeg2Settings' smart constructor.
+data Mpeg2Settings = Mpeg2Settings'
+  { -- | Specify the strength of any adaptive quantization filters that you
+    -- enable. The value that you choose here applies to the following
+    -- settings: Spatial adaptive quantization (spatialAdaptiveQuantization),
+    -- and Temporal adaptive quantization (temporalAdaptiveQuantization).
+    adaptiveQuantization :: Prelude.Maybe Mpeg2AdaptiveQuantization,
+    -- | Specify the average bitrate in bits per second. Required for VBR and
+    -- CBR. For MS Smooth outputs, bitrates must be unique when rounded down to
+    -- the nearest multiple of 1000.
+    bitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Use Level (Mpeg2CodecLevel) to set the MPEG-2 level for the video
+    -- output.
+    codecLevel :: Prelude.Maybe Mpeg2CodecLevel,
+    -- | Use Profile (Mpeg2CodecProfile) to set the MPEG-2 profile for the video
+    -- output.
+    codecProfile :: Prelude.Maybe Mpeg2CodecProfile,
+    -- | Choose Adaptive to improve subjective video quality for high-motion
+    -- content. This will cause the service to use fewer B-frames (which infer
+    -- information based on other frames) for high-motion portions of the video
+    -- and more B-frames for low-motion portions. The maximum number of
+    -- B-frames is limited by the value you provide for the setting B frames
+    -- between reference frames (numberBFramesBetweenReferenceFrames).
+    dynamicSubGop :: Prelude.Maybe Mpeg2DynamicSubGop,
+    -- | If you are using the console, use the Framerate setting to specify the
+    -- frame rate for this output. If you want to keep the same frame rate as
+    -- the input video, choose Follow source. If you want to do frame rate
+    -- conversion, choose a frame rate from the dropdown list or choose Custom.
+    -- The framerates shown in the dropdown list are decimal approximations of
+    -- fractions. If you choose Custom, specify your frame rate as a fraction.
+    -- If you are creating your transcoding job specification as a JSON file
+    -- without the console, use FramerateControl to specify which value the
+    -- service uses for the frame rate for this output. Choose
+    -- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+    -- from the input. Choose SPECIFIED if you want the service to use the
+    -- frame rate you specify in the settings FramerateNumerator and
+    -- FramerateDenominator.
+    framerateControl :: Prelude.Maybe Mpeg2FramerateControl,
+    -- | Choose the method that you want MediaConvert to use when increasing or
+    -- decreasing the frame rate. We recommend using drop duplicate
+    -- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+    -- 30 fps. For numerically complex conversions, you can use interpolate
+    -- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+    -- might introduce undesirable video artifacts. For complex frame rate
+    -- conversions, especially if your source video has already been converted
+    -- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+    -- motion-compensated interpolation. FrameFormer chooses the best
+    -- conversion method frame by frame. Note that using FrameFormer increases
+    -- the transcoding time and incurs a significant add-on cost.
+    framerateConversionAlgorithm :: Prelude.Maybe Mpeg2FramerateConversionAlgorithm,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+    -- fraction. In this example, use 1001 for the value of
+    -- FramerateDenominator. When you use the console for transcode jobs that
+    -- use frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+    -- fraction. In this example, use 24000 for the value of
+    -- FramerateNumerator. When you use the console for transcode jobs that use
+    -- frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the relative frequency of open to closed GOPs in this output.
+    -- For example, if you want to allow four open GOPs and then require a
+    -- closed GOP, set this value to 5. When you create a streaming output, we
+    -- recommend that you keep the default value, 1, so that players starting
+    -- mid-stream receive an IDR frame as quickly as possible. Don\'t set this
+    -- value to 0; that would break output segmenting.
+    gopClosedCadence :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the interval between keyframes, in seconds or frames, for this
+    -- output. Default: 12 Related settings: When you specify the GOP size in
+    -- seconds, set GOP mode control (GopSizeUnits) to Specified, seconds
+    -- (SECONDS). The default value for GOP mode control (GopSizeUnits) is
+    -- Frames (FRAMES).
+    gopSize :: Prelude.Maybe Prelude.Double,
+    -- | Specify the units for GOP size (GopSize). If you don\'t specify a value
+    -- here, by default the encoder measures GOP size in frames.
+    gopSizeUnits :: Prelude.Maybe Mpeg2GopSizeUnits,
+    -- | If your downstream systems have strict buffer requirements: Specify the
+    -- minimum percentage of the HRD buffer that\'s available at the end of
+    -- each encoded video segment. For the best video quality: Set to 0 or
+    -- leave blank to automatically determine the final buffer fill percentage.
+    hrdBufferFinalFillPercentage :: Prelude.Maybe Prelude.Natural,
+    -- | Percentage of the buffer that should initially be filled (HRD buffer
+    -- model).
+    hrdBufferInitialFillPercentage :: Prelude.Maybe Prelude.Natural,
+    -- | Size of buffer (HRD buffer model) in bits. For example, enter five
+    -- megabits as 5000000.
+    hrdBufferSize :: Prelude.Maybe Prelude.Natural,
+    -- | Choose the scan line type for the output. Keep the default value,
+    -- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+    -- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+    -- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+    -- the same field polarity throughout. Use Follow, default top
+    -- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+    -- produce outputs with the same field polarity as the source. For jobs
+    -- that have multiple inputs, the output field polarity might change over
+    -- the course of the output. Follow behavior depends on the input scan
+    -- type. If the source is interlaced, the output will be interlaced with
+    -- the same polarity as the source. If the source is progressive, the
+    -- output will be interlaced with top field bottom field first, depending
+    -- on which of the Follow options you choose.
+    interlaceMode :: Prelude.Maybe Mpeg2InterlaceMode,
+    -- | Use Intra DC precision (Mpeg2IntraDcPrecision) to set quantization
+    -- precision for intra-block DC coefficients. If you choose the value auto,
+    -- the service will automatically select the precision based on the
+    -- per-frame compression ratio.
+    intraDcPrecision :: Prelude.Maybe Mpeg2IntraDcPrecision,
+    -- | Maximum bitrate in bits\/second. For example, enter five megabits per
+    -- second as 5000000.
+    maxBitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Use this setting only when you also enable Scene change detection
+    -- (SceneChangeDetect). This setting determines how the encoder manages the
+    -- spacing between I-frames that it inserts as part of the I-frame cadence
+    -- and the I-frames that it inserts for Scene change detection. When you
+    -- specify a value for this setting, the encoder determines whether to skip
+    -- a cadence-driven I-frame by the value you set. For example, if you set
+    -- Min I interval (minIInterval) to 5 and a cadence-driven I-frame would
+    -- fall within 5 frames of a scene-change I-frame, then the encoder skips
+    -- the cadence-driven I-frame. In this way, one GOP is shrunk slightly and
+    -- one GOP is stretched slightly. When the cadence-driven I-frames are
+    -- farther from the scene-change I-frame than the value you set, then the
+    -- encoder leaves all I-frames in place and the GOPs surrounding the scene
+    -- change are smaller than the usual cadence GOPs.
+    minIInterval :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the number of B-frames that MediaConvert puts between reference
+    -- frames in this output. Valid values are whole numbers from 0 through 7.
+    -- When you don\'t specify a value, MediaConvert defaults to 2.
+    numberBFramesBetweenReferenceFrames :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Specify how the service determines the pixel aspect ratio
+    -- (PAR) for this output. The default behavior, Follow source
+    -- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+    -- output. To specify a different PAR in the console, choose any value
+    -- other than Follow source. To specify a different PAR by editing the JSON
+    -- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+    -- setting, you must also specify values for the parNumerator and
+    -- parDenominator settings.
+    parControl :: Prelude.Maybe Mpeg2ParControl,
+    -- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+    -- the console, this corresponds to any value other than Follow source.
+    -- When you specify an output pixel aspect ratio (PAR) that is different
+    -- from your input video PAR, provide your output PAR as a ratio. For
+    -- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+    -- In this example, the value for parDenominator is 33.
+    parDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+    -- the console, this corresponds to any value other than Follow source.
+    -- When you specify an output pixel aspect ratio (PAR) that is different
+    -- from your input video PAR, provide your output PAR as a ratio. For
+    -- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+    -- In this example, the value for parNumerator is 40.
+    parNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+    -- you want to trade off encoding speed for output video quality. The
+    -- default behavior is faster, lower quality, single-pass encoding.
+    qualityTuningLevel :: Prelude.Maybe Mpeg2QualityTuningLevel,
+    -- | Use Rate control mode (Mpeg2RateControlMode) to specify whether the
+    -- bitrate is variable (vbr) or constant (cbr).
+    rateControlMode :: Prelude.Maybe Mpeg2RateControlMode,
+    -- | Use this setting for interlaced outputs, when your output frame rate is
+    -- half of your input frame rate. In this situation, choose Optimized
+    -- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+    -- output. In this case, each progressive frame from the input corresponds
+    -- to an interlaced field in the output. Keep the default value, Basic
+    -- interlacing (INTERLACED), for all other output frame rates. With basic
+    -- interlacing, MediaConvert performs any frame rate conversion first and
+    -- then interlaces the frames. When you choose Optimized interlacing and
+    -- you set your output frame rate to a value that isn\'t suitable for
+    -- optimized interlacing, MediaConvert automatically falls back to basic
+    -- interlacing. Required settings: To use optimized interlacing, you must
+    -- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+    -- optimized interlacing for hard telecine outputs. You must also set
+    -- Interlace mode (interlaceMode) to a value other than Progressive
+    -- (PROGRESSIVE).
+    scanTypeConversionMode :: Prelude.Maybe Mpeg2ScanTypeConversionMode,
+    -- | Enable this setting to insert I-frames at scene changes that the service
+    -- automatically detects. This improves video quality and is enabled by
+    -- default.
+    sceneChangeDetect :: Prelude.Maybe Mpeg2SceneChangeDetect,
+    -- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+    -- per second (fps). Enable slow PAL to create a 25 fps output. When you
+    -- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+    -- resamples your audio to keep it synchronized with the video. Note that
+    -- enabling this setting will slightly reduce the duration of your video.
+    -- Required settings: You must also set Framerate to 25. In your JSON job
+    -- specification, set (framerateControl) to (SPECIFIED),
+    -- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+    slowPal :: Prelude.Maybe Mpeg2SlowPal,
+    -- | Ignore this setting unless you need to comply with a specification that
+    -- requires a specific value. If you don\'t have a specification
+    -- requirement, we recommend that you adjust the softness of your output by
+    -- using a lower value for the setting Sharpness (sharpness) or by enabling
+    -- a noise reducer filter (noiseReducerFilter). The Softness (softness)
+    -- setting specifies the quantization matrices that the encoder uses. Keep
+    -- the default value, 0, to use the AWS Elemental default matrices. Choose
+    -- a value from 17 to 128 to use planar interpolation. Increasing values
+    -- from 17 to 128 result in increasing reduction of high-frequency data.
+    -- The value 128 results in the softest video.
+    softness :: Prelude.Maybe Prelude.Natural,
+    -- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+    -- each frame based on spatial variation of content complexity. When you
+    -- enable this feature, the encoder uses fewer bits on areas that can
+    -- sustain more distortion with no noticeable visual degradation and uses
+    -- more bits on areas where any small distortion will be noticeable. For
+    -- example, complex textured blocks are encoded with fewer bits and smooth
+    -- textured blocks are encoded with more bits. Enabling this feature will
+    -- almost always improve your video quality. Note, though, that this
+    -- feature doesn\'t take into account where the viewer\'s attention is
+    -- likely to be. If viewers are likely to be focusing their attention on a
+    -- part of the screen with a lot of complex texture, you might choose to
+    -- disable this feature. Related setting: When you enable spatial adaptive
+    -- quantization, set the value for Adaptive quantization
+    -- (adaptiveQuantization) depending on your content. For homogeneous
+    -- content, such as cartoons and video games, set it to Low. For content
+    -- with a wider variety of textures, set it to High or Higher.
+    spatialAdaptiveQuantization :: Prelude.Maybe Mpeg2SpatialAdaptiveQuantization,
+    -- | Specify whether this output\'s video uses the D10 syntax. Keep the
+    -- default value to not use the syntax. Related settings: When you choose
+    -- D10 (D_10) for your MXF profile (profile), you must also set this value
+    -- to D10 (D_10).
+    syntax :: Prelude.Maybe Mpeg2Syntax,
+    -- | When you do frame rate conversion from 23.976 frames per second (fps) to
+    -- 29.97 fps, and your output scan type is interlaced, you can optionally
+    -- enable hard or soft telecine to create a smoother picture. Hard telecine
+    -- (HARD) produces a 29.97i output. Soft telecine (SOFT) produces an output
+    -- with a 23.976 output that signals to the video player device to do the
+    -- conversion during play back. When you keep the default value, None
+    -- (NONE), MediaConvert does a standard frame rate conversion to 29.97
+    -- without doing anything with the field polarity to create a smoother
+    -- picture.
+    telecine :: Prelude.Maybe Mpeg2Telecine,
+    -- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+    -- each frame based on temporal variation of content complexity. When you
+    -- enable this feature, the encoder uses fewer bits on areas of the frame
+    -- that aren\'t moving and uses more bits on complex objects with sharp
+    -- edges that move a lot. For example, this feature improves the
+    -- readability of text tickers on newscasts and scoreboards on sports
+    -- matches. Enabling this feature will almost always improve your video
+    -- quality. Note, though, that this feature doesn\'t take into account
+    -- where the viewer\'s attention is likely to be. If viewers are likely to
+    -- be focusing their attention on a part of the screen that doesn\'t have
+    -- moving objects with sharp edges, such as sports athletes\' faces, you
+    -- might choose to disable this feature. Related setting: When you enable
+    -- temporal quantization, adjust the strength of the filter with the
+    -- setting Adaptive quantization (adaptiveQuantization).
+    temporalAdaptiveQuantization :: Prelude.Maybe Mpeg2TemporalAdaptiveQuantization
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Mpeg2Settings' 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:
+--
+-- 'adaptiveQuantization', 'mpeg2Settings_adaptiveQuantization' - Specify the strength of any adaptive quantization filters that you
+-- enable. The value that you choose here applies to the following
+-- settings: Spatial adaptive quantization (spatialAdaptiveQuantization),
+-- and Temporal adaptive quantization (temporalAdaptiveQuantization).
+--
+-- 'bitrate', 'mpeg2Settings_bitrate' - Specify the average bitrate in bits per second. Required for VBR and
+-- CBR. For MS Smooth outputs, bitrates must be unique when rounded down to
+-- the nearest multiple of 1000.
+--
+-- 'codecLevel', 'mpeg2Settings_codecLevel' - Use Level (Mpeg2CodecLevel) to set the MPEG-2 level for the video
+-- output.
+--
+-- 'codecProfile', 'mpeg2Settings_codecProfile' - Use Profile (Mpeg2CodecProfile) to set the MPEG-2 profile for the video
+-- output.
+--
+-- 'dynamicSubGop', 'mpeg2Settings_dynamicSubGop' - Choose Adaptive to improve subjective video quality for high-motion
+-- content. This will cause the service to use fewer B-frames (which infer
+-- information based on other frames) for high-motion portions of the video
+-- and more B-frames for low-motion portions. The maximum number of
+-- B-frames is limited by the value you provide for the setting B frames
+-- between reference frames (numberBFramesBetweenReferenceFrames).
+--
+-- 'framerateControl', 'mpeg2Settings_framerateControl' - If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+--
+-- 'framerateConversionAlgorithm', 'mpeg2Settings_framerateConversionAlgorithm' - Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+--
+-- 'framerateDenominator', 'mpeg2Settings_framerateDenominator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'framerateNumerator', 'mpeg2Settings_framerateNumerator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'gopClosedCadence', 'mpeg2Settings_gopClosedCadence' - Specify the relative frequency of open to closed GOPs in this output.
+-- For example, if you want to allow four open GOPs and then require a
+-- closed GOP, set this value to 5. When you create a streaming output, we
+-- recommend that you keep the default value, 1, so that players starting
+-- mid-stream receive an IDR frame as quickly as possible. Don\'t set this
+-- value to 0; that would break output segmenting.
+--
+-- 'gopSize', 'mpeg2Settings_gopSize' - Specify the interval between keyframes, in seconds or frames, for this
+-- output. Default: 12 Related settings: When you specify the GOP size in
+-- seconds, set GOP mode control (GopSizeUnits) to Specified, seconds
+-- (SECONDS). The default value for GOP mode control (GopSizeUnits) is
+-- Frames (FRAMES).
+--
+-- 'gopSizeUnits', 'mpeg2Settings_gopSizeUnits' - Specify the units for GOP size (GopSize). If you don\'t specify a value
+-- here, by default the encoder measures GOP size in frames.
+--
+-- 'hrdBufferFinalFillPercentage', 'mpeg2Settings_hrdBufferFinalFillPercentage' - If your downstream systems have strict buffer requirements: Specify the
+-- minimum percentage of the HRD buffer that\'s available at the end of
+-- each encoded video segment. For the best video quality: Set to 0 or
+-- leave blank to automatically determine the final buffer fill percentage.
+--
+-- 'hrdBufferInitialFillPercentage', 'mpeg2Settings_hrdBufferInitialFillPercentage' - Percentage of the buffer that should initially be filled (HRD buffer
+-- model).
+--
+-- 'hrdBufferSize', 'mpeg2Settings_hrdBufferSize' - Size of buffer (HRD buffer model) in bits. For example, enter five
+-- megabits as 5000000.
+--
+-- 'interlaceMode', 'mpeg2Settings_interlaceMode' - Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+--
+-- 'intraDcPrecision', 'mpeg2Settings_intraDcPrecision' - Use Intra DC precision (Mpeg2IntraDcPrecision) to set quantization
+-- precision for intra-block DC coefficients. If you choose the value auto,
+-- the service will automatically select the precision based on the
+-- per-frame compression ratio.
+--
+-- 'maxBitrate', 'mpeg2Settings_maxBitrate' - Maximum bitrate in bits\/second. For example, enter five megabits per
+-- second as 5000000.
+--
+-- 'minIInterval', 'mpeg2Settings_minIInterval' - Use this setting only when you also enable Scene change detection
+-- (SceneChangeDetect). This setting determines how the encoder manages the
+-- spacing between I-frames that it inserts as part of the I-frame cadence
+-- and the I-frames that it inserts for Scene change detection. When you
+-- specify a value for this setting, the encoder determines whether to skip
+-- a cadence-driven I-frame by the value you set. For example, if you set
+-- Min I interval (minIInterval) to 5 and a cadence-driven I-frame would
+-- fall within 5 frames of a scene-change I-frame, then the encoder skips
+-- the cadence-driven I-frame. In this way, one GOP is shrunk slightly and
+-- one GOP is stretched slightly. When the cadence-driven I-frames are
+-- farther from the scene-change I-frame than the value you set, then the
+-- encoder leaves all I-frames in place and the GOPs surrounding the scene
+-- change are smaller than the usual cadence GOPs.
+--
+-- 'numberBFramesBetweenReferenceFrames', 'mpeg2Settings_numberBFramesBetweenReferenceFrames' - Specify the number of B-frames that MediaConvert puts between reference
+-- frames in this output. Valid values are whole numbers from 0 through 7.
+-- When you don\'t specify a value, MediaConvert defaults to 2.
+--
+-- 'parControl', 'mpeg2Settings_parControl' - Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+--
+-- 'parDenominator', 'mpeg2Settings_parDenominator' - Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parDenominator is 33.
+--
+-- 'parNumerator', 'mpeg2Settings_parNumerator' - Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parNumerator is 40.
+--
+-- 'qualityTuningLevel', 'mpeg2Settings_qualityTuningLevel' - Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+--
+-- 'rateControlMode', 'mpeg2Settings_rateControlMode' - Use Rate control mode (Mpeg2RateControlMode) to specify whether the
+-- bitrate is variable (vbr) or constant (cbr).
+--
+-- 'scanTypeConversionMode', 'mpeg2Settings_scanTypeConversionMode' - Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+--
+-- 'sceneChangeDetect', 'mpeg2Settings_sceneChangeDetect' - Enable this setting to insert I-frames at scene changes that the service
+-- automatically detects. This improves video quality and is enabled by
+-- default.
+--
+-- 'slowPal', 'mpeg2Settings_slowPal' - Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+--
+-- 'softness', 'mpeg2Settings_softness' - Ignore this setting unless you need to comply with a specification that
+-- requires a specific value. If you don\'t have a specification
+-- requirement, we recommend that you adjust the softness of your output by
+-- using a lower value for the setting Sharpness (sharpness) or by enabling
+-- a noise reducer filter (noiseReducerFilter). The Softness (softness)
+-- setting specifies the quantization matrices that the encoder uses. Keep
+-- the default value, 0, to use the AWS Elemental default matrices. Choose
+-- a value from 17 to 128 to use planar interpolation. Increasing values
+-- from 17 to 128 result in increasing reduction of high-frequency data.
+-- The value 128 results in the softest video.
+--
+-- 'spatialAdaptiveQuantization', 'mpeg2Settings_spatialAdaptiveQuantization' - Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on spatial variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas that can
+-- sustain more distortion with no noticeable visual degradation and uses
+-- more bits on areas where any small distortion will be noticeable. For
+-- example, complex textured blocks are encoded with fewer bits and smooth
+-- textured blocks are encoded with more bits. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen with a lot of complex texture, you might choose to
+-- disable this feature. Related setting: When you enable spatial adaptive
+-- quantization, set the value for Adaptive quantization
+-- (adaptiveQuantization) depending on your content. For homogeneous
+-- content, such as cartoons and video games, set it to Low. For content
+-- with a wider variety of textures, set it to High or Higher.
+--
+-- 'syntax', 'mpeg2Settings_syntax' - Specify whether this output\'s video uses the D10 syntax. Keep the
+-- default value to not use the syntax. Related settings: When you choose
+-- D10 (D_10) for your MXF profile (profile), you must also set this value
+-- to D10 (D_10).
+--
+-- 'telecine', 'mpeg2Settings_telecine' - When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard or soft telecine to create a smoother picture. Hard telecine
+-- (HARD) produces a 29.97i output. Soft telecine (SOFT) produces an output
+-- with a 23.976 output that signals to the video player device to do the
+-- conversion during play back. When you keep the default value, None
+-- (NONE), MediaConvert does a standard frame rate conversion to 29.97
+-- without doing anything with the field polarity to create a smoother
+-- picture.
+--
+-- 'temporalAdaptiveQuantization', 'mpeg2Settings_temporalAdaptiveQuantization' - Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on temporal variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas of the frame
+-- that aren\'t moving and uses more bits on complex objects with sharp
+-- edges that move a lot. For example, this feature improves the
+-- readability of text tickers on newscasts and scoreboards on sports
+-- matches. Enabling this feature will almost always improve your video
+-- quality. Note, though, that this feature doesn\'t take into account
+-- where the viewer\'s attention is likely to be. If viewers are likely to
+-- be focusing their attention on a part of the screen that doesn\'t have
+-- moving objects with sharp edges, such as sports athletes\' faces, you
+-- might choose to disable this feature. Related setting: When you enable
+-- temporal quantization, adjust the strength of the filter with the
+-- setting Adaptive quantization (adaptiveQuantization).
+newMpeg2Settings ::
+  Mpeg2Settings
+newMpeg2Settings =
+  Mpeg2Settings'
+    { adaptiveQuantization =
+        Prelude.Nothing,
+      bitrate = Prelude.Nothing,
+      codecLevel = Prelude.Nothing,
+      codecProfile = Prelude.Nothing,
+      dynamicSubGop = Prelude.Nothing,
+      framerateControl = Prelude.Nothing,
+      framerateConversionAlgorithm = Prelude.Nothing,
+      framerateDenominator = Prelude.Nothing,
+      framerateNumerator = Prelude.Nothing,
+      gopClosedCadence = Prelude.Nothing,
+      gopSize = Prelude.Nothing,
+      gopSizeUnits = Prelude.Nothing,
+      hrdBufferFinalFillPercentage = Prelude.Nothing,
+      hrdBufferInitialFillPercentage = Prelude.Nothing,
+      hrdBufferSize = Prelude.Nothing,
+      interlaceMode = Prelude.Nothing,
+      intraDcPrecision = Prelude.Nothing,
+      maxBitrate = Prelude.Nothing,
+      minIInterval = Prelude.Nothing,
+      numberBFramesBetweenReferenceFrames =
+        Prelude.Nothing,
+      parControl = Prelude.Nothing,
+      parDenominator = Prelude.Nothing,
+      parNumerator = Prelude.Nothing,
+      qualityTuningLevel = Prelude.Nothing,
+      rateControlMode = Prelude.Nothing,
+      scanTypeConversionMode = Prelude.Nothing,
+      sceneChangeDetect = Prelude.Nothing,
+      slowPal = Prelude.Nothing,
+      softness = Prelude.Nothing,
+      spatialAdaptiveQuantization = Prelude.Nothing,
+      syntax = Prelude.Nothing,
+      telecine = Prelude.Nothing,
+      temporalAdaptiveQuantization = Prelude.Nothing
+    }
+
+-- | Specify the strength of any adaptive quantization filters that you
+-- enable. The value that you choose here applies to the following
+-- settings: Spatial adaptive quantization (spatialAdaptiveQuantization),
+-- and Temporal adaptive quantization (temporalAdaptiveQuantization).
+mpeg2Settings_adaptiveQuantization :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2AdaptiveQuantization)
+mpeg2Settings_adaptiveQuantization = Lens.lens (\Mpeg2Settings' {adaptiveQuantization} -> adaptiveQuantization) (\s@Mpeg2Settings' {} a -> s {adaptiveQuantization = a} :: Mpeg2Settings)
+
+-- | Specify the average bitrate in bits per second. Required for VBR and
+-- CBR. For MS Smooth outputs, bitrates must be unique when rounded down to
+-- the nearest multiple of 1000.
+mpeg2Settings_bitrate :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Natural)
+mpeg2Settings_bitrate = Lens.lens (\Mpeg2Settings' {bitrate} -> bitrate) (\s@Mpeg2Settings' {} a -> s {bitrate = a} :: Mpeg2Settings)
+
+-- | Use Level (Mpeg2CodecLevel) to set the MPEG-2 level for the video
+-- output.
+mpeg2Settings_codecLevel :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2CodecLevel)
+mpeg2Settings_codecLevel = Lens.lens (\Mpeg2Settings' {codecLevel} -> codecLevel) (\s@Mpeg2Settings' {} a -> s {codecLevel = a} :: Mpeg2Settings)
+
+-- | Use Profile (Mpeg2CodecProfile) to set the MPEG-2 profile for the video
+-- output.
+mpeg2Settings_codecProfile :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2CodecProfile)
+mpeg2Settings_codecProfile = Lens.lens (\Mpeg2Settings' {codecProfile} -> codecProfile) (\s@Mpeg2Settings' {} a -> s {codecProfile = a} :: Mpeg2Settings)
+
+-- | Choose Adaptive to improve subjective video quality for high-motion
+-- content. This will cause the service to use fewer B-frames (which infer
+-- information based on other frames) for high-motion portions of the video
+-- and more B-frames for low-motion portions. The maximum number of
+-- B-frames is limited by the value you provide for the setting B frames
+-- between reference frames (numberBFramesBetweenReferenceFrames).
+mpeg2Settings_dynamicSubGop :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2DynamicSubGop)
+mpeg2Settings_dynamicSubGop = Lens.lens (\Mpeg2Settings' {dynamicSubGop} -> dynamicSubGop) (\s@Mpeg2Settings' {} a -> s {dynamicSubGop = a} :: Mpeg2Settings)
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+mpeg2Settings_framerateControl :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2FramerateControl)
+mpeg2Settings_framerateControl = Lens.lens (\Mpeg2Settings' {framerateControl} -> framerateControl) (\s@Mpeg2Settings' {} a -> s {framerateControl = a} :: Mpeg2Settings)
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+mpeg2Settings_framerateConversionAlgorithm :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2FramerateConversionAlgorithm)
+mpeg2Settings_framerateConversionAlgorithm = Lens.lens (\Mpeg2Settings' {framerateConversionAlgorithm} -> framerateConversionAlgorithm) (\s@Mpeg2Settings' {} a -> s {framerateConversionAlgorithm = a} :: Mpeg2Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+mpeg2Settings_framerateDenominator :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Natural)
+mpeg2Settings_framerateDenominator = Lens.lens (\Mpeg2Settings' {framerateDenominator} -> framerateDenominator) (\s@Mpeg2Settings' {} a -> s {framerateDenominator = a} :: Mpeg2Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+mpeg2Settings_framerateNumerator :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Natural)
+mpeg2Settings_framerateNumerator = Lens.lens (\Mpeg2Settings' {framerateNumerator} -> framerateNumerator) (\s@Mpeg2Settings' {} a -> s {framerateNumerator = a} :: Mpeg2Settings)
+
+-- | Specify the relative frequency of open to closed GOPs in this output.
+-- For example, if you want to allow four open GOPs and then require a
+-- closed GOP, set this value to 5. When you create a streaming output, we
+-- recommend that you keep the default value, 1, so that players starting
+-- mid-stream receive an IDR frame as quickly as possible. Don\'t set this
+-- value to 0; that would break output segmenting.
+mpeg2Settings_gopClosedCadence :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Natural)
+mpeg2Settings_gopClosedCadence = Lens.lens (\Mpeg2Settings' {gopClosedCadence} -> gopClosedCadence) (\s@Mpeg2Settings' {} a -> s {gopClosedCadence = a} :: Mpeg2Settings)
+
+-- | Specify the interval between keyframes, in seconds or frames, for this
+-- output. Default: 12 Related settings: When you specify the GOP size in
+-- seconds, set GOP mode control (GopSizeUnits) to Specified, seconds
+-- (SECONDS). The default value for GOP mode control (GopSizeUnits) is
+-- Frames (FRAMES).
+mpeg2Settings_gopSize :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Double)
+mpeg2Settings_gopSize = Lens.lens (\Mpeg2Settings' {gopSize} -> gopSize) (\s@Mpeg2Settings' {} a -> s {gopSize = a} :: Mpeg2Settings)
+
+-- | Specify the units for GOP size (GopSize). If you don\'t specify a value
+-- here, by default the encoder measures GOP size in frames.
+mpeg2Settings_gopSizeUnits :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2GopSizeUnits)
+mpeg2Settings_gopSizeUnits = Lens.lens (\Mpeg2Settings' {gopSizeUnits} -> gopSizeUnits) (\s@Mpeg2Settings' {} a -> s {gopSizeUnits = a} :: Mpeg2Settings)
+
+-- | If your downstream systems have strict buffer requirements: Specify the
+-- minimum percentage of the HRD buffer that\'s available at the end of
+-- each encoded video segment. For the best video quality: Set to 0 or
+-- leave blank to automatically determine the final buffer fill percentage.
+mpeg2Settings_hrdBufferFinalFillPercentage :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Natural)
+mpeg2Settings_hrdBufferFinalFillPercentage = Lens.lens (\Mpeg2Settings' {hrdBufferFinalFillPercentage} -> hrdBufferFinalFillPercentage) (\s@Mpeg2Settings' {} a -> s {hrdBufferFinalFillPercentage = a} :: Mpeg2Settings)
+
+-- | Percentage of the buffer that should initially be filled (HRD buffer
+-- model).
+mpeg2Settings_hrdBufferInitialFillPercentage :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Natural)
+mpeg2Settings_hrdBufferInitialFillPercentage = Lens.lens (\Mpeg2Settings' {hrdBufferInitialFillPercentage} -> hrdBufferInitialFillPercentage) (\s@Mpeg2Settings' {} a -> s {hrdBufferInitialFillPercentage = a} :: Mpeg2Settings)
+
+-- | Size of buffer (HRD buffer model) in bits. For example, enter five
+-- megabits as 5000000.
+mpeg2Settings_hrdBufferSize :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Natural)
+mpeg2Settings_hrdBufferSize = Lens.lens (\Mpeg2Settings' {hrdBufferSize} -> hrdBufferSize) (\s@Mpeg2Settings' {} a -> s {hrdBufferSize = a} :: Mpeg2Settings)
+
+-- | Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+mpeg2Settings_interlaceMode :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2InterlaceMode)
+mpeg2Settings_interlaceMode = Lens.lens (\Mpeg2Settings' {interlaceMode} -> interlaceMode) (\s@Mpeg2Settings' {} a -> s {interlaceMode = a} :: Mpeg2Settings)
+
+-- | Use Intra DC precision (Mpeg2IntraDcPrecision) to set quantization
+-- precision for intra-block DC coefficients. If you choose the value auto,
+-- the service will automatically select the precision based on the
+-- per-frame compression ratio.
+mpeg2Settings_intraDcPrecision :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2IntraDcPrecision)
+mpeg2Settings_intraDcPrecision = Lens.lens (\Mpeg2Settings' {intraDcPrecision} -> intraDcPrecision) (\s@Mpeg2Settings' {} a -> s {intraDcPrecision = a} :: Mpeg2Settings)
+
+-- | Maximum bitrate in bits\/second. For example, enter five megabits per
+-- second as 5000000.
+mpeg2Settings_maxBitrate :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Natural)
+mpeg2Settings_maxBitrate = Lens.lens (\Mpeg2Settings' {maxBitrate} -> maxBitrate) (\s@Mpeg2Settings' {} a -> s {maxBitrate = a} :: Mpeg2Settings)
+
+-- | Use this setting only when you also enable Scene change detection
+-- (SceneChangeDetect). This setting determines how the encoder manages the
+-- spacing between I-frames that it inserts as part of the I-frame cadence
+-- and the I-frames that it inserts for Scene change detection. When you
+-- specify a value for this setting, the encoder determines whether to skip
+-- a cadence-driven I-frame by the value you set. For example, if you set
+-- Min I interval (minIInterval) to 5 and a cadence-driven I-frame would
+-- fall within 5 frames of a scene-change I-frame, then the encoder skips
+-- the cadence-driven I-frame. In this way, one GOP is shrunk slightly and
+-- one GOP is stretched slightly. When the cadence-driven I-frames are
+-- farther from the scene-change I-frame than the value you set, then the
+-- encoder leaves all I-frames in place and the GOPs surrounding the scene
+-- change are smaller than the usual cadence GOPs.
+mpeg2Settings_minIInterval :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Natural)
+mpeg2Settings_minIInterval = Lens.lens (\Mpeg2Settings' {minIInterval} -> minIInterval) (\s@Mpeg2Settings' {} a -> s {minIInterval = a} :: Mpeg2Settings)
+
+-- | Specify the number of B-frames that MediaConvert puts between reference
+-- frames in this output. Valid values are whole numbers from 0 through 7.
+-- When you don\'t specify a value, MediaConvert defaults to 2.
+mpeg2Settings_numberBFramesBetweenReferenceFrames :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Natural)
+mpeg2Settings_numberBFramesBetweenReferenceFrames = Lens.lens (\Mpeg2Settings' {numberBFramesBetweenReferenceFrames} -> numberBFramesBetweenReferenceFrames) (\s@Mpeg2Settings' {} a -> s {numberBFramesBetweenReferenceFrames = a} :: Mpeg2Settings)
+
+-- | Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+mpeg2Settings_parControl :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2ParControl)
+mpeg2Settings_parControl = Lens.lens (\Mpeg2Settings' {parControl} -> parControl) (\s@Mpeg2Settings' {} a -> s {parControl = a} :: Mpeg2Settings)
+
+-- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parDenominator is 33.
+mpeg2Settings_parDenominator :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Natural)
+mpeg2Settings_parDenominator = Lens.lens (\Mpeg2Settings' {parDenominator} -> parDenominator) (\s@Mpeg2Settings' {} a -> s {parDenominator = a} :: Mpeg2Settings)
+
+-- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parNumerator is 40.
+mpeg2Settings_parNumerator :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Natural)
+mpeg2Settings_parNumerator = Lens.lens (\Mpeg2Settings' {parNumerator} -> parNumerator) (\s@Mpeg2Settings' {} a -> s {parNumerator = a} :: Mpeg2Settings)
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+mpeg2Settings_qualityTuningLevel :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2QualityTuningLevel)
+mpeg2Settings_qualityTuningLevel = Lens.lens (\Mpeg2Settings' {qualityTuningLevel} -> qualityTuningLevel) (\s@Mpeg2Settings' {} a -> s {qualityTuningLevel = a} :: Mpeg2Settings)
+
+-- | Use Rate control mode (Mpeg2RateControlMode) to specify whether the
+-- bitrate is variable (vbr) or constant (cbr).
+mpeg2Settings_rateControlMode :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2RateControlMode)
+mpeg2Settings_rateControlMode = Lens.lens (\Mpeg2Settings' {rateControlMode} -> rateControlMode) (\s@Mpeg2Settings' {} a -> s {rateControlMode = a} :: Mpeg2Settings)
+
+-- | Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+mpeg2Settings_scanTypeConversionMode :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2ScanTypeConversionMode)
+mpeg2Settings_scanTypeConversionMode = Lens.lens (\Mpeg2Settings' {scanTypeConversionMode} -> scanTypeConversionMode) (\s@Mpeg2Settings' {} a -> s {scanTypeConversionMode = a} :: Mpeg2Settings)
+
+-- | Enable this setting to insert I-frames at scene changes that the service
+-- automatically detects. This improves video quality and is enabled by
+-- default.
+mpeg2Settings_sceneChangeDetect :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2SceneChangeDetect)
+mpeg2Settings_sceneChangeDetect = Lens.lens (\Mpeg2Settings' {sceneChangeDetect} -> sceneChangeDetect) (\s@Mpeg2Settings' {} a -> s {sceneChangeDetect = a} :: Mpeg2Settings)
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+mpeg2Settings_slowPal :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2SlowPal)
+mpeg2Settings_slowPal = Lens.lens (\Mpeg2Settings' {slowPal} -> slowPal) (\s@Mpeg2Settings' {} a -> s {slowPal = a} :: Mpeg2Settings)
+
+-- | Ignore this setting unless you need to comply with a specification that
+-- requires a specific value. If you don\'t have a specification
+-- requirement, we recommend that you adjust the softness of your output by
+-- using a lower value for the setting Sharpness (sharpness) or by enabling
+-- a noise reducer filter (noiseReducerFilter). The Softness (softness)
+-- setting specifies the quantization matrices that the encoder uses. Keep
+-- the default value, 0, to use the AWS Elemental default matrices. Choose
+-- a value from 17 to 128 to use planar interpolation. Increasing values
+-- from 17 to 128 result in increasing reduction of high-frequency data.
+-- The value 128 results in the softest video.
+mpeg2Settings_softness :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Prelude.Natural)
+mpeg2Settings_softness = Lens.lens (\Mpeg2Settings' {softness} -> softness) (\s@Mpeg2Settings' {} a -> s {softness = a} :: Mpeg2Settings)
+
+-- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on spatial variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas that can
+-- sustain more distortion with no noticeable visual degradation and uses
+-- more bits on areas where any small distortion will be noticeable. For
+-- example, complex textured blocks are encoded with fewer bits and smooth
+-- textured blocks are encoded with more bits. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen with a lot of complex texture, you might choose to
+-- disable this feature. Related setting: When you enable spatial adaptive
+-- quantization, set the value for Adaptive quantization
+-- (adaptiveQuantization) depending on your content. For homogeneous
+-- content, such as cartoons and video games, set it to Low. For content
+-- with a wider variety of textures, set it to High or Higher.
+mpeg2Settings_spatialAdaptiveQuantization :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2SpatialAdaptiveQuantization)
+mpeg2Settings_spatialAdaptiveQuantization = Lens.lens (\Mpeg2Settings' {spatialAdaptiveQuantization} -> spatialAdaptiveQuantization) (\s@Mpeg2Settings' {} a -> s {spatialAdaptiveQuantization = a} :: Mpeg2Settings)
+
+-- | Specify whether this output\'s video uses the D10 syntax. Keep the
+-- default value to not use the syntax. Related settings: When you choose
+-- D10 (D_10) for your MXF profile (profile), you must also set this value
+-- to D10 (D_10).
+mpeg2Settings_syntax :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2Syntax)
+mpeg2Settings_syntax = Lens.lens (\Mpeg2Settings' {syntax} -> syntax) (\s@Mpeg2Settings' {} a -> s {syntax = a} :: Mpeg2Settings)
+
+-- | When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard or soft telecine to create a smoother picture. Hard telecine
+-- (HARD) produces a 29.97i output. Soft telecine (SOFT) produces an output
+-- with a 23.976 output that signals to the video player device to do the
+-- conversion during play back. When you keep the default value, None
+-- (NONE), MediaConvert does a standard frame rate conversion to 29.97
+-- without doing anything with the field polarity to create a smoother
+-- picture.
+mpeg2Settings_telecine :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2Telecine)
+mpeg2Settings_telecine = Lens.lens (\Mpeg2Settings' {telecine} -> telecine) (\s@Mpeg2Settings' {} a -> s {telecine = a} :: Mpeg2Settings)
+
+-- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on temporal variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas of the frame
+-- that aren\'t moving and uses more bits on complex objects with sharp
+-- edges that move a lot. For example, this feature improves the
+-- readability of text tickers on newscasts and scoreboards on sports
+-- matches. Enabling this feature will almost always improve your video
+-- quality. Note, though, that this feature doesn\'t take into account
+-- where the viewer\'s attention is likely to be. If viewers are likely to
+-- be focusing their attention on a part of the screen that doesn\'t have
+-- moving objects with sharp edges, such as sports athletes\' faces, you
+-- might choose to disable this feature. Related setting: When you enable
+-- temporal quantization, adjust the strength of the filter with the
+-- setting Adaptive quantization (adaptiveQuantization).
+mpeg2Settings_temporalAdaptiveQuantization :: Lens.Lens' Mpeg2Settings (Prelude.Maybe Mpeg2TemporalAdaptiveQuantization)
+mpeg2Settings_temporalAdaptiveQuantization = Lens.lens (\Mpeg2Settings' {temporalAdaptiveQuantization} -> temporalAdaptiveQuantization) (\s@Mpeg2Settings' {} a -> s {temporalAdaptiveQuantization = a} :: Mpeg2Settings)
+
+instance Data.FromJSON Mpeg2Settings where
+  parseJSON =
+    Data.withObject
+      "Mpeg2Settings"
+      ( \x ->
+          Mpeg2Settings'
+            Prelude.<$> (x Data..:? "adaptiveQuantization")
+            Prelude.<*> (x Data..:? "bitrate")
+            Prelude.<*> (x Data..:? "codecLevel")
+            Prelude.<*> (x Data..:? "codecProfile")
+            Prelude.<*> (x Data..:? "dynamicSubGop")
+            Prelude.<*> (x Data..:? "framerateControl")
+            Prelude.<*> (x Data..:? "framerateConversionAlgorithm")
+            Prelude.<*> (x Data..:? "framerateDenominator")
+            Prelude.<*> (x Data..:? "framerateNumerator")
+            Prelude.<*> (x Data..:? "gopClosedCadence")
+            Prelude.<*> (x Data..:? "gopSize")
+            Prelude.<*> (x Data..:? "gopSizeUnits")
+            Prelude.<*> (x Data..:? "hrdBufferFinalFillPercentage")
+            Prelude.<*> (x Data..:? "hrdBufferInitialFillPercentage")
+            Prelude.<*> (x Data..:? "hrdBufferSize")
+            Prelude.<*> (x Data..:? "interlaceMode")
+            Prelude.<*> (x Data..:? "intraDcPrecision")
+            Prelude.<*> (x Data..:? "maxBitrate")
+            Prelude.<*> (x Data..:? "minIInterval")
+            Prelude.<*> (x Data..:? "numberBFramesBetweenReferenceFrames")
+            Prelude.<*> (x Data..:? "parControl")
+            Prelude.<*> (x Data..:? "parDenominator")
+            Prelude.<*> (x Data..:? "parNumerator")
+            Prelude.<*> (x Data..:? "qualityTuningLevel")
+            Prelude.<*> (x Data..:? "rateControlMode")
+            Prelude.<*> (x Data..:? "scanTypeConversionMode")
+            Prelude.<*> (x Data..:? "sceneChangeDetect")
+            Prelude.<*> (x Data..:? "slowPal")
+            Prelude.<*> (x Data..:? "softness")
+            Prelude.<*> (x Data..:? "spatialAdaptiveQuantization")
+            Prelude.<*> (x Data..:? "syntax")
+            Prelude.<*> (x Data..:? "telecine")
+            Prelude.<*> (x Data..:? "temporalAdaptiveQuantization")
+      )
+
+instance Prelude.Hashable Mpeg2Settings where
+  hashWithSalt _salt Mpeg2Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` adaptiveQuantization
+      `Prelude.hashWithSalt` bitrate
+      `Prelude.hashWithSalt` codecLevel
+      `Prelude.hashWithSalt` codecProfile
+      `Prelude.hashWithSalt` dynamicSubGop
+      `Prelude.hashWithSalt` framerateControl
+      `Prelude.hashWithSalt` framerateConversionAlgorithm
+      `Prelude.hashWithSalt` framerateDenominator
+      `Prelude.hashWithSalt` framerateNumerator
+      `Prelude.hashWithSalt` gopClosedCadence
+      `Prelude.hashWithSalt` gopSize
+      `Prelude.hashWithSalt` gopSizeUnits
+      `Prelude.hashWithSalt` hrdBufferFinalFillPercentage
+      `Prelude.hashWithSalt` hrdBufferInitialFillPercentage
+      `Prelude.hashWithSalt` hrdBufferSize
+      `Prelude.hashWithSalt` interlaceMode
+      `Prelude.hashWithSalt` intraDcPrecision
+      `Prelude.hashWithSalt` maxBitrate
+      `Prelude.hashWithSalt` minIInterval
+      `Prelude.hashWithSalt` numberBFramesBetweenReferenceFrames
+      `Prelude.hashWithSalt` parControl
+      `Prelude.hashWithSalt` parDenominator
+      `Prelude.hashWithSalt` parNumerator
+      `Prelude.hashWithSalt` qualityTuningLevel
+      `Prelude.hashWithSalt` rateControlMode
+      `Prelude.hashWithSalt` scanTypeConversionMode
+      `Prelude.hashWithSalt` sceneChangeDetect
+      `Prelude.hashWithSalt` slowPal
+      `Prelude.hashWithSalt` softness
+      `Prelude.hashWithSalt` spatialAdaptiveQuantization
+      `Prelude.hashWithSalt` syntax
+      `Prelude.hashWithSalt` telecine
+      `Prelude.hashWithSalt` temporalAdaptiveQuantization
+
+instance Prelude.NFData Mpeg2Settings where
+  rnf Mpeg2Settings' {..} =
+    Prelude.rnf adaptiveQuantization
+      `Prelude.seq` Prelude.rnf bitrate
+      `Prelude.seq` Prelude.rnf codecLevel
+      `Prelude.seq` Prelude.rnf codecProfile
+      `Prelude.seq` Prelude.rnf dynamicSubGop
+      `Prelude.seq` Prelude.rnf framerateControl
+      `Prelude.seq` Prelude.rnf framerateConversionAlgorithm
+      `Prelude.seq` Prelude.rnf framerateDenominator
+      `Prelude.seq` Prelude.rnf framerateNumerator
+      `Prelude.seq` Prelude.rnf gopClosedCadence
+      `Prelude.seq` Prelude.rnf gopSize
+      `Prelude.seq` Prelude.rnf gopSizeUnits
+      `Prelude.seq` Prelude.rnf hrdBufferFinalFillPercentage
+      `Prelude.seq` Prelude.rnf hrdBufferInitialFillPercentage
+      `Prelude.seq` Prelude.rnf hrdBufferSize
+      `Prelude.seq` Prelude.rnf interlaceMode
+      `Prelude.seq` Prelude.rnf intraDcPrecision
+      `Prelude.seq` Prelude.rnf maxBitrate
+      `Prelude.seq` Prelude.rnf minIInterval
+      `Prelude.seq` Prelude.rnf
+        numberBFramesBetweenReferenceFrames
+      `Prelude.seq` Prelude.rnf parControl
+      `Prelude.seq` Prelude.rnf parDenominator
+      `Prelude.seq` Prelude.rnf parNumerator
+      `Prelude.seq` Prelude.rnf
+        qualityTuningLevel
+      `Prelude.seq` Prelude.rnf
+        rateControlMode
+      `Prelude.seq` Prelude.rnf
+        scanTypeConversionMode
+      `Prelude.seq` Prelude.rnf
+        sceneChangeDetect
+      `Prelude.seq` Prelude.rnf
+        slowPal
+      `Prelude.seq` Prelude.rnf
+        softness
+      `Prelude.seq` Prelude.rnf
+        spatialAdaptiveQuantization
+      `Prelude.seq` Prelude.rnf
+        syntax
+      `Prelude.seq` Prelude.rnf
+        telecine
+      `Prelude.seq` Prelude.rnf
+        temporalAdaptiveQuantization
+
+instance Data.ToJSON Mpeg2Settings where
+  toJSON Mpeg2Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("adaptiveQuantization" Data..=)
+              Prelude.<$> adaptiveQuantization,
+            ("bitrate" Data..=) Prelude.<$> bitrate,
+            ("codecLevel" Data..=) Prelude.<$> codecLevel,
+            ("codecProfile" Data..=) Prelude.<$> codecProfile,
+            ("dynamicSubGop" Data..=) Prelude.<$> dynamicSubGop,
+            ("framerateControl" Data..=)
+              Prelude.<$> framerateControl,
+            ("framerateConversionAlgorithm" Data..=)
+              Prelude.<$> framerateConversionAlgorithm,
+            ("framerateDenominator" Data..=)
+              Prelude.<$> framerateDenominator,
+            ("framerateNumerator" Data..=)
+              Prelude.<$> framerateNumerator,
+            ("gopClosedCadence" Data..=)
+              Prelude.<$> gopClosedCadence,
+            ("gopSize" Data..=) Prelude.<$> gopSize,
+            ("gopSizeUnits" Data..=) Prelude.<$> gopSizeUnits,
+            ("hrdBufferFinalFillPercentage" Data..=)
+              Prelude.<$> hrdBufferFinalFillPercentage,
+            ("hrdBufferInitialFillPercentage" Data..=)
+              Prelude.<$> hrdBufferInitialFillPercentage,
+            ("hrdBufferSize" Data..=) Prelude.<$> hrdBufferSize,
+            ("interlaceMode" Data..=) Prelude.<$> interlaceMode,
+            ("intraDcPrecision" Data..=)
+              Prelude.<$> intraDcPrecision,
+            ("maxBitrate" Data..=) Prelude.<$> maxBitrate,
+            ("minIInterval" Data..=) Prelude.<$> minIInterval,
+            ("numberBFramesBetweenReferenceFrames" Data..=)
+              Prelude.<$> numberBFramesBetweenReferenceFrames,
+            ("parControl" Data..=) Prelude.<$> parControl,
+            ("parDenominator" Data..=)
+              Prelude.<$> parDenominator,
+            ("parNumerator" Data..=) Prelude.<$> parNumerator,
+            ("qualityTuningLevel" Data..=)
+              Prelude.<$> qualityTuningLevel,
+            ("rateControlMode" Data..=)
+              Prelude.<$> rateControlMode,
+            ("scanTypeConversionMode" Data..=)
+              Prelude.<$> scanTypeConversionMode,
+            ("sceneChangeDetect" Data..=)
+              Prelude.<$> sceneChangeDetect,
+            ("slowPal" Data..=) Prelude.<$> slowPal,
+            ("softness" Data..=) Prelude.<$> softness,
+            ("spatialAdaptiveQuantization" Data..=)
+              Prelude.<$> spatialAdaptiveQuantization,
+            ("syntax" Data..=) Prelude.<$> syntax,
+            ("telecine" Data..=) Prelude.<$> telecine,
+            ("temporalAdaptiveQuantization" Data..=)
+              Prelude.<$> temporalAdaptiveQuantization
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2SlowPal.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2SlowPal.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2SlowPal.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2SlowPal
+-- 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.Mpeg2SlowPal
+  ( Mpeg2SlowPal
+      ( ..,
+        Mpeg2SlowPal_DISABLED,
+        Mpeg2SlowPal_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+newtype Mpeg2SlowPal = Mpeg2SlowPal'
+  { fromMpeg2SlowPal ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2SlowPal_DISABLED :: Mpeg2SlowPal
+pattern Mpeg2SlowPal_DISABLED = Mpeg2SlowPal' "DISABLED"
+
+pattern Mpeg2SlowPal_ENABLED :: Mpeg2SlowPal
+pattern Mpeg2SlowPal_ENABLED = Mpeg2SlowPal' "ENABLED"
+
+{-# COMPLETE
+  Mpeg2SlowPal_DISABLED,
+  Mpeg2SlowPal_ENABLED,
+  Mpeg2SlowPal'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2SpatialAdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2SpatialAdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2SpatialAdaptiveQuantization.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2SpatialAdaptiveQuantization
+-- 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.Mpeg2SpatialAdaptiveQuantization
+  ( Mpeg2SpatialAdaptiveQuantization
+      ( ..,
+        Mpeg2SpatialAdaptiveQuantization_DISABLED,
+        Mpeg2SpatialAdaptiveQuantization_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on spatial variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas that can
+-- sustain more distortion with no noticeable visual degradation and uses
+-- more bits on areas where any small distortion will be noticeable. For
+-- example, complex textured blocks are encoded with fewer bits and smooth
+-- textured blocks are encoded with more bits. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen with a lot of complex texture, you might choose to
+-- disable this feature. Related setting: When you enable spatial adaptive
+-- quantization, set the value for Adaptive quantization
+-- (adaptiveQuantization) depending on your content. For homogeneous
+-- content, such as cartoons and video games, set it to Low. For content
+-- with a wider variety of textures, set it to High or Higher.
+newtype Mpeg2SpatialAdaptiveQuantization = Mpeg2SpatialAdaptiveQuantization'
+  { fromMpeg2SpatialAdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2SpatialAdaptiveQuantization_DISABLED :: Mpeg2SpatialAdaptiveQuantization
+pattern Mpeg2SpatialAdaptiveQuantization_DISABLED = Mpeg2SpatialAdaptiveQuantization' "DISABLED"
+
+pattern Mpeg2SpatialAdaptiveQuantization_ENABLED :: Mpeg2SpatialAdaptiveQuantization
+pattern Mpeg2SpatialAdaptiveQuantization_ENABLED = Mpeg2SpatialAdaptiveQuantization' "ENABLED"
+
+{-# COMPLETE
+  Mpeg2SpatialAdaptiveQuantization_DISABLED,
+  Mpeg2SpatialAdaptiveQuantization_ENABLED,
+  Mpeg2SpatialAdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2Syntax.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2Syntax.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2Syntax.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2Syntax
+-- 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.Mpeg2Syntax
+  ( Mpeg2Syntax
+      ( ..,
+        Mpeg2Syntax_DEFAULT,
+        Mpeg2Syntax_D_10
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether this output\'s video uses the D10 syntax. Keep the
+-- default value to not use the syntax. Related settings: When you choose
+-- D10 (D_10) for your MXF profile (profile), you must also set this value
+-- to D10 (D_10).
+newtype Mpeg2Syntax = Mpeg2Syntax'
+  { fromMpeg2Syntax ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2Syntax_DEFAULT :: Mpeg2Syntax
+pattern Mpeg2Syntax_DEFAULT = Mpeg2Syntax' "DEFAULT"
+
+pattern Mpeg2Syntax_D_10 :: Mpeg2Syntax
+pattern Mpeg2Syntax_D_10 = Mpeg2Syntax' "D_10"
+
+{-# COMPLETE
+  Mpeg2Syntax_DEFAULT,
+  Mpeg2Syntax_D_10,
+  Mpeg2Syntax'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2Telecine.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2Telecine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2Telecine.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2Telecine
+-- 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.Mpeg2Telecine
+  ( Mpeg2Telecine
+      ( ..,
+        Mpeg2Telecine_HARD,
+        Mpeg2Telecine_NONE,
+        Mpeg2Telecine_SOFT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard or soft telecine to create a smoother picture. Hard telecine
+-- (HARD) produces a 29.97i output. Soft telecine (SOFT) produces an output
+-- with a 23.976 output that signals to the video player device to do the
+-- conversion during play back. When you keep the default value, None
+-- (NONE), MediaConvert does a standard frame rate conversion to 29.97
+-- without doing anything with the field polarity to create a smoother
+-- picture.
+newtype Mpeg2Telecine = Mpeg2Telecine'
+  { fromMpeg2Telecine ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2Telecine_HARD :: Mpeg2Telecine
+pattern Mpeg2Telecine_HARD = Mpeg2Telecine' "HARD"
+
+pattern Mpeg2Telecine_NONE :: Mpeg2Telecine
+pattern Mpeg2Telecine_NONE = Mpeg2Telecine' "NONE"
+
+pattern Mpeg2Telecine_SOFT :: Mpeg2Telecine
+pattern Mpeg2Telecine_SOFT = Mpeg2Telecine' "SOFT"
+
+{-# COMPLETE
+  Mpeg2Telecine_HARD,
+  Mpeg2Telecine_NONE,
+  Mpeg2Telecine_SOFT,
+  Mpeg2Telecine'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Mpeg2TemporalAdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/Mpeg2TemporalAdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Mpeg2TemporalAdaptiveQuantization.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Mpeg2TemporalAdaptiveQuantization
+-- 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.Mpeg2TemporalAdaptiveQuantization
+  ( Mpeg2TemporalAdaptiveQuantization
+      ( ..,
+        Mpeg2TemporalAdaptiveQuantization_DISABLED,
+        Mpeg2TemporalAdaptiveQuantization_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on temporal variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas of the frame
+-- that aren\'t moving and uses more bits on complex objects with sharp
+-- edges that move a lot. For example, this feature improves the
+-- readability of text tickers on newscasts and scoreboards on sports
+-- matches. Enabling this feature will almost always improve your video
+-- quality. Note, though, that this feature doesn\'t take into account
+-- where the viewer\'s attention is likely to be. If viewers are likely to
+-- be focusing their attention on a part of the screen that doesn\'t have
+-- moving objects with sharp edges, such as sports athletes\' faces, you
+-- might choose to disable this feature. Related setting: When you enable
+-- temporal quantization, adjust the strength of the filter with the
+-- setting Adaptive quantization (adaptiveQuantization).
+newtype Mpeg2TemporalAdaptiveQuantization = Mpeg2TemporalAdaptiveQuantization'
+  { fromMpeg2TemporalAdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Mpeg2TemporalAdaptiveQuantization_DISABLED :: Mpeg2TemporalAdaptiveQuantization
+pattern Mpeg2TemporalAdaptiveQuantization_DISABLED = Mpeg2TemporalAdaptiveQuantization' "DISABLED"
+
+pattern Mpeg2TemporalAdaptiveQuantization_ENABLED :: Mpeg2TemporalAdaptiveQuantization
+pattern Mpeg2TemporalAdaptiveQuantization_ENABLED = Mpeg2TemporalAdaptiveQuantization' "ENABLED"
+
+{-# COMPLETE
+  Mpeg2TemporalAdaptiveQuantization_DISABLED,
+  Mpeg2TemporalAdaptiveQuantization_ENABLED,
+  Mpeg2TemporalAdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MsSmoothAdditionalManifest.hs b/gen/Amazonka/MediaConvert/Types/MsSmoothAdditionalManifest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MsSmoothAdditionalManifest.hs
@@ -0,0 +1,119 @@
+{-# 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.MsSmoothAdditionalManifest
+-- 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.MsSmoothAdditionalManifest where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the details for each additional Microsoft Smooth Streaming
+-- manifest that you want the service to generate for this output group.
+-- Each manifest can reference a different subset of outputs in the group.
+--
+-- /See:/ 'newMsSmoothAdditionalManifest' smart constructor.
+data MsSmoothAdditionalManifest = MsSmoothAdditionalManifest'
+  { -- | Specify a name modifier that the service adds to the name of this
+    -- manifest to make it different from the file names of the other main
+    -- manifests in the output group. For example, say that the default main
+    -- manifest for your Microsoft Smooth group is film-name.ismv. If you enter
+    -- \"-no-premium\" for this setting, then the file name the service
+    -- generates for this top-level manifest is film-name-no-premium.ismv.
+    manifestNameModifier :: Prelude.Maybe Prelude.Text,
+    -- | Specify the outputs that you want this additional top-level manifest to
+    -- reference.
+    selectedOutputs :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MsSmoothAdditionalManifest' 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:
+--
+-- 'manifestNameModifier', 'msSmoothAdditionalManifest_manifestNameModifier' - Specify a name modifier that the service adds to the name of this
+-- manifest to make it different from the file names of the other main
+-- manifests in the output group. For example, say that the default main
+-- manifest for your Microsoft Smooth group is film-name.ismv. If you enter
+-- \"-no-premium\" for this setting, then the file name the service
+-- generates for this top-level manifest is film-name-no-premium.ismv.
+--
+-- 'selectedOutputs', 'msSmoothAdditionalManifest_selectedOutputs' - Specify the outputs that you want this additional top-level manifest to
+-- reference.
+newMsSmoothAdditionalManifest ::
+  MsSmoothAdditionalManifest
+newMsSmoothAdditionalManifest =
+  MsSmoothAdditionalManifest'
+    { manifestNameModifier =
+        Prelude.Nothing,
+      selectedOutputs = Prelude.Nothing
+    }
+
+-- | Specify a name modifier that the service adds to the name of this
+-- manifest to make it different from the file names of the other main
+-- manifests in the output group. For example, say that the default main
+-- manifest for your Microsoft Smooth group is film-name.ismv. If you enter
+-- \"-no-premium\" for this setting, then the file name the service
+-- generates for this top-level manifest is film-name-no-premium.ismv.
+msSmoothAdditionalManifest_manifestNameModifier :: Lens.Lens' MsSmoothAdditionalManifest (Prelude.Maybe Prelude.Text)
+msSmoothAdditionalManifest_manifestNameModifier = Lens.lens (\MsSmoothAdditionalManifest' {manifestNameModifier} -> manifestNameModifier) (\s@MsSmoothAdditionalManifest' {} a -> s {manifestNameModifier = a} :: MsSmoothAdditionalManifest)
+
+-- | Specify the outputs that you want this additional top-level manifest to
+-- reference.
+msSmoothAdditionalManifest_selectedOutputs :: Lens.Lens' MsSmoothAdditionalManifest (Prelude.Maybe [Prelude.Text])
+msSmoothAdditionalManifest_selectedOutputs = Lens.lens (\MsSmoothAdditionalManifest' {selectedOutputs} -> selectedOutputs) (\s@MsSmoothAdditionalManifest' {} a -> s {selectedOutputs = a} :: MsSmoothAdditionalManifest) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON MsSmoothAdditionalManifest where
+  parseJSON =
+    Data.withObject
+      "MsSmoothAdditionalManifest"
+      ( \x ->
+          MsSmoothAdditionalManifest'
+            Prelude.<$> (x Data..:? "manifestNameModifier")
+            Prelude.<*> ( x
+                            Data..:? "selectedOutputs"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable MsSmoothAdditionalManifest where
+  hashWithSalt _salt MsSmoothAdditionalManifest' {..} =
+    _salt
+      `Prelude.hashWithSalt` manifestNameModifier
+      `Prelude.hashWithSalt` selectedOutputs
+
+instance Prelude.NFData MsSmoothAdditionalManifest where
+  rnf MsSmoothAdditionalManifest' {..} =
+    Prelude.rnf manifestNameModifier
+      `Prelude.seq` Prelude.rnf selectedOutputs
+
+instance Data.ToJSON MsSmoothAdditionalManifest where
+  toJSON MsSmoothAdditionalManifest' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("manifestNameModifier" Data..=)
+              Prelude.<$> manifestNameModifier,
+            ("selectedOutputs" Data..=)
+              Prelude.<$> selectedOutputs
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/MsSmoothAudioDeduplication.hs b/gen/Amazonka/MediaConvert/Types/MsSmoothAudioDeduplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MsSmoothAudioDeduplication.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MsSmoothAudioDeduplication
+-- 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.MsSmoothAudioDeduplication
+  ( MsSmoothAudioDeduplication
+      ( ..,
+        MsSmoothAudioDeduplication_COMBINE_DUPLICATE_STREAMS,
+        MsSmoothAudioDeduplication_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | COMBINE_DUPLICATE_STREAMS combines identical audio encoding settings
+-- across a Microsoft Smooth output group into a single audio stream.
+newtype MsSmoothAudioDeduplication = MsSmoothAudioDeduplication'
+  { fromMsSmoothAudioDeduplication ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MsSmoothAudioDeduplication_COMBINE_DUPLICATE_STREAMS :: MsSmoothAudioDeduplication
+pattern MsSmoothAudioDeduplication_COMBINE_DUPLICATE_STREAMS = MsSmoothAudioDeduplication' "COMBINE_DUPLICATE_STREAMS"
+
+pattern MsSmoothAudioDeduplication_NONE :: MsSmoothAudioDeduplication
+pattern MsSmoothAudioDeduplication_NONE = MsSmoothAudioDeduplication' "NONE"
+
+{-# COMPLETE
+  MsSmoothAudioDeduplication_COMBINE_DUPLICATE_STREAMS,
+  MsSmoothAudioDeduplication_NONE,
+  MsSmoothAudioDeduplication'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MsSmoothEncryptionSettings.hs b/gen/Amazonka/MediaConvert/Types/MsSmoothEncryptionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MsSmoothEncryptionSettings.hs
@@ -0,0 +1,92 @@
+{-# 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.MsSmoothEncryptionSettings
+-- 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.MsSmoothEncryptionSettings 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.SpekeKeyProvider
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you are using DRM, set DRM System (MsSmoothEncryptionSettings) to
+-- specify the value SpekeKeyProvider.
+--
+-- /See:/ 'newMsSmoothEncryptionSettings' smart constructor.
+data MsSmoothEncryptionSettings = MsSmoothEncryptionSettings'
+  { -- | If your output group type is HLS, DASH, or Microsoft Smooth, use these
+    -- settings when doing DRM encryption with a SPEKE-compliant key provider.
+    -- If your output group type is CMAF, use the SpekeKeyProviderCmaf settings
+    -- instead.
+    spekeKeyProvider :: Prelude.Maybe SpekeKeyProvider
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MsSmoothEncryptionSettings' 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:
+--
+-- 'spekeKeyProvider', 'msSmoothEncryptionSettings_spekeKeyProvider' - If your output group type is HLS, DASH, or Microsoft Smooth, use these
+-- settings when doing DRM encryption with a SPEKE-compliant key provider.
+-- If your output group type is CMAF, use the SpekeKeyProviderCmaf settings
+-- instead.
+newMsSmoothEncryptionSettings ::
+  MsSmoothEncryptionSettings
+newMsSmoothEncryptionSettings =
+  MsSmoothEncryptionSettings'
+    { spekeKeyProvider =
+        Prelude.Nothing
+    }
+
+-- | If your output group type is HLS, DASH, or Microsoft Smooth, use these
+-- settings when doing DRM encryption with a SPEKE-compliant key provider.
+-- If your output group type is CMAF, use the SpekeKeyProviderCmaf settings
+-- instead.
+msSmoothEncryptionSettings_spekeKeyProvider :: Lens.Lens' MsSmoothEncryptionSettings (Prelude.Maybe SpekeKeyProvider)
+msSmoothEncryptionSettings_spekeKeyProvider = Lens.lens (\MsSmoothEncryptionSettings' {spekeKeyProvider} -> spekeKeyProvider) (\s@MsSmoothEncryptionSettings' {} a -> s {spekeKeyProvider = a} :: MsSmoothEncryptionSettings)
+
+instance Data.FromJSON MsSmoothEncryptionSettings where
+  parseJSON =
+    Data.withObject
+      "MsSmoothEncryptionSettings"
+      ( \x ->
+          MsSmoothEncryptionSettings'
+            Prelude.<$> (x Data..:? "spekeKeyProvider")
+      )
+
+instance Prelude.Hashable MsSmoothEncryptionSettings where
+  hashWithSalt _salt MsSmoothEncryptionSettings' {..} =
+    _salt `Prelude.hashWithSalt` spekeKeyProvider
+
+instance Prelude.NFData MsSmoothEncryptionSettings where
+  rnf MsSmoothEncryptionSettings' {..} =
+    Prelude.rnf spekeKeyProvider
+
+instance Data.ToJSON MsSmoothEncryptionSettings where
+  toJSON MsSmoothEncryptionSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("spekeKeyProvider" Data..=)
+              Prelude.<$> spekeKeyProvider
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/MsSmoothFragmentLengthControl.hs b/gen/Amazonka/MediaConvert/Types/MsSmoothFragmentLengthControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MsSmoothFragmentLengthControl.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MsSmoothFragmentLengthControl
+-- 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.MsSmoothFragmentLengthControl
+  ( MsSmoothFragmentLengthControl
+      ( ..,
+        MsSmoothFragmentLengthControl_EXACT,
+        MsSmoothFragmentLengthControl_GOP_MULTIPLE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify how you want MediaConvert to determine the fragment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Fragment length (FragmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+newtype MsSmoothFragmentLengthControl = MsSmoothFragmentLengthControl'
+  { fromMsSmoothFragmentLengthControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MsSmoothFragmentLengthControl_EXACT :: MsSmoothFragmentLengthControl
+pattern MsSmoothFragmentLengthControl_EXACT = MsSmoothFragmentLengthControl' "EXACT"
+
+pattern MsSmoothFragmentLengthControl_GOP_MULTIPLE :: MsSmoothFragmentLengthControl
+pattern MsSmoothFragmentLengthControl_GOP_MULTIPLE = MsSmoothFragmentLengthControl' "GOP_MULTIPLE"
+
+{-# COMPLETE
+  MsSmoothFragmentLengthControl_EXACT,
+  MsSmoothFragmentLengthControl_GOP_MULTIPLE,
+  MsSmoothFragmentLengthControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MsSmoothGroupSettings.hs b/gen/Amazonka/MediaConvert/Types/MsSmoothGroupSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MsSmoothGroupSettings.hs
@@ -0,0 +1,255 @@
+{-# 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.MsSmoothGroupSettings
+-- 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.MsSmoothGroupSettings 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.DestinationSettings
+import Amazonka.MediaConvert.Types.MsSmoothAdditionalManifest
+import Amazonka.MediaConvert.Types.MsSmoothAudioDeduplication
+import Amazonka.MediaConvert.Types.MsSmoothEncryptionSettings
+import Amazonka.MediaConvert.Types.MsSmoothFragmentLengthControl
+import Amazonka.MediaConvert.Types.MsSmoothManifestEncoding
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to your Microsoft Smooth Streaming output package. For
+-- more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set Type, under
+-- OutputGroupSettings, to MS_SMOOTH_GROUP_SETTINGS.
+--
+-- /See:/ 'newMsSmoothGroupSettings' smart constructor.
+data MsSmoothGroupSettings = MsSmoothGroupSettings'
+  { -- | By default, the service creates one .ism Microsoft Smooth Streaming
+    -- manifest for each Microsoft Smooth Streaming output group in your job.
+    -- This default manifest references every output in the output group. To
+    -- create additional manifests that reference a subset of the outputs in
+    -- the output group, specify a list of them here.
+    additionalManifests :: Prelude.Maybe [MsSmoothAdditionalManifest],
+    -- | COMBINE_DUPLICATE_STREAMS combines identical audio encoding settings
+    -- across a Microsoft Smooth output group into a single audio stream.
+    audioDeduplication :: Prelude.Maybe MsSmoothAudioDeduplication,
+    -- | Use Destination (Destination) to specify the S3 output location and the
+    -- output filename base. Destination accepts format identifiers. If you do
+    -- not specify the base filename in the URI, the service will use the
+    -- filename of the input file. If your job has multiple inputs, the service
+    -- uses the filename of the first input file.
+    destination :: Prelude.Maybe Prelude.Text,
+    -- | Settings associated with the destination. Will vary based on the type of
+    -- destination
+    destinationSettings :: Prelude.Maybe DestinationSettings,
+    -- | If you are using DRM, set DRM System (MsSmoothEncryptionSettings) to
+    -- specify the value SpekeKeyProvider.
+    encryption :: Prelude.Maybe MsSmoothEncryptionSettings,
+    -- | Specify how you want MediaConvert to determine the fragment length.
+    -- Choose Exact (EXACT) to have the encoder use the exact length that you
+    -- specify with the setting Fragment length (FragmentLength). This might
+    -- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+    -- the encoder round up the segment lengths to match the next GOP boundary.
+    fragmentLength :: Prelude.Maybe Prelude.Natural,
+    -- | Specify how you want MediaConvert to determine the fragment length.
+    -- Choose Exact (EXACT) to have the encoder use the exact length that you
+    -- specify with the setting Fragment length (FragmentLength). This might
+    -- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+    -- the encoder round up the segment lengths to match the next GOP boundary.
+    fragmentLengthControl :: Prelude.Maybe MsSmoothFragmentLengthControl,
+    -- | Use Manifest encoding (MsSmoothManifestEncoding) to specify the encoding
+    -- format for the server and client manifest. Valid options are utf8 and
+    -- utf16.
+    manifestEncoding :: Prelude.Maybe MsSmoothManifestEncoding
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MsSmoothGroupSettings' 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:
+--
+-- 'additionalManifests', 'msSmoothGroupSettings_additionalManifests' - By default, the service creates one .ism Microsoft Smooth Streaming
+-- manifest for each Microsoft Smooth Streaming output group in your job.
+-- This default manifest references every output in the output group. To
+-- create additional manifests that reference a subset of the outputs in
+-- the output group, specify a list of them here.
+--
+-- 'audioDeduplication', 'msSmoothGroupSettings_audioDeduplication' - COMBINE_DUPLICATE_STREAMS combines identical audio encoding settings
+-- across a Microsoft Smooth output group into a single audio stream.
+--
+-- 'destination', 'msSmoothGroupSettings_destination' - Use Destination (Destination) to specify the S3 output location and the
+-- output filename base. Destination accepts format identifiers. If you do
+-- not specify the base filename in the URI, the service will use the
+-- filename of the input file. If your job has multiple inputs, the service
+-- uses the filename of the first input file.
+--
+-- 'destinationSettings', 'msSmoothGroupSettings_destinationSettings' - Settings associated with the destination. Will vary based on the type of
+-- destination
+--
+-- 'encryption', 'msSmoothGroupSettings_encryption' - If you are using DRM, set DRM System (MsSmoothEncryptionSettings) to
+-- specify the value SpekeKeyProvider.
+--
+-- 'fragmentLength', 'msSmoothGroupSettings_fragmentLength' - Specify how you want MediaConvert to determine the fragment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Fragment length (FragmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+--
+-- 'fragmentLengthControl', 'msSmoothGroupSettings_fragmentLengthControl' - Specify how you want MediaConvert to determine the fragment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Fragment length (FragmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+--
+-- 'manifestEncoding', 'msSmoothGroupSettings_manifestEncoding' - Use Manifest encoding (MsSmoothManifestEncoding) to specify the encoding
+-- format for the server and client manifest. Valid options are utf8 and
+-- utf16.
+newMsSmoothGroupSettings ::
+  MsSmoothGroupSettings
+newMsSmoothGroupSettings =
+  MsSmoothGroupSettings'
+    { additionalManifests =
+        Prelude.Nothing,
+      audioDeduplication = Prelude.Nothing,
+      destination = Prelude.Nothing,
+      destinationSettings = Prelude.Nothing,
+      encryption = Prelude.Nothing,
+      fragmentLength = Prelude.Nothing,
+      fragmentLengthControl = Prelude.Nothing,
+      manifestEncoding = Prelude.Nothing
+    }
+
+-- | By default, the service creates one .ism Microsoft Smooth Streaming
+-- manifest for each Microsoft Smooth Streaming output group in your job.
+-- This default manifest references every output in the output group. To
+-- create additional manifests that reference a subset of the outputs in
+-- the output group, specify a list of them here.
+msSmoothGroupSettings_additionalManifests :: Lens.Lens' MsSmoothGroupSettings (Prelude.Maybe [MsSmoothAdditionalManifest])
+msSmoothGroupSettings_additionalManifests = Lens.lens (\MsSmoothGroupSettings' {additionalManifests} -> additionalManifests) (\s@MsSmoothGroupSettings' {} a -> s {additionalManifests = a} :: MsSmoothGroupSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | COMBINE_DUPLICATE_STREAMS combines identical audio encoding settings
+-- across a Microsoft Smooth output group into a single audio stream.
+msSmoothGroupSettings_audioDeduplication :: Lens.Lens' MsSmoothGroupSettings (Prelude.Maybe MsSmoothAudioDeduplication)
+msSmoothGroupSettings_audioDeduplication = Lens.lens (\MsSmoothGroupSettings' {audioDeduplication} -> audioDeduplication) (\s@MsSmoothGroupSettings' {} a -> s {audioDeduplication = a} :: MsSmoothGroupSettings)
+
+-- | Use Destination (Destination) to specify the S3 output location and the
+-- output filename base. Destination accepts format identifiers. If you do
+-- not specify the base filename in the URI, the service will use the
+-- filename of the input file. If your job has multiple inputs, the service
+-- uses the filename of the first input file.
+msSmoothGroupSettings_destination :: Lens.Lens' MsSmoothGroupSettings (Prelude.Maybe Prelude.Text)
+msSmoothGroupSettings_destination = Lens.lens (\MsSmoothGroupSettings' {destination} -> destination) (\s@MsSmoothGroupSettings' {} a -> s {destination = a} :: MsSmoothGroupSettings)
+
+-- | Settings associated with the destination. Will vary based on the type of
+-- destination
+msSmoothGroupSettings_destinationSettings :: Lens.Lens' MsSmoothGroupSettings (Prelude.Maybe DestinationSettings)
+msSmoothGroupSettings_destinationSettings = Lens.lens (\MsSmoothGroupSettings' {destinationSettings} -> destinationSettings) (\s@MsSmoothGroupSettings' {} a -> s {destinationSettings = a} :: MsSmoothGroupSettings)
+
+-- | If you are using DRM, set DRM System (MsSmoothEncryptionSettings) to
+-- specify the value SpekeKeyProvider.
+msSmoothGroupSettings_encryption :: Lens.Lens' MsSmoothGroupSettings (Prelude.Maybe MsSmoothEncryptionSettings)
+msSmoothGroupSettings_encryption = Lens.lens (\MsSmoothGroupSettings' {encryption} -> encryption) (\s@MsSmoothGroupSettings' {} a -> s {encryption = a} :: MsSmoothGroupSettings)
+
+-- | Specify how you want MediaConvert to determine the fragment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Fragment length (FragmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+msSmoothGroupSettings_fragmentLength :: Lens.Lens' MsSmoothGroupSettings (Prelude.Maybe Prelude.Natural)
+msSmoothGroupSettings_fragmentLength = Lens.lens (\MsSmoothGroupSettings' {fragmentLength} -> fragmentLength) (\s@MsSmoothGroupSettings' {} a -> s {fragmentLength = a} :: MsSmoothGroupSettings)
+
+-- | Specify how you want MediaConvert to determine the fragment length.
+-- Choose Exact (EXACT) to have the encoder use the exact length that you
+-- specify with the setting Fragment length (FragmentLength). This might
+-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
+-- the encoder round up the segment lengths to match the next GOP boundary.
+msSmoothGroupSettings_fragmentLengthControl :: Lens.Lens' MsSmoothGroupSettings (Prelude.Maybe MsSmoothFragmentLengthControl)
+msSmoothGroupSettings_fragmentLengthControl = Lens.lens (\MsSmoothGroupSettings' {fragmentLengthControl} -> fragmentLengthControl) (\s@MsSmoothGroupSettings' {} a -> s {fragmentLengthControl = a} :: MsSmoothGroupSettings)
+
+-- | Use Manifest encoding (MsSmoothManifestEncoding) to specify the encoding
+-- format for the server and client manifest. Valid options are utf8 and
+-- utf16.
+msSmoothGroupSettings_manifestEncoding :: Lens.Lens' MsSmoothGroupSettings (Prelude.Maybe MsSmoothManifestEncoding)
+msSmoothGroupSettings_manifestEncoding = Lens.lens (\MsSmoothGroupSettings' {manifestEncoding} -> manifestEncoding) (\s@MsSmoothGroupSettings' {} a -> s {manifestEncoding = a} :: MsSmoothGroupSettings)
+
+instance Data.FromJSON MsSmoothGroupSettings where
+  parseJSON =
+    Data.withObject
+      "MsSmoothGroupSettings"
+      ( \x ->
+          MsSmoothGroupSettings'
+            Prelude.<$> ( x
+                            Data..:? "additionalManifests"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "audioDeduplication")
+            Prelude.<*> (x Data..:? "destination")
+            Prelude.<*> (x Data..:? "destinationSettings")
+            Prelude.<*> (x Data..:? "encryption")
+            Prelude.<*> (x Data..:? "fragmentLength")
+            Prelude.<*> (x Data..:? "fragmentLengthControl")
+            Prelude.<*> (x Data..:? "manifestEncoding")
+      )
+
+instance Prelude.Hashable MsSmoothGroupSettings where
+  hashWithSalt _salt MsSmoothGroupSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` additionalManifests
+      `Prelude.hashWithSalt` audioDeduplication
+      `Prelude.hashWithSalt` destination
+      `Prelude.hashWithSalt` destinationSettings
+      `Prelude.hashWithSalt` encryption
+      `Prelude.hashWithSalt` fragmentLength
+      `Prelude.hashWithSalt` fragmentLengthControl
+      `Prelude.hashWithSalt` manifestEncoding
+
+instance Prelude.NFData MsSmoothGroupSettings where
+  rnf MsSmoothGroupSettings' {..} =
+    Prelude.rnf additionalManifests
+      `Prelude.seq` Prelude.rnf audioDeduplication
+      `Prelude.seq` Prelude.rnf destination
+      `Prelude.seq` Prelude.rnf destinationSettings
+      `Prelude.seq` Prelude.rnf encryption
+      `Prelude.seq` Prelude.rnf fragmentLength
+      `Prelude.seq` Prelude.rnf fragmentLengthControl
+      `Prelude.seq` Prelude.rnf manifestEncoding
+
+instance Data.ToJSON MsSmoothGroupSettings where
+  toJSON MsSmoothGroupSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("additionalManifests" Data..=)
+              Prelude.<$> additionalManifests,
+            ("audioDeduplication" Data..=)
+              Prelude.<$> audioDeduplication,
+            ("destination" Data..=) Prelude.<$> destination,
+            ("destinationSettings" Data..=)
+              Prelude.<$> destinationSettings,
+            ("encryption" Data..=) Prelude.<$> encryption,
+            ("fragmentLength" Data..=)
+              Prelude.<$> fragmentLength,
+            ("fragmentLengthControl" Data..=)
+              Prelude.<$> fragmentLengthControl,
+            ("manifestEncoding" Data..=)
+              Prelude.<$> manifestEncoding
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/MsSmoothManifestEncoding.hs b/gen/Amazonka/MediaConvert/Types/MsSmoothManifestEncoding.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MsSmoothManifestEncoding.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MsSmoothManifestEncoding
+-- 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.MsSmoothManifestEncoding
+  ( MsSmoothManifestEncoding
+      ( ..,
+        MsSmoothManifestEncoding_UTF16,
+        MsSmoothManifestEncoding_UTF8
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Manifest encoding (MsSmoothManifestEncoding) to specify the encoding
+-- format for the server and client manifest. Valid options are utf8 and
+-- utf16.
+newtype MsSmoothManifestEncoding = MsSmoothManifestEncoding'
+  { fromMsSmoothManifestEncoding ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MsSmoothManifestEncoding_UTF16 :: MsSmoothManifestEncoding
+pattern MsSmoothManifestEncoding_UTF16 = MsSmoothManifestEncoding' "UTF16"
+
+pattern MsSmoothManifestEncoding_UTF8 :: MsSmoothManifestEncoding
+pattern MsSmoothManifestEncoding_UTF8 = MsSmoothManifestEncoding' "UTF8"
+
+{-# COMPLETE
+  MsSmoothManifestEncoding_UTF16,
+  MsSmoothManifestEncoding_UTF8,
+  MsSmoothManifestEncoding'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MxfAfdSignaling.hs b/gen/Amazonka/MediaConvert/Types/MxfAfdSignaling.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MxfAfdSignaling.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MxfAfdSignaling
+-- 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.MxfAfdSignaling
+  ( MxfAfdSignaling
+      ( ..,
+        MxfAfdSignaling_COPY_FROM_VIDEO,
+        MxfAfdSignaling_NO_COPY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. When you have AFD signaling set up in your output video
+-- stream, use this setting to choose whether to also include it in the MXF
+-- wrapper. Choose Don\'t copy (NO_COPY) to exclude AFD signaling from the
+-- MXF wrapper. Choose Copy from video stream (COPY_FROM_VIDEO) to copy the
+-- AFD values from the video stream for this output to the MXF wrapper.
+-- Regardless of which option you choose, the AFD values remain in the
+-- video stream. Related settings: To set up your output to include or
+-- exclude AFD values, see AfdSignaling, under VideoDescription. On the
+-- console, find AFD signaling under the output\'s video encoding settings.
+newtype MxfAfdSignaling = MxfAfdSignaling'
+  { fromMxfAfdSignaling ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MxfAfdSignaling_COPY_FROM_VIDEO :: MxfAfdSignaling
+pattern MxfAfdSignaling_COPY_FROM_VIDEO = MxfAfdSignaling' "COPY_FROM_VIDEO"
+
+pattern MxfAfdSignaling_NO_COPY :: MxfAfdSignaling
+pattern MxfAfdSignaling_NO_COPY = MxfAfdSignaling' "NO_COPY"
+
+{-# COMPLETE
+  MxfAfdSignaling_COPY_FROM_VIDEO,
+  MxfAfdSignaling_NO_COPY,
+  MxfAfdSignaling'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MxfProfile.hs b/gen/Amazonka/MediaConvert/Types/MxfProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MxfProfile.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MxfProfile
+-- 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.MxfProfile
+  ( MxfProfile
+      ( ..,
+        MxfProfile_D_10,
+        MxfProfile_OP1A,
+        MxfProfile_XAVC,
+        MxfProfile_XDCAM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the MXF profile, also called shim, for this output. When you
+-- choose Auto, MediaConvert chooses a profile based on the video codec and
+-- resolution. For a list of codecs supported with each MXF profile, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/codecs-supported-with-each-mxf-profile.html.
+-- For more information about the automatic selection behavior, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/default-automatic-selection-of-mxf-profiles.html.
+newtype MxfProfile = MxfProfile'
+  { fromMxfProfile ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MxfProfile_D_10 :: MxfProfile
+pattern MxfProfile_D_10 = MxfProfile' "D_10"
+
+pattern MxfProfile_OP1A :: MxfProfile
+pattern MxfProfile_OP1A = MxfProfile' "OP1A"
+
+pattern MxfProfile_XAVC :: MxfProfile
+pattern MxfProfile_XAVC = MxfProfile' "XAVC"
+
+pattern MxfProfile_XDCAM :: MxfProfile
+pattern MxfProfile_XDCAM = MxfProfile' "XDCAM"
+
+{-# COMPLETE
+  MxfProfile_D_10,
+  MxfProfile_OP1A,
+  MxfProfile_XAVC,
+  MxfProfile_XDCAM,
+  MxfProfile'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MxfSettings.hs b/gen/Amazonka/MediaConvert/Types/MxfSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MxfSettings.hs
@@ -0,0 +1,152 @@
+{-# 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.MxfSettings
+-- 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.MxfSettings 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.MxfAfdSignaling
+import Amazonka.MediaConvert.Types.MxfProfile
+import Amazonka.MediaConvert.Types.MxfXavcProfileSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | These settings relate to your MXF output container.
+--
+-- /See:/ 'newMxfSettings' smart constructor.
+data MxfSettings = MxfSettings'
+  { -- | Optional. When you have AFD signaling set up in your output video
+    -- stream, use this setting to choose whether to also include it in the MXF
+    -- wrapper. Choose Don\'t copy (NO_COPY) to exclude AFD signaling from the
+    -- MXF wrapper. Choose Copy from video stream (COPY_FROM_VIDEO) to copy the
+    -- AFD values from the video stream for this output to the MXF wrapper.
+    -- Regardless of which option you choose, the AFD values remain in the
+    -- video stream. Related settings: To set up your output to include or
+    -- exclude AFD values, see AfdSignaling, under VideoDescription. On the
+    -- console, find AFD signaling under the output\'s video encoding settings.
+    afdSignaling :: Prelude.Maybe MxfAfdSignaling,
+    -- | Specify the MXF profile, also called shim, for this output. When you
+    -- choose Auto, MediaConvert chooses a profile based on the video codec and
+    -- resolution. For a list of codecs supported with each MXF profile, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/codecs-supported-with-each-mxf-profile.html.
+    -- For more information about the automatic selection behavior, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/default-automatic-selection-of-mxf-profiles.html.
+    profile :: Prelude.Maybe MxfProfile,
+    -- | Specify the XAVC profile settings for MXF outputs when you set your MXF
+    -- profile to XAVC.
+    xavcProfileSettings :: Prelude.Maybe MxfXavcProfileSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MxfSettings' 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:
+--
+-- 'afdSignaling', 'mxfSettings_afdSignaling' - Optional. When you have AFD signaling set up in your output video
+-- stream, use this setting to choose whether to also include it in the MXF
+-- wrapper. Choose Don\'t copy (NO_COPY) to exclude AFD signaling from the
+-- MXF wrapper. Choose Copy from video stream (COPY_FROM_VIDEO) to copy the
+-- AFD values from the video stream for this output to the MXF wrapper.
+-- Regardless of which option you choose, the AFD values remain in the
+-- video stream. Related settings: To set up your output to include or
+-- exclude AFD values, see AfdSignaling, under VideoDescription. On the
+-- console, find AFD signaling under the output\'s video encoding settings.
+--
+-- 'profile', 'mxfSettings_profile' - Specify the MXF profile, also called shim, for this output. When you
+-- choose Auto, MediaConvert chooses a profile based on the video codec and
+-- resolution. For a list of codecs supported with each MXF profile, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/codecs-supported-with-each-mxf-profile.html.
+-- For more information about the automatic selection behavior, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/default-automatic-selection-of-mxf-profiles.html.
+--
+-- 'xavcProfileSettings', 'mxfSettings_xavcProfileSettings' - Specify the XAVC profile settings for MXF outputs when you set your MXF
+-- profile to XAVC.
+newMxfSettings ::
+  MxfSettings
+newMxfSettings =
+  MxfSettings'
+    { afdSignaling = Prelude.Nothing,
+      profile = Prelude.Nothing,
+      xavcProfileSettings = Prelude.Nothing
+    }
+
+-- | Optional. When you have AFD signaling set up in your output video
+-- stream, use this setting to choose whether to also include it in the MXF
+-- wrapper. Choose Don\'t copy (NO_COPY) to exclude AFD signaling from the
+-- MXF wrapper. Choose Copy from video stream (COPY_FROM_VIDEO) to copy the
+-- AFD values from the video stream for this output to the MXF wrapper.
+-- Regardless of which option you choose, the AFD values remain in the
+-- video stream. Related settings: To set up your output to include or
+-- exclude AFD values, see AfdSignaling, under VideoDescription. On the
+-- console, find AFD signaling under the output\'s video encoding settings.
+mxfSettings_afdSignaling :: Lens.Lens' MxfSettings (Prelude.Maybe MxfAfdSignaling)
+mxfSettings_afdSignaling = Lens.lens (\MxfSettings' {afdSignaling} -> afdSignaling) (\s@MxfSettings' {} a -> s {afdSignaling = a} :: MxfSettings)
+
+-- | Specify the MXF profile, also called shim, for this output. When you
+-- choose Auto, MediaConvert chooses a profile based on the video codec and
+-- resolution. For a list of codecs supported with each MXF profile, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/codecs-supported-with-each-mxf-profile.html.
+-- For more information about the automatic selection behavior, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/default-automatic-selection-of-mxf-profiles.html.
+mxfSettings_profile :: Lens.Lens' MxfSettings (Prelude.Maybe MxfProfile)
+mxfSettings_profile = Lens.lens (\MxfSettings' {profile} -> profile) (\s@MxfSettings' {} a -> s {profile = a} :: MxfSettings)
+
+-- | Specify the XAVC profile settings for MXF outputs when you set your MXF
+-- profile to XAVC.
+mxfSettings_xavcProfileSettings :: Lens.Lens' MxfSettings (Prelude.Maybe MxfXavcProfileSettings)
+mxfSettings_xavcProfileSettings = Lens.lens (\MxfSettings' {xavcProfileSettings} -> xavcProfileSettings) (\s@MxfSettings' {} a -> s {xavcProfileSettings = a} :: MxfSettings)
+
+instance Data.FromJSON MxfSettings where
+  parseJSON =
+    Data.withObject
+      "MxfSettings"
+      ( \x ->
+          MxfSettings'
+            Prelude.<$> (x Data..:? "afdSignaling")
+            Prelude.<*> (x Data..:? "profile")
+            Prelude.<*> (x Data..:? "xavcProfileSettings")
+      )
+
+instance Prelude.Hashable MxfSettings where
+  hashWithSalt _salt MxfSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` afdSignaling
+      `Prelude.hashWithSalt` profile
+      `Prelude.hashWithSalt` xavcProfileSettings
+
+instance Prelude.NFData MxfSettings where
+  rnf MxfSettings' {..} =
+    Prelude.rnf afdSignaling
+      `Prelude.seq` Prelude.rnf profile
+      `Prelude.seq` Prelude.rnf xavcProfileSettings
+
+instance Data.ToJSON MxfSettings where
+  toJSON MxfSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("afdSignaling" Data..=) Prelude.<$> afdSignaling,
+            ("profile" Data..=) Prelude.<$> profile,
+            ("xavcProfileSettings" Data..=)
+              Prelude.<$> xavcProfileSettings
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/MxfXavcDurationMode.hs b/gen/Amazonka/MediaConvert/Types/MxfXavcDurationMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MxfXavcDurationMode.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.MxfXavcDurationMode
+-- 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.MxfXavcDurationMode
+  ( MxfXavcDurationMode
+      ( ..,
+        MxfXavcDurationMode_ALLOW_ANY_DURATION,
+        MxfXavcDurationMode_DROP_FRAMES_FOR_COMPLIANCE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | To create an output that complies with the XAVC file format guidelines
+-- for interoperability, keep the default value, Drop frames for compliance
+-- (DROP_FRAMES_FOR_COMPLIANCE). To include all frames from your input in
+-- this output, keep the default setting, Allow any duration
+-- (ALLOW_ANY_DURATION). The number of frames that MediaConvert excludes
+-- when you set this to Drop frames for compliance depends on the output
+-- frame rate and duration.
+newtype MxfXavcDurationMode = MxfXavcDurationMode'
+  { fromMxfXavcDurationMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MxfXavcDurationMode_ALLOW_ANY_DURATION :: MxfXavcDurationMode
+pattern MxfXavcDurationMode_ALLOW_ANY_DURATION = MxfXavcDurationMode' "ALLOW_ANY_DURATION"
+
+pattern MxfXavcDurationMode_DROP_FRAMES_FOR_COMPLIANCE :: MxfXavcDurationMode
+pattern MxfXavcDurationMode_DROP_FRAMES_FOR_COMPLIANCE = MxfXavcDurationMode' "DROP_FRAMES_FOR_COMPLIANCE"
+
+{-# COMPLETE
+  MxfXavcDurationMode_ALLOW_ANY_DURATION,
+  MxfXavcDurationMode_DROP_FRAMES_FOR_COMPLIANCE,
+  MxfXavcDurationMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/MxfXavcProfileSettings.hs b/gen/Amazonka/MediaConvert/Types/MxfXavcProfileSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/MxfXavcProfileSettings.hs
@@ -0,0 +1,136 @@
+{-# 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.MxfXavcProfileSettings
+-- 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.MxfXavcProfileSettings 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.MxfXavcDurationMode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the XAVC profile settings for MXF outputs when you set your MXF
+-- profile to XAVC.
+--
+-- /See:/ 'newMxfXavcProfileSettings' smart constructor.
+data MxfXavcProfileSettings = MxfXavcProfileSettings'
+  { -- | To create an output that complies with the XAVC file format guidelines
+    -- for interoperability, keep the default value, Drop frames for compliance
+    -- (DROP_FRAMES_FOR_COMPLIANCE). To include all frames from your input in
+    -- this output, keep the default setting, Allow any duration
+    -- (ALLOW_ANY_DURATION). The number of frames that MediaConvert excludes
+    -- when you set this to Drop frames for compliance depends on the output
+    -- frame rate and duration.
+    durationMode :: Prelude.Maybe MxfXavcDurationMode,
+    -- | Specify a value for this setting only for outputs that you set up with
+    -- one of these two XAVC profiles: XAVC HD Intra CBG (XAVC_HD_INTRA_CBG) or
+    -- XAVC 4K Intra CBG (XAVC_4K_INTRA_CBG). Specify the amount of space in
+    -- each frame that the service reserves for ancillary data, such as
+    -- teletext captions. The default value for this setting is 1492 bytes per
+    -- frame. This should be sufficient to prevent overflow unless you have
+    -- multiple pages of teletext captions data. If you have a large amount of
+    -- teletext data, specify a larger number.
+    maxAncDataSize :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MxfXavcProfileSettings' 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:
+--
+-- 'durationMode', 'mxfXavcProfileSettings_durationMode' - To create an output that complies with the XAVC file format guidelines
+-- for interoperability, keep the default value, Drop frames for compliance
+-- (DROP_FRAMES_FOR_COMPLIANCE). To include all frames from your input in
+-- this output, keep the default setting, Allow any duration
+-- (ALLOW_ANY_DURATION). The number of frames that MediaConvert excludes
+-- when you set this to Drop frames for compliance depends on the output
+-- frame rate and duration.
+--
+-- 'maxAncDataSize', 'mxfXavcProfileSettings_maxAncDataSize' - Specify a value for this setting only for outputs that you set up with
+-- one of these two XAVC profiles: XAVC HD Intra CBG (XAVC_HD_INTRA_CBG) or
+-- XAVC 4K Intra CBG (XAVC_4K_INTRA_CBG). Specify the amount of space in
+-- each frame that the service reserves for ancillary data, such as
+-- teletext captions. The default value for this setting is 1492 bytes per
+-- frame. This should be sufficient to prevent overflow unless you have
+-- multiple pages of teletext captions data. If you have a large amount of
+-- teletext data, specify a larger number.
+newMxfXavcProfileSettings ::
+  MxfXavcProfileSettings
+newMxfXavcProfileSettings =
+  MxfXavcProfileSettings'
+    { durationMode =
+        Prelude.Nothing,
+      maxAncDataSize = Prelude.Nothing
+    }
+
+-- | To create an output that complies with the XAVC file format guidelines
+-- for interoperability, keep the default value, Drop frames for compliance
+-- (DROP_FRAMES_FOR_COMPLIANCE). To include all frames from your input in
+-- this output, keep the default setting, Allow any duration
+-- (ALLOW_ANY_DURATION). The number of frames that MediaConvert excludes
+-- when you set this to Drop frames for compliance depends on the output
+-- frame rate and duration.
+mxfXavcProfileSettings_durationMode :: Lens.Lens' MxfXavcProfileSettings (Prelude.Maybe MxfXavcDurationMode)
+mxfXavcProfileSettings_durationMode = Lens.lens (\MxfXavcProfileSettings' {durationMode} -> durationMode) (\s@MxfXavcProfileSettings' {} a -> s {durationMode = a} :: MxfXavcProfileSettings)
+
+-- | Specify a value for this setting only for outputs that you set up with
+-- one of these two XAVC profiles: XAVC HD Intra CBG (XAVC_HD_INTRA_CBG) or
+-- XAVC 4K Intra CBG (XAVC_4K_INTRA_CBG). Specify the amount of space in
+-- each frame that the service reserves for ancillary data, such as
+-- teletext captions. The default value for this setting is 1492 bytes per
+-- frame. This should be sufficient to prevent overflow unless you have
+-- multiple pages of teletext captions data. If you have a large amount of
+-- teletext data, specify a larger number.
+mxfXavcProfileSettings_maxAncDataSize :: Lens.Lens' MxfXavcProfileSettings (Prelude.Maybe Prelude.Natural)
+mxfXavcProfileSettings_maxAncDataSize = Lens.lens (\MxfXavcProfileSettings' {maxAncDataSize} -> maxAncDataSize) (\s@MxfXavcProfileSettings' {} a -> s {maxAncDataSize = a} :: MxfXavcProfileSettings)
+
+instance Data.FromJSON MxfXavcProfileSettings where
+  parseJSON =
+    Data.withObject
+      "MxfXavcProfileSettings"
+      ( \x ->
+          MxfXavcProfileSettings'
+            Prelude.<$> (x Data..:? "durationMode")
+            Prelude.<*> (x Data..:? "maxAncDataSize")
+      )
+
+instance Prelude.Hashable MxfXavcProfileSettings where
+  hashWithSalt _salt MxfXavcProfileSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` durationMode
+      `Prelude.hashWithSalt` maxAncDataSize
+
+instance Prelude.NFData MxfXavcProfileSettings where
+  rnf MxfXavcProfileSettings' {..} =
+    Prelude.rnf durationMode
+      `Prelude.seq` Prelude.rnf maxAncDataSize
+
+instance Data.ToJSON MxfXavcProfileSettings where
+  toJSON MxfXavcProfileSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("durationMode" Data..=) Prelude.<$> durationMode,
+            ("maxAncDataSize" Data..=)
+              Prelude.<$> maxAncDataSize
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/NexGuardFileMarkerSettings.hs b/gen/Amazonka/MediaConvert/Types/NexGuardFileMarkerSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/NexGuardFileMarkerSettings.hs
@@ -0,0 +1,177 @@
+{-# 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.NexGuardFileMarkerSettings
+-- 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.NexGuardFileMarkerSettings 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.WatermarkingStrength
+import qualified Amazonka.Prelude as Prelude
+
+-- | For forensic video watermarking, MediaConvert supports Nagra NexGuard
+-- File Marker watermarking. MediaConvert supports both PreRelease Content
+-- (NGPR\/G2) and OTT Streaming workflows.
+--
+-- /See:/ 'newNexGuardFileMarkerSettings' smart constructor.
+data NexGuardFileMarkerSettings = NexGuardFileMarkerSettings'
+  { -- | Use the base64 license string that Nagra provides you. Enter it directly
+    -- in your JSON job specification or in the console. Required when you
+    -- include Nagra NexGuard File Marker watermarking
+    -- (NexGuardWatermarkingSettings) in your job.
+    license :: Prelude.Maybe Prelude.Text,
+    -- | Specify the payload ID that you want associated with this output. Valid
+    -- values vary depending on your Nagra NexGuard forensic watermarking
+    -- workflow. Required when you include Nagra NexGuard File Marker
+    -- watermarking (NexGuardWatermarkingSettings) in your job. For PreRelease
+    -- Content (NGPR\/G2), specify an integer from 1 through 4,194,303. You
+    -- must generate a unique ID for each asset you watermark, and keep a
+    -- record of which ID you have assigned to each asset. Neither Nagra nor
+    -- MediaConvert keep track of the relationship between output files and
+    -- your IDs. For OTT Streaming, create two adaptive bitrate (ABR) stacks
+    -- for each asset. Do this by setting up two output groups. For one output
+    -- group, set the value of Payload ID (payload) to 0 in every output. For
+    -- the other output group, set Payload ID (payload) to 1 in every output.
+    payload :: Prelude.Maybe Prelude.Natural,
+    -- | Enter one of the watermarking preset strings that Nagra provides you.
+    -- Required when you include Nagra NexGuard File Marker watermarking
+    -- (NexGuardWatermarkingSettings) in your job.
+    preset :: Prelude.Maybe Prelude.Text,
+    -- | Optional. Ignore this setting unless Nagra support directs you to
+    -- specify a value. When you don\'t specify a value here, the Nagra
+    -- NexGuard library uses its default value.
+    strength :: Prelude.Maybe WatermarkingStrength
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NexGuardFileMarkerSettings' 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:
+--
+-- 'license', 'nexGuardFileMarkerSettings_license' - Use the base64 license string that Nagra provides you. Enter it directly
+-- in your JSON job specification or in the console. Required when you
+-- include Nagra NexGuard File Marker watermarking
+-- (NexGuardWatermarkingSettings) in your job.
+--
+-- 'payload', 'nexGuardFileMarkerSettings_payload' - Specify the payload ID that you want associated with this output. Valid
+-- values vary depending on your Nagra NexGuard forensic watermarking
+-- workflow. Required when you include Nagra NexGuard File Marker
+-- watermarking (NexGuardWatermarkingSettings) in your job. For PreRelease
+-- Content (NGPR\/G2), specify an integer from 1 through 4,194,303. You
+-- must generate a unique ID for each asset you watermark, and keep a
+-- record of which ID you have assigned to each asset. Neither Nagra nor
+-- MediaConvert keep track of the relationship between output files and
+-- your IDs. For OTT Streaming, create two adaptive bitrate (ABR) stacks
+-- for each asset. Do this by setting up two output groups. For one output
+-- group, set the value of Payload ID (payload) to 0 in every output. For
+-- the other output group, set Payload ID (payload) to 1 in every output.
+--
+-- 'preset', 'nexGuardFileMarkerSettings_preset' - Enter one of the watermarking preset strings that Nagra provides you.
+-- Required when you include Nagra NexGuard File Marker watermarking
+-- (NexGuardWatermarkingSettings) in your job.
+--
+-- 'strength', 'nexGuardFileMarkerSettings_strength' - Optional. Ignore this setting unless Nagra support directs you to
+-- specify a value. When you don\'t specify a value here, the Nagra
+-- NexGuard library uses its default value.
+newNexGuardFileMarkerSettings ::
+  NexGuardFileMarkerSettings
+newNexGuardFileMarkerSettings =
+  NexGuardFileMarkerSettings'
+    { license =
+        Prelude.Nothing,
+      payload = Prelude.Nothing,
+      preset = Prelude.Nothing,
+      strength = Prelude.Nothing
+    }
+
+-- | Use the base64 license string that Nagra provides you. Enter it directly
+-- in your JSON job specification or in the console. Required when you
+-- include Nagra NexGuard File Marker watermarking
+-- (NexGuardWatermarkingSettings) in your job.
+nexGuardFileMarkerSettings_license :: Lens.Lens' NexGuardFileMarkerSettings (Prelude.Maybe Prelude.Text)
+nexGuardFileMarkerSettings_license = Lens.lens (\NexGuardFileMarkerSettings' {license} -> license) (\s@NexGuardFileMarkerSettings' {} a -> s {license = a} :: NexGuardFileMarkerSettings)
+
+-- | Specify the payload ID that you want associated with this output. Valid
+-- values vary depending on your Nagra NexGuard forensic watermarking
+-- workflow. Required when you include Nagra NexGuard File Marker
+-- watermarking (NexGuardWatermarkingSettings) in your job. For PreRelease
+-- Content (NGPR\/G2), specify an integer from 1 through 4,194,303. You
+-- must generate a unique ID for each asset you watermark, and keep a
+-- record of which ID you have assigned to each asset. Neither Nagra nor
+-- MediaConvert keep track of the relationship between output files and
+-- your IDs. For OTT Streaming, create two adaptive bitrate (ABR) stacks
+-- for each asset. Do this by setting up two output groups. For one output
+-- group, set the value of Payload ID (payload) to 0 in every output. For
+-- the other output group, set Payload ID (payload) to 1 in every output.
+nexGuardFileMarkerSettings_payload :: Lens.Lens' NexGuardFileMarkerSettings (Prelude.Maybe Prelude.Natural)
+nexGuardFileMarkerSettings_payload = Lens.lens (\NexGuardFileMarkerSettings' {payload} -> payload) (\s@NexGuardFileMarkerSettings' {} a -> s {payload = a} :: NexGuardFileMarkerSettings)
+
+-- | Enter one of the watermarking preset strings that Nagra provides you.
+-- Required when you include Nagra NexGuard File Marker watermarking
+-- (NexGuardWatermarkingSettings) in your job.
+nexGuardFileMarkerSettings_preset :: Lens.Lens' NexGuardFileMarkerSettings (Prelude.Maybe Prelude.Text)
+nexGuardFileMarkerSettings_preset = Lens.lens (\NexGuardFileMarkerSettings' {preset} -> preset) (\s@NexGuardFileMarkerSettings' {} a -> s {preset = a} :: NexGuardFileMarkerSettings)
+
+-- | Optional. Ignore this setting unless Nagra support directs you to
+-- specify a value. When you don\'t specify a value here, the Nagra
+-- NexGuard library uses its default value.
+nexGuardFileMarkerSettings_strength :: Lens.Lens' NexGuardFileMarkerSettings (Prelude.Maybe WatermarkingStrength)
+nexGuardFileMarkerSettings_strength = Lens.lens (\NexGuardFileMarkerSettings' {strength} -> strength) (\s@NexGuardFileMarkerSettings' {} a -> s {strength = a} :: NexGuardFileMarkerSettings)
+
+instance Data.FromJSON NexGuardFileMarkerSettings where
+  parseJSON =
+    Data.withObject
+      "NexGuardFileMarkerSettings"
+      ( \x ->
+          NexGuardFileMarkerSettings'
+            Prelude.<$> (x Data..:? "license")
+            Prelude.<*> (x Data..:? "payload")
+            Prelude.<*> (x Data..:? "preset")
+            Prelude.<*> (x Data..:? "strength")
+      )
+
+instance Prelude.Hashable NexGuardFileMarkerSettings where
+  hashWithSalt _salt NexGuardFileMarkerSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` license
+      `Prelude.hashWithSalt` payload
+      `Prelude.hashWithSalt` preset
+      `Prelude.hashWithSalt` strength
+
+instance Prelude.NFData NexGuardFileMarkerSettings where
+  rnf NexGuardFileMarkerSettings' {..} =
+    Prelude.rnf license
+      `Prelude.seq` Prelude.rnf payload
+      `Prelude.seq` Prelude.rnf preset
+      `Prelude.seq` Prelude.rnf strength
+
+instance Data.ToJSON NexGuardFileMarkerSettings where
+  toJSON NexGuardFileMarkerSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("license" Data..=) Prelude.<$> license,
+            ("payload" Data..=) Prelude.<$> payload,
+            ("preset" Data..=) Prelude.<$> preset,
+            ("strength" Data..=) Prelude.<$> strength
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/NielsenActiveWatermarkProcessType.hs b/gen/Amazonka/MediaConvert/Types/NielsenActiveWatermarkProcessType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/NielsenActiveWatermarkProcessType.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.NielsenActiveWatermarkProcessType
+-- 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.NielsenActiveWatermarkProcessType
+  ( NielsenActiveWatermarkProcessType
+      ( ..,
+        NielsenActiveWatermarkProcessType_CBET,
+        NielsenActiveWatermarkProcessType_NAES2_AND_NW,
+        NielsenActiveWatermarkProcessType_NAES2_AND_NW_AND_CBET
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the type of Nielsen watermarks that you want in your outputs.
+-- When you choose NAES 2 and NW (NAES2_AND_NW), you must provide a value
+-- for the setting SID (sourceId). When you choose CBET (CBET), you must
+-- provide a value for the setting CSID (cbetSourceId). When you choose
+-- NAES 2, NW, and CBET (NAES2_AND_NW_AND_CBET), you must provide values
+-- for both of these settings.
+newtype NielsenActiveWatermarkProcessType = NielsenActiveWatermarkProcessType'
+  { fromNielsenActiveWatermarkProcessType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NielsenActiveWatermarkProcessType_CBET :: NielsenActiveWatermarkProcessType
+pattern NielsenActiveWatermarkProcessType_CBET = NielsenActiveWatermarkProcessType' "CBET"
+
+pattern NielsenActiveWatermarkProcessType_NAES2_AND_NW :: NielsenActiveWatermarkProcessType
+pattern NielsenActiveWatermarkProcessType_NAES2_AND_NW = NielsenActiveWatermarkProcessType' "NAES2_AND_NW"
+
+pattern NielsenActiveWatermarkProcessType_NAES2_AND_NW_AND_CBET :: NielsenActiveWatermarkProcessType
+pattern NielsenActiveWatermarkProcessType_NAES2_AND_NW_AND_CBET = NielsenActiveWatermarkProcessType' "NAES2_AND_NW_AND_CBET"
+
+{-# COMPLETE
+  NielsenActiveWatermarkProcessType_CBET,
+  NielsenActiveWatermarkProcessType_NAES2_AND_NW,
+  NielsenActiveWatermarkProcessType_NAES2_AND_NW_AND_CBET,
+  NielsenActiveWatermarkProcessType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/NielsenConfiguration.hs b/gen/Amazonka/MediaConvert/Types/NielsenConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/NielsenConfiguration.hs
@@ -0,0 +1,107 @@
+{-# 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.NielsenConfiguration
+-- 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.NielsenConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for your Nielsen configuration. If you don\'t do Nielsen
+-- measurement and analytics, ignore these settings. When you enable
+-- Nielsen configuration (nielsenConfiguration), MediaConvert enables PCM
+-- to ID3 tagging for all outputs in the job. To enable Nielsen
+-- configuration programmatically, include an instance of
+-- nielsenConfiguration in your JSON job specification. Even if you don\'t
+-- include any children of nielsenConfiguration, you still enable the
+-- setting.
+--
+-- /See:/ 'newNielsenConfiguration' smart constructor.
+data NielsenConfiguration = NielsenConfiguration'
+  { -- | Nielsen has discontinued the use of breakout code functionality. If you
+    -- must include this property, set the value to zero.
+    breakoutCode :: Prelude.Maybe Prelude.Natural,
+    -- | Use Distributor ID (DistributorID) to specify the distributor ID that is
+    -- assigned to your organization by Neilsen.
+    distributorId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NielsenConfiguration' 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:
+--
+-- 'breakoutCode', 'nielsenConfiguration_breakoutCode' - Nielsen has discontinued the use of breakout code functionality. If you
+-- must include this property, set the value to zero.
+--
+-- 'distributorId', 'nielsenConfiguration_distributorId' - Use Distributor ID (DistributorID) to specify the distributor ID that is
+-- assigned to your organization by Neilsen.
+newNielsenConfiguration ::
+  NielsenConfiguration
+newNielsenConfiguration =
+  NielsenConfiguration'
+    { breakoutCode =
+        Prelude.Nothing,
+      distributorId = Prelude.Nothing
+    }
+
+-- | Nielsen has discontinued the use of breakout code functionality. If you
+-- must include this property, set the value to zero.
+nielsenConfiguration_breakoutCode :: Lens.Lens' NielsenConfiguration (Prelude.Maybe Prelude.Natural)
+nielsenConfiguration_breakoutCode = Lens.lens (\NielsenConfiguration' {breakoutCode} -> breakoutCode) (\s@NielsenConfiguration' {} a -> s {breakoutCode = a} :: NielsenConfiguration)
+
+-- | Use Distributor ID (DistributorID) to specify the distributor ID that is
+-- assigned to your organization by Neilsen.
+nielsenConfiguration_distributorId :: Lens.Lens' NielsenConfiguration (Prelude.Maybe Prelude.Text)
+nielsenConfiguration_distributorId = Lens.lens (\NielsenConfiguration' {distributorId} -> distributorId) (\s@NielsenConfiguration' {} a -> s {distributorId = a} :: NielsenConfiguration)
+
+instance Data.FromJSON NielsenConfiguration where
+  parseJSON =
+    Data.withObject
+      "NielsenConfiguration"
+      ( \x ->
+          NielsenConfiguration'
+            Prelude.<$> (x Data..:? "breakoutCode")
+            Prelude.<*> (x Data..:? "distributorId")
+      )
+
+instance Prelude.Hashable NielsenConfiguration where
+  hashWithSalt _salt NielsenConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` breakoutCode
+      `Prelude.hashWithSalt` distributorId
+
+instance Prelude.NFData NielsenConfiguration where
+  rnf NielsenConfiguration' {..} =
+    Prelude.rnf breakoutCode
+      `Prelude.seq` Prelude.rnf distributorId
+
+instance Data.ToJSON NielsenConfiguration where
+  toJSON NielsenConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("breakoutCode" Data..=) Prelude.<$> breakoutCode,
+            ("distributorId" Data..=) Prelude.<$> distributorId
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/NielsenNonLinearWatermarkSettings.hs b/gen/Amazonka/MediaConvert/Types/NielsenNonLinearWatermarkSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/NielsenNonLinearWatermarkSettings.hs
@@ -0,0 +1,359 @@
+{-# 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.NielsenNonLinearWatermarkSettings
+-- 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.NielsenNonLinearWatermarkSettings 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.NielsenActiveWatermarkProcessType
+import Amazonka.MediaConvert.Types.NielsenSourceWatermarkStatusType
+import Amazonka.MediaConvert.Types.NielsenUniqueTicPerAudioTrackType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore these settings unless you are using Nielsen non-linear
+-- watermarking. Specify the values that MediaConvert uses to generate and
+-- place Nielsen watermarks in your output audio. In addition to specifying
+-- these values, you also need to set up your cloud TIC server. These
+-- settings apply to every output in your job. The MediaConvert
+-- implementation is currently with the following Nielsen versions: Nielsen
+-- Watermark SDK Version 5.2.1 Nielsen NLM Watermark Engine Version 1.2.7
+-- Nielsen Watermark Authenticator [SID_TIC] Version [5.0.0]
+--
+-- /See:/ 'newNielsenNonLinearWatermarkSettings' smart constructor.
+data NielsenNonLinearWatermarkSettings = NielsenNonLinearWatermarkSettings'
+  { -- | Choose the type of Nielsen watermarks that you want in your outputs.
+    -- When you choose NAES 2 and NW (NAES2_AND_NW), you must provide a value
+    -- for the setting SID (sourceId). When you choose CBET (CBET), you must
+    -- provide a value for the setting CSID (cbetSourceId). When you choose
+    -- NAES 2, NW, and CBET (NAES2_AND_NW_AND_CBET), you must provide values
+    -- for both of these settings.
+    activeWatermarkProcess :: Prelude.Maybe NielsenActiveWatermarkProcessType,
+    -- | Optional. Use this setting when you want the service to include an ADI
+    -- file in the Nielsen metadata .zip file. To provide an ADI file, store it
+    -- in Amazon S3 and provide a URL to it here. The URL should be in the
+    -- following format: S3:\/\/bucket\/path\/ADI-file. For more information
+    -- about the metadata .zip file, see the setting Metadata destination
+    -- (metadataDestination).
+    adiFilename :: Prelude.Maybe Prelude.Text,
+    -- | Use the asset ID that you provide to Nielsen to uniquely identify this
+    -- asset. Required for all Nielsen non-linear watermarking.
+    assetId :: Prelude.Maybe Prelude.Text,
+    -- | Use the asset name that you provide to Nielsen for this asset. Required
+    -- for all Nielsen non-linear watermarking.
+    assetName :: Prelude.Maybe Prelude.Text,
+    -- | Use the CSID that Nielsen provides to you. This CBET source ID should be
+    -- unique to your Nielsen account but common to all of your output assets
+    -- that have CBET watermarking. Required when you choose a value for the
+    -- setting Watermark types (ActiveWatermarkProcess) that includes CBET.
+    cbetSourceId :: Prelude.Maybe Prelude.Text,
+    -- | Optional. If this asset uses an episode ID with Nielsen, provide it
+    -- here.
+    episodeId :: Prelude.Maybe Prelude.Text,
+    -- | Specify the Amazon S3 location where you want MediaConvert to save your
+    -- Nielsen non-linear metadata .zip file. This Amazon S3 bucket must be in
+    -- the same Region as the one where you do your MediaConvert transcoding.
+    -- If you want to include an ADI file in this .zip file, use the setting
+    -- ADI file (adiFilename) to specify it. MediaConvert delivers the Nielsen
+    -- metadata .zip files only to your metadata destination Amazon S3 bucket.
+    -- It doesn\'t deliver the .zip files to Nielsen. You are responsible for
+    -- delivering the metadata .zip files to Nielsen.
+    metadataDestination :: Prelude.Maybe Prelude.Text,
+    -- | Use the SID that Nielsen provides to you. This source ID should be
+    -- unique to your Nielsen account but common to all of your output assets.
+    -- Required for all Nielsen non-linear watermarking. This ID should be
+    -- unique to your Nielsen account but common to all of your output assets.
+    -- Required for all Nielsen non-linear watermarking.
+    sourceId :: Prelude.Maybe Prelude.Natural,
+    -- | Required. Specify whether your source content already contains Nielsen
+    -- non-linear watermarks. When you set this value to Watermarked
+    -- (WATERMARKED), the service fails the job. Nielsen requires that you add
+    -- non-linear watermarking to only clean content that doesn\'t already have
+    -- non-linear Nielsen watermarks.
+    sourceWatermarkStatus :: Prelude.Maybe NielsenSourceWatermarkStatusType,
+    -- | Specify the endpoint for the TIC server that you have deployed and
+    -- configured in the AWS Cloud. Required for all Nielsen non-linear
+    -- watermarking. MediaConvert can\'t connect directly to a TIC server.
+    -- Instead, you must use API Gateway to provide a RESTful interface between
+    -- MediaConvert and a TIC server that you deploy in your AWS account. For
+    -- more information on deploying a TIC server in your AWS account and the
+    -- required API Gateway, contact Nielsen support.
+    ticServerUrl :: Prelude.Maybe Prelude.Text,
+    -- | To create assets that have the same TIC values in each audio track, keep
+    -- the default value Share TICs (SAME_TICS_PER_TRACK). To create assets
+    -- that have unique TIC values for each audio track, choose Use unique TICs
+    -- (RESERVE_UNIQUE_TICS_PER_TRACK).
+    uniqueTicPerAudioTrack :: Prelude.Maybe NielsenUniqueTicPerAudioTrackType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NielsenNonLinearWatermarkSettings' 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:
+--
+-- 'activeWatermarkProcess', 'nielsenNonLinearWatermarkSettings_activeWatermarkProcess' - Choose the type of Nielsen watermarks that you want in your outputs.
+-- When you choose NAES 2 and NW (NAES2_AND_NW), you must provide a value
+-- for the setting SID (sourceId). When you choose CBET (CBET), you must
+-- provide a value for the setting CSID (cbetSourceId). When you choose
+-- NAES 2, NW, and CBET (NAES2_AND_NW_AND_CBET), you must provide values
+-- for both of these settings.
+--
+-- 'adiFilename', 'nielsenNonLinearWatermarkSettings_adiFilename' - Optional. Use this setting when you want the service to include an ADI
+-- file in the Nielsen metadata .zip file. To provide an ADI file, store it
+-- in Amazon S3 and provide a URL to it here. The URL should be in the
+-- following format: S3:\/\/bucket\/path\/ADI-file. For more information
+-- about the metadata .zip file, see the setting Metadata destination
+-- (metadataDestination).
+--
+-- 'assetId', 'nielsenNonLinearWatermarkSettings_assetId' - Use the asset ID that you provide to Nielsen to uniquely identify this
+-- asset. Required for all Nielsen non-linear watermarking.
+--
+-- 'assetName', 'nielsenNonLinearWatermarkSettings_assetName' - Use the asset name that you provide to Nielsen for this asset. Required
+-- for all Nielsen non-linear watermarking.
+--
+-- 'cbetSourceId', 'nielsenNonLinearWatermarkSettings_cbetSourceId' - Use the CSID that Nielsen provides to you. This CBET source ID should be
+-- unique to your Nielsen account but common to all of your output assets
+-- that have CBET watermarking. Required when you choose a value for the
+-- setting Watermark types (ActiveWatermarkProcess) that includes CBET.
+--
+-- 'episodeId', 'nielsenNonLinearWatermarkSettings_episodeId' - Optional. If this asset uses an episode ID with Nielsen, provide it
+-- here.
+--
+-- 'metadataDestination', 'nielsenNonLinearWatermarkSettings_metadataDestination' - Specify the Amazon S3 location where you want MediaConvert to save your
+-- Nielsen non-linear metadata .zip file. This Amazon S3 bucket must be in
+-- the same Region as the one where you do your MediaConvert transcoding.
+-- If you want to include an ADI file in this .zip file, use the setting
+-- ADI file (adiFilename) to specify it. MediaConvert delivers the Nielsen
+-- metadata .zip files only to your metadata destination Amazon S3 bucket.
+-- It doesn\'t deliver the .zip files to Nielsen. You are responsible for
+-- delivering the metadata .zip files to Nielsen.
+--
+-- 'sourceId', 'nielsenNonLinearWatermarkSettings_sourceId' - Use the SID that Nielsen provides to you. This source ID should be
+-- unique to your Nielsen account but common to all of your output assets.
+-- Required for all Nielsen non-linear watermarking. This ID should be
+-- unique to your Nielsen account but common to all of your output assets.
+-- Required for all Nielsen non-linear watermarking.
+--
+-- 'sourceWatermarkStatus', 'nielsenNonLinearWatermarkSettings_sourceWatermarkStatus' - Required. Specify whether your source content already contains Nielsen
+-- non-linear watermarks. When you set this value to Watermarked
+-- (WATERMARKED), the service fails the job. Nielsen requires that you add
+-- non-linear watermarking to only clean content that doesn\'t already have
+-- non-linear Nielsen watermarks.
+--
+-- 'ticServerUrl', 'nielsenNonLinearWatermarkSettings_ticServerUrl' - Specify the endpoint for the TIC server that you have deployed and
+-- configured in the AWS Cloud. Required for all Nielsen non-linear
+-- watermarking. MediaConvert can\'t connect directly to a TIC server.
+-- Instead, you must use API Gateway to provide a RESTful interface between
+-- MediaConvert and a TIC server that you deploy in your AWS account. For
+-- more information on deploying a TIC server in your AWS account and the
+-- required API Gateway, contact Nielsen support.
+--
+-- 'uniqueTicPerAudioTrack', 'nielsenNonLinearWatermarkSettings_uniqueTicPerAudioTrack' - To create assets that have the same TIC values in each audio track, keep
+-- the default value Share TICs (SAME_TICS_PER_TRACK). To create assets
+-- that have unique TIC values for each audio track, choose Use unique TICs
+-- (RESERVE_UNIQUE_TICS_PER_TRACK).
+newNielsenNonLinearWatermarkSettings ::
+  NielsenNonLinearWatermarkSettings
+newNielsenNonLinearWatermarkSettings =
+  NielsenNonLinearWatermarkSettings'
+    { activeWatermarkProcess =
+        Prelude.Nothing,
+      adiFilename = Prelude.Nothing,
+      assetId = Prelude.Nothing,
+      assetName = Prelude.Nothing,
+      cbetSourceId = Prelude.Nothing,
+      episodeId = Prelude.Nothing,
+      metadataDestination = Prelude.Nothing,
+      sourceId = Prelude.Nothing,
+      sourceWatermarkStatus = Prelude.Nothing,
+      ticServerUrl = Prelude.Nothing,
+      uniqueTicPerAudioTrack = Prelude.Nothing
+    }
+
+-- | Choose the type of Nielsen watermarks that you want in your outputs.
+-- When you choose NAES 2 and NW (NAES2_AND_NW), you must provide a value
+-- for the setting SID (sourceId). When you choose CBET (CBET), you must
+-- provide a value for the setting CSID (cbetSourceId). When you choose
+-- NAES 2, NW, and CBET (NAES2_AND_NW_AND_CBET), you must provide values
+-- for both of these settings.
+nielsenNonLinearWatermarkSettings_activeWatermarkProcess :: Lens.Lens' NielsenNonLinearWatermarkSettings (Prelude.Maybe NielsenActiveWatermarkProcessType)
+nielsenNonLinearWatermarkSettings_activeWatermarkProcess = Lens.lens (\NielsenNonLinearWatermarkSettings' {activeWatermarkProcess} -> activeWatermarkProcess) (\s@NielsenNonLinearWatermarkSettings' {} a -> s {activeWatermarkProcess = a} :: NielsenNonLinearWatermarkSettings)
+
+-- | Optional. Use this setting when you want the service to include an ADI
+-- file in the Nielsen metadata .zip file. To provide an ADI file, store it
+-- in Amazon S3 and provide a URL to it here. The URL should be in the
+-- following format: S3:\/\/bucket\/path\/ADI-file. For more information
+-- about the metadata .zip file, see the setting Metadata destination
+-- (metadataDestination).
+nielsenNonLinearWatermarkSettings_adiFilename :: Lens.Lens' NielsenNonLinearWatermarkSettings (Prelude.Maybe Prelude.Text)
+nielsenNonLinearWatermarkSettings_adiFilename = Lens.lens (\NielsenNonLinearWatermarkSettings' {adiFilename} -> adiFilename) (\s@NielsenNonLinearWatermarkSettings' {} a -> s {adiFilename = a} :: NielsenNonLinearWatermarkSettings)
+
+-- | Use the asset ID that you provide to Nielsen to uniquely identify this
+-- asset. Required for all Nielsen non-linear watermarking.
+nielsenNonLinearWatermarkSettings_assetId :: Lens.Lens' NielsenNonLinearWatermarkSettings (Prelude.Maybe Prelude.Text)
+nielsenNonLinearWatermarkSettings_assetId = Lens.lens (\NielsenNonLinearWatermarkSettings' {assetId} -> assetId) (\s@NielsenNonLinearWatermarkSettings' {} a -> s {assetId = a} :: NielsenNonLinearWatermarkSettings)
+
+-- | Use the asset name that you provide to Nielsen for this asset. Required
+-- for all Nielsen non-linear watermarking.
+nielsenNonLinearWatermarkSettings_assetName :: Lens.Lens' NielsenNonLinearWatermarkSettings (Prelude.Maybe Prelude.Text)
+nielsenNonLinearWatermarkSettings_assetName = Lens.lens (\NielsenNonLinearWatermarkSettings' {assetName} -> assetName) (\s@NielsenNonLinearWatermarkSettings' {} a -> s {assetName = a} :: NielsenNonLinearWatermarkSettings)
+
+-- | Use the CSID that Nielsen provides to you. This CBET source ID should be
+-- unique to your Nielsen account but common to all of your output assets
+-- that have CBET watermarking. Required when you choose a value for the
+-- setting Watermark types (ActiveWatermarkProcess) that includes CBET.
+nielsenNonLinearWatermarkSettings_cbetSourceId :: Lens.Lens' NielsenNonLinearWatermarkSettings (Prelude.Maybe Prelude.Text)
+nielsenNonLinearWatermarkSettings_cbetSourceId = Lens.lens (\NielsenNonLinearWatermarkSettings' {cbetSourceId} -> cbetSourceId) (\s@NielsenNonLinearWatermarkSettings' {} a -> s {cbetSourceId = a} :: NielsenNonLinearWatermarkSettings)
+
+-- | Optional. If this asset uses an episode ID with Nielsen, provide it
+-- here.
+nielsenNonLinearWatermarkSettings_episodeId :: Lens.Lens' NielsenNonLinearWatermarkSettings (Prelude.Maybe Prelude.Text)
+nielsenNonLinearWatermarkSettings_episodeId = Lens.lens (\NielsenNonLinearWatermarkSettings' {episodeId} -> episodeId) (\s@NielsenNonLinearWatermarkSettings' {} a -> s {episodeId = a} :: NielsenNonLinearWatermarkSettings)
+
+-- | Specify the Amazon S3 location where you want MediaConvert to save your
+-- Nielsen non-linear metadata .zip file. This Amazon S3 bucket must be in
+-- the same Region as the one where you do your MediaConvert transcoding.
+-- If you want to include an ADI file in this .zip file, use the setting
+-- ADI file (adiFilename) to specify it. MediaConvert delivers the Nielsen
+-- metadata .zip files only to your metadata destination Amazon S3 bucket.
+-- It doesn\'t deliver the .zip files to Nielsen. You are responsible for
+-- delivering the metadata .zip files to Nielsen.
+nielsenNonLinearWatermarkSettings_metadataDestination :: Lens.Lens' NielsenNonLinearWatermarkSettings (Prelude.Maybe Prelude.Text)
+nielsenNonLinearWatermarkSettings_metadataDestination = Lens.lens (\NielsenNonLinearWatermarkSettings' {metadataDestination} -> metadataDestination) (\s@NielsenNonLinearWatermarkSettings' {} a -> s {metadataDestination = a} :: NielsenNonLinearWatermarkSettings)
+
+-- | Use the SID that Nielsen provides to you. This source ID should be
+-- unique to your Nielsen account but common to all of your output assets.
+-- Required for all Nielsen non-linear watermarking. This ID should be
+-- unique to your Nielsen account but common to all of your output assets.
+-- Required for all Nielsen non-linear watermarking.
+nielsenNonLinearWatermarkSettings_sourceId :: Lens.Lens' NielsenNonLinearWatermarkSettings (Prelude.Maybe Prelude.Natural)
+nielsenNonLinearWatermarkSettings_sourceId = Lens.lens (\NielsenNonLinearWatermarkSettings' {sourceId} -> sourceId) (\s@NielsenNonLinearWatermarkSettings' {} a -> s {sourceId = a} :: NielsenNonLinearWatermarkSettings)
+
+-- | Required. Specify whether your source content already contains Nielsen
+-- non-linear watermarks. When you set this value to Watermarked
+-- (WATERMARKED), the service fails the job. Nielsen requires that you add
+-- non-linear watermarking to only clean content that doesn\'t already have
+-- non-linear Nielsen watermarks.
+nielsenNonLinearWatermarkSettings_sourceWatermarkStatus :: Lens.Lens' NielsenNonLinearWatermarkSettings (Prelude.Maybe NielsenSourceWatermarkStatusType)
+nielsenNonLinearWatermarkSettings_sourceWatermarkStatus = Lens.lens (\NielsenNonLinearWatermarkSettings' {sourceWatermarkStatus} -> sourceWatermarkStatus) (\s@NielsenNonLinearWatermarkSettings' {} a -> s {sourceWatermarkStatus = a} :: NielsenNonLinearWatermarkSettings)
+
+-- | Specify the endpoint for the TIC server that you have deployed and
+-- configured in the AWS Cloud. Required for all Nielsen non-linear
+-- watermarking. MediaConvert can\'t connect directly to a TIC server.
+-- Instead, you must use API Gateway to provide a RESTful interface between
+-- MediaConvert and a TIC server that you deploy in your AWS account. For
+-- more information on deploying a TIC server in your AWS account and the
+-- required API Gateway, contact Nielsen support.
+nielsenNonLinearWatermarkSettings_ticServerUrl :: Lens.Lens' NielsenNonLinearWatermarkSettings (Prelude.Maybe Prelude.Text)
+nielsenNonLinearWatermarkSettings_ticServerUrl = Lens.lens (\NielsenNonLinearWatermarkSettings' {ticServerUrl} -> ticServerUrl) (\s@NielsenNonLinearWatermarkSettings' {} a -> s {ticServerUrl = a} :: NielsenNonLinearWatermarkSettings)
+
+-- | To create assets that have the same TIC values in each audio track, keep
+-- the default value Share TICs (SAME_TICS_PER_TRACK). To create assets
+-- that have unique TIC values for each audio track, choose Use unique TICs
+-- (RESERVE_UNIQUE_TICS_PER_TRACK).
+nielsenNonLinearWatermarkSettings_uniqueTicPerAudioTrack :: Lens.Lens' NielsenNonLinearWatermarkSettings (Prelude.Maybe NielsenUniqueTicPerAudioTrackType)
+nielsenNonLinearWatermarkSettings_uniqueTicPerAudioTrack = Lens.lens (\NielsenNonLinearWatermarkSettings' {uniqueTicPerAudioTrack} -> uniqueTicPerAudioTrack) (\s@NielsenNonLinearWatermarkSettings' {} a -> s {uniqueTicPerAudioTrack = a} :: NielsenNonLinearWatermarkSettings)
+
+instance
+  Data.FromJSON
+    NielsenNonLinearWatermarkSettings
+  where
+  parseJSON =
+    Data.withObject
+      "NielsenNonLinearWatermarkSettings"
+      ( \x ->
+          NielsenNonLinearWatermarkSettings'
+            Prelude.<$> (x Data..:? "activeWatermarkProcess")
+            Prelude.<*> (x Data..:? "adiFilename")
+            Prelude.<*> (x Data..:? "assetId")
+            Prelude.<*> (x Data..:? "assetName")
+            Prelude.<*> (x Data..:? "cbetSourceId")
+            Prelude.<*> (x Data..:? "episodeId")
+            Prelude.<*> (x Data..:? "metadataDestination")
+            Prelude.<*> (x Data..:? "sourceId")
+            Prelude.<*> (x Data..:? "sourceWatermarkStatus")
+            Prelude.<*> (x Data..:? "ticServerUrl")
+            Prelude.<*> (x Data..:? "uniqueTicPerAudioTrack")
+      )
+
+instance
+  Prelude.Hashable
+    NielsenNonLinearWatermarkSettings
+  where
+  hashWithSalt
+    _salt
+    NielsenNonLinearWatermarkSettings' {..} =
+      _salt
+        `Prelude.hashWithSalt` activeWatermarkProcess
+        `Prelude.hashWithSalt` adiFilename
+        `Prelude.hashWithSalt` assetId
+        `Prelude.hashWithSalt` assetName
+        `Prelude.hashWithSalt` cbetSourceId
+        `Prelude.hashWithSalt` episodeId
+        `Prelude.hashWithSalt` metadataDestination
+        `Prelude.hashWithSalt` sourceId
+        `Prelude.hashWithSalt` sourceWatermarkStatus
+        `Prelude.hashWithSalt` ticServerUrl
+        `Prelude.hashWithSalt` uniqueTicPerAudioTrack
+
+instance
+  Prelude.NFData
+    NielsenNonLinearWatermarkSettings
+  where
+  rnf NielsenNonLinearWatermarkSettings' {..} =
+    Prelude.rnf activeWatermarkProcess
+      `Prelude.seq` Prelude.rnf adiFilename
+      `Prelude.seq` Prelude.rnf assetId
+      `Prelude.seq` Prelude.rnf assetName
+      `Prelude.seq` Prelude.rnf cbetSourceId
+      `Prelude.seq` Prelude.rnf episodeId
+      `Prelude.seq` Prelude.rnf metadataDestination
+      `Prelude.seq` Prelude.rnf sourceId
+      `Prelude.seq` Prelude.rnf sourceWatermarkStatus
+      `Prelude.seq` Prelude.rnf ticServerUrl
+      `Prelude.seq` Prelude.rnf uniqueTicPerAudioTrack
+
+instance
+  Data.ToJSON
+    NielsenNonLinearWatermarkSettings
+  where
+  toJSON NielsenNonLinearWatermarkSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("activeWatermarkProcess" Data..=)
+              Prelude.<$> activeWatermarkProcess,
+            ("adiFilename" Data..=) Prelude.<$> adiFilename,
+            ("assetId" Data..=) Prelude.<$> assetId,
+            ("assetName" Data..=) Prelude.<$> assetName,
+            ("cbetSourceId" Data..=) Prelude.<$> cbetSourceId,
+            ("episodeId" Data..=) Prelude.<$> episodeId,
+            ("metadataDestination" Data..=)
+              Prelude.<$> metadataDestination,
+            ("sourceId" Data..=) Prelude.<$> sourceId,
+            ("sourceWatermarkStatus" Data..=)
+              Prelude.<$> sourceWatermarkStatus,
+            ("ticServerUrl" Data..=) Prelude.<$> ticServerUrl,
+            ("uniqueTicPerAudioTrack" Data..=)
+              Prelude.<$> uniqueTicPerAudioTrack
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/NielsenSourceWatermarkStatusType.hs b/gen/Amazonka/MediaConvert/Types/NielsenSourceWatermarkStatusType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/NielsenSourceWatermarkStatusType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.NielsenSourceWatermarkStatusType
+-- 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.NielsenSourceWatermarkStatusType
+  ( NielsenSourceWatermarkStatusType
+      ( ..,
+        NielsenSourceWatermarkStatusType_CLEAN,
+        NielsenSourceWatermarkStatusType_WATERMARKED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required. Specify whether your source content already contains Nielsen
+-- non-linear watermarks. When you set this value to Watermarked
+-- (WATERMARKED), the service fails the job. Nielsen requires that you add
+-- non-linear watermarking to only clean content that doesn\'t already have
+-- non-linear Nielsen watermarks.
+newtype NielsenSourceWatermarkStatusType = NielsenSourceWatermarkStatusType'
+  { fromNielsenSourceWatermarkStatusType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NielsenSourceWatermarkStatusType_CLEAN :: NielsenSourceWatermarkStatusType
+pattern NielsenSourceWatermarkStatusType_CLEAN = NielsenSourceWatermarkStatusType' "CLEAN"
+
+pattern NielsenSourceWatermarkStatusType_WATERMARKED :: NielsenSourceWatermarkStatusType
+pattern NielsenSourceWatermarkStatusType_WATERMARKED = NielsenSourceWatermarkStatusType' "WATERMARKED"
+
+{-# COMPLETE
+  NielsenSourceWatermarkStatusType_CLEAN,
+  NielsenSourceWatermarkStatusType_WATERMARKED,
+  NielsenSourceWatermarkStatusType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/NielsenUniqueTicPerAudioTrackType.hs b/gen/Amazonka/MediaConvert/Types/NielsenUniqueTicPerAudioTrackType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/NielsenUniqueTicPerAudioTrackType.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.NielsenUniqueTicPerAudioTrackType
+-- 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.NielsenUniqueTicPerAudioTrackType
+  ( NielsenUniqueTicPerAudioTrackType
+      ( ..,
+        NielsenUniqueTicPerAudioTrackType_RESERVE_UNIQUE_TICS_PER_TRACK,
+        NielsenUniqueTicPerAudioTrackType_SAME_TICS_PER_TRACK
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | To create assets that have the same TIC values in each audio track, keep
+-- the default value Share TICs (SAME_TICS_PER_TRACK). To create assets
+-- that have unique TIC values for each audio track, choose Use unique TICs
+-- (RESERVE_UNIQUE_TICS_PER_TRACK).
+newtype NielsenUniqueTicPerAudioTrackType = NielsenUniqueTicPerAudioTrackType'
+  { fromNielsenUniqueTicPerAudioTrackType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NielsenUniqueTicPerAudioTrackType_RESERVE_UNIQUE_TICS_PER_TRACK :: NielsenUniqueTicPerAudioTrackType
+pattern NielsenUniqueTicPerAudioTrackType_RESERVE_UNIQUE_TICS_PER_TRACK = NielsenUniqueTicPerAudioTrackType' "RESERVE_UNIQUE_TICS_PER_TRACK"
+
+pattern NielsenUniqueTicPerAudioTrackType_SAME_TICS_PER_TRACK :: NielsenUniqueTicPerAudioTrackType
+pattern NielsenUniqueTicPerAudioTrackType_SAME_TICS_PER_TRACK = NielsenUniqueTicPerAudioTrackType' "SAME_TICS_PER_TRACK"
+
+{-# COMPLETE
+  NielsenUniqueTicPerAudioTrackType_RESERVE_UNIQUE_TICS_PER_TRACK,
+  NielsenUniqueTicPerAudioTrackType_SAME_TICS_PER_TRACK,
+  NielsenUniqueTicPerAudioTrackType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/NoiseFilterPostTemporalSharpening.hs b/gen/Amazonka/MediaConvert/Types/NoiseFilterPostTemporalSharpening.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/NoiseFilterPostTemporalSharpening.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.NoiseFilterPostTemporalSharpening
+-- 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.NoiseFilterPostTemporalSharpening
+  ( NoiseFilterPostTemporalSharpening
+      ( ..,
+        NoiseFilterPostTemporalSharpening_AUTO,
+        NoiseFilterPostTemporalSharpening_DISABLED,
+        NoiseFilterPostTemporalSharpening_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you set Noise reducer (noiseReducer) to Temporal (TEMPORAL), the
+-- bandwidth and sharpness of your output is reduced. You can optionally
+-- use Post temporal sharpening (postTemporalSharpening) to apply
+-- sharpening to the edges of your output. Note that Post temporal
+-- sharpening will also make the bandwidth reduction from the Noise reducer
+-- smaller. The default behavior, Auto (AUTO), allows the transcoder to
+-- determine whether to apply sharpening, depending on your input type and
+-- quality. When you set Post temporal sharpening to Enabled (ENABLED),
+-- specify how much sharpening is applied using Post temporal sharpening
+-- strength (postTemporalSharpeningStrength). Set Post temporal sharpening
+-- to Disabled (DISABLED) to not apply sharpening.
+newtype NoiseFilterPostTemporalSharpening = NoiseFilterPostTemporalSharpening'
+  { fromNoiseFilterPostTemporalSharpening ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NoiseFilterPostTemporalSharpening_AUTO :: NoiseFilterPostTemporalSharpening
+pattern NoiseFilterPostTemporalSharpening_AUTO = NoiseFilterPostTemporalSharpening' "AUTO"
+
+pattern NoiseFilterPostTemporalSharpening_DISABLED :: NoiseFilterPostTemporalSharpening
+pattern NoiseFilterPostTemporalSharpening_DISABLED = NoiseFilterPostTemporalSharpening' "DISABLED"
+
+pattern NoiseFilterPostTemporalSharpening_ENABLED :: NoiseFilterPostTemporalSharpening
+pattern NoiseFilterPostTemporalSharpening_ENABLED = NoiseFilterPostTemporalSharpening' "ENABLED"
+
+{-# COMPLETE
+  NoiseFilterPostTemporalSharpening_AUTO,
+  NoiseFilterPostTemporalSharpening_DISABLED,
+  NoiseFilterPostTemporalSharpening_ENABLED,
+  NoiseFilterPostTemporalSharpening'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/NoiseFilterPostTemporalSharpeningStrength.hs b/gen/Amazonka/MediaConvert/Types/NoiseFilterPostTemporalSharpeningStrength.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/NoiseFilterPostTemporalSharpeningStrength.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.NoiseFilterPostTemporalSharpeningStrength
+-- 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.NoiseFilterPostTemporalSharpeningStrength
+  ( NoiseFilterPostTemporalSharpeningStrength
+      ( ..,
+        NoiseFilterPostTemporalSharpeningStrength_HIGH,
+        NoiseFilterPostTemporalSharpeningStrength_LOW,
+        NoiseFilterPostTemporalSharpeningStrength_MEDIUM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Post temporal sharpening strength (postTemporalSharpeningStrength)
+-- to define the amount of sharpening the transcoder applies to your
+-- output. Set Post temporal sharpening strength to Low (LOW), Medium
+-- (MEDIUM), or High (HIGH) to indicate the amount of sharpening.
+newtype NoiseFilterPostTemporalSharpeningStrength = NoiseFilterPostTemporalSharpeningStrength'
+  { fromNoiseFilterPostTemporalSharpeningStrength ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NoiseFilterPostTemporalSharpeningStrength_HIGH :: NoiseFilterPostTemporalSharpeningStrength
+pattern NoiseFilterPostTemporalSharpeningStrength_HIGH = NoiseFilterPostTemporalSharpeningStrength' "HIGH"
+
+pattern NoiseFilterPostTemporalSharpeningStrength_LOW :: NoiseFilterPostTemporalSharpeningStrength
+pattern NoiseFilterPostTemporalSharpeningStrength_LOW = NoiseFilterPostTemporalSharpeningStrength' "LOW"
+
+pattern NoiseFilterPostTemporalSharpeningStrength_MEDIUM :: NoiseFilterPostTemporalSharpeningStrength
+pattern NoiseFilterPostTemporalSharpeningStrength_MEDIUM = NoiseFilterPostTemporalSharpeningStrength' "MEDIUM"
+
+{-# COMPLETE
+  NoiseFilterPostTemporalSharpeningStrength_HIGH,
+  NoiseFilterPostTemporalSharpeningStrength_LOW,
+  NoiseFilterPostTemporalSharpeningStrength_MEDIUM,
+  NoiseFilterPostTemporalSharpeningStrength'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/NoiseReducer.hs b/gen/Amazonka/MediaConvert/Types/NoiseReducer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/NoiseReducer.hs
@@ -0,0 +1,148 @@
+{-# 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.NoiseReducer
+-- 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.NoiseReducer 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.NoiseReducerFilter
+import Amazonka.MediaConvert.Types.NoiseReducerFilterSettings
+import Amazonka.MediaConvert.Types.NoiseReducerSpatialFilterSettings
+import Amazonka.MediaConvert.Types.NoiseReducerTemporalFilterSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enable the Noise reducer (NoiseReducer) feature to remove noise from
+-- your video output if necessary. Enable or disable this feature for each
+-- output individually. This setting is disabled by default. When you
+-- enable Noise reducer (NoiseReducer), you must also select a value for
+-- Noise reducer filter (NoiseReducerFilter).
+--
+-- /See:/ 'newNoiseReducer' smart constructor.
+data NoiseReducer = NoiseReducer'
+  { -- | Use Noise reducer filter (NoiseReducerFilter) to select one of the
+    -- following spatial image filtering functions. To use this setting, you
+    -- must also enable Noise reducer (NoiseReducer). * Bilateral preserves
+    -- edges while reducing noise. * Mean (softest), Gaussian, Lanczos, and
+    -- Sharpen (sharpest) do convolution filtering. * Conserve does min\/max
+    -- noise reduction. * Spatial does frequency-domain filtering based on JND
+    -- principles. * Temporal optimizes video quality for complex motion.
+    filter' :: Prelude.Maybe NoiseReducerFilter,
+    -- | Settings for a noise reducer filter
+    filterSettings :: Prelude.Maybe NoiseReducerFilterSettings,
+    -- | Noise reducer filter settings for spatial filter.
+    spatialFilterSettings :: Prelude.Maybe NoiseReducerSpatialFilterSettings,
+    -- | Noise reducer filter settings for temporal filter.
+    temporalFilterSettings :: Prelude.Maybe NoiseReducerTemporalFilterSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NoiseReducer' 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:
+--
+-- 'filter'', 'noiseReducer_filter' - Use Noise reducer filter (NoiseReducerFilter) to select one of the
+-- following spatial image filtering functions. To use this setting, you
+-- must also enable Noise reducer (NoiseReducer). * Bilateral preserves
+-- edges while reducing noise. * Mean (softest), Gaussian, Lanczos, and
+-- Sharpen (sharpest) do convolution filtering. * Conserve does min\/max
+-- noise reduction. * Spatial does frequency-domain filtering based on JND
+-- principles. * Temporal optimizes video quality for complex motion.
+--
+-- 'filterSettings', 'noiseReducer_filterSettings' - Settings for a noise reducer filter
+--
+-- 'spatialFilterSettings', 'noiseReducer_spatialFilterSettings' - Noise reducer filter settings for spatial filter.
+--
+-- 'temporalFilterSettings', 'noiseReducer_temporalFilterSettings' - Noise reducer filter settings for temporal filter.
+newNoiseReducer ::
+  NoiseReducer
+newNoiseReducer =
+  NoiseReducer'
+    { filter' = Prelude.Nothing,
+      filterSettings = Prelude.Nothing,
+      spatialFilterSettings = Prelude.Nothing,
+      temporalFilterSettings = Prelude.Nothing
+    }
+
+-- | Use Noise reducer filter (NoiseReducerFilter) to select one of the
+-- following spatial image filtering functions. To use this setting, you
+-- must also enable Noise reducer (NoiseReducer). * Bilateral preserves
+-- edges while reducing noise. * Mean (softest), Gaussian, Lanczos, and
+-- Sharpen (sharpest) do convolution filtering. * Conserve does min\/max
+-- noise reduction. * Spatial does frequency-domain filtering based on JND
+-- principles. * Temporal optimizes video quality for complex motion.
+noiseReducer_filter :: Lens.Lens' NoiseReducer (Prelude.Maybe NoiseReducerFilter)
+noiseReducer_filter = Lens.lens (\NoiseReducer' {filter'} -> filter') (\s@NoiseReducer' {} a -> s {filter' = a} :: NoiseReducer)
+
+-- | Settings for a noise reducer filter
+noiseReducer_filterSettings :: Lens.Lens' NoiseReducer (Prelude.Maybe NoiseReducerFilterSettings)
+noiseReducer_filterSettings = Lens.lens (\NoiseReducer' {filterSettings} -> filterSettings) (\s@NoiseReducer' {} a -> s {filterSettings = a} :: NoiseReducer)
+
+-- | Noise reducer filter settings for spatial filter.
+noiseReducer_spatialFilterSettings :: Lens.Lens' NoiseReducer (Prelude.Maybe NoiseReducerSpatialFilterSettings)
+noiseReducer_spatialFilterSettings = Lens.lens (\NoiseReducer' {spatialFilterSettings} -> spatialFilterSettings) (\s@NoiseReducer' {} a -> s {spatialFilterSettings = a} :: NoiseReducer)
+
+-- | Noise reducer filter settings for temporal filter.
+noiseReducer_temporalFilterSettings :: Lens.Lens' NoiseReducer (Prelude.Maybe NoiseReducerTemporalFilterSettings)
+noiseReducer_temporalFilterSettings = Lens.lens (\NoiseReducer' {temporalFilterSettings} -> temporalFilterSettings) (\s@NoiseReducer' {} a -> s {temporalFilterSettings = a} :: NoiseReducer)
+
+instance Data.FromJSON NoiseReducer where
+  parseJSON =
+    Data.withObject
+      "NoiseReducer"
+      ( \x ->
+          NoiseReducer'
+            Prelude.<$> (x Data..:? "filter")
+            Prelude.<*> (x Data..:? "filterSettings")
+            Prelude.<*> (x Data..:? "spatialFilterSettings")
+            Prelude.<*> (x Data..:? "temporalFilterSettings")
+      )
+
+instance Prelude.Hashable NoiseReducer where
+  hashWithSalt _salt NoiseReducer' {..} =
+    _salt
+      `Prelude.hashWithSalt` filter'
+      `Prelude.hashWithSalt` filterSettings
+      `Prelude.hashWithSalt` spatialFilterSettings
+      `Prelude.hashWithSalt` temporalFilterSettings
+
+instance Prelude.NFData NoiseReducer where
+  rnf NoiseReducer' {..} =
+    Prelude.rnf filter'
+      `Prelude.seq` Prelude.rnf filterSettings
+      `Prelude.seq` Prelude.rnf spatialFilterSettings
+      `Prelude.seq` Prelude.rnf temporalFilterSettings
+
+instance Data.ToJSON NoiseReducer where
+  toJSON NoiseReducer' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("filter" Data..=) Prelude.<$> filter',
+            ("filterSettings" Data..=)
+              Prelude.<$> filterSettings,
+            ("spatialFilterSettings" Data..=)
+              Prelude.<$> spatialFilterSettings,
+            ("temporalFilterSettings" Data..=)
+              Prelude.<$> temporalFilterSettings
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/NoiseReducerFilter.hs b/gen/Amazonka/MediaConvert/Types/NoiseReducerFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/NoiseReducerFilter.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.NoiseReducerFilter
+-- 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.NoiseReducerFilter
+  ( NoiseReducerFilter
+      ( ..,
+        NoiseReducerFilter_BILATERAL,
+        NoiseReducerFilter_CONSERVE,
+        NoiseReducerFilter_GAUSSIAN,
+        NoiseReducerFilter_LANCZOS,
+        NoiseReducerFilter_MEAN,
+        NoiseReducerFilter_SHARPEN,
+        NoiseReducerFilter_SPATIAL,
+        NoiseReducerFilter_TEMPORAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Noise reducer filter (NoiseReducerFilter) to select one of the
+-- following spatial image filtering functions. To use this setting, you
+-- must also enable Noise reducer (NoiseReducer). * Bilateral preserves
+-- edges while reducing noise. * Mean (softest), Gaussian, Lanczos, and
+-- Sharpen (sharpest) do convolution filtering. * Conserve does min\/max
+-- noise reduction. * Spatial does frequency-domain filtering based on JND
+-- principles. * Temporal optimizes video quality for complex motion.
+newtype NoiseReducerFilter = NoiseReducerFilter'
+  { fromNoiseReducerFilter ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NoiseReducerFilter_BILATERAL :: NoiseReducerFilter
+pattern NoiseReducerFilter_BILATERAL = NoiseReducerFilter' "BILATERAL"
+
+pattern NoiseReducerFilter_CONSERVE :: NoiseReducerFilter
+pattern NoiseReducerFilter_CONSERVE = NoiseReducerFilter' "CONSERVE"
+
+pattern NoiseReducerFilter_GAUSSIAN :: NoiseReducerFilter
+pattern NoiseReducerFilter_GAUSSIAN = NoiseReducerFilter' "GAUSSIAN"
+
+pattern NoiseReducerFilter_LANCZOS :: NoiseReducerFilter
+pattern NoiseReducerFilter_LANCZOS = NoiseReducerFilter' "LANCZOS"
+
+pattern NoiseReducerFilter_MEAN :: NoiseReducerFilter
+pattern NoiseReducerFilter_MEAN = NoiseReducerFilter' "MEAN"
+
+pattern NoiseReducerFilter_SHARPEN :: NoiseReducerFilter
+pattern NoiseReducerFilter_SHARPEN = NoiseReducerFilter' "SHARPEN"
+
+pattern NoiseReducerFilter_SPATIAL :: NoiseReducerFilter
+pattern NoiseReducerFilter_SPATIAL = NoiseReducerFilter' "SPATIAL"
+
+pattern NoiseReducerFilter_TEMPORAL :: NoiseReducerFilter
+pattern NoiseReducerFilter_TEMPORAL = NoiseReducerFilter' "TEMPORAL"
+
+{-# COMPLETE
+  NoiseReducerFilter_BILATERAL,
+  NoiseReducerFilter_CONSERVE,
+  NoiseReducerFilter_GAUSSIAN,
+  NoiseReducerFilter_LANCZOS,
+  NoiseReducerFilter_MEAN,
+  NoiseReducerFilter_SHARPEN,
+  NoiseReducerFilter_SPATIAL,
+  NoiseReducerFilter_TEMPORAL,
+  NoiseReducerFilter'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/NoiseReducerFilterSettings.hs b/gen/Amazonka/MediaConvert/Types/NoiseReducerFilterSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/NoiseReducerFilterSettings.hs
@@ -0,0 +1,82 @@
+{-# 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.NoiseReducerFilterSettings
+-- 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.NoiseReducerFilterSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for a noise reducer filter
+--
+-- /See:/ 'newNoiseReducerFilterSettings' smart constructor.
+data NoiseReducerFilterSettings = NoiseReducerFilterSettings'
+  { -- | Relative strength of noise reducing filter. Higher values produce
+    -- stronger filtering.
+    strength :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NoiseReducerFilterSettings' 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:
+--
+-- 'strength', 'noiseReducerFilterSettings_strength' - Relative strength of noise reducing filter. Higher values produce
+-- stronger filtering.
+newNoiseReducerFilterSettings ::
+  NoiseReducerFilterSettings
+newNoiseReducerFilterSettings =
+  NoiseReducerFilterSettings'
+    { strength =
+        Prelude.Nothing
+    }
+
+-- | Relative strength of noise reducing filter. Higher values produce
+-- stronger filtering.
+noiseReducerFilterSettings_strength :: Lens.Lens' NoiseReducerFilterSettings (Prelude.Maybe Prelude.Natural)
+noiseReducerFilterSettings_strength = Lens.lens (\NoiseReducerFilterSettings' {strength} -> strength) (\s@NoiseReducerFilterSettings' {} a -> s {strength = a} :: NoiseReducerFilterSettings)
+
+instance Data.FromJSON NoiseReducerFilterSettings where
+  parseJSON =
+    Data.withObject
+      "NoiseReducerFilterSettings"
+      ( \x ->
+          NoiseReducerFilterSettings'
+            Prelude.<$> (x Data..:? "strength")
+      )
+
+instance Prelude.Hashable NoiseReducerFilterSettings where
+  hashWithSalt _salt NoiseReducerFilterSettings' {..} =
+    _salt `Prelude.hashWithSalt` strength
+
+instance Prelude.NFData NoiseReducerFilterSettings where
+  rnf NoiseReducerFilterSettings' {..} =
+    Prelude.rnf strength
+
+instance Data.ToJSON NoiseReducerFilterSettings where
+  toJSON NoiseReducerFilterSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("strength" Data..=) Prelude.<$> strength]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/NoiseReducerSpatialFilterSettings.hs b/gen/Amazonka/MediaConvert/Types/NoiseReducerSpatialFilterSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/NoiseReducerSpatialFilterSettings.hs
@@ -0,0 +1,131 @@
+{-# 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.NoiseReducerSpatialFilterSettings
+-- 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.NoiseReducerSpatialFilterSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Noise reducer filter settings for spatial filter.
+--
+-- /See:/ 'newNoiseReducerSpatialFilterSettings' smart constructor.
+data NoiseReducerSpatialFilterSettings = NoiseReducerSpatialFilterSettings'
+  { -- | Specify strength of post noise reduction sharpening filter, with 0
+    -- disabling the filter and 3 enabling it at maximum strength.
+    postFilterSharpenStrength :: Prelude.Maybe Prelude.Natural,
+    -- | The speed of the filter, from -2 (lower speed) to 3 (higher speed), with
+    -- 0 being the nominal value.
+    speed :: Prelude.Maybe Prelude.Int,
+    -- | Relative strength of noise reducing filter. Higher values produce
+    -- stronger filtering.
+    strength :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NoiseReducerSpatialFilterSettings' 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:
+--
+-- 'postFilterSharpenStrength', 'noiseReducerSpatialFilterSettings_postFilterSharpenStrength' - Specify strength of post noise reduction sharpening filter, with 0
+-- disabling the filter and 3 enabling it at maximum strength.
+--
+-- 'speed', 'noiseReducerSpatialFilterSettings_speed' - The speed of the filter, from -2 (lower speed) to 3 (higher speed), with
+-- 0 being the nominal value.
+--
+-- 'strength', 'noiseReducerSpatialFilterSettings_strength' - Relative strength of noise reducing filter. Higher values produce
+-- stronger filtering.
+newNoiseReducerSpatialFilterSettings ::
+  NoiseReducerSpatialFilterSettings
+newNoiseReducerSpatialFilterSettings =
+  NoiseReducerSpatialFilterSettings'
+    { postFilterSharpenStrength =
+        Prelude.Nothing,
+      speed = Prelude.Nothing,
+      strength = Prelude.Nothing
+    }
+
+-- | Specify strength of post noise reduction sharpening filter, with 0
+-- disabling the filter and 3 enabling it at maximum strength.
+noiseReducerSpatialFilterSettings_postFilterSharpenStrength :: Lens.Lens' NoiseReducerSpatialFilterSettings (Prelude.Maybe Prelude.Natural)
+noiseReducerSpatialFilterSettings_postFilterSharpenStrength = Lens.lens (\NoiseReducerSpatialFilterSettings' {postFilterSharpenStrength} -> postFilterSharpenStrength) (\s@NoiseReducerSpatialFilterSettings' {} a -> s {postFilterSharpenStrength = a} :: NoiseReducerSpatialFilterSettings)
+
+-- | The speed of the filter, from -2 (lower speed) to 3 (higher speed), with
+-- 0 being the nominal value.
+noiseReducerSpatialFilterSettings_speed :: Lens.Lens' NoiseReducerSpatialFilterSettings (Prelude.Maybe Prelude.Int)
+noiseReducerSpatialFilterSettings_speed = Lens.lens (\NoiseReducerSpatialFilterSettings' {speed} -> speed) (\s@NoiseReducerSpatialFilterSettings' {} a -> s {speed = a} :: NoiseReducerSpatialFilterSettings)
+
+-- | Relative strength of noise reducing filter. Higher values produce
+-- stronger filtering.
+noiseReducerSpatialFilterSettings_strength :: Lens.Lens' NoiseReducerSpatialFilterSettings (Prelude.Maybe Prelude.Natural)
+noiseReducerSpatialFilterSettings_strength = Lens.lens (\NoiseReducerSpatialFilterSettings' {strength} -> strength) (\s@NoiseReducerSpatialFilterSettings' {} a -> s {strength = a} :: NoiseReducerSpatialFilterSettings)
+
+instance
+  Data.FromJSON
+    NoiseReducerSpatialFilterSettings
+  where
+  parseJSON =
+    Data.withObject
+      "NoiseReducerSpatialFilterSettings"
+      ( \x ->
+          NoiseReducerSpatialFilterSettings'
+            Prelude.<$> (x Data..:? "postFilterSharpenStrength")
+            Prelude.<*> (x Data..:? "speed")
+            Prelude.<*> (x Data..:? "strength")
+      )
+
+instance
+  Prelude.Hashable
+    NoiseReducerSpatialFilterSettings
+  where
+  hashWithSalt
+    _salt
+    NoiseReducerSpatialFilterSettings' {..} =
+      _salt
+        `Prelude.hashWithSalt` postFilterSharpenStrength
+        `Prelude.hashWithSalt` speed
+        `Prelude.hashWithSalt` strength
+
+instance
+  Prelude.NFData
+    NoiseReducerSpatialFilterSettings
+  where
+  rnf NoiseReducerSpatialFilterSettings' {..} =
+    Prelude.rnf postFilterSharpenStrength
+      `Prelude.seq` Prelude.rnf speed
+      `Prelude.seq` Prelude.rnf strength
+
+instance
+  Data.ToJSON
+    NoiseReducerSpatialFilterSettings
+  where
+  toJSON NoiseReducerSpatialFilterSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("postFilterSharpenStrength" Data..=)
+              Prelude.<$> postFilterSharpenStrength,
+            ("speed" Data..=) Prelude.<$> speed,
+            ("strength" Data..=) Prelude.<$> strength
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/NoiseReducerTemporalFilterSettings.hs b/gen/Amazonka/MediaConvert/Types/NoiseReducerTemporalFilterSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/NoiseReducerTemporalFilterSettings.hs
@@ -0,0 +1,217 @@
+{-# 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.NoiseReducerTemporalFilterSettings
+-- 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.NoiseReducerTemporalFilterSettings 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.NoiseFilterPostTemporalSharpening
+import Amazonka.MediaConvert.Types.NoiseFilterPostTemporalSharpeningStrength
+import qualified Amazonka.Prelude as Prelude
+
+-- | Noise reducer filter settings for temporal filter.
+--
+-- /See:/ 'newNoiseReducerTemporalFilterSettings' smart constructor.
+data NoiseReducerTemporalFilterSettings = NoiseReducerTemporalFilterSettings'
+  { -- | Use Aggressive mode for content that has complex motion. Higher values
+    -- produce stronger temporal filtering. This filters highly complex scenes
+    -- more aggressively and creates better VQ for low bitrate outputs.
+    aggressiveMode :: Prelude.Maybe Prelude.Natural,
+    -- | When you set Noise reducer (noiseReducer) to Temporal (TEMPORAL), the
+    -- bandwidth and sharpness of your output is reduced. You can optionally
+    -- use Post temporal sharpening (postTemporalSharpening) to apply
+    -- sharpening to the edges of your output. Note that Post temporal
+    -- sharpening will also make the bandwidth reduction from the Noise reducer
+    -- smaller. The default behavior, Auto (AUTO), allows the transcoder to
+    -- determine whether to apply sharpening, depending on your input type and
+    -- quality. When you set Post temporal sharpening to Enabled (ENABLED),
+    -- specify how much sharpening is applied using Post temporal sharpening
+    -- strength (postTemporalSharpeningStrength). Set Post temporal sharpening
+    -- to Disabled (DISABLED) to not apply sharpening.
+    postTemporalSharpening :: Prelude.Maybe NoiseFilterPostTemporalSharpening,
+    -- | Use Post temporal sharpening strength (postTemporalSharpeningStrength)
+    -- to define the amount of sharpening the transcoder applies to your
+    -- output. Set Post temporal sharpening strength to Low (LOW), Medium
+    -- (MEDIUM), or High (HIGH) to indicate the amount of sharpening.
+    postTemporalSharpeningStrength :: Prelude.Maybe NoiseFilterPostTemporalSharpeningStrength,
+    -- | The speed of the filter (higher number is faster). Low setting reduces
+    -- bit rate at the cost of transcode time, high setting improves transcode
+    -- time at the cost of bit rate.
+    speed :: Prelude.Maybe Prelude.Int,
+    -- | Specify the strength of the noise reducing filter on this output. Higher
+    -- values produce stronger filtering. We recommend the following value
+    -- ranges, depending on the result that you want: * 0-2 for complexity
+    -- reduction with minimal sharpness loss * 2-8 for complexity reduction
+    -- with image preservation * 8-16 for a high level of complexity reduction
+    strength :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NoiseReducerTemporalFilterSettings' 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:
+--
+-- 'aggressiveMode', 'noiseReducerTemporalFilterSettings_aggressiveMode' - Use Aggressive mode for content that has complex motion. Higher values
+-- produce stronger temporal filtering. This filters highly complex scenes
+-- more aggressively and creates better VQ for low bitrate outputs.
+--
+-- 'postTemporalSharpening', 'noiseReducerTemporalFilterSettings_postTemporalSharpening' - When you set Noise reducer (noiseReducer) to Temporal (TEMPORAL), the
+-- bandwidth and sharpness of your output is reduced. You can optionally
+-- use Post temporal sharpening (postTemporalSharpening) to apply
+-- sharpening to the edges of your output. Note that Post temporal
+-- sharpening will also make the bandwidth reduction from the Noise reducer
+-- smaller. The default behavior, Auto (AUTO), allows the transcoder to
+-- determine whether to apply sharpening, depending on your input type and
+-- quality. When you set Post temporal sharpening to Enabled (ENABLED),
+-- specify how much sharpening is applied using Post temporal sharpening
+-- strength (postTemporalSharpeningStrength). Set Post temporal sharpening
+-- to Disabled (DISABLED) to not apply sharpening.
+--
+-- 'postTemporalSharpeningStrength', 'noiseReducerTemporalFilterSettings_postTemporalSharpeningStrength' - Use Post temporal sharpening strength (postTemporalSharpeningStrength)
+-- to define the amount of sharpening the transcoder applies to your
+-- output. Set Post temporal sharpening strength to Low (LOW), Medium
+-- (MEDIUM), or High (HIGH) to indicate the amount of sharpening.
+--
+-- 'speed', 'noiseReducerTemporalFilterSettings_speed' - The speed of the filter (higher number is faster). Low setting reduces
+-- bit rate at the cost of transcode time, high setting improves transcode
+-- time at the cost of bit rate.
+--
+-- 'strength', 'noiseReducerTemporalFilterSettings_strength' - Specify the strength of the noise reducing filter on this output. Higher
+-- values produce stronger filtering. We recommend the following value
+-- ranges, depending on the result that you want: * 0-2 for complexity
+-- reduction with minimal sharpness loss * 2-8 for complexity reduction
+-- with image preservation * 8-16 for a high level of complexity reduction
+newNoiseReducerTemporalFilterSettings ::
+  NoiseReducerTemporalFilterSettings
+newNoiseReducerTemporalFilterSettings =
+  NoiseReducerTemporalFilterSettings'
+    { aggressiveMode =
+        Prelude.Nothing,
+      postTemporalSharpening =
+        Prelude.Nothing,
+      postTemporalSharpeningStrength =
+        Prelude.Nothing,
+      speed = Prelude.Nothing,
+      strength = Prelude.Nothing
+    }
+
+-- | Use Aggressive mode for content that has complex motion. Higher values
+-- produce stronger temporal filtering. This filters highly complex scenes
+-- more aggressively and creates better VQ for low bitrate outputs.
+noiseReducerTemporalFilterSettings_aggressiveMode :: Lens.Lens' NoiseReducerTemporalFilterSettings (Prelude.Maybe Prelude.Natural)
+noiseReducerTemporalFilterSettings_aggressiveMode = Lens.lens (\NoiseReducerTemporalFilterSettings' {aggressiveMode} -> aggressiveMode) (\s@NoiseReducerTemporalFilterSettings' {} a -> s {aggressiveMode = a} :: NoiseReducerTemporalFilterSettings)
+
+-- | When you set Noise reducer (noiseReducer) to Temporal (TEMPORAL), the
+-- bandwidth and sharpness of your output is reduced. You can optionally
+-- use Post temporal sharpening (postTemporalSharpening) to apply
+-- sharpening to the edges of your output. Note that Post temporal
+-- sharpening will also make the bandwidth reduction from the Noise reducer
+-- smaller. The default behavior, Auto (AUTO), allows the transcoder to
+-- determine whether to apply sharpening, depending on your input type and
+-- quality. When you set Post temporal sharpening to Enabled (ENABLED),
+-- specify how much sharpening is applied using Post temporal sharpening
+-- strength (postTemporalSharpeningStrength). Set Post temporal sharpening
+-- to Disabled (DISABLED) to not apply sharpening.
+noiseReducerTemporalFilterSettings_postTemporalSharpening :: Lens.Lens' NoiseReducerTemporalFilterSettings (Prelude.Maybe NoiseFilterPostTemporalSharpening)
+noiseReducerTemporalFilterSettings_postTemporalSharpening = Lens.lens (\NoiseReducerTemporalFilterSettings' {postTemporalSharpening} -> postTemporalSharpening) (\s@NoiseReducerTemporalFilterSettings' {} a -> s {postTemporalSharpening = a} :: NoiseReducerTemporalFilterSettings)
+
+-- | Use Post temporal sharpening strength (postTemporalSharpeningStrength)
+-- to define the amount of sharpening the transcoder applies to your
+-- output. Set Post temporal sharpening strength to Low (LOW), Medium
+-- (MEDIUM), or High (HIGH) to indicate the amount of sharpening.
+noiseReducerTemporalFilterSettings_postTemporalSharpeningStrength :: Lens.Lens' NoiseReducerTemporalFilterSettings (Prelude.Maybe NoiseFilterPostTemporalSharpeningStrength)
+noiseReducerTemporalFilterSettings_postTemporalSharpeningStrength = Lens.lens (\NoiseReducerTemporalFilterSettings' {postTemporalSharpeningStrength} -> postTemporalSharpeningStrength) (\s@NoiseReducerTemporalFilterSettings' {} a -> s {postTemporalSharpeningStrength = a} :: NoiseReducerTemporalFilterSettings)
+
+-- | The speed of the filter (higher number is faster). Low setting reduces
+-- bit rate at the cost of transcode time, high setting improves transcode
+-- time at the cost of bit rate.
+noiseReducerTemporalFilterSettings_speed :: Lens.Lens' NoiseReducerTemporalFilterSettings (Prelude.Maybe Prelude.Int)
+noiseReducerTemporalFilterSettings_speed = Lens.lens (\NoiseReducerTemporalFilterSettings' {speed} -> speed) (\s@NoiseReducerTemporalFilterSettings' {} a -> s {speed = a} :: NoiseReducerTemporalFilterSettings)
+
+-- | Specify the strength of the noise reducing filter on this output. Higher
+-- values produce stronger filtering. We recommend the following value
+-- ranges, depending on the result that you want: * 0-2 for complexity
+-- reduction with minimal sharpness loss * 2-8 for complexity reduction
+-- with image preservation * 8-16 for a high level of complexity reduction
+noiseReducerTemporalFilterSettings_strength :: Lens.Lens' NoiseReducerTemporalFilterSettings (Prelude.Maybe Prelude.Natural)
+noiseReducerTemporalFilterSettings_strength = Lens.lens (\NoiseReducerTemporalFilterSettings' {strength} -> strength) (\s@NoiseReducerTemporalFilterSettings' {} a -> s {strength = a} :: NoiseReducerTemporalFilterSettings)
+
+instance
+  Data.FromJSON
+    NoiseReducerTemporalFilterSettings
+  where
+  parseJSON =
+    Data.withObject
+      "NoiseReducerTemporalFilterSettings"
+      ( \x ->
+          NoiseReducerTemporalFilterSettings'
+            Prelude.<$> (x Data..:? "aggressiveMode")
+            Prelude.<*> (x Data..:? "postTemporalSharpening")
+            Prelude.<*> (x Data..:? "postTemporalSharpeningStrength")
+            Prelude.<*> (x Data..:? "speed")
+            Prelude.<*> (x Data..:? "strength")
+      )
+
+instance
+  Prelude.Hashable
+    NoiseReducerTemporalFilterSettings
+  where
+  hashWithSalt
+    _salt
+    NoiseReducerTemporalFilterSettings' {..} =
+      _salt
+        `Prelude.hashWithSalt` aggressiveMode
+        `Prelude.hashWithSalt` postTemporalSharpening
+        `Prelude.hashWithSalt` postTemporalSharpeningStrength
+        `Prelude.hashWithSalt` speed
+        `Prelude.hashWithSalt` strength
+
+instance
+  Prelude.NFData
+    NoiseReducerTemporalFilterSettings
+  where
+  rnf NoiseReducerTemporalFilterSettings' {..} =
+    Prelude.rnf aggressiveMode
+      `Prelude.seq` Prelude.rnf postTemporalSharpening
+      `Prelude.seq` Prelude.rnf postTemporalSharpeningStrength
+      `Prelude.seq` Prelude.rnf speed
+      `Prelude.seq` Prelude.rnf strength
+
+instance
+  Data.ToJSON
+    NoiseReducerTemporalFilterSettings
+  where
+  toJSON NoiseReducerTemporalFilterSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("aggressiveMode" Data..=)
+              Prelude.<$> aggressiveMode,
+            ("postTemporalSharpening" Data..=)
+              Prelude.<$> postTemporalSharpening,
+            ("postTemporalSharpeningStrength" Data..=)
+              Prelude.<$> postTemporalSharpeningStrength,
+            ("speed" Data..=) Prelude.<$> speed,
+            ("strength" Data..=) Prelude.<$> strength
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/OpusSettings.hs b/gen/Amazonka/MediaConvert/Types/OpusSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/OpusSettings.hs
@@ -0,0 +1,122 @@
+{-# 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.OpusSettings
+-- 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.OpusSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set Codec, under AudioDescriptions>CodecSettings, to
+-- the value OPUS.
+--
+-- /See:/ 'newOpusSettings' smart constructor.
+data OpusSettings = OpusSettings'
+  { -- | Optional. Specify the average bitrate in bits per second. Valid values
+    -- are multiples of 8000, from 32000 through 192000. The default value is
+    -- 96000, which we recommend for quality and bandwidth.
+    bitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the number of channels in this output audio track. Choosing Mono
+    -- on the console gives you 1 output channel; choosing Stereo gives you 2.
+    -- In the API, valid values are 1 and 2.
+    channels :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Sample rate in hz. Valid values are 16000, 24000, and 48000.
+    -- The default value is 48000.
+    sampleRate :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OpusSettings' 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:
+--
+-- 'bitrate', 'opusSettings_bitrate' - Optional. Specify the average bitrate in bits per second. Valid values
+-- are multiples of 8000, from 32000 through 192000. The default value is
+-- 96000, which we recommend for quality and bandwidth.
+--
+-- 'channels', 'opusSettings_channels' - Specify the number of channels in this output audio track. Choosing Mono
+-- on the console gives you 1 output channel; choosing Stereo gives you 2.
+-- In the API, valid values are 1 and 2.
+--
+-- 'sampleRate', 'opusSettings_sampleRate' - Optional. Sample rate in hz. Valid values are 16000, 24000, and 48000.
+-- The default value is 48000.
+newOpusSettings ::
+  OpusSettings
+newOpusSettings =
+  OpusSettings'
+    { bitrate = Prelude.Nothing,
+      channels = Prelude.Nothing,
+      sampleRate = Prelude.Nothing
+    }
+
+-- | Optional. Specify the average bitrate in bits per second. Valid values
+-- are multiples of 8000, from 32000 through 192000. The default value is
+-- 96000, which we recommend for quality and bandwidth.
+opusSettings_bitrate :: Lens.Lens' OpusSettings (Prelude.Maybe Prelude.Natural)
+opusSettings_bitrate = Lens.lens (\OpusSettings' {bitrate} -> bitrate) (\s@OpusSettings' {} a -> s {bitrate = a} :: OpusSettings)
+
+-- | Specify the number of channels in this output audio track. Choosing Mono
+-- on the console gives you 1 output channel; choosing Stereo gives you 2.
+-- In the API, valid values are 1 and 2.
+opusSettings_channels :: Lens.Lens' OpusSettings (Prelude.Maybe Prelude.Natural)
+opusSettings_channels = Lens.lens (\OpusSettings' {channels} -> channels) (\s@OpusSettings' {} a -> s {channels = a} :: OpusSettings)
+
+-- | Optional. Sample rate in hz. Valid values are 16000, 24000, and 48000.
+-- The default value is 48000.
+opusSettings_sampleRate :: Lens.Lens' OpusSettings (Prelude.Maybe Prelude.Natural)
+opusSettings_sampleRate = Lens.lens (\OpusSettings' {sampleRate} -> sampleRate) (\s@OpusSettings' {} a -> s {sampleRate = a} :: OpusSettings)
+
+instance Data.FromJSON OpusSettings where
+  parseJSON =
+    Data.withObject
+      "OpusSettings"
+      ( \x ->
+          OpusSettings'
+            Prelude.<$> (x Data..:? "bitrate")
+            Prelude.<*> (x Data..:? "channels")
+            Prelude.<*> (x Data..:? "sampleRate")
+      )
+
+instance Prelude.Hashable OpusSettings where
+  hashWithSalt _salt OpusSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` bitrate
+      `Prelude.hashWithSalt` channels
+      `Prelude.hashWithSalt` sampleRate
+
+instance Prelude.NFData OpusSettings where
+  rnf OpusSettings' {..} =
+    Prelude.rnf bitrate
+      `Prelude.seq` Prelude.rnf channels
+      `Prelude.seq` Prelude.rnf sampleRate
+
+instance Data.ToJSON OpusSettings where
+  toJSON OpusSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bitrate" Data..=) Prelude.<$> bitrate,
+            ("channels" Data..=) Prelude.<$> channels,
+            ("sampleRate" Data..=) Prelude.<$> sampleRate
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Order.hs b/gen/Amazonka/MediaConvert/Types/Order.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Order.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Order
+-- 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.Order
+  ( Order
+      ( ..,
+        Order_ASCENDING,
+        Order_DESCENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. When you request lists of resources, you can specify whether
+-- they are sorted in ASCENDING or DESCENDING order. Default varies by
+-- resource.
+newtype Order = Order' {fromOrder :: Data.Text}
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Order_ASCENDING :: Order
+pattern Order_ASCENDING = Order' "ASCENDING"
+
+pattern Order_DESCENDING :: Order
+pattern Order_DESCENDING = Order' "DESCENDING"
+
+{-# COMPLETE
+  Order_ASCENDING,
+  Order_DESCENDING,
+  Order'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Output.hs b/gen/Amazonka/MediaConvert/Types/Output.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Output.hs
@@ -0,0 +1,247 @@
+{-# 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.Output
+-- 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.Output 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.AudioDescription
+import Amazonka.MediaConvert.Types.CaptionDescription
+import Amazonka.MediaConvert.Types.ContainerSettings
+import Amazonka.MediaConvert.Types.OutputSettings
+import Amazonka.MediaConvert.Types.VideoDescription
+import qualified Amazonka.Prelude as Prelude
+
+-- | Each output in your job is a collection of settings that describes how
+-- you want MediaConvert to encode a single output file or stream. For more
+-- information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/create-outputs.html.
+--
+-- /See:/ 'newOutput' smart constructor.
+data Output = Output'
+  { -- | (AudioDescriptions) contains groups of audio encoding settings organized
+    -- by audio codec. Include one instance of (AudioDescriptions) per output.
+    -- (AudioDescriptions) can contain multiple groups of encoding settings.
+    audioDescriptions :: Prelude.Maybe [AudioDescription],
+    -- | (CaptionDescriptions) contains groups of captions settings. For each
+    -- output that has captions, include one instance of (CaptionDescriptions).
+    -- (CaptionDescriptions) can contain multiple groups of captions settings.
+    captionDescriptions :: Prelude.Maybe [CaptionDescription],
+    -- | Container specific settings.
+    containerSettings :: Prelude.Maybe ContainerSettings,
+    -- | Use Extension (Extension) to specify the file extension for outputs in
+    -- File output groups. If you do not specify a value, the service will use
+    -- default extensions by container type as follows * MPEG-2 transport
+    -- stream, m2ts * Quicktime, mov * MXF container, mxf * MPEG-4 container,
+    -- mp4 * WebM container, webm * No Container, the service will use codec
+    -- extensions (e.g. AAC, H265, H265, AC3)
+    extension :: Prelude.Maybe Prelude.Text,
+    -- | Use Name modifier (NameModifier) to have the service add a string to the
+    -- end of each output filename. You specify the base filename as part of
+    -- your destination URI. When you create multiple outputs in the same
+    -- output group, Name modifier (NameModifier) is required. Name modifier
+    -- also accepts format identifiers. For DASH ISO outputs, if you use the
+    -- format identifiers $Number$ or $Time$ in one output, you must use them
+    -- in the same way in all outputs of the output group.
+    nameModifier :: Prelude.Maybe Prelude.Text,
+    -- | Specific settings for this type of output.
+    outputSettings :: Prelude.Maybe OutputSettings,
+    -- | Use Preset (Preset) to specify a preset for your transcoding settings.
+    -- Provide the system or custom preset name. You can specify either Preset
+    -- (Preset) or Container settings (ContainerSettings), but not both.
+    preset :: Prelude.Maybe Prelude.Text,
+    -- | VideoDescription contains a group of video encoding settings. The
+    -- specific video settings depend on the video codec that you choose for
+    -- the property codec. Include one instance of VideoDescription per output.
+    videoDescription :: Prelude.Maybe VideoDescription
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Output' 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:
+--
+-- 'audioDescriptions', 'output_audioDescriptions' - (AudioDescriptions) contains groups of audio encoding settings organized
+-- by audio codec. Include one instance of (AudioDescriptions) per output.
+-- (AudioDescriptions) can contain multiple groups of encoding settings.
+--
+-- 'captionDescriptions', 'output_captionDescriptions' - (CaptionDescriptions) contains groups of captions settings. For each
+-- output that has captions, include one instance of (CaptionDescriptions).
+-- (CaptionDescriptions) can contain multiple groups of captions settings.
+--
+-- 'containerSettings', 'output_containerSettings' - Container specific settings.
+--
+-- 'extension', 'output_extension' - Use Extension (Extension) to specify the file extension for outputs in
+-- File output groups. If you do not specify a value, the service will use
+-- default extensions by container type as follows * MPEG-2 transport
+-- stream, m2ts * Quicktime, mov * MXF container, mxf * MPEG-4 container,
+-- mp4 * WebM container, webm * No Container, the service will use codec
+-- extensions (e.g. AAC, H265, H265, AC3)
+--
+-- 'nameModifier', 'output_nameModifier' - Use Name modifier (NameModifier) to have the service add a string to the
+-- end of each output filename. You specify the base filename as part of
+-- your destination URI. When you create multiple outputs in the same
+-- output group, Name modifier (NameModifier) is required. Name modifier
+-- also accepts format identifiers. For DASH ISO outputs, if you use the
+-- format identifiers $Number$ or $Time$ in one output, you must use them
+-- in the same way in all outputs of the output group.
+--
+-- 'outputSettings', 'output_outputSettings' - Specific settings for this type of output.
+--
+-- 'preset', 'output_preset' - Use Preset (Preset) to specify a preset for your transcoding settings.
+-- Provide the system or custom preset name. You can specify either Preset
+-- (Preset) or Container settings (ContainerSettings), but not both.
+--
+-- 'videoDescription', 'output_videoDescription' - VideoDescription contains a group of video encoding settings. The
+-- specific video settings depend on the video codec that you choose for
+-- the property codec. Include one instance of VideoDescription per output.
+newOutput ::
+  Output
+newOutput =
+  Output'
+    { audioDescriptions = Prelude.Nothing,
+      captionDescriptions = Prelude.Nothing,
+      containerSettings = Prelude.Nothing,
+      extension = Prelude.Nothing,
+      nameModifier = Prelude.Nothing,
+      outputSettings = Prelude.Nothing,
+      preset = Prelude.Nothing,
+      videoDescription = Prelude.Nothing
+    }
+
+-- | (AudioDescriptions) contains groups of audio encoding settings organized
+-- by audio codec. Include one instance of (AudioDescriptions) per output.
+-- (AudioDescriptions) can contain multiple groups of encoding settings.
+output_audioDescriptions :: Lens.Lens' Output (Prelude.Maybe [AudioDescription])
+output_audioDescriptions = Lens.lens (\Output' {audioDescriptions} -> audioDescriptions) (\s@Output' {} a -> s {audioDescriptions = a} :: Output) Prelude.. Lens.mapping Lens.coerced
+
+-- | (CaptionDescriptions) contains groups of captions settings. For each
+-- output that has captions, include one instance of (CaptionDescriptions).
+-- (CaptionDescriptions) can contain multiple groups of captions settings.
+output_captionDescriptions :: Lens.Lens' Output (Prelude.Maybe [CaptionDescription])
+output_captionDescriptions = Lens.lens (\Output' {captionDescriptions} -> captionDescriptions) (\s@Output' {} a -> s {captionDescriptions = a} :: Output) Prelude.. Lens.mapping Lens.coerced
+
+-- | Container specific settings.
+output_containerSettings :: Lens.Lens' Output (Prelude.Maybe ContainerSettings)
+output_containerSettings = Lens.lens (\Output' {containerSettings} -> containerSettings) (\s@Output' {} a -> s {containerSettings = a} :: Output)
+
+-- | Use Extension (Extension) to specify the file extension for outputs in
+-- File output groups. If you do not specify a value, the service will use
+-- default extensions by container type as follows * MPEG-2 transport
+-- stream, m2ts * Quicktime, mov * MXF container, mxf * MPEG-4 container,
+-- mp4 * WebM container, webm * No Container, the service will use codec
+-- extensions (e.g. AAC, H265, H265, AC3)
+output_extension :: Lens.Lens' Output (Prelude.Maybe Prelude.Text)
+output_extension = Lens.lens (\Output' {extension} -> extension) (\s@Output' {} a -> s {extension = a} :: Output)
+
+-- | Use Name modifier (NameModifier) to have the service add a string to the
+-- end of each output filename. You specify the base filename as part of
+-- your destination URI. When you create multiple outputs in the same
+-- output group, Name modifier (NameModifier) is required. Name modifier
+-- also accepts format identifiers. For DASH ISO outputs, if you use the
+-- format identifiers $Number$ or $Time$ in one output, you must use them
+-- in the same way in all outputs of the output group.
+output_nameModifier :: Lens.Lens' Output (Prelude.Maybe Prelude.Text)
+output_nameModifier = Lens.lens (\Output' {nameModifier} -> nameModifier) (\s@Output' {} a -> s {nameModifier = a} :: Output)
+
+-- | Specific settings for this type of output.
+output_outputSettings :: Lens.Lens' Output (Prelude.Maybe OutputSettings)
+output_outputSettings = Lens.lens (\Output' {outputSettings} -> outputSettings) (\s@Output' {} a -> s {outputSettings = a} :: Output)
+
+-- | Use Preset (Preset) to specify a preset for your transcoding settings.
+-- Provide the system or custom preset name. You can specify either Preset
+-- (Preset) or Container settings (ContainerSettings), but not both.
+output_preset :: Lens.Lens' Output (Prelude.Maybe Prelude.Text)
+output_preset = Lens.lens (\Output' {preset} -> preset) (\s@Output' {} a -> s {preset = a} :: Output)
+
+-- | VideoDescription contains a group of video encoding settings. The
+-- specific video settings depend on the video codec that you choose for
+-- the property codec. Include one instance of VideoDescription per output.
+output_videoDescription :: Lens.Lens' Output (Prelude.Maybe VideoDescription)
+output_videoDescription = Lens.lens (\Output' {videoDescription} -> videoDescription) (\s@Output' {} a -> s {videoDescription = a} :: Output)
+
+instance Data.FromJSON Output where
+  parseJSON =
+    Data.withObject
+      "Output"
+      ( \x ->
+          Output'
+            Prelude.<$> ( x
+                            Data..:? "audioDescriptions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "captionDescriptions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "containerSettings")
+            Prelude.<*> (x Data..:? "extension")
+            Prelude.<*> (x Data..:? "nameModifier")
+            Prelude.<*> (x Data..:? "outputSettings")
+            Prelude.<*> (x Data..:? "preset")
+            Prelude.<*> (x Data..:? "videoDescription")
+      )
+
+instance Prelude.Hashable Output where
+  hashWithSalt _salt Output' {..} =
+    _salt
+      `Prelude.hashWithSalt` audioDescriptions
+      `Prelude.hashWithSalt` captionDescriptions
+      `Prelude.hashWithSalt` containerSettings
+      `Prelude.hashWithSalt` extension
+      `Prelude.hashWithSalt` nameModifier
+      `Prelude.hashWithSalt` outputSettings
+      `Prelude.hashWithSalt` preset
+      `Prelude.hashWithSalt` videoDescription
+
+instance Prelude.NFData Output where
+  rnf Output' {..} =
+    Prelude.rnf audioDescriptions
+      `Prelude.seq` Prelude.rnf captionDescriptions
+      `Prelude.seq` Prelude.rnf containerSettings
+      `Prelude.seq` Prelude.rnf extension
+      `Prelude.seq` Prelude.rnf nameModifier
+      `Prelude.seq` Prelude.rnf outputSettings
+      `Prelude.seq` Prelude.rnf preset
+      `Prelude.seq` Prelude.rnf videoDescription
+
+instance Data.ToJSON Output where
+  toJSON Output' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("audioDescriptions" Data..=)
+              Prelude.<$> audioDescriptions,
+            ("captionDescriptions" Data..=)
+              Prelude.<$> captionDescriptions,
+            ("containerSettings" Data..=)
+              Prelude.<$> containerSettings,
+            ("extension" Data..=) Prelude.<$> extension,
+            ("nameModifier" Data..=) Prelude.<$> nameModifier,
+            ("outputSettings" Data..=)
+              Prelude.<$> outputSettings,
+            ("preset" Data..=) Prelude.<$> preset,
+            ("videoDescription" Data..=)
+              Prelude.<$> videoDescription
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/OutputChannelMapping.hs b/gen/Amazonka/MediaConvert/Types/OutputChannelMapping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/OutputChannelMapping.hs
@@ -0,0 +1,107 @@
+{-# 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.OutputChannelMapping
+-- 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.OutputChannelMapping where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | OutputChannel mapping settings.
+--
+-- /See:/ 'newOutputChannelMapping' smart constructor.
+data OutputChannelMapping = OutputChannelMapping'
+  { -- | Use this setting to specify your remix values when they are integers,
+    -- such as -10, 0, or 4.
+    inputChannels :: Prelude.Maybe [Prelude.Int],
+    -- | Use this setting to specify your remix values when they have a decimal
+    -- component, such as -10.312, 0.08, or 4.9. MediaConvert rounds your
+    -- remixing values to the nearest thousandth.
+    inputChannelsFineTune :: Prelude.Maybe [Prelude.Double]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputChannelMapping' 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:
+--
+-- 'inputChannels', 'outputChannelMapping_inputChannels' - Use this setting to specify your remix values when they are integers,
+-- such as -10, 0, or 4.
+--
+-- 'inputChannelsFineTune', 'outputChannelMapping_inputChannelsFineTune' - Use this setting to specify your remix values when they have a decimal
+-- component, such as -10.312, 0.08, or 4.9. MediaConvert rounds your
+-- remixing values to the nearest thousandth.
+newOutputChannelMapping ::
+  OutputChannelMapping
+newOutputChannelMapping =
+  OutputChannelMapping'
+    { inputChannels =
+        Prelude.Nothing,
+      inputChannelsFineTune = Prelude.Nothing
+    }
+
+-- | Use this setting to specify your remix values when they are integers,
+-- such as -10, 0, or 4.
+outputChannelMapping_inputChannels :: Lens.Lens' OutputChannelMapping (Prelude.Maybe [Prelude.Int])
+outputChannelMapping_inputChannels = Lens.lens (\OutputChannelMapping' {inputChannels} -> inputChannels) (\s@OutputChannelMapping' {} a -> s {inputChannels = a} :: OutputChannelMapping) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use this setting to specify your remix values when they have a decimal
+-- component, such as -10.312, 0.08, or 4.9. MediaConvert rounds your
+-- remixing values to the nearest thousandth.
+outputChannelMapping_inputChannelsFineTune :: Lens.Lens' OutputChannelMapping (Prelude.Maybe [Prelude.Double])
+outputChannelMapping_inputChannelsFineTune = Lens.lens (\OutputChannelMapping' {inputChannelsFineTune} -> inputChannelsFineTune) (\s@OutputChannelMapping' {} a -> s {inputChannelsFineTune = a} :: OutputChannelMapping) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON OutputChannelMapping where
+  parseJSON =
+    Data.withObject
+      "OutputChannelMapping"
+      ( \x ->
+          OutputChannelMapping'
+            Prelude.<$> (x Data..:? "inputChannels" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "inputChannelsFineTune"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable OutputChannelMapping where
+  hashWithSalt _salt OutputChannelMapping' {..} =
+    _salt
+      `Prelude.hashWithSalt` inputChannels
+      `Prelude.hashWithSalt` inputChannelsFineTune
+
+instance Prelude.NFData OutputChannelMapping where
+  rnf OutputChannelMapping' {..} =
+    Prelude.rnf inputChannels
+      `Prelude.seq` Prelude.rnf inputChannelsFineTune
+
+instance Data.ToJSON OutputChannelMapping where
+  toJSON OutputChannelMapping' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("inputChannels" Data..=) Prelude.<$> inputChannels,
+            ("inputChannelsFineTune" Data..=)
+              Prelude.<$> inputChannelsFineTune
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/OutputDetail.hs b/gen/Amazonka/MediaConvert/Types/OutputDetail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/OutputDetail.hs
@@ -0,0 +1,85 @@
+{-# 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.OutputDetail
+-- 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.OutputDetail 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.VideoDetail
+import qualified Amazonka.Prelude as Prelude
+
+-- | Details regarding output
+--
+-- /See:/ 'newOutputDetail' smart constructor.
+data OutputDetail = OutputDetail'
+  { -- | Duration in milliseconds
+    durationInMs :: Prelude.Maybe Prelude.Int,
+    -- | Contains details about the output\'s video stream
+    videoDetails :: Prelude.Maybe VideoDetail
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputDetail' 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:
+--
+-- 'durationInMs', 'outputDetail_durationInMs' - Duration in milliseconds
+--
+-- 'videoDetails', 'outputDetail_videoDetails' - Contains details about the output\'s video stream
+newOutputDetail ::
+  OutputDetail
+newOutputDetail =
+  OutputDetail'
+    { durationInMs = Prelude.Nothing,
+      videoDetails = Prelude.Nothing
+    }
+
+-- | Duration in milliseconds
+outputDetail_durationInMs :: Lens.Lens' OutputDetail (Prelude.Maybe Prelude.Int)
+outputDetail_durationInMs = Lens.lens (\OutputDetail' {durationInMs} -> durationInMs) (\s@OutputDetail' {} a -> s {durationInMs = a} :: OutputDetail)
+
+-- | Contains details about the output\'s video stream
+outputDetail_videoDetails :: Lens.Lens' OutputDetail (Prelude.Maybe VideoDetail)
+outputDetail_videoDetails = Lens.lens (\OutputDetail' {videoDetails} -> videoDetails) (\s@OutputDetail' {} a -> s {videoDetails = a} :: OutputDetail)
+
+instance Data.FromJSON OutputDetail where
+  parseJSON =
+    Data.withObject
+      "OutputDetail"
+      ( \x ->
+          OutputDetail'
+            Prelude.<$> (x Data..:? "durationInMs")
+            Prelude.<*> (x Data..:? "videoDetails")
+      )
+
+instance Prelude.Hashable OutputDetail where
+  hashWithSalt _salt OutputDetail' {..} =
+    _salt
+      `Prelude.hashWithSalt` durationInMs
+      `Prelude.hashWithSalt` videoDetails
+
+instance Prelude.NFData OutputDetail where
+  rnf OutputDetail' {..} =
+    Prelude.rnf durationInMs
+      `Prelude.seq` Prelude.rnf videoDetails
diff --git a/gen/Amazonka/MediaConvert/Types/OutputGroup.hs b/gen/Amazonka/MediaConvert/Types/OutputGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/OutputGroup.hs
@@ -0,0 +1,156 @@
+{-# 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.OutputGroup
+-- 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.OutputGroup 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.AutomatedEncodingSettings
+import Amazonka.MediaConvert.Types.Output
+import Amazonka.MediaConvert.Types.OutputGroupSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Group of outputs
+--
+-- /See:/ 'newOutputGroup' smart constructor.
+data OutputGroup = OutputGroup'
+  { -- | Use automated encoding to have MediaConvert choose your encoding
+    -- settings for you, based on characteristics of your input video.
+    automatedEncodingSettings :: Prelude.Maybe AutomatedEncodingSettings,
+    -- | Use Custom Group Name (CustomName) to specify a name for the output
+    -- group. This value is displayed on the console and can make your job
+    -- settings JSON more human-readable. It does not affect your outputs. Use
+    -- up to twelve characters that are either letters, numbers, spaces, or
+    -- underscores.
+    customName :: Prelude.Maybe Prelude.Text,
+    -- | Name of the output group
+    name :: Prelude.Maybe Prelude.Text,
+    -- | Output Group settings, including type
+    outputGroupSettings :: Prelude.Maybe OutputGroupSettings,
+    -- | This object holds groups of encoding settings, one group of settings per
+    -- output.
+    outputs :: Prelude.Maybe [Output]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputGroup' 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:
+--
+-- 'automatedEncodingSettings', 'outputGroup_automatedEncodingSettings' - Use automated encoding to have MediaConvert choose your encoding
+-- settings for you, based on characteristics of your input video.
+--
+-- 'customName', 'outputGroup_customName' - Use Custom Group Name (CustomName) to specify a name for the output
+-- group. This value is displayed on the console and can make your job
+-- settings JSON more human-readable. It does not affect your outputs. Use
+-- up to twelve characters that are either letters, numbers, spaces, or
+-- underscores.
+--
+-- 'name', 'outputGroup_name' - Name of the output group
+--
+-- 'outputGroupSettings', 'outputGroup_outputGroupSettings' - Output Group settings, including type
+--
+-- 'outputs', 'outputGroup_outputs' - This object holds groups of encoding settings, one group of settings per
+-- output.
+newOutputGroup ::
+  OutputGroup
+newOutputGroup =
+  OutputGroup'
+    { automatedEncodingSettings =
+        Prelude.Nothing,
+      customName = Prelude.Nothing,
+      name = Prelude.Nothing,
+      outputGroupSettings = Prelude.Nothing,
+      outputs = Prelude.Nothing
+    }
+
+-- | Use automated encoding to have MediaConvert choose your encoding
+-- settings for you, based on characteristics of your input video.
+outputGroup_automatedEncodingSettings :: Lens.Lens' OutputGroup (Prelude.Maybe AutomatedEncodingSettings)
+outputGroup_automatedEncodingSettings = Lens.lens (\OutputGroup' {automatedEncodingSettings} -> automatedEncodingSettings) (\s@OutputGroup' {} a -> s {automatedEncodingSettings = a} :: OutputGroup)
+
+-- | Use Custom Group Name (CustomName) to specify a name for the output
+-- group. This value is displayed on the console and can make your job
+-- settings JSON more human-readable. It does not affect your outputs. Use
+-- up to twelve characters that are either letters, numbers, spaces, or
+-- underscores.
+outputGroup_customName :: Lens.Lens' OutputGroup (Prelude.Maybe Prelude.Text)
+outputGroup_customName = Lens.lens (\OutputGroup' {customName} -> customName) (\s@OutputGroup' {} a -> s {customName = a} :: OutputGroup)
+
+-- | Name of the output group
+outputGroup_name :: Lens.Lens' OutputGroup (Prelude.Maybe Prelude.Text)
+outputGroup_name = Lens.lens (\OutputGroup' {name} -> name) (\s@OutputGroup' {} a -> s {name = a} :: OutputGroup)
+
+-- | Output Group settings, including type
+outputGroup_outputGroupSettings :: Lens.Lens' OutputGroup (Prelude.Maybe OutputGroupSettings)
+outputGroup_outputGroupSettings = Lens.lens (\OutputGroup' {outputGroupSettings} -> outputGroupSettings) (\s@OutputGroup' {} a -> s {outputGroupSettings = a} :: OutputGroup)
+
+-- | This object holds groups of encoding settings, one group of settings per
+-- output.
+outputGroup_outputs :: Lens.Lens' OutputGroup (Prelude.Maybe [Output])
+outputGroup_outputs = Lens.lens (\OutputGroup' {outputs} -> outputs) (\s@OutputGroup' {} a -> s {outputs = a} :: OutputGroup) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON OutputGroup where
+  parseJSON =
+    Data.withObject
+      "OutputGroup"
+      ( \x ->
+          OutputGroup'
+            Prelude.<$> (x Data..:? "automatedEncodingSettings")
+            Prelude.<*> (x Data..:? "customName")
+            Prelude.<*> (x Data..:? "name")
+            Prelude.<*> (x Data..:? "outputGroupSettings")
+            Prelude.<*> (x Data..:? "outputs" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable OutputGroup where
+  hashWithSalt _salt OutputGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` automatedEncodingSettings
+      `Prelude.hashWithSalt` customName
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` outputGroupSettings
+      `Prelude.hashWithSalt` outputs
+
+instance Prelude.NFData OutputGroup where
+  rnf OutputGroup' {..} =
+    Prelude.rnf automatedEncodingSettings
+      `Prelude.seq` Prelude.rnf customName
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf outputGroupSettings
+      `Prelude.seq` Prelude.rnf outputs
+
+instance Data.ToJSON OutputGroup where
+  toJSON OutputGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("automatedEncodingSettings" Data..=)
+              Prelude.<$> automatedEncodingSettings,
+            ("customName" Data..=) Prelude.<$> customName,
+            ("name" Data..=) Prelude.<$> name,
+            ("outputGroupSettings" Data..=)
+              Prelude.<$> outputGroupSettings,
+            ("outputs" Data..=) Prelude.<$> outputs
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/OutputGroupDetail.hs b/gen/Amazonka/MediaConvert/Types/OutputGroupDetail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/OutputGroupDetail.hs
@@ -0,0 +1,70 @@
+{-# 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.OutputGroupDetail
+-- 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.OutputGroupDetail 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.OutputDetail
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains details about the output groups specified in the job settings.
+--
+-- /See:/ 'newOutputGroupDetail' smart constructor.
+data OutputGroupDetail = OutputGroupDetail'
+  { -- | Details about the output
+    outputDetails :: Prelude.Maybe [OutputDetail]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputGroupDetail' 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:
+--
+-- 'outputDetails', 'outputGroupDetail_outputDetails' - Details about the output
+newOutputGroupDetail ::
+  OutputGroupDetail
+newOutputGroupDetail =
+  OutputGroupDetail' {outputDetails = Prelude.Nothing}
+
+-- | Details about the output
+outputGroupDetail_outputDetails :: Lens.Lens' OutputGroupDetail (Prelude.Maybe [OutputDetail])
+outputGroupDetail_outputDetails = Lens.lens (\OutputGroupDetail' {outputDetails} -> outputDetails) (\s@OutputGroupDetail' {} a -> s {outputDetails = a} :: OutputGroupDetail) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON OutputGroupDetail where
+  parseJSON =
+    Data.withObject
+      "OutputGroupDetail"
+      ( \x ->
+          OutputGroupDetail'
+            Prelude.<$> (x Data..:? "outputDetails" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable OutputGroupDetail where
+  hashWithSalt _salt OutputGroupDetail' {..} =
+    _salt `Prelude.hashWithSalt` outputDetails
+
+instance Prelude.NFData OutputGroupDetail where
+  rnf OutputGroupDetail' {..} =
+    Prelude.rnf outputDetails
diff --git a/gen/Amazonka/MediaConvert/Types/OutputGroupSettings.hs b/gen/Amazonka/MediaConvert/Types/OutputGroupSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/OutputGroupSettings.hs
@@ -0,0 +1,223 @@
+{-# 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.OutputGroupSettings
+-- 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.OutputGroupSettings 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.CmafGroupSettings
+import Amazonka.MediaConvert.Types.DashIsoGroupSettings
+import Amazonka.MediaConvert.Types.FileGroupSettings
+import Amazonka.MediaConvert.Types.HlsGroupSettings
+import Amazonka.MediaConvert.Types.MsSmoothGroupSettings
+import Amazonka.MediaConvert.Types.OutputGroupType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Output Group settings, including type
+--
+-- /See:/ 'newOutputGroupSettings' smart constructor.
+data OutputGroupSettings = OutputGroupSettings'
+  { -- | Settings related to your CMAF output package. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+    -- When you work directly in your JSON job specification, include this
+    -- object and any required children when you set Type, under
+    -- OutputGroupSettings, to CMAF_GROUP_SETTINGS.
+    cmafGroupSettings :: Prelude.Maybe CmafGroupSettings,
+    -- | Settings related to your DASH output package. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+    -- When you work directly in your JSON job specification, include this
+    -- object and any required children when you set Type, under
+    -- OutputGroupSettings, to DASH_ISO_GROUP_SETTINGS.
+    dashIsoGroupSettings :: Prelude.Maybe DashIsoGroupSettings,
+    -- | Settings related to your File output group. MediaConvert uses this group
+    -- of settings to generate a single standalone file, rather than a
+    -- streaming package. When you work directly in your JSON job
+    -- specification, include this object and any required children when you
+    -- set Type, under OutputGroupSettings, to FILE_GROUP_SETTINGS.
+    fileGroupSettings :: Prelude.Maybe FileGroupSettings,
+    -- | Settings related to your HLS output package. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+    -- When you work directly in your JSON job specification, include this
+    -- object and any required children when you set Type, under
+    -- OutputGroupSettings, to HLS_GROUP_SETTINGS.
+    hlsGroupSettings :: Prelude.Maybe HlsGroupSettings,
+    -- | Settings related to your Microsoft Smooth Streaming output package. For
+    -- more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+    -- When you work directly in your JSON job specification, include this
+    -- object and any required children when you set Type, under
+    -- OutputGroupSettings, to MS_SMOOTH_GROUP_SETTINGS.
+    msSmoothGroupSettings :: Prelude.Maybe MsSmoothGroupSettings,
+    -- | Type of output group (File group, Apple HLS, DASH ISO, Microsoft Smooth
+    -- Streaming, CMAF)
+    type' :: Prelude.Maybe OutputGroupType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputGroupSettings' 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:
+--
+-- 'cmafGroupSettings', 'outputGroupSettings_cmafGroupSettings' - Settings related to your CMAF output package. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set Type, under
+-- OutputGroupSettings, to CMAF_GROUP_SETTINGS.
+--
+-- 'dashIsoGroupSettings', 'outputGroupSettings_dashIsoGroupSettings' - Settings related to your DASH output package. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set Type, under
+-- OutputGroupSettings, to DASH_ISO_GROUP_SETTINGS.
+--
+-- 'fileGroupSettings', 'outputGroupSettings_fileGroupSettings' - Settings related to your File output group. MediaConvert uses this group
+-- of settings to generate a single standalone file, rather than a
+-- streaming package. When you work directly in your JSON job
+-- specification, include this object and any required children when you
+-- set Type, under OutputGroupSettings, to FILE_GROUP_SETTINGS.
+--
+-- 'hlsGroupSettings', 'outputGroupSettings_hlsGroupSettings' - Settings related to your HLS output package. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set Type, under
+-- OutputGroupSettings, to HLS_GROUP_SETTINGS.
+--
+-- 'msSmoothGroupSettings', 'outputGroupSettings_msSmoothGroupSettings' - Settings related to your Microsoft Smooth Streaming output package. For
+-- more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set Type, under
+-- OutputGroupSettings, to MS_SMOOTH_GROUP_SETTINGS.
+--
+-- 'type'', 'outputGroupSettings_type' - Type of output group (File group, Apple HLS, DASH ISO, Microsoft Smooth
+-- Streaming, CMAF)
+newOutputGroupSettings ::
+  OutputGroupSettings
+newOutputGroupSettings =
+  OutputGroupSettings'
+    { cmafGroupSettings =
+        Prelude.Nothing,
+      dashIsoGroupSettings = Prelude.Nothing,
+      fileGroupSettings = Prelude.Nothing,
+      hlsGroupSettings = Prelude.Nothing,
+      msSmoothGroupSettings = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | Settings related to your CMAF output package. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set Type, under
+-- OutputGroupSettings, to CMAF_GROUP_SETTINGS.
+outputGroupSettings_cmafGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe CmafGroupSettings)
+outputGroupSettings_cmafGroupSettings = Lens.lens (\OutputGroupSettings' {cmafGroupSettings} -> cmafGroupSettings) (\s@OutputGroupSettings' {} a -> s {cmafGroupSettings = a} :: OutputGroupSettings)
+
+-- | Settings related to your DASH output package. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set Type, under
+-- OutputGroupSettings, to DASH_ISO_GROUP_SETTINGS.
+outputGroupSettings_dashIsoGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe DashIsoGroupSettings)
+outputGroupSettings_dashIsoGroupSettings = Lens.lens (\OutputGroupSettings' {dashIsoGroupSettings} -> dashIsoGroupSettings) (\s@OutputGroupSettings' {} a -> s {dashIsoGroupSettings = a} :: OutputGroupSettings)
+
+-- | Settings related to your File output group. MediaConvert uses this group
+-- of settings to generate a single standalone file, rather than a
+-- streaming package. When you work directly in your JSON job
+-- specification, include this object and any required children when you
+-- set Type, under OutputGroupSettings, to FILE_GROUP_SETTINGS.
+outputGroupSettings_fileGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe FileGroupSettings)
+outputGroupSettings_fileGroupSettings = Lens.lens (\OutputGroupSettings' {fileGroupSettings} -> fileGroupSettings) (\s@OutputGroupSettings' {} a -> s {fileGroupSettings = a} :: OutputGroupSettings)
+
+-- | Settings related to your HLS output package. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set Type, under
+-- OutputGroupSettings, to HLS_GROUP_SETTINGS.
+outputGroupSettings_hlsGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe HlsGroupSettings)
+outputGroupSettings_hlsGroupSettings = Lens.lens (\OutputGroupSettings' {hlsGroupSettings} -> hlsGroupSettings) (\s@OutputGroupSettings' {} a -> s {hlsGroupSettings = a} :: OutputGroupSettings)
+
+-- | Settings related to your Microsoft Smooth Streaming output package. For
+-- more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set Type, under
+-- OutputGroupSettings, to MS_SMOOTH_GROUP_SETTINGS.
+outputGroupSettings_msSmoothGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe MsSmoothGroupSettings)
+outputGroupSettings_msSmoothGroupSettings = Lens.lens (\OutputGroupSettings' {msSmoothGroupSettings} -> msSmoothGroupSettings) (\s@OutputGroupSettings' {} a -> s {msSmoothGroupSettings = a} :: OutputGroupSettings)
+
+-- | Type of output group (File group, Apple HLS, DASH ISO, Microsoft Smooth
+-- Streaming, CMAF)
+outputGroupSettings_type :: Lens.Lens' OutputGroupSettings (Prelude.Maybe OutputGroupType)
+outputGroupSettings_type = Lens.lens (\OutputGroupSettings' {type'} -> type') (\s@OutputGroupSettings' {} a -> s {type' = a} :: OutputGroupSettings)
+
+instance Data.FromJSON OutputGroupSettings where
+  parseJSON =
+    Data.withObject
+      "OutputGroupSettings"
+      ( \x ->
+          OutputGroupSettings'
+            Prelude.<$> (x Data..:? "cmafGroupSettings")
+            Prelude.<*> (x Data..:? "dashIsoGroupSettings")
+            Prelude.<*> (x Data..:? "fileGroupSettings")
+            Prelude.<*> (x Data..:? "hlsGroupSettings")
+            Prelude.<*> (x Data..:? "msSmoothGroupSettings")
+            Prelude.<*> (x Data..:? "type")
+      )
+
+instance Prelude.Hashable OutputGroupSettings where
+  hashWithSalt _salt OutputGroupSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` cmafGroupSettings
+      `Prelude.hashWithSalt` dashIsoGroupSettings
+      `Prelude.hashWithSalt` fileGroupSettings
+      `Prelude.hashWithSalt` hlsGroupSettings
+      `Prelude.hashWithSalt` msSmoothGroupSettings
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData OutputGroupSettings where
+  rnf OutputGroupSettings' {..} =
+    Prelude.rnf cmafGroupSettings
+      `Prelude.seq` Prelude.rnf dashIsoGroupSettings
+      `Prelude.seq` Prelude.rnf fileGroupSettings
+      `Prelude.seq` Prelude.rnf hlsGroupSettings
+      `Prelude.seq` Prelude.rnf msSmoothGroupSettings
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON OutputGroupSettings where
+  toJSON OutputGroupSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("cmafGroupSettings" Data..=)
+              Prelude.<$> cmafGroupSettings,
+            ("dashIsoGroupSettings" Data..=)
+              Prelude.<$> dashIsoGroupSettings,
+            ("fileGroupSettings" Data..=)
+              Prelude.<$> fileGroupSettings,
+            ("hlsGroupSettings" Data..=)
+              Prelude.<$> hlsGroupSettings,
+            ("msSmoothGroupSettings" Data..=)
+              Prelude.<$> msSmoothGroupSettings,
+            ("type" Data..=) Prelude.<$> type'
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/OutputGroupType.hs b/gen/Amazonka/MediaConvert/Types/OutputGroupType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/OutputGroupType.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.OutputGroupType
+-- 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.OutputGroupType
+  ( OutputGroupType
+      ( ..,
+        OutputGroupType_CMAF_GROUP_SETTINGS,
+        OutputGroupType_DASH_ISO_GROUP_SETTINGS,
+        OutputGroupType_FILE_GROUP_SETTINGS,
+        OutputGroupType_HLS_GROUP_SETTINGS,
+        OutputGroupType_MS_SMOOTH_GROUP_SETTINGS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Type of output group (File group, Apple HLS, DASH ISO, Microsoft Smooth
+-- Streaming, CMAF)
+newtype OutputGroupType = OutputGroupType'
+  { fromOutputGroupType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern OutputGroupType_CMAF_GROUP_SETTINGS :: OutputGroupType
+pattern OutputGroupType_CMAF_GROUP_SETTINGS = OutputGroupType' "CMAF_GROUP_SETTINGS"
+
+pattern OutputGroupType_DASH_ISO_GROUP_SETTINGS :: OutputGroupType
+pattern OutputGroupType_DASH_ISO_GROUP_SETTINGS = OutputGroupType' "DASH_ISO_GROUP_SETTINGS"
+
+pattern OutputGroupType_FILE_GROUP_SETTINGS :: OutputGroupType
+pattern OutputGroupType_FILE_GROUP_SETTINGS = OutputGroupType' "FILE_GROUP_SETTINGS"
+
+pattern OutputGroupType_HLS_GROUP_SETTINGS :: OutputGroupType
+pattern OutputGroupType_HLS_GROUP_SETTINGS = OutputGroupType' "HLS_GROUP_SETTINGS"
+
+pattern OutputGroupType_MS_SMOOTH_GROUP_SETTINGS :: OutputGroupType
+pattern OutputGroupType_MS_SMOOTH_GROUP_SETTINGS = OutputGroupType' "MS_SMOOTH_GROUP_SETTINGS"
+
+{-# COMPLETE
+  OutputGroupType_CMAF_GROUP_SETTINGS,
+  OutputGroupType_DASH_ISO_GROUP_SETTINGS,
+  OutputGroupType_FILE_GROUP_SETTINGS,
+  OutputGroupType_HLS_GROUP_SETTINGS,
+  OutputGroupType_MS_SMOOTH_GROUP_SETTINGS,
+  OutputGroupType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/OutputSdt.hs b/gen/Amazonka/MediaConvert/Types/OutputSdt.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/OutputSdt.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.OutputSdt
+-- 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.OutputSdt
+  ( OutputSdt
+      ( ..,
+        OutputSdt_SDT_FOLLOW,
+        OutputSdt_SDT_FOLLOW_IF_PRESENT,
+        OutputSdt_SDT_MANUAL,
+        OutputSdt_SDT_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Selects method of inserting SDT information into output stream. \"Follow
+-- input SDT\" copies SDT information from input stream to output stream.
+-- \"Follow input SDT if present\" copies SDT information from input stream
+-- to output stream if SDT information is present in the input, otherwise
+-- it will fall back on the user-defined values. Enter \"SDT Manually\"
+-- means user will enter the SDT information. \"No SDT\" means output
+-- stream will not contain SDT information.
+newtype OutputSdt = OutputSdt'
+  { fromOutputSdt ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern OutputSdt_SDT_FOLLOW :: OutputSdt
+pattern OutputSdt_SDT_FOLLOW = OutputSdt' "SDT_FOLLOW"
+
+pattern OutputSdt_SDT_FOLLOW_IF_PRESENT :: OutputSdt
+pattern OutputSdt_SDT_FOLLOW_IF_PRESENT = OutputSdt' "SDT_FOLLOW_IF_PRESENT"
+
+pattern OutputSdt_SDT_MANUAL :: OutputSdt
+pattern OutputSdt_SDT_MANUAL = OutputSdt' "SDT_MANUAL"
+
+pattern OutputSdt_SDT_NONE :: OutputSdt
+pattern OutputSdt_SDT_NONE = OutputSdt' "SDT_NONE"
+
+{-# COMPLETE
+  OutputSdt_SDT_FOLLOW,
+  OutputSdt_SDT_FOLLOW_IF_PRESENT,
+  OutputSdt_SDT_MANUAL,
+  OutputSdt_SDT_NONE,
+  OutputSdt'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/OutputSettings.hs b/gen/Amazonka/MediaConvert/Types/OutputSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/OutputSettings.hs
@@ -0,0 +1,76 @@
+{-# 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.OutputSettings
+-- 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.OutputSettings 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.HlsSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specific settings for this type of output.
+--
+-- /See:/ 'newOutputSettings' smart constructor.
+data OutputSettings = OutputSettings'
+  { -- | Settings for HLS output groups
+    hlsSettings :: Prelude.Maybe HlsSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputSettings' 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:
+--
+-- 'hlsSettings', 'outputSettings_hlsSettings' - Settings for HLS output groups
+newOutputSettings ::
+  OutputSettings
+newOutputSettings =
+  OutputSettings' {hlsSettings = Prelude.Nothing}
+
+-- | Settings for HLS output groups
+outputSettings_hlsSettings :: Lens.Lens' OutputSettings (Prelude.Maybe HlsSettings)
+outputSettings_hlsSettings = Lens.lens (\OutputSettings' {hlsSettings} -> hlsSettings) (\s@OutputSettings' {} a -> s {hlsSettings = a} :: OutputSettings)
+
+instance Data.FromJSON OutputSettings where
+  parseJSON =
+    Data.withObject
+      "OutputSettings"
+      ( \x ->
+          OutputSettings'
+            Prelude.<$> (x Data..:? "hlsSettings")
+      )
+
+instance Prelude.Hashable OutputSettings where
+  hashWithSalt _salt OutputSettings' {..} =
+    _salt `Prelude.hashWithSalt` hlsSettings
+
+instance Prelude.NFData OutputSettings where
+  rnf OutputSettings' {..} = Prelude.rnf hlsSettings
+
+instance Data.ToJSON OutputSettings where
+  toJSON OutputSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("hlsSettings" Data..=) Prelude.<$> hlsSettings]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/PadVideo.hs b/gen/Amazonka/MediaConvert/Types/PadVideo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/PadVideo.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.PadVideo
+-- 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.PadVideo
+  ( PadVideo
+      ( ..,
+        PadVideo_BLACK,
+        PadVideo_DISABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting if your input has video and audio durations that don\'t
+-- align, and your output or player has strict alignment requirements.
+-- Examples: Input audio track has a delayed start. Input video track ends
+-- before audio ends. When you set Pad video (padVideo) to Black (BLACK),
+-- MediaConvert generates black video frames so that output video and audio
+-- durations match. Black video frames are added at the beginning or end,
+-- depending on your input. To keep the default behavior and not generate
+-- black video, set Pad video to Disabled (DISABLED) or leave blank.
+newtype PadVideo = PadVideo'
+  { fromPadVideo ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern PadVideo_BLACK :: PadVideo
+pattern PadVideo_BLACK = PadVideo' "BLACK"
+
+pattern PadVideo_DISABLED :: PadVideo
+pattern PadVideo_DISABLED = PadVideo' "DISABLED"
+
+{-# COMPLETE
+  PadVideo_BLACK,
+  PadVideo_DISABLED,
+  PadVideo'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/PartnerWatermarking.hs b/gen/Amazonka/MediaConvert/Types/PartnerWatermarking.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/PartnerWatermarking.hs
@@ -0,0 +1,91 @@
+{-# 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.PartnerWatermarking
+-- 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.PartnerWatermarking 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.NexGuardFileMarkerSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you work with a third party video watermarking partner, use the group
+-- of settings that correspond with your watermarking partner to include
+-- watermarks in your output.
+--
+-- /See:/ 'newPartnerWatermarking' smart constructor.
+data PartnerWatermarking = PartnerWatermarking'
+  { -- | For forensic video watermarking, MediaConvert supports Nagra NexGuard
+    -- File Marker watermarking. MediaConvert supports both PreRelease Content
+    -- (NGPR\/G2) and OTT Streaming workflows.
+    nexguardFileMarkerSettings :: Prelude.Maybe NexGuardFileMarkerSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PartnerWatermarking' 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:
+--
+-- 'nexguardFileMarkerSettings', 'partnerWatermarking_nexguardFileMarkerSettings' - For forensic video watermarking, MediaConvert supports Nagra NexGuard
+-- File Marker watermarking. MediaConvert supports both PreRelease Content
+-- (NGPR\/G2) and OTT Streaming workflows.
+newPartnerWatermarking ::
+  PartnerWatermarking
+newPartnerWatermarking =
+  PartnerWatermarking'
+    { nexguardFileMarkerSettings =
+        Prelude.Nothing
+    }
+
+-- | For forensic video watermarking, MediaConvert supports Nagra NexGuard
+-- File Marker watermarking. MediaConvert supports both PreRelease Content
+-- (NGPR\/G2) and OTT Streaming workflows.
+partnerWatermarking_nexguardFileMarkerSettings :: Lens.Lens' PartnerWatermarking (Prelude.Maybe NexGuardFileMarkerSettings)
+partnerWatermarking_nexguardFileMarkerSettings = Lens.lens (\PartnerWatermarking' {nexguardFileMarkerSettings} -> nexguardFileMarkerSettings) (\s@PartnerWatermarking' {} a -> s {nexguardFileMarkerSettings = a} :: PartnerWatermarking)
+
+instance Data.FromJSON PartnerWatermarking where
+  parseJSON =
+    Data.withObject
+      "PartnerWatermarking"
+      ( \x ->
+          PartnerWatermarking'
+            Prelude.<$> (x Data..:? "nexguardFileMarkerSettings")
+      )
+
+instance Prelude.Hashable PartnerWatermarking where
+  hashWithSalt _salt PartnerWatermarking' {..} =
+    _salt
+      `Prelude.hashWithSalt` nexguardFileMarkerSettings
+
+instance Prelude.NFData PartnerWatermarking where
+  rnf PartnerWatermarking' {..} =
+    Prelude.rnf nexguardFileMarkerSettings
+
+instance Data.ToJSON PartnerWatermarking where
+  toJSON PartnerWatermarking' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("nexguardFileMarkerSettings" Data..=)
+              Prelude.<$> nexguardFileMarkerSettings
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Policy.hs b/gen/Amazonka/MediaConvert/Types/Policy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Policy.hs
@@ -0,0 +1,109 @@
+{-# 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.Policy
+-- 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.Policy 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.InputPolicy
+import qualified Amazonka.Prelude as Prelude
+
+-- | A policy configures behavior that you allow or disallow for your
+-- account. For information about MediaConvert policies, see the user guide
+-- at http:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/what-is.html
+--
+-- /See:/ 'newPolicy' smart constructor.
+data Policy = Policy'
+  { -- | Allow or disallow jobs that specify HTTP inputs.
+    httpInputs :: Prelude.Maybe InputPolicy,
+    -- | Allow or disallow jobs that specify HTTPS inputs.
+    httpsInputs :: Prelude.Maybe InputPolicy,
+    -- | Allow or disallow jobs that specify Amazon S3 inputs.
+    s3Inputs :: Prelude.Maybe InputPolicy
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Policy' 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:
+--
+-- 'httpInputs', 'policy_httpInputs' - Allow or disallow jobs that specify HTTP inputs.
+--
+-- 'httpsInputs', 'policy_httpsInputs' - Allow or disallow jobs that specify HTTPS inputs.
+--
+-- 's3Inputs', 'policy_s3Inputs' - Allow or disallow jobs that specify Amazon S3 inputs.
+newPolicy ::
+  Policy
+newPolicy =
+  Policy'
+    { httpInputs = Prelude.Nothing,
+      httpsInputs = Prelude.Nothing,
+      s3Inputs = Prelude.Nothing
+    }
+
+-- | Allow or disallow jobs that specify HTTP inputs.
+policy_httpInputs :: Lens.Lens' Policy (Prelude.Maybe InputPolicy)
+policy_httpInputs = Lens.lens (\Policy' {httpInputs} -> httpInputs) (\s@Policy' {} a -> s {httpInputs = a} :: Policy)
+
+-- | Allow or disallow jobs that specify HTTPS inputs.
+policy_httpsInputs :: Lens.Lens' Policy (Prelude.Maybe InputPolicy)
+policy_httpsInputs = Lens.lens (\Policy' {httpsInputs} -> httpsInputs) (\s@Policy' {} a -> s {httpsInputs = a} :: Policy)
+
+-- | Allow or disallow jobs that specify Amazon S3 inputs.
+policy_s3Inputs :: Lens.Lens' Policy (Prelude.Maybe InputPolicy)
+policy_s3Inputs = Lens.lens (\Policy' {s3Inputs} -> s3Inputs) (\s@Policy' {} a -> s {s3Inputs = a} :: Policy)
+
+instance Data.FromJSON Policy where
+  parseJSON =
+    Data.withObject
+      "Policy"
+      ( \x ->
+          Policy'
+            Prelude.<$> (x Data..:? "httpInputs")
+            Prelude.<*> (x Data..:? "httpsInputs")
+            Prelude.<*> (x Data..:? "s3Inputs")
+      )
+
+instance Prelude.Hashable Policy where
+  hashWithSalt _salt Policy' {..} =
+    _salt
+      `Prelude.hashWithSalt` httpInputs
+      `Prelude.hashWithSalt` httpsInputs
+      `Prelude.hashWithSalt` s3Inputs
+
+instance Prelude.NFData Policy where
+  rnf Policy' {..} =
+    Prelude.rnf httpInputs
+      `Prelude.seq` Prelude.rnf httpsInputs
+      `Prelude.seq` Prelude.rnf s3Inputs
+
+instance Data.ToJSON Policy where
+  toJSON Policy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("httpInputs" Data..=) Prelude.<$> httpInputs,
+            ("httpsInputs" Data..=) Prelude.<$> httpsInputs,
+            ("s3Inputs" Data..=) Prelude.<$> s3Inputs
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Preset.hs b/gen/Amazonka/MediaConvert/Types/Preset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Preset.hs
@@ -0,0 +1,170 @@
+{-# 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.Preset
+-- 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.Preset 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.PresetSettings
+import Amazonka.MediaConvert.Types.Type
+import qualified Amazonka.Prelude as Prelude
+
+-- | A preset is a collection of preconfigured media conversion settings that
+-- you want MediaConvert to apply to the output during the conversion
+-- process.
+--
+-- /See:/ 'newPreset' smart constructor.
+data Preset = Preset'
+  { -- | An identifier for this resource that is unique within all of AWS.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | An optional category you create to organize your presets.
+    category :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp in epoch seconds for preset creation.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | An optional description you create for each preset.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp in epoch seconds when the preset was last updated.
+    lastUpdated :: Prelude.Maybe Data.POSIX,
+    -- | A preset can be of two types: system or custom. System or built-in
+    -- preset can\'t be modified or deleted by the user.
+    type' :: Prelude.Maybe Type,
+    -- | Settings for preset
+    settings :: PresetSettings,
+    -- | A name you create for each preset. Each name must be unique within your
+    -- account.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Preset' 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:
+--
+-- 'arn', 'preset_arn' - An identifier for this resource that is unique within all of AWS.
+--
+-- 'category', 'preset_category' - An optional category you create to organize your presets.
+--
+-- 'createdAt', 'preset_createdAt' - The timestamp in epoch seconds for preset creation.
+--
+-- 'description', 'preset_description' - An optional description you create for each preset.
+--
+-- 'lastUpdated', 'preset_lastUpdated' - The timestamp in epoch seconds when the preset was last updated.
+--
+-- 'type'', 'preset_type' - A preset can be of two types: system or custom. System or built-in
+-- preset can\'t be modified or deleted by the user.
+--
+-- 'settings', 'preset_settings' - Settings for preset
+--
+-- 'name', 'preset_name' - A name you create for each preset. Each name must be unique within your
+-- account.
+newPreset ::
+  -- | 'settings'
+  PresetSettings ->
+  -- | 'name'
+  Prelude.Text ->
+  Preset
+newPreset pSettings_ pName_ =
+  Preset'
+    { arn = Prelude.Nothing,
+      category = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lastUpdated = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      settings = pSettings_,
+      name = pName_
+    }
+
+-- | An identifier for this resource that is unique within all of AWS.
+preset_arn :: Lens.Lens' Preset (Prelude.Maybe Prelude.Text)
+preset_arn = Lens.lens (\Preset' {arn} -> arn) (\s@Preset' {} a -> s {arn = a} :: Preset)
+
+-- | An optional category you create to organize your presets.
+preset_category :: Lens.Lens' Preset (Prelude.Maybe Prelude.Text)
+preset_category = Lens.lens (\Preset' {category} -> category) (\s@Preset' {} a -> s {category = a} :: Preset)
+
+-- | The timestamp in epoch seconds for preset creation.
+preset_createdAt :: Lens.Lens' Preset (Prelude.Maybe Prelude.UTCTime)
+preset_createdAt = Lens.lens (\Preset' {createdAt} -> createdAt) (\s@Preset' {} a -> s {createdAt = a} :: Preset) Prelude.. Lens.mapping Data._Time
+
+-- | An optional description you create for each preset.
+preset_description :: Lens.Lens' Preset (Prelude.Maybe Prelude.Text)
+preset_description = Lens.lens (\Preset' {description} -> description) (\s@Preset' {} a -> s {description = a} :: Preset)
+
+-- | The timestamp in epoch seconds when the preset was last updated.
+preset_lastUpdated :: Lens.Lens' Preset (Prelude.Maybe Prelude.UTCTime)
+preset_lastUpdated = Lens.lens (\Preset' {lastUpdated} -> lastUpdated) (\s@Preset' {} a -> s {lastUpdated = a} :: Preset) Prelude.. Lens.mapping Data._Time
+
+-- | A preset can be of two types: system or custom. System or built-in
+-- preset can\'t be modified or deleted by the user.
+preset_type :: Lens.Lens' Preset (Prelude.Maybe Type)
+preset_type = Lens.lens (\Preset' {type'} -> type') (\s@Preset' {} a -> s {type' = a} :: Preset)
+
+-- | Settings for preset
+preset_settings :: Lens.Lens' Preset PresetSettings
+preset_settings = Lens.lens (\Preset' {settings} -> settings) (\s@Preset' {} a -> s {settings = a} :: Preset)
+
+-- | A name you create for each preset. Each name must be unique within your
+-- account.
+preset_name :: Lens.Lens' Preset Prelude.Text
+preset_name = Lens.lens (\Preset' {name} -> name) (\s@Preset' {} a -> s {name = a} :: Preset)
+
+instance Data.FromJSON Preset where
+  parseJSON =
+    Data.withObject
+      "Preset"
+      ( \x ->
+          Preset'
+            Prelude.<$> (x Data..:? "arn")
+            Prelude.<*> (x Data..:? "category")
+            Prelude.<*> (x Data..:? "createdAt")
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "lastUpdated")
+            Prelude.<*> (x Data..:? "type")
+            Prelude.<*> (x Data..: "settings")
+            Prelude.<*> (x Data..: "name")
+      )
+
+instance Prelude.Hashable Preset where
+  hashWithSalt _salt Preset' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` category
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` lastUpdated
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` settings
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData Preset where
+  rnf Preset' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf category
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastUpdated
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf settings
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/MediaConvert/Types/PresetListBy.hs b/gen/Amazonka/MediaConvert/Types/PresetListBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/PresetListBy.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.PresetListBy
+-- 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.PresetListBy
+  ( PresetListBy
+      ( ..,
+        PresetListBy_CREATION_DATE,
+        PresetListBy_NAME,
+        PresetListBy_SYSTEM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. When you request a list of presets, you can choose to list
+-- them alphabetically by NAME or chronologically by CREATION_DATE. If you
+-- don\'t specify, the service will list them by name.
+newtype PresetListBy = PresetListBy'
+  { fromPresetListBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern PresetListBy_CREATION_DATE :: PresetListBy
+pattern PresetListBy_CREATION_DATE = PresetListBy' "CREATION_DATE"
+
+pattern PresetListBy_NAME :: PresetListBy
+pattern PresetListBy_NAME = PresetListBy' "NAME"
+
+pattern PresetListBy_SYSTEM :: PresetListBy
+pattern PresetListBy_SYSTEM = PresetListBy' "SYSTEM"
+
+{-# COMPLETE
+  PresetListBy_CREATION_DATE,
+  PresetListBy_NAME,
+  PresetListBy_SYSTEM,
+  PresetListBy'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/PresetSettings.hs b/gen/Amazonka/MediaConvert/Types/PresetSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/PresetSettings.hs
@@ -0,0 +1,152 @@
+{-# 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.PresetSettings
+-- 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.PresetSettings 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.AudioDescription
+import Amazonka.MediaConvert.Types.CaptionDescriptionPreset
+import Amazonka.MediaConvert.Types.ContainerSettings
+import Amazonka.MediaConvert.Types.VideoDescription
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for preset
+--
+-- /See:/ 'newPresetSettings' smart constructor.
+data PresetSettings = PresetSettings'
+  { -- | (AudioDescriptions) contains groups of audio encoding settings organized
+    -- by audio codec. Include one instance of (AudioDescriptions) per output.
+    -- (AudioDescriptions) can contain multiple groups of encoding settings.
+    audioDescriptions :: Prelude.Maybe [AudioDescription],
+    -- | This object holds groups of settings related to captions for one output.
+    -- For each output that has captions, include one instance of
+    -- CaptionDescriptions.
+    captionDescriptions :: Prelude.Maybe [CaptionDescriptionPreset],
+    -- | Container specific settings.
+    containerSettings :: Prelude.Maybe ContainerSettings,
+    -- | VideoDescription contains a group of video encoding settings. The
+    -- specific video settings depend on the video codec that you choose for
+    -- the property codec. Include one instance of VideoDescription per output.
+    videoDescription :: Prelude.Maybe VideoDescription
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PresetSettings' 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:
+--
+-- 'audioDescriptions', 'presetSettings_audioDescriptions' - (AudioDescriptions) contains groups of audio encoding settings organized
+-- by audio codec. Include one instance of (AudioDescriptions) per output.
+-- (AudioDescriptions) can contain multiple groups of encoding settings.
+--
+-- 'captionDescriptions', 'presetSettings_captionDescriptions' - This object holds groups of settings related to captions for one output.
+-- For each output that has captions, include one instance of
+-- CaptionDescriptions.
+--
+-- 'containerSettings', 'presetSettings_containerSettings' - Container specific settings.
+--
+-- 'videoDescription', 'presetSettings_videoDescription' - VideoDescription contains a group of video encoding settings. The
+-- specific video settings depend on the video codec that you choose for
+-- the property codec. Include one instance of VideoDescription per output.
+newPresetSettings ::
+  PresetSettings
+newPresetSettings =
+  PresetSettings'
+    { audioDescriptions =
+        Prelude.Nothing,
+      captionDescriptions = Prelude.Nothing,
+      containerSettings = Prelude.Nothing,
+      videoDescription = Prelude.Nothing
+    }
+
+-- | (AudioDescriptions) contains groups of audio encoding settings organized
+-- by audio codec. Include one instance of (AudioDescriptions) per output.
+-- (AudioDescriptions) can contain multiple groups of encoding settings.
+presetSettings_audioDescriptions :: Lens.Lens' PresetSettings (Prelude.Maybe [AudioDescription])
+presetSettings_audioDescriptions = Lens.lens (\PresetSettings' {audioDescriptions} -> audioDescriptions) (\s@PresetSettings' {} a -> s {audioDescriptions = a} :: PresetSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | This object holds groups of settings related to captions for one output.
+-- For each output that has captions, include one instance of
+-- CaptionDescriptions.
+presetSettings_captionDescriptions :: Lens.Lens' PresetSettings (Prelude.Maybe [CaptionDescriptionPreset])
+presetSettings_captionDescriptions = Lens.lens (\PresetSettings' {captionDescriptions} -> captionDescriptions) (\s@PresetSettings' {} a -> s {captionDescriptions = a} :: PresetSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | Container specific settings.
+presetSettings_containerSettings :: Lens.Lens' PresetSettings (Prelude.Maybe ContainerSettings)
+presetSettings_containerSettings = Lens.lens (\PresetSettings' {containerSettings} -> containerSettings) (\s@PresetSettings' {} a -> s {containerSettings = a} :: PresetSettings)
+
+-- | VideoDescription contains a group of video encoding settings. The
+-- specific video settings depend on the video codec that you choose for
+-- the property codec. Include one instance of VideoDescription per output.
+presetSettings_videoDescription :: Lens.Lens' PresetSettings (Prelude.Maybe VideoDescription)
+presetSettings_videoDescription = Lens.lens (\PresetSettings' {videoDescription} -> videoDescription) (\s@PresetSettings' {} a -> s {videoDescription = a} :: PresetSettings)
+
+instance Data.FromJSON PresetSettings where
+  parseJSON =
+    Data.withObject
+      "PresetSettings"
+      ( \x ->
+          PresetSettings'
+            Prelude.<$> ( x
+                            Data..:? "audioDescriptions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "captionDescriptions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "containerSettings")
+            Prelude.<*> (x Data..:? "videoDescription")
+      )
+
+instance Prelude.Hashable PresetSettings where
+  hashWithSalt _salt PresetSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` audioDescriptions
+      `Prelude.hashWithSalt` captionDescriptions
+      `Prelude.hashWithSalt` containerSettings
+      `Prelude.hashWithSalt` videoDescription
+
+instance Prelude.NFData PresetSettings where
+  rnf PresetSettings' {..} =
+    Prelude.rnf audioDescriptions
+      `Prelude.seq` Prelude.rnf captionDescriptions
+      `Prelude.seq` Prelude.rnf containerSettings
+      `Prelude.seq` Prelude.rnf videoDescription
+
+instance Data.ToJSON PresetSettings where
+  toJSON PresetSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("audioDescriptions" Data..=)
+              Prelude.<$> audioDescriptions,
+            ("captionDescriptions" Data..=)
+              Prelude.<$> captionDescriptions,
+            ("containerSettings" Data..=)
+              Prelude.<$> containerSettings,
+            ("videoDescription" Data..=)
+              Prelude.<$> videoDescription
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/PricingPlan.hs b/gen/Amazonka/MediaConvert/Types/PricingPlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/PricingPlan.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.PricingPlan
+-- 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.PricingPlan
+  ( PricingPlan
+      ( ..,
+        PricingPlan_ON_DEMAND,
+        PricingPlan_RESERVED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies whether the pricing plan for the queue is on-demand or
+-- reserved. For on-demand, you pay per minute, billed in increments of .01
+-- minute. For reserved, you pay for the transcoding capacity of the entire
+-- queue, regardless of how much or how little you use it. Reserved pricing
+-- requires a 12-month commitment.
+newtype PricingPlan = PricingPlan'
+  { fromPricingPlan ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern PricingPlan_ON_DEMAND :: PricingPlan
+pattern PricingPlan_ON_DEMAND = PricingPlan' "ON_DEMAND"
+
+pattern PricingPlan_RESERVED :: PricingPlan
+pattern PricingPlan_RESERVED = PricingPlan' "RESERVED"
+
+{-# COMPLETE
+  PricingPlan_ON_DEMAND,
+  PricingPlan_RESERVED,
+  PricingPlan'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ProresChromaSampling.hs b/gen/Amazonka/MediaConvert/Types/ProresChromaSampling.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ProresChromaSampling.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ProresChromaSampling
+-- 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.ProresChromaSampling
+  ( ProresChromaSampling
+      ( ..,
+        ProresChromaSampling_PRESERVE_444_SAMPLING,
+        ProresChromaSampling_SUBSAMPLE_TO_422
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | This setting applies only to ProRes 4444 and ProRes 4444 XQ outputs that
+-- you create from inputs that use 4:4:4 chroma sampling. Set Preserve
+-- 4:4:4 sampling (PRESERVE_444_SAMPLING) to allow outputs to also use
+-- 4:4:4 chroma sampling. You must specify a value for this setting when
+-- your output codec profile supports 4:4:4 chroma sampling. Related
+-- Settings: When you set Chroma sampling to Preserve 4:4:4 sampling
+-- (PRESERVE_444_SAMPLING), you must choose an output codec profile that
+-- supports 4:4:4 chroma sampling. These values for Profile (CodecProfile)
+-- support 4:4:4 chroma sampling: Apple ProRes 4444 (APPLE_PRORES_4444) or
+-- Apple ProRes 4444 XQ (APPLE_PRORES_4444_XQ). When you set Chroma
+-- sampling to Preserve 4:4:4 sampling, you must disable all video
+-- preprocessors except for Nexguard file marker (PartnerWatermarking).
+-- When you set Chroma sampling to Preserve 4:4:4 sampling and use
+-- framerate conversion, you must set Frame rate conversion algorithm
+-- (FramerateConversionAlgorithm) to Drop duplicate (DUPLICATE_DROP).
+newtype ProresChromaSampling = ProresChromaSampling'
+  { fromProresChromaSampling ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProresChromaSampling_PRESERVE_444_SAMPLING :: ProresChromaSampling
+pattern ProresChromaSampling_PRESERVE_444_SAMPLING = ProresChromaSampling' "PRESERVE_444_SAMPLING"
+
+pattern ProresChromaSampling_SUBSAMPLE_TO_422 :: ProresChromaSampling
+pattern ProresChromaSampling_SUBSAMPLE_TO_422 = ProresChromaSampling' "SUBSAMPLE_TO_422"
+
+{-# COMPLETE
+  ProresChromaSampling_PRESERVE_444_SAMPLING,
+  ProresChromaSampling_SUBSAMPLE_TO_422,
+  ProresChromaSampling'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ProresCodecProfile.hs b/gen/Amazonka/MediaConvert/Types/ProresCodecProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ProresCodecProfile.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ProresCodecProfile
+-- 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.ProresCodecProfile
+  ( ProresCodecProfile
+      ( ..,
+        ProresCodecProfile_APPLE_PRORES_422,
+        ProresCodecProfile_APPLE_PRORES_422_HQ,
+        ProresCodecProfile_APPLE_PRORES_422_LT,
+        ProresCodecProfile_APPLE_PRORES_422_PROXY,
+        ProresCodecProfile_APPLE_PRORES_4444,
+        ProresCodecProfile_APPLE_PRORES_4444_XQ
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Profile (ProResCodecProfile) to specify the type of Apple ProRes
+-- codec to use for this output.
+newtype ProresCodecProfile = ProresCodecProfile'
+  { fromProresCodecProfile ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProresCodecProfile_APPLE_PRORES_422 :: ProresCodecProfile
+pattern ProresCodecProfile_APPLE_PRORES_422 = ProresCodecProfile' "APPLE_PRORES_422"
+
+pattern ProresCodecProfile_APPLE_PRORES_422_HQ :: ProresCodecProfile
+pattern ProresCodecProfile_APPLE_PRORES_422_HQ = ProresCodecProfile' "APPLE_PRORES_422_HQ"
+
+pattern ProresCodecProfile_APPLE_PRORES_422_LT :: ProresCodecProfile
+pattern ProresCodecProfile_APPLE_PRORES_422_LT = ProresCodecProfile' "APPLE_PRORES_422_LT"
+
+pattern ProresCodecProfile_APPLE_PRORES_422_PROXY :: ProresCodecProfile
+pattern ProresCodecProfile_APPLE_PRORES_422_PROXY = ProresCodecProfile' "APPLE_PRORES_422_PROXY"
+
+pattern ProresCodecProfile_APPLE_PRORES_4444 :: ProresCodecProfile
+pattern ProresCodecProfile_APPLE_PRORES_4444 = ProresCodecProfile' "APPLE_PRORES_4444"
+
+pattern ProresCodecProfile_APPLE_PRORES_4444_XQ :: ProresCodecProfile
+pattern ProresCodecProfile_APPLE_PRORES_4444_XQ = ProresCodecProfile' "APPLE_PRORES_4444_XQ"
+
+{-# COMPLETE
+  ProresCodecProfile_APPLE_PRORES_422,
+  ProresCodecProfile_APPLE_PRORES_422_HQ,
+  ProresCodecProfile_APPLE_PRORES_422_LT,
+  ProresCodecProfile_APPLE_PRORES_422_PROXY,
+  ProresCodecProfile_APPLE_PRORES_4444,
+  ProresCodecProfile_APPLE_PRORES_4444_XQ,
+  ProresCodecProfile'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ProresFramerateControl.hs b/gen/Amazonka/MediaConvert/Types/ProresFramerateControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ProresFramerateControl.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ProresFramerateControl
+-- 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.ProresFramerateControl
+  ( ProresFramerateControl
+      ( ..,
+        ProresFramerateControl_INITIALIZE_FROM_SOURCE,
+        ProresFramerateControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+newtype ProresFramerateControl = ProresFramerateControl'
+  { fromProresFramerateControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProresFramerateControl_INITIALIZE_FROM_SOURCE :: ProresFramerateControl
+pattern ProresFramerateControl_INITIALIZE_FROM_SOURCE = ProresFramerateControl' "INITIALIZE_FROM_SOURCE"
+
+pattern ProresFramerateControl_SPECIFIED :: ProresFramerateControl
+pattern ProresFramerateControl_SPECIFIED = ProresFramerateControl' "SPECIFIED"
+
+{-# COMPLETE
+  ProresFramerateControl_INITIALIZE_FROM_SOURCE,
+  ProresFramerateControl_SPECIFIED,
+  ProresFramerateControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ProresFramerateConversionAlgorithm.hs b/gen/Amazonka/MediaConvert/Types/ProresFramerateConversionAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ProresFramerateConversionAlgorithm.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ProresFramerateConversionAlgorithm
+-- 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.ProresFramerateConversionAlgorithm
+  ( ProresFramerateConversionAlgorithm
+      ( ..,
+        ProresFramerateConversionAlgorithm_DUPLICATE_DROP,
+        ProresFramerateConversionAlgorithm_FRAMEFORMER,
+        ProresFramerateConversionAlgorithm_INTERPOLATE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+newtype ProresFramerateConversionAlgorithm = ProresFramerateConversionAlgorithm'
+  { fromProresFramerateConversionAlgorithm ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProresFramerateConversionAlgorithm_DUPLICATE_DROP :: ProresFramerateConversionAlgorithm
+pattern ProresFramerateConversionAlgorithm_DUPLICATE_DROP = ProresFramerateConversionAlgorithm' "DUPLICATE_DROP"
+
+pattern ProresFramerateConversionAlgorithm_FRAMEFORMER :: ProresFramerateConversionAlgorithm
+pattern ProresFramerateConversionAlgorithm_FRAMEFORMER = ProresFramerateConversionAlgorithm' "FRAMEFORMER"
+
+pattern ProresFramerateConversionAlgorithm_INTERPOLATE :: ProresFramerateConversionAlgorithm
+pattern ProresFramerateConversionAlgorithm_INTERPOLATE = ProresFramerateConversionAlgorithm' "INTERPOLATE"
+
+{-# COMPLETE
+  ProresFramerateConversionAlgorithm_DUPLICATE_DROP,
+  ProresFramerateConversionAlgorithm_FRAMEFORMER,
+  ProresFramerateConversionAlgorithm_INTERPOLATE,
+  ProresFramerateConversionAlgorithm'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ProresInterlaceMode.hs b/gen/Amazonka/MediaConvert/Types/ProresInterlaceMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ProresInterlaceMode.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ProresInterlaceMode
+-- 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.ProresInterlaceMode
+  ( ProresInterlaceMode
+      ( ..,
+        ProresInterlaceMode_BOTTOM_FIELD,
+        ProresInterlaceMode_FOLLOW_BOTTOM_FIELD,
+        ProresInterlaceMode_FOLLOW_TOP_FIELD,
+        ProresInterlaceMode_PROGRESSIVE,
+        ProresInterlaceMode_TOP_FIELD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+newtype ProresInterlaceMode = ProresInterlaceMode'
+  { fromProresInterlaceMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProresInterlaceMode_BOTTOM_FIELD :: ProresInterlaceMode
+pattern ProresInterlaceMode_BOTTOM_FIELD = ProresInterlaceMode' "BOTTOM_FIELD"
+
+pattern ProresInterlaceMode_FOLLOW_BOTTOM_FIELD :: ProresInterlaceMode
+pattern ProresInterlaceMode_FOLLOW_BOTTOM_FIELD = ProresInterlaceMode' "FOLLOW_BOTTOM_FIELD"
+
+pattern ProresInterlaceMode_FOLLOW_TOP_FIELD :: ProresInterlaceMode
+pattern ProresInterlaceMode_FOLLOW_TOP_FIELD = ProresInterlaceMode' "FOLLOW_TOP_FIELD"
+
+pattern ProresInterlaceMode_PROGRESSIVE :: ProresInterlaceMode
+pattern ProresInterlaceMode_PROGRESSIVE = ProresInterlaceMode' "PROGRESSIVE"
+
+pattern ProresInterlaceMode_TOP_FIELD :: ProresInterlaceMode
+pattern ProresInterlaceMode_TOP_FIELD = ProresInterlaceMode' "TOP_FIELD"
+
+{-# COMPLETE
+  ProresInterlaceMode_BOTTOM_FIELD,
+  ProresInterlaceMode_FOLLOW_BOTTOM_FIELD,
+  ProresInterlaceMode_FOLLOW_TOP_FIELD,
+  ProresInterlaceMode_PROGRESSIVE,
+  ProresInterlaceMode_TOP_FIELD,
+  ProresInterlaceMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ProresParControl.hs b/gen/Amazonka/MediaConvert/Types/ProresParControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ProresParControl.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ProresParControl
+-- 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.ProresParControl
+  ( ProresParControl
+      ( ..,
+        ProresParControl_INITIALIZE_FROM_SOURCE,
+        ProresParControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+newtype ProresParControl = ProresParControl'
+  { fromProresParControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProresParControl_INITIALIZE_FROM_SOURCE :: ProresParControl
+pattern ProresParControl_INITIALIZE_FROM_SOURCE = ProresParControl' "INITIALIZE_FROM_SOURCE"
+
+pattern ProresParControl_SPECIFIED :: ProresParControl
+pattern ProresParControl_SPECIFIED = ProresParControl' "SPECIFIED"
+
+{-# COMPLETE
+  ProresParControl_INITIALIZE_FROM_SOURCE,
+  ProresParControl_SPECIFIED,
+  ProresParControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ProresScanTypeConversionMode.hs b/gen/Amazonka/MediaConvert/Types/ProresScanTypeConversionMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ProresScanTypeConversionMode.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ProresScanTypeConversionMode
+-- 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.ProresScanTypeConversionMode
+  ( ProresScanTypeConversionMode
+      ( ..,
+        ProresScanTypeConversionMode_INTERLACED,
+        ProresScanTypeConversionMode_INTERLACED_OPTIMIZE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+newtype ProresScanTypeConversionMode = ProresScanTypeConversionMode'
+  { fromProresScanTypeConversionMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProresScanTypeConversionMode_INTERLACED :: ProresScanTypeConversionMode
+pattern ProresScanTypeConversionMode_INTERLACED = ProresScanTypeConversionMode' "INTERLACED"
+
+pattern ProresScanTypeConversionMode_INTERLACED_OPTIMIZE :: ProresScanTypeConversionMode
+pattern ProresScanTypeConversionMode_INTERLACED_OPTIMIZE = ProresScanTypeConversionMode' "INTERLACED_OPTIMIZE"
+
+{-# COMPLETE
+  ProresScanTypeConversionMode_INTERLACED,
+  ProresScanTypeConversionMode_INTERLACED_OPTIMIZE,
+  ProresScanTypeConversionMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ProresSettings.hs b/gen/Amazonka/MediaConvert/Types/ProresSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ProresSettings.hs
@@ -0,0 +1,565 @@
+{-# 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.ProresSettings
+-- 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.ProresSettings 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.ProresChromaSampling
+import Amazonka.MediaConvert.Types.ProresCodecProfile
+import Amazonka.MediaConvert.Types.ProresFramerateControl
+import Amazonka.MediaConvert.Types.ProresFramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.ProresInterlaceMode
+import Amazonka.MediaConvert.Types.ProresParControl
+import Amazonka.MediaConvert.Types.ProresScanTypeConversionMode
+import Amazonka.MediaConvert.Types.ProresSlowPal
+import Amazonka.MediaConvert.Types.ProresTelecine
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value PRORES.
+--
+-- /See:/ 'newProresSettings' smart constructor.
+data ProresSettings = ProresSettings'
+  { -- | This setting applies only to ProRes 4444 and ProRes 4444 XQ outputs that
+    -- you create from inputs that use 4:4:4 chroma sampling. Set Preserve
+    -- 4:4:4 sampling (PRESERVE_444_SAMPLING) to allow outputs to also use
+    -- 4:4:4 chroma sampling. You must specify a value for this setting when
+    -- your output codec profile supports 4:4:4 chroma sampling. Related
+    -- Settings: When you set Chroma sampling to Preserve 4:4:4 sampling
+    -- (PRESERVE_444_SAMPLING), you must choose an output codec profile that
+    -- supports 4:4:4 chroma sampling. These values for Profile (CodecProfile)
+    -- support 4:4:4 chroma sampling: Apple ProRes 4444 (APPLE_PRORES_4444) or
+    -- Apple ProRes 4444 XQ (APPLE_PRORES_4444_XQ). When you set Chroma
+    -- sampling to Preserve 4:4:4 sampling, you must disable all video
+    -- preprocessors except for Nexguard file marker (PartnerWatermarking).
+    -- When you set Chroma sampling to Preserve 4:4:4 sampling and use
+    -- framerate conversion, you must set Frame rate conversion algorithm
+    -- (FramerateConversionAlgorithm) to Drop duplicate (DUPLICATE_DROP).
+    chromaSampling :: Prelude.Maybe ProresChromaSampling,
+    -- | Use Profile (ProResCodecProfile) to specify the type of Apple ProRes
+    -- codec to use for this output.
+    codecProfile :: Prelude.Maybe ProresCodecProfile,
+    -- | If you are using the console, use the Framerate setting to specify the
+    -- frame rate for this output. If you want to keep the same frame rate as
+    -- the input video, choose Follow source. If you want to do frame rate
+    -- conversion, choose a frame rate from the dropdown list or choose Custom.
+    -- The framerates shown in the dropdown list are decimal approximations of
+    -- fractions. If you choose Custom, specify your frame rate as a fraction.
+    -- If you are creating your transcoding job specification as a JSON file
+    -- without the console, use FramerateControl to specify which value the
+    -- service uses for the frame rate for this output. Choose
+    -- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+    -- from the input. Choose SPECIFIED if you want the service to use the
+    -- frame rate you specify in the settings FramerateNumerator and
+    -- FramerateDenominator.
+    framerateControl :: Prelude.Maybe ProresFramerateControl,
+    -- | Choose the method that you want MediaConvert to use when increasing or
+    -- decreasing the frame rate. We recommend using drop duplicate
+    -- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+    -- 30 fps. For numerically complex conversions, you can use interpolate
+    -- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+    -- might introduce undesirable video artifacts. For complex frame rate
+    -- conversions, especially if your source video has already been converted
+    -- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+    -- motion-compensated interpolation. FrameFormer chooses the best
+    -- conversion method frame by frame. Note that using FrameFormer increases
+    -- the transcoding time and incurs a significant add-on cost.
+    framerateConversionAlgorithm :: Prelude.Maybe ProresFramerateConversionAlgorithm,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+    -- fraction. In this example, use 1001 for the value of
+    -- FramerateDenominator. When you use the console for transcode jobs that
+    -- use frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+    -- fraction. In this example, use 24000 for the value of
+    -- FramerateNumerator. When you use the console for transcode jobs that use
+    -- frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | Choose the scan line type for the output. Keep the default value,
+    -- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+    -- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+    -- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+    -- the same field polarity throughout. Use Follow, default top
+    -- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+    -- produce outputs with the same field polarity as the source. For jobs
+    -- that have multiple inputs, the output field polarity might change over
+    -- the course of the output. Follow behavior depends on the input scan
+    -- type. If the source is interlaced, the output will be interlaced with
+    -- the same polarity as the source. If the source is progressive, the
+    -- output will be interlaced with top field bottom field first, depending
+    -- on which of the Follow options you choose.
+    interlaceMode :: Prelude.Maybe ProresInterlaceMode,
+    -- | Optional. Specify how the service determines the pixel aspect ratio
+    -- (PAR) for this output. The default behavior, Follow source
+    -- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+    -- output. To specify a different PAR in the console, choose any value
+    -- other than Follow source. To specify a different PAR by editing the JSON
+    -- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+    -- setting, you must also specify values for the parNumerator and
+    -- parDenominator settings.
+    parControl :: Prelude.Maybe ProresParControl,
+    -- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+    -- the console, this corresponds to any value other than Follow source.
+    -- When you specify an output pixel aspect ratio (PAR) that is different
+    -- from your input video PAR, provide your output PAR as a ratio. For
+    -- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+    -- In this example, the value for parDenominator is 33.
+    parDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+    -- the console, this corresponds to any value other than Follow source.
+    -- When you specify an output pixel aspect ratio (PAR) that is different
+    -- from your input video PAR, provide your output PAR as a ratio. For
+    -- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+    -- In this example, the value for parNumerator is 40.
+    parNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | Use this setting for interlaced outputs, when your output frame rate is
+    -- half of your input frame rate. In this situation, choose Optimized
+    -- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+    -- output. In this case, each progressive frame from the input corresponds
+    -- to an interlaced field in the output. Keep the default value, Basic
+    -- interlacing (INTERLACED), for all other output frame rates. With basic
+    -- interlacing, MediaConvert performs any frame rate conversion first and
+    -- then interlaces the frames. When you choose Optimized interlacing and
+    -- you set your output frame rate to a value that isn\'t suitable for
+    -- optimized interlacing, MediaConvert automatically falls back to basic
+    -- interlacing. Required settings: To use optimized interlacing, you must
+    -- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+    -- optimized interlacing for hard telecine outputs. You must also set
+    -- Interlace mode (interlaceMode) to a value other than Progressive
+    -- (PROGRESSIVE).
+    scanTypeConversionMode :: Prelude.Maybe ProresScanTypeConversionMode,
+    -- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+    -- per second (fps). Enable slow PAL to create a 25 fps output. When you
+    -- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+    -- resamples your audio to keep it synchronized with the video. Note that
+    -- enabling this setting will slightly reduce the duration of your video.
+    -- Required settings: You must also set Framerate to 25. In your JSON job
+    -- specification, set (framerateControl) to (SPECIFIED),
+    -- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+    slowPal :: Prelude.Maybe ProresSlowPal,
+    -- | When you do frame rate conversion from 23.976 frames per second (fps) to
+    -- 29.97 fps, and your output scan type is interlaced, you can optionally
+    -- enable hard telecine (HARD) to create a smoother picture. When you keep
+    -- the default value, None (NONE), MediaConvert does a standard frame rate
+    -- conversion to 29.97 without doing anything with the field polarity to
+    -- create a smoother picture.
+    telecine :: Prelude.Maybe ProresTelecine
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProresSettings' 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:
+--
+-- 'chromaSampling', 'proresSettings_chromaSampling' - This setting applies only to ProRes 4444 and ProRes 4444 XQ outputs that
+-- you create from inputs that use 4:4:4 chroma sampling. Set Preserve
+-- 4:4:4 sampling (PRESERVE_444_SAMPLING) to allow outputs to also use
+-- 4:4:4 chroma sampling. You must specify a value for this setting when
+-- your output codec profile supports 4:4:4 chroma sampling. Related
+-- Settings: When you set Chroma sampling to Preserve 4:4:4 sampling
+-- (PRESERVE_444_SAMPLING), you must choose an output codec profile that
+-- supports 4:4:4 chroma sampling. These values for Profile (CodecProfile)
+-- support 4:4:4 chroma sampling: Apple ProRes 4444 (APPLE_PRORES_4444) or
+-- Apple ProRes 4444 XQ (APPLE_PRORES_4444_XQ). When you set Chroma
+-- sampling to Preserve 4:4:4 sampling, you must disable all video
+-- preprocessors except for Nexguard file marker (PartnerWatermarking).
+-- When you set Chroma sampling to Preserve 4:4:4 sampling and use
+-- framerate conversion, you must set Frame rate conversion algorithm
+-- (FramerateConversionAlgorithm) to Drop duplicate (DUPLICATE_DROP).
+--
+-- 'codecProfile', 'proresSettings_codecProfile' - Use Profile (ProResCodecProfile) to specify the type of Apple ProRes
+-- codec to use for this output.
+--
+-- 'framerateControl', 'proresSettings_framerateControl' - If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+--
+-- 'framerateConversionAlgorithm', 'proresSettings_framerateConversionAlgorithm' - Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+--
+-- 'framerateDenominator', 'proresSettings_framerateDenominator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'framerateNumerator', 'proresSettings_framerateNumerator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'interlaceMode', 'proresSettings_interlaceMode' - Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+--
+-- 'parControl', 'proresSettings_parControl' - Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+--
+-- 'parDenominator', 'proresSettings_parDenominator' - Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parDenominator is 33.
+--
+-- 'parNumerator', 'proresSettings_parNumerator' - Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parNumerator is 40.
+--
+-- 'scanTypeConversionMode', 'proresSettings_scanTypeConversionMode' - Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+--
+-- 'slowPal', 'proresSettings_slowPal' - Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+--
+-- 'telecine', 'proresSettings_telecine' - When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard telecine (HARD) to create a smoother picture. When you keep
+-- the default value, None (NONE), MediaConvert does a standard frame rate
+-- conversion to 29.97 without doing anything with the field polarity to
+-- create a smoother picture.
+newProresSettings ::
+  ProresSettings
+newProresSettings =
+  ProresSettings'
+    { chromaSampling = Prelude.Nothing,
+      codecProfile = Prelude.Nothing,
+      framerateControl = Prelude.Nothing,
+      framerateConversionAlgorithm = Prelude.Nothing,
+      framerateDenominator = Prelude.Nothing,
+      framerateNumerator = Prelude.Nothing,
+      interlaceMode = Prelude.Nothing,
+      parControl = Prelude.Nothing,
+      parDenominator = Prelude.Nothing,
+      parNumerator = Prelude.Nothing,
+      scanTypeConversionMode = Prelude.Nothing,
+      slowPal = Prelude.Nothing,
+      telecine = Prelude.Nothing
+    }
+
+-- | This setting applies only to ProRes 4444 and ProRes 4444 XQ outputs that
+-- you create from inputs that use 4:4:4 chroma sampling. Set Preserve
+-- 4:4:4 sampling (PRESERVE_444_SAMPLING) to allow outputs to also use
+-- 4:4:4 chroma sampling. You must specify a value for this setting when
+-- your output codec profile supports 4:4:4 chroma sampling. Related
+-- Settings: When you set Chroma sampling to Preserve 4:4:4 sampling
+-- (PRESERVE_444_SAMPLING), you must choose an output codec profile that
+-- supports 4:4:4 chroma sampling. These values for Profile (CodecProfile)
+-- support 4:4:4 chroma sampling: Apple ProRes 4444 (APPLE_PRORES_4444) or
+-- Apple ProRes 4444 XQ (APPLE_PRORES_4444_XQ). When you set Chroma
+-- sampling to Preserve 4:4:4 sampling, you must disable all video
+-- preprocessors except for Nexguard file marker (PartnerWatermarking).
+-- When you set Chroma sampling to Preserve 4:4:4 sampling and use
+-- framerate conversion, you must set Frame rate conversion algorithm
+-- (FramerateConversionAlgorithm) to Drop duplicate (DUPLICATE_DROP).
+proresSettings_chromaSampling :: Lens.Lens' ProresSettings (Prelude.Maybe ProresChromaSampling)
+proresSettings_chromaSampling = Lens.lens (\ProresSettings' {chromaSampling} -> chromaSampling) (\s@ProresSettings' {} a -> s {chromaSampling = a} :: ProresSettings)
+
+-- | Use Profile (ProResCodecProfile) to specify the type of Apple ProRes
+-- codec to use for this output.
+proresSettings_codecProfile :: Lens.Lens' ProresSettings (Prelude.Maybe ProresCodecProfile)
+proresSettings_codecProfile = Lens.lens (\ProresSettings' {codecProfile} -> codecProfile) (\s@ProresSettings' {} a -> s {codecProfile = a} :: ProresSettings)
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+proresSettings_framerateControl :: Lens.Lens' ProresSettings (Prelude.Maybe ProresFramerateControl)
+proresSettings_framerateControl = Lens.lens (\ProresSettings' {framerateControl} -> framerateControl) (\s@ProresSettings' {} a -> s {framerateControl = a} :: ProresSettings)
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+proresSettings_framerateConversionAlgorithm :: Lens.Lens' ProresSettings (Prelude.Maybe ProresFramerateConversionAlgorithm)
+proresSettings_framerateConversionAlgorithm = Lens.lens (\ProresSettings' {framerateConversionAlgorithm} -> framerateConversionAlgorithm) (\s@ProresSettings' {} a -> s {framerateConversionAlgorithm = a} :: ProresSettings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+proresSettings_framerateDenominator :: Lens.Lens' ProresSettings (Prelude.Maybe Prelude.Natural)
+proresSettings_framerateDenominator = Lens.lens (\ProresSettings' {framerateDenominator} -> framerateDenominator) (\s@ProresSettings' {} a -> s {framerateDenominator = a} :: ProresSettings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+proresSettings_framerateNumerator :: Lens.Lens' ProresSettings (Prelude.Maybe Prelude.Natural)
+proresSettings_framerateNumerator = Lens.lens (\ProresSettings' {framerateNumerator} -> framerateNumerator) (\s@ProresSettings' {} a -> s {framerateNumerator = a} :: ProresSettings)
+
+-- | Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+proresSettings_interlaceMode :: Lens.Lens' ProresSettings (Prelude.Maybe ProresInterlaceMode)
+proresSettings_interlaceMode = Lens.lens (\ProresSettings' {interlaceMode} -> interlaceMode) (\s@ProresSettings' {} a -> s {interlaceMode = a} :: ProresSettings)
+
+-- | Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+proresSettings_parControl :: Lens.Lens' ProresSettings (Prelude.Maybe ProresParControl)
+proresSettings_parControl = Lens.lens (\ProresSettings' {parControl} -> parControl) (\s@ProresSettings' {} a -> s {parControl = a} :: ProresSettings)
+
+-- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parDenominator is 33.
+proresSettings_parDenominator :: Lens.Lens' ProresSettings (Prelude.Maybe Prelude.Natural)
+proresSettings_parDenominator = Lens.lens (\ProresSettings' {parDenominator} -> parDenominator) (\s@ProresSettings' {} a -> s {parDenominator = a} :: ProresSettings)
+
+-- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parNumerator is 40.
+proresSettings_parNumerator :: Lens.Lens' ProresSettings (Prelude.Maybe Prelude.Natural)
+proresSettings_parNumerator = Lens.lens (\ProresSettings' {parNumerator} -> parNumerator) (\s@ProresSettings' {} a -> s {parNumerator = a} :: ProresSettings)
+
+-- | Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+proresSettings_scanTypeConversionMode :: Lens.Lens' ProresSettings (Prelude.Maybe ProresScanTypeConversionMode)
+proresSettings_scanTypeConversionMode = Lens.lens (\ProresSettings' {scanTypeConversionMode} -> scanTypeConversionMode) (\s@ProresSettings' {} a -> s {scanTypeConversionMode = a} :: ProresSettings)
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+proresSettings_slowPal :: Lens.Lens' ProresSettings (Prelude.Maybe ProresSlowPal)
+proresSettings_slowPal = Lens.lens (\ProresSettings' {slowPal} -> slowPal) (\s@ProresSettings' {} a -> s {slowPal = a} :: ProresSettings)
+
+-- | When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard telecine (HARD) to create a smoother picture. When you keep
+-- the default value, None (NONE), MediaConvert does a standard frame rate
+-- conversion to 29.97 without doing anything with the field polarity to
+-- create a smoother picture.
+proresSettings_telecine :: Lens.Lens' ProresSettings (Prelude.Maybe ProresTelecine)
+proresSettings_telecine = Lens.lens (\ProresSettings' {telecine} -> telecine) (\s@ProresSettings' {} a -> s {telecine = a} :: ProresSettings)
+
+instance Data.FromJSON ProresSettings where
+  parseJSON =
+    Data.withObject
+      "ProresSettings"
+      ( \x ->
+          ProresSettings'
+            Prelude.<$> (x Data..:? "chromaSampling")
+            Prelude.<*> (x Data..:? "codecProfile")
+            Prelude.<*> (x Data..:? "framerateControl")
+            Prelude.<*> (x Data..:? "framerateConversionAlgorithm")
+            Prelude.<*> (x Data..:? "framerateDenominator")
+            Prelude.<*> (x Data..:? "framerateNumerator")
+            Prelude.<*> (x Data..:? "interlaceMode")
+            Prelude.<*> (x Data..:? "parControl")
+            Prelude.<*> (x Data..:? "parDenominator")
+            Prelude.<*> (x Data..:? "parNumerator")
+            Prelude.<*> (x Data..:? "scanTypeConversionMode")
+            Prelude.<*> (x Data..:? "slowPal")
+            Prelude.<*> (x Data..:? "telecine")
+      )
+
+instance Prelude.Hashable ProresSettings where
+  hashWithSalt _salt ProresSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` chromaSampling
+      `Prelude.hashWithSalt` codecProfile
+      `Prelude.hashWithSalt` framerateControl
+      `Prelude.hashWithSalt` framerateConversionAlgorithm
+      `Prelude.hashWithSalt` framerateDenominator
+      `Prelude.hashWithSalt` framerateNumerator
+      `Prelude.hashWithSalt` interlaceMode
+      `Prelude.hashWithSalt` parControl
+      `Prelude.hashWithSalt` parDenominator
+      `Prelude.hashWithSalt` parNumerator
+      `Prelude.hashWithSalt` scanTypeConversionMode
+      `Prelude.hashWithSalt` slowPal
+      `Prelude.hashWithSalt` telecine
+
+instance Prelude.NFData ProresSettings where
+  rnf ProresSettings' {..} =
+    Prelude.rnf chromaSampling
+      `Prelude.seq` Prelude.rnf codecProfile
+      `Prelude.seq` Prelude.rnf framerateControl
+      `Prelude.seq` Prelude.rnf framerateConversionAlgorithm
+      `Prelude.seq` Prelude.rnf framerateDenominator
+      `Prelude.seq` Prelude.rnf framerateNumerator
+      `Prelude.seq` Prelude.rnf interlaceMode
+      `Prelude.seq` Prelude.rnf parControl
+      `Prelude.seq` Prelude.rnf parDenominator
+      `Prelude.seq` Prelude.rnf parNumerator
+      `Prelude.seq` Prelude.rnf scanTypeConversionMode
+      `Prelude.seq` Prelude.rnf slowPal
+      `Prelude.seq` Prelude.rnf telecine
+
+instance Data.ToJSON ProresSettings where
+  toJSON ProresSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("chromaSampling" Data..=)
+              Prelude.<$> chromaSampling,
+            ("codecProfile" Data..=) Prelude.<$> codecProfile,
+            ("framerateControl" Data..=)
+              Prelude.<$> framerateControl,
+            ("framerateConversionAlgorithm" Data..=)
+              Prelude.<$> framerateConversionAlgorithm,
+            ("framerateDenominator" Data..=)
+              Prelude.<$> framerateDenominator,
+            ("framerateNumerator" Data..=)
+              Prelude.<$> framerateNumerator,
+            ("interlaceMode" Data..=) Prelude.<$> interlaceMode,
+            ("parControl" Data..=) Prelude.<$> parControl,
+            ("parDenominator" Data..=)
+              Prelude.<$> parDenominator,
+            ("parNumerator" Data..=) Prelude.<$> parNumerator,
+            ("scanTypeConversionMode" Data..=)
+              Prelude.<$> scanTypeConversionMode,
+            ("slowPal" Data..=) Prelude.<$> slowPal,
+            ("telecine" Data..=) Prelude.<$> telecine
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/ProresSlowPal.hs b/gen/Amazonka/MediaConvert/Types/ProresSlowPal.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ProresSlowPal.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ProresSlowPal
+-- 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.ProresSlowPal
+  ( ProresSlowPal
+      ( ..,
+        ProresSlowPal_DISABLED,
+        ProresSlowPal_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output. When you
+-- enable slow PAL, MediaConvert relabels the video frames to 25 fps and
+-- resamples your audio to keep it synchronized with the video. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Required settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+newtype ProresSlowPal = ProresSlowPal'
+  { fromProresSlowPal ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProresSlowPal_DISABLED :: ProresSlowPal
+pattern ProresSlowPal_DISABLED = ProresSlowPal' "DISABLED"
+
+pattern ProresSlowPal_ENABLED :: ProresSlowPal
+pattern ProresSlowPal_ENABLED = ProresSlowPal' "ENABLED"
+
+{-# COMPLETE
+  ProresSlowPal_DISABLED,
+  ProresSlowPal_ENABLED,
+  ProresSlowPal'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ProresTelecine.hs b/gen/Amazonka/MediaConvert/Types/ProresTelecine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ProresTelecine.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ProresTelecine
+-- 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.ProresTelecine
+  ( ProresTelecine
+      ( ..,
+        ProresTelecine_HARD,
+        ProresTelecine_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard telecine (HARD) to create a smoother picture. When you keep
+-- the default value, None (NONE), MediaConvert does a standard frame rate
+-- conversion to 29.97 without doing anything with the field polarity to
+-- create a smoother picture.
+newtype ProresTelecine = ProresTelecine'
+  { fromProresTelecine ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProresTelecine_HARD :: ProresTelecine
+pattern ProresTelecine_HARD = ProresTelecine' "HARD"
+
+pattern ProresTelecine_NONE :: ProresTelecine
+pattern ProresTelecine_NONE = ProresTelecine' "NONE"
+
+{-# COMPLETE
+  ProresTelecine_HARD,
+  ProresTelecine_NONE,
+  ProresTelecine'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Queue.hs b/gen/Amazonka/MediaConvert/Types/Queue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Queue.hs
@@ -0,0 +1,235 @@
+{-# 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.Queue
+-- 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.Queue 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.PricingPlan
+import Amazonka.MediaConvert.Types.QueueStatus
+import Amazonka.MediaConvert.Types.ReservationPlan
+import Amazonka.MediaConvert.Types.Type
+import qualified Amazonka.Prelude as Prelude
+
+-- | You can use queues to manage the resources that are available to your
+-- AWS account for running multiple transcoding jobs at the same time. If
+-- you don\'t specify a queue, the service sends all jobs through the
+-- default queue. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-queues.html.
+--
+-- /See:/ 'newQueue' smart constructor.
+data Queue = Queue'
+  { -- | An identifier for this resource that is unique within all of AWS.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp in epoch seconds for when you created the queue.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | An optional description that you create for each queue.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp in epoch seconds for when you most recently updated the
+    -- queue.
+    lastUpdated :: Prelude.Maybe Data.POSIX,
+    -- | Specifies whether the pricing plan for the queue is on-demand or
+    -- reserved. For on-demand, you pay per minute, billed in increments of .01
+    -- minute. For reserved, you pay for the transcoding capacity of the entire
+    -- queue, regardless of how much or how little you use it. Reserved pricing
+    -- requires a 12-month commitment.
+    pricingPlan :: Prelude.Maybe PricingPlan,
+    -- | The estimated number of jobs with a PROGRESSING status.
+    progressingJobsCount :: Prelude.Maybe Prelude.Int,
+    -- | Details about the pricing plan for your reserved queue. Required for
+    -- reserved queues and not applicable to on-demand queues.
+    reservationPlan :: Prelude.Maybe ReservationPlan,
+    -- | Queues can be ACTIVE or PAUSED. If you pause a queue, the service won\'t
+    -- begin processing jobs in that queue. Jobs that are running when you
+    -- pause the queue continue to run until they finish or result in an error.
+    status :: Prelude.Maybe QueueStatus,
+    -- | The estimated number of jobs with a SUBMITTED status.
+    submittedJobsCount :: Prelude.Maybe Prelude.Int,
+    -- | Specifies whether this on-demand queue is system or custom. System
+    -- queues are built in. You can\'t modify or delete system queues. You can
+    -- create and modify custom queues.
+    type' :: Prelude.Maybe Type,
+    -- | A name that you create for each queue. Each name must be unique within
+    -- your account.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Queue' 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:
+--
+-- 'arn', 'queue_arn' - An identifier for this resource that is unique within all of AWS.
+--
+-- 'createdAt', 'queue_createdAt' - The timestamp in epoch seconds for when you created the queue.
+--
+-- 'description', 'queue_description' - An optional description that you create for each queue.
+--
+-- 'lastUpdated', 'queue_lastUpdated' - The timestamp in epoch seconds for when you most recently updated the
+-- queue.
+--
+-- 'pricingPlan', 'queue_pricingPlan' - Specifies whether the pricing plan for the queue is on-demand or
+-- reserved. For on-demand, you pay per minute, billed in increments of .01
+-- minute. For reserved, you pay for the transcoding capacity of the entire
+-- queue, regardless of how much or how little you use it. Reserved pricing
+-- requires a 12-month commitment.
+--
+-- 'progressingJobsCount', 'queue_progressingJobsCount' - The estimated number of jobs with a PROGRESSING status.
+--
+-- 'reservationPlan', 'queue_reservationPlan' - Details about the pricing plan for your reserved queue. Required for
+-- reserved queues and not applicable to on-demand queues.
+--
+-- 'status', 'queue_status' - Queues can be ACTIVE or PAUSED. If you pause a queue, the service won\'t
+-- begin processing jobs in that queue. Jobs that are running when you
+-- pause the queue continue to run until they finish or result in an error.
+--
+-- 'submittedJobsCount', 'queue_submittedJobsCount' - The estimated number of jobs with a SUBMITTED status.
+--
+-- 'type'', 'queue_type' - Specifies whether this on-demand queue is system or custom. System
+-- queues are built in. You can\'t modify or delete system queues. You can
+-- create and modify custom queues.
+--
+-- 'name', 'queue_name' - A name that you create for each queue. Each name must be unique within
+-- your account.
+newQueue ::
+  -- | 'name'
+  Prelude.Text ->
+  Queue
+newQueue pName_ =
+  Queue'
+    { arn = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lastUpdated = Prelude.Nothing,
+      pricingPlan = Prelude.Nothing,
+      progressingJobsCount = Prelude.Nothing,
+      reservationPlan = Prelude.Nothing,
+      status = Prelude.Nothing,
+      submittedJobsCount = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | An identifier for this resource that is unique within all of AWS.
+queue_arn :: Lens.Lens' Queue (Prelude.Maybe Prelude.Text)
+queue_arn = Lens.lens (\Queue' {arn} -> arn) (\s@Queue' {} a -> s {arn = a} :: Queue)
+
+-- | The timestamp in epoch seconds for when you created the queue.
+queue_createdAt :: Lens.Lens' Queue (Prelude.Maybe Prelude.UTCTime)
+queue_createdAt = Lens.lens (\Queue' {createdAt} -> createdAt) (\s@Queue' {} a -> s {createdAt = a} :: Queue) Prelude.. Lens.mapping Data._Time
+
+-- | An optional description that you create for each queue.
+queue_description :: Lens.Lens' Queue (Prelude.Maybe Prelude.Text)
+queue_description = Lens.lens (\Queue' {description} -> description) (\s@Queue' {} a -> s {description = a} :: Queue)
+
+-- | The timestamp in epoch seconds for when you most recently updated the
+-- queue.
+queue_lastUpdated :: Lens.Lens' Queue (Prelude.Maybe Prelude.UTCTime)
+queue_lastUpdated = Lens.lens (\Queue' {lastUpdated} -> lastUpdated) (\s@Queue' {} a -> s {lastUpdated = a} :: Queue) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies whether the pricing plan for the queue is on-demand or
+-- reserved. For on-demand, you pay per minute, billed in increments of .01
+-- minute. For reserved, you pay for the transcoding capacity of the entire
+-- queue, regardless of how much or how little you use it. Reserved pricing
+-- requires a 12-month commitment.
+queue_pricingPlan :: Lens.Lens' Queue (Prelude.Maybe PricingPlan)
+queue_pricingPlan = Lens.lens (\Queue' {pricingPlan} -> pricingPlan) (\s@Queue' {} a -> s {pricingPlan = a} :: Queue)
+
+-- | The estimated number of jobs with a PROGRESSING status.
+queue_progressingJobsCount :: Lens.Lens' Queue (Prelude.Maybe Prelude.Int)
+queue_progressingJobsCount = Lens.lens (\Queue' {progressingJobsCount} -> progressingJobsCount) (\s@Queue' {} a -> s {progressingJobsCount = a} :: Queue)
+
+-- | Details about the pricing plan for your reserved queue. Required for
+-- reserved queues and not applicable to on-demand queues.
+queue_reservationPlan :: Lens.Lens' Queue (Prelude.Maybe ReservationPlan)
+queue_reservationPlan = Lens.lens (\Queue' {reservationPlan} -> reservationPlan) (\s@Queue' {} a -> s {reservationPlan = a} :: Queue)
+
+-- | Queues can be ACTIVE or PAUSED. If you pause a queue, the service won\'t
+-- begin processing jobs in that queue. Jobs that are running when you
+-- pause the queue continue to run until they finish or result in an error.
+queue_status :: Lens.Lens' Queue (Prelude.Maybe QueueStatus)
+queue_status = Lens.lens (\Queue' {status} -> status) (\s@Queue' {} a -> s {status = a} :: Queue)
+
+-- | The estimated number of jobs with a SUBMITTED status.
+queue_submittedJobsCount :: Lens.Lens' Queue (Prelude.Maybe Prelude.Int)
+queue_submittedJobsCount = Lens.lens (\Queue' {submittedJobsCount} -> submittedJobsCount) (\s@Queue' {} a -> s {submittedJobsCount = a} :: Queue)
+
+-- | Specifies whether this on-demand queue is system or custom. System
+-- queues are built in. You can\'t modify or delete system queues. You can
+-- create and modify custom queues.
+queue_type :: Lens.Lens' Queue (Prelude.Maybe Type)
+queue_type = Lens.lens (\Queue' {type'} -> type') (\s@Queue' {} a -> s {type' = a} :: Queue)
+
+-- | A name that you create for each queue. Each name must be unique within
+-- your account.
+queue_name :: Lens.Lens' Queue Prelude.Text
+queue_name = Lens.lens (\Queue' {name} -> name) (\s@Queue' {} a -> s {name = a} :: Queue)
+
+instance Data.FromJSON Queue where
+  parseJSON =
+    Data.withObject
+      "Queue"
+      ( \x ->
+          Queue'
+            Prelude.<$> (x Data..:? "arn")
+            Prelude.<*> (x Data..:? "createdAt")
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "lastUpdated")
+            Prelude.<*> (x Data..:? "pricingPlan")
+            Prelude.<*> (x Data..:? "progressingJobsCount")
+            Prelude.<*> (x Data..:? "reservationPlan")
+            Prelude.<*> (x Data..:? "status")
+            Prelude.<*> (x Data..:? "submittedJobsCount")
+            Prelude.<*> (x Data..:? "type")
+            Prelude.<*> (x Data..: "name")
+      )
+
+instance Prelude.Hashable Queue where
+  hashWithSalt _salt Queue' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` lastUpdated
+      `Prelude.hashWithSalt` pricingPlan
+      `Prelude.hashWithSalt` progressingJobsCount
+      `Prelude.hashWithSalt` reservationPlan
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` submittedJobsCount
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData Queue where
+  rnf Queue' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastUpdated
+      `Prelude.seq` Prelude.rnf pricingPlan
+      `Prelude.seq` Prelude.rnf progressingJobsCount
+      `Prelude.seq` Prelude.rnf reservationPlan
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf submittedJobsCount
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/MediaConvert/Types/QueueListBy.hs b/gen/Amazonka/MediaConvert/Types/QueueListBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/QueueListBy.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.QueueListBy
+-- 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.QueueListBy
+  ( QueueListBy
+      ( ..,
+        QueueListBy_CREATION_DATE,
+        QueueListBy_NAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. When you request a list of queues, you can choose to list them
+-- alphabetically by NAME or chronologically by CREATION_DATE. If you
+-- don\'t specify, the service will list them by creation date.
+newtype QueueListBy = QueueListBy'
+  { fromQueueListBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern QueueListBy_CREATION_DATE :: QueueListBy
+pattern QueueListBy_CREATION_DATE = QueueListBy' "CREATION_DATE"
+
+pattern QueueListBy_NAME :: QueueListBy
+pattern QueueListBy_NAME = QueueListBy' "NAME"
+
+{-# COMPLETE
+  QueueListBy_CREATION_DATE,
+  QueueListBy_NAME,
+  QueueListBy'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/QueueStatus.hs b/gen/Amazonka/MediaConvert/Types/QueueStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/QueueStatus.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.QueueStatus
+-- 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.QueueStatus
+  ( QueueStatus
+      ( ..,
+        QueueStatus_ACTIVE,
+        QueueStatus_PAUSED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Queues can be ACTIVE or PAUSED. If you pause a queue, jobs in that queue
+-- won\'t begin. Jobs that are running when you pause a queue continue to
+-- run until they finish or result in an error.
+newtype QueueStatus = QueueStatus'
+  { fromQueueStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern QueueStatus_ACTIVE :: QueueStatus
+pattern QueueStatus_ACTIVE = QueueStatus' "ACTIVE"
+
+pattern QueueStatus_PAUSED :: QueueStatus
+pattern QueueStatus_PAUSED = QueueStatus' "PAUSED"
+
+{-# COMPLETE
+  QueueStatus_ACTIVE,
+  QueueStatus_PAUSED,
+  QueueStatus'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/QueueTransition.hs b/gen/Amazonka/MediaConvert/Types/QueueTransition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/QueueTransition.hs
@@ -0,0 +1,101 @@
+{-# 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.QueueTransition
+-- 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.QueueTransition where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Description of the source and destination queues between which the job
+-- has moved, along with the timestamp of the move
+--
+-- /See:/ 'newQueueTransition' smart constructor.
+data QueueTransition = QueueTransition'
+  { -- | The queue that the job was on after the transition.
+    destinationQueue :: Prelude.Maybe Prelude.Text,
+    -- | The queue that the job was on before the transition.
+    sourceQueue :: Prelude.Maybe Prelude.Text,
+    -- | The time, in Unix epoch format, that the job moved from the source queue
+    -- to the destination queue.
+    timestamp :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'QueueTransition' 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:
+--
+-- 'destinationQueue', 'queueTransition_destinationQueue' - The queue that the job was on after the transition.
+--
+-- 'sourceQueue', 'queueTransition_sourceQueue' - The queue that the job was on before the transition.
+--
+-- 'timestamp', 'queueTransition_timestamp' - The time, in Unix epoch format, that the job moved from the source queue
+-- to the destination queue.
+newQueueTransition ::
+  QueueTransition
+newQueueTransition =
+  QueueTransition'
+    { destinationQueue =
+        Prelude.Nothing,
+      sourceQueue = Prelude.Nothing,
+      timestamp = Prelude.Nothing
+    }
+
+-- | The queue that the job was on after the transition.
+queueTransition_destinationQueue :: Lens.Lens' QueueTransition (Prelude.Maybe Prelude.Text)
+queueTransition_destinationQueue = Lens.lens (\QueueTransition' {destinationQueue} -> destinationQueue) (\s@QueueTransition' {} a -> s {destinationQueue = a} :: QueueTransition)
+
+-- | The queue that the job was on before the transition.
+queueTransition_sourceQueue :: Lens.Lens' QueueTransition (Prelude.Maybe Prelude.Text)
+queueTransition_sourceQueue = Lens.lens (\QueueTransition' {sourceQueue} -> sourceQueue) (\s@QueueTransition' {} a -> s {sourceQueue = a} :: QueueTransition)
+
+-- | The time, in Unix epoch format, that the job moved from the source queue
+-- to the destination queue.
+queueTransition_timestamp :: Lens.Lens' QueueTransition (Prelude.Maybe Prelude.UTCTime)
+queueTransition_timestamp = Lens.lens (\QueueTransition' {timestamp} -> timestamp) (\s@QueueTransition' {} a -> s {timestamp = a} :: QueueTransition) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON QueueTransition where
+  parseJSON =
+    Data.withObject
+      "QueueTransition"
+      ( \x ->
+          QueueTransition'
+            Prelude.<$> (x Data..:? "destinationQueue")
+            Prelude.<*> (x Data..:? "sourceQueue")
+            Prelude.<*> (x Data..:? "timestamp")
+      )
+
+instance Prelude.Hashable QueueTransition where
+  hashWithSalt _salt QueueTransition' {..} =
+    _salt
+      `Prelude.hashWithSalt` destinationQueue
+      `Prelude.hashWithSalt` sourceQueue
+      `Prelude.hashWithSalt` timestamp
+
+instance Prelude.NFData QueueTransition where
+  rnf QueueTransition' {..} =
+    Prelude.rnf destinationQueue
+      `Prelude.seq` Prelude.rnf sourceQueue
+      `Prelude.seq` Prelude.rnf timestamp
diff --git a/gen/Amazonka/MediaConvert/Types/Rectangle.hs b/gen/Amazonka/MediaConvert/Types/Rectangle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Rectangle.hs
@@ -0,0 +1,125 @@
+{-# 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.Rectangle
+-- 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.Rectangle where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Rectangle to identify a specific area of the video frame.
+--
+-- /See:/ 'newRectangle' smart constructor.
+data Rectangle = Rectangle'
+  { -- | Height of rectangle in pixels. Specify only even numbers.
+    height :: Prelude.Maybe Prelude.Natural,
+    -- | Width of rectangle in pixels. Specify only even numbers.
+    width :: Prelude.Maybe Prelude.Natural,
+    -- | The distance, in pixels, between the rectangle and the left edge of the
+    -- video frame. Specify only even numbers.
+    x :: Prelude.Maybe Prelude.Natural,
+    -- | The distance, in pixels, between the rectangle and the top edge of the
+    -- video frame. Specify only even numbers.
+    y :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Rectangle' 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:
+--
+-- 'height', 'rectangle_height' - Height of rectangle in pixels. Specify only even numbers.
+--
+-- 'width', 'rectangle_width' - Width of rectangle in pixels. Specify only even numbers.
+--
+-- 'x', 'rectangle_x' - The distance, in pixels, between the rectangle and the left edge of the
+-- video frame. Specify only even numbers.
+--
+-- 'y', 'rectangle_y' - The distance, in pixels, between the rectangle and the top edge of the
+-- video frame. Specify only even numbers.
+newRectangle ::
+  Rectangle
+newRectangle =
+  Rectangle'
+    { height = Prelude.Nothing,
+      width = Prelude.Nothing,
+      x = Prelude.Nothing,
+      y = Prelude.Nothing
+    }
+
+-- | Height of rectangle in pixels. Specify only even numbers.
+rectangle_height :: Lens.Lens' Rectangle (Prelude.Maybe Prelude.Natural)
+rectangle_height = Lens.lens (\Rectangle' {height} -> height) (\s@Rectangle' {} a -> s {height = a} :: Rectangle)
+
+-- | Width of rectangle in pixels. Specify only even numbers.
+rectangle_width :: Lens.Lens' Rectangle (Prelude.Maybe Prelude.Natural)
+rectangle_width = Lens.lens (\Rectangle' {width} -> width) (\s@Rectangle' {} a -> s {width = a} :: Rectangle)
+
+-- | The distance, in pixels, between the rectangle and the left edge of the
+-- video frame. Specify only even numbers.
+rectangle_x :: Lens.Lens' Rectangle (Prelude.Maybe Prelude.Natural)
+rectangle_x = Lens.lens (\Rectangle' {x} -> x) (\s@Rectangle' {} a -> s {x = a} :: Rectangle)
+
+-- | The distance, in pixels, between the rectangle and the top edge of the
+-- video frame. Specify only even numbers.
+rectangle_y :: Lens.Lens' Rectangle (Prelude.Maybe Prelude.Natural)
+rectangle_y = Lens.lens (\Rectangle' {y} -> y) (\s@Rectangle' {} a -> s {y = a} :: Rectangle)
+
+instance Data.FromJSON Rectangle where
+  parseJSON =
+    Data.withObject
+      "Rectangle"
+      ( \x ->
+          Rectangle'
+            Prelude.<$> (x Data..:? "height")
+            Prelude.<*> (x Data..:? "width")
+            Prelude.<*> (x Data..:? "x")
+            Prelude.<*> (x Data..:? "y")
+      )
+
+instance Prelude.Hashable Rectangle where
+  hashWithSalt _salt Rectangle' {..} =
+    _salt
+      `Prelude.hashWithSalt` height
+      `Prelude.hashWithSalt` width
+      `Prelude.hashWithSalt` x
+      `Prelude.hashWithSalt` y
+
+instance Prelude.NFData Rectangle where
+  rnf Rectangle' {..} =
+    Prelude.rnf height
+      `Prelude.seq` Prelude.rnf width
+      `Prelude.seq` Prelude.rnf x
+      `Prelude.seq` Prelude.rnf y
+
+instance Data.ToJSON Rectangle where
+  toJSON Rectangle' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("height" Data..=) Prelude.<$> height,
+            ("width" Data..=) Prelude.<$> width,
+            ("x" Data..=) Prelude.<$> x,
+            ("y" Data..=) Prelude.<$> y
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/RemixSettings.hs b/gen/Amazonka/MediaConvert/Types/RemixSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/RemixSettings.hs
@@ -0,0 +1,171 @@
+{-# 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.RemixSettings
+-- 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.RemixSettings 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.ChannelMapping
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Manual audio remixing (RemixSettings) to adjust audio levels for
+-- each audio channel in each output of your job. With audio remixing, you
+-- can output more or fewer audio channels than your input audio source
+-- provides.
+--
+-- /See:/ 'newRemixSettings' smart constructor.
+data RemixSettings = RemixSettings'
+  { -- | Channel mapping (ChannelMapping) contains the group of fields that hold
+    -- the remixing value for each channel, in dB. Specify remix values to
+    -- indicate how much of the content from your input audio channel you want
+    -- in your output audio channels. Each instance of the InputChannels or
+    -- InputChannelsFineTune array specifies these values for one output
+    -- channel. Use one instance of this array for each output channel. In the
+    -- console, each array corresponds to a column in the graphical depiction
+    -- of the mapping matrix. The rows of the graphical matrix correspond to
+    -- input channels. Valid values are within the range from -60 (mute)
+    -- through 6. A setting of 0 passes the input channel unchanged to the
+    -- output channel (no attenuation or amplification). Use InputChannels or
+    -- InputChannelsFineTune to specify your remix values. Don\'t use both.
+    channelMapping :: Prelude.Maybe ChannelMapping,
+    -- | Specify the number of audio channels from your input that you want to
+    -- use in your output. With remixing, you might combine or split the data
+    -- in these channels, so the number of channels in your final output might
+    -- be different. If you are doing both input channel mapping and output
+    -- channel mapping, the number of output channels in your input mapping
+    -- must be the same as the number of input channels in your output mapping.
+    channelsIn :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the number of channels in this output after remixing. Valid
+    -- values: 1, 2, 4, 6, 8... 64. (1 and even numbers to 64.) If you are
+    -- doing both input channel mapping and output channel mapping, the number
+    -- of output channels in your input mapping must be the same as the number
+    -- of input channels in your output mapping.
+    channelsOut :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RemixSettings' 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:
+--
+-- 'channelMapping', 'remixSettings_channelMapping' - Channel mapping (ChannelMapping) contains the group of fields that hold
+-- the remixing value for each channel, in dB. Specify remix values to
+-- indicate how much of the content from your input audio channel you want
+-- in your output audio channels. Each instance of the InputChannels or
+-- InputChannelsFineTune array specifies these values for one output
+-- channel. Use one instance of this array for each output channel. In the
+-- console, each array corresponds to a column in the graphical depiction
+-- of the mapping matrix. The rows of the graphical matrix correspond to
+-- input channels. Valid values are within the range from -60 (mute)
+-- through 6. A setting of 0 passes the input channel unchanged to the
+-- output channel (no attenuation or amplification). Use InputChannels or
+-- InputChannelsFineTune to specify your remix values. Don\'t use both.
+--
+-- 'channelsIn', 'remixSettings_channelsIn' - Specify the number of audio channels from your input that you want to
+-- use in your output. With remixing, you might combine or split the data
+-- in these channels, so the number of channels in your final output might
+-- be different. If you are doing both input channel mapping and output
+-- channel mapping, the number of output channels in your input mapping
+-- must be the same as the number of input channels in your output mapping.
+--
+-- 'channelsOut', 'remixSettings_channelsOut' - Specify the number of channels in this output after remixing. Valid
+-- values: 1, 2, 4, 6, 8... 64. (1 and even numbers to 64.) If you are
+-- doing both input channel mapping and output channel mapping, the number
+-- of output channels in your input mapping must be the same as the number
+-- of input channels in your output mapping.
+newRemixSettings ::
+  RemixSettings
+newRemixSettings =
+  RemixSettings'
+    { channelMapping = Prelude.Nothing,
+      channelsIn = Prelude.Nothing,
+      channelsOut = Prelude.Nothing
+    }
+
+-- | Channel mapping (ChannelMapping) contains the group of fields that hold
+-- the remixing value for each channel, in dB. Specify remix values to
+-- indicate how much of the content from your input audio channel you want
+-- in your output audio channels. Each instance of the InputChannels or
+-- InputChannelsFineTune array specifies these values for one output
+-- channel. Use one instance of this array for each output channel. In the
+-- console, each array corresponds to a column in the graphical depiction
+-- of the mapping matrix. The rows of the graphical matrix correspond to
+-- input channels. Valid values are within the range from -60 (mute)
+-- through 6. A setting of 0 passes the input channel unchanged to the
+-- output channel (no attenuation or amplification). Use InputChannels or
+-- InputChannelsFineTune to specify your remix values. Don\'t use both.
+remixSettings_channelMapping :: Lens.Lens' RemixSettings (Prelude.Maybe ChannelMapping)
+remixSettings_channelMapping = Lens.lens (\RemixSettings' {channelMapping} -> channelMapping) (\s@RemixSettings' {} a -> s {channelMapping = a} :: RemixSettings)
+
+-- | Specify the number of audio channels from your input that you want to
+-- use in your output. With remixing, you might combine or split the data
+-- in these channels, so the number of channels in your final output might
+-- be different. If you are doing both input channel mapping and output
+-- channel mapping, the number of output channels in your input mapping
+-- must be the same as the number of input channels in your output mapping.
+remixSettings_channelsIn :: Lens.Lens' RemixSettings (Prelude.Maybe Prelude.Natural)
+remixSettings_channelsIn = Lens.lens (\RemixSettings' {channelsIn} -> channelsIn) (\s@RemixSettings' {} a -> s {channelsIn = a} :: RemixSettings)
+
+-- | Specify the number of channels in this output after remixing. Valid
+-- values: 1, 2, 4, 6, 8... 64. (1 and even numbers to 64.) If you are
+-- doing both input channel mapping and output channel mapping, the number
+-- of output channels in your input mapping must be the same as the number
+-- of input channels in your output mapping.
+remixSettings_channelsOut :: Lens.Lens' RemixSettings (Prelude.Maybe Prelude.Natural)
+remixSettings_channelsOut = Lens.lens (\RemixSettings' {channelsOut} -> channelsOut) (\s@RemixSettings' {} a -> s {channelsOut = a} :: RemixSettings)
+
+instance Data.FromJSON RemixSettings where
+  parseJSON =
+    Data.withObject
+      "RemixSettings"
+      ( \x ->
+          RemixSettings'
+            Prelude.<$> (x Data..:? "channelMapping")
+            Prelude.<*> (x Data..:? "channelsIn")
+            Prelude.<*> (x Data..:? "channelsOut")
+      )
+
+instance Prelude.Hashable RemixSettings where
+  hashWithSalt _salt RemixSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` channelMapping
+      `Prelude.hashWithSalt` channelsIn
+      `Prelude.hashWithSalt` channelsOut
+
+instance Prelude.NFData RemixSettings where
+  rnf RemixSettings' {..} =
+    Prelude.rnf channelMapping
+      `Prelude.seq` Prelude.rnf channelsIn
+      `Prelude.seq` Prelude.rnf channelsOut
+
+instance Data.ToJSON RemixSettings where
+  toJSON RemixSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("channelMapping" Data..=)
+              Prelude.<$> channelMapping,
+            ("channelsIn" Data..=) Prelude.<$> channelsIn,
+            ("channelsOut" Data..=) Prelude.<$> channelsOut
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/RenewalType.hs b/gen/Amazonka/MediaConvert/Types/RenewalType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/RenewalType.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.RenewalType
+-- 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.RenewalType
+  ( RenewalType
+      ( ..,
+        RenewalType_AUTO_RENEW,
+        RenewalType_EXPIRE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies whether the term of your reserved queue pricing plan is
+-- automatically extended (AUTO_RENEW) or expires (EXPIRE) at the end of
+-- the term.
+newtype RenewalType = RenewalType'
+  { fromRenewalType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RenewalType_AUTO_RENEW :: RenewalType
+pattern RenewalType_AUTO_RENEW = RenewalType' "AUTO_RENEW"
+
+pattern RenewalType_EXPIRE :: RenewalType
+pattern RenewalType_EXPIRE = RenewalType' "EXPIRE"
+
+{-# COMPLETE
+  RenewalType_AUTO_RENEW,
+  RenewalType_EXPIRE,
+  RenewalType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/RequiredFlag.hs b/gen/Amazonka/MediaConvert/Types/RequiredFlag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/RequiredFlag.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.RequiredFlag
+-- 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.RequiredFlag
+  ( RequiredFlag
+      ( ..,
+        RequiredFlag_DISABLED,
+        RequiredFlag_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Set to ENABLED to force a rendition to be included.
+newtype RequiredFlag = RequiredFlag'
+  { fromRequiredFlag ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RequiredFlag_DISABLED :: RequiredFlag
+pattern RequiredFlag_DISABLED = RequiredFlag' "DISABLED"
+
+pattern RequiredFlag_ENABLED :: RequiredFlag
+pattern RequiredFlag_ENABLED = RequiredFlag' "ENABLED"
+
+{-# COMPLETE
+  RequiredFlag_DISABLED,
+  RequiredFlag_ENABLED,
+  RequiredFlag'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ReservationPlan.hs b/gen/Amazonka/MediaConvert/Types/ReservationPlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ReservationPlan.hs
@@ -0,0 +1,169 @@
+{-# 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.ReservationPlan
+-- 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.ReservationPlan 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.Commitment
+import Amazonka.MediaConvert.Types.RenewalType
+import Amazonka.MediaConvert.Types.ReservationPlanStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | Details about the pricing plan for your reserved queue. Required for
+-- reserved queues and not applicable to on-demand queues.
+--
+-- /See:/ 'newReservationPlan' smart constructor.
+data ReservationPlan = ReservationPlan'
+  { -- | The length of the term of your reserved queue pricing plan commitment.
+    commitment :: Prelude.Maybe Commitment,
+    -- | The timestamp in epoch seconds for when the current pricing plan term
+    -- for this reserved queue expires.
+    expiresAt :: Prelude.Maybe Data.POSIX,
+    -- | The timestamp in epoch seconds for when you set up the current pricing
+    -- plan for this reserved queue.
+    purchasedAt :: Prelude.Maybe Data.POSIX,
+    -- | Specifies whether the term of your reserved queue pricing plan is
+    -- automatically extended (AUTO_RENEW) or expires (EXPIRE) at the end of
+    -- the term.
+    renewalType :: Prelude.Maybe RenewalType,
+    -- | Specifies the number of reserved transcode slots (RTS) for this queue.
+    -- The number of RTS determines how many jobs the queue can process in
+    -- parallel; each RTS can process one job at a time. When you increase this
+    -- number, you extend your existing commitment with a new 12-month
+    -- commitment for a larger number of RTS. The new commitment begins when
+    -- you purchase the additional capacity. You can\'t decrease the number of
+    -- RTS in your reserved queue.
+    reservedSlots :: Prelude.Maybe Prelude.Int,
+    -- | Specifies whether the pricing plan for your reserved queue is ACTIVE or
+    -- EXPIRED.
+    status :: Prelude.Maybe ReservationPlanStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReservationPlan' 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:
+--
+-- 'commitment', 'reservationPlan_commitment' - The length of the term of your reserved queue pricing plan commitment.
+--
+-- 'expiresAt', 'reservationPlan_expiresAt' - The timestamp in epoch seconds for when the current pricing plan term
+-- for this reserved queue expires.
+--
+-- 'purchasedAt', 'reservationPlan_purchasedAt' - The timestamp in epoch seconds for when you set up the current pricing
+-- plan for this reserved queue.
+--
+-- 'renewalType', 'reservationPlan_renewalType' - Specifies whether the term of your reserved queue pricing plan is
+-- automatically extended (AUTO_RENEW) or expires (EXPIRE) at the end of
+-- the term.
+--
+-- 'reservedSlots', 'reservationPlan_reservedSlots' - Specifies the number of reserved transcode slots (RTS) for this queue.
+-- The number of RTS determines how many jobs the queue can process in
+-- parallel; each RTS can process one job at a time. When you increase this
+-- number, you extend your existing commitment with a new 12-month
+-- commitment for a larger number of RTS. The new commitment begins when
+-- you purchase the additional capacity. You can\'t decrease the number of
+-- RTS in your reserved queue.
+--
+-- 'status', 'reservationPlan_status' - Specifies whether the pricing plan for your reserved queue is ACTIVE or
+-- EXPIRED.
+newReservationPlan ::
+  ReservationPlan
+newReservationPlan =
+  ReservationPlan'
+    { commitment = Prelude.Nothing,
+      expiresAt = Prelude.Nothing,
+      purchasedAt = Prelude.Nothing,
+      renewalType = Prelude.Nothing,
+      reservedSlots = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The length of the term of your reserved queue pricing plan commitment.
+reservationPlan_commitment :: Lens.Lens' ReservationPlan (Prelude.Maybe Commitment)
+reservationPlan_commitment = Lens.lens (\ReservationPlan' {commitment} -> commitment) (\s@ReservationPlan' {} a -> s {commitment = a} :: ReservationPlan)
+
+-- | The timestamp in epoch seconds for when the current pricing plan term
+-- for this reserved queue expires.
+reservationPlan_expiresAt :: Lens.Lens' ReservationPlan (Prelude.Maybe Prelude.UTCTime)
+reservationPlan_expiresAt = Lens.lens (\ReservationPlan' {expiresAt} -> expiresAt) (\s@ReservationPlan' {} a -> s {expiresAt = a} :: ReservationPlan) Prelude.. Lens.mapping Data._Time
+
+-- | The timestamp in epoch seconds for when you set up the current pricing
+-- plan for this reserved queue.
+reservationPlan_purchasedAt :: Lens.Lens' ReservationPlan (Prelude.Maybe Prelude.UTCTime)
+reservationPlan_purchasedAt = Lens.lens (\ReservationPlan' {purchasedAt} -> purchasedAt) (\s@ReservationPlan' {} a -> s {purchasedAt = a} :: ReservationPlan) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies whether the term of your reserved queue pricing plan is
+-- automatically extended (AUTO_RENEW) or expires (EXPIRE) at the end of
+-- the term.
+reservationPlan_renewalType :: Lens.Lens' ReservationPlan (Prelude.Maybe RenewalType)
+reservationPlan_renewalType = Lens.lens (\ReservationPlan' {renewalType} -> renewalType) (\s@ReservationPlan' {} a -> s {renewalType = a} :: ReservationPlan)
+
+-- | Specifies the number of reserved transcode slots (RTS) for this queue.
+-- The number of RTS determines how many jobs the queue can process in
+-- parallel; each RTS can process one job at a time. When you increase this
+-- number, you extend your existing commitment with a new 12-month
+-- commitment for a larger number of RTS. The new commitment begins when
+-- you purchase the additional capacity. You can\'t decrease the number of
+-- RTS in your reserved queue.
+reservationPlan_reservedSlots :: Lens.Lens' ReservationPlan (Prelude.Maybe Prelude.Int)
+reservationPlan_reservedSlots = Lens.lens (\ReservationPlan' {reservedSlots} -> reservedSlots) (\s@ReservationPlan' {} a -> s {reservedSlots = a} :: ReservationPlan)
+
+-- | Specifies whether the pricing plan for your reserved queue is ACTIVE or
+-- EXPIRED.
+reservationPlan_status :: Lens.Lens' ReservationPlan (Prelude.Maybe ReservationPlanStatus)
+reservationPlan_status = Lens.lens (\ReservationPlan' {status} -> status) (\s@ReservationPlan' {} a -> s {status = a} :: ReservationPlan)
+
+instance Data.FromJSON ReservationPlan where
+  parseJSON =
+    Data.withObject
+      "ReservationPlan"
+      ( \x ->
+          ReservationPlan'
+            Prelude.<$> (x Data..:? "commitment")
+            Prelude.<*> (x Data..:? "expiresAt")
+            Prelude.<*> (x Data..:? "purchasedAt")
+            Prelude.<*> (x Data..:? "renewalType")
+            Prelude.<*> (x Data..:? "reservedSlots")
+            Prelude.<*> (x Data..:? "status")
+      )
+
+instance Prelude.Hashable ReservationPlan where
+  hashWithSalt _salt ReservationPlan' {..} =
+    _salt
+      `Prelude.hashWithSalt` commitment
+      `Prelude.hashWithSalt` expiresAt
+      `Prelude.hashWithSalt` purchasedAt
+      `Prelude.hashWithSalt` renewalType
+      `Prelude.hashWithSalt` reservedSlots
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ReservationPlan where
+  rnf ReservationPlan' {..} =
+    Prelude.rnf commitment
+      `Prelude.seq` Prelude.rnf expiresAt
+      `Prelude.seq` Prelude.rnf purchasedAt
+      `Prelude.seq` Prelude.rnf renewalType
+      `Prelude.seq` Prelude.rnf reservedSlots
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/MediaConvert/Types/ReservationPlanSettings.hs b/gen/Amazonka/MediaConvert/Types/ReservationPlanSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ReservationPlanSettings.hs
@@ -0,0 +1,137 @@
+{-# 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.ReservationPlanSettings
+-- 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.ReservationPlanSettings 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.Commitment
+import Amazonka.MediaConvert.Types.RenewalType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Details about the pricing plan for your reserved queue. Required for
+-- reserved queues and not applicable to on-demand queues.
+--
+-- /See:/ 'newReservationPlanSettings' smart constructor.
+data ReservationPlanSettings = ReservationPlanSettings'
+  { -- | The length of the term of your reserved queue pricing plan commitment.
+    commitment :: Commitment,
+    -- | Specifies the number of reserved transcode slots (RTS) for this queue.
+    -- The number of RTS determines how many jobs the queue can process in
+    -- parallel; each RTS can process one job at a time. You can\'t decrease
+    -- the number of RTS in your reserved queue. You can increase the number of
+    -- RTS by extending your existing commitment with a new 12-month commitment
+    -- for the larger number. The new commitment begins when you purchase the
+    -- additional capacity. You can\'t cancel your commitment or revert to your
+    -- original commitment after you increase the capacity.
+    reservedSlots :: Prelude.Int,
+    -- | Specifies whether the term of your reserved queue pricing plan is
+    -- automatically extended (AUTO_RENEW) or expires (EXPIRE) at the end of
+    -- the term. When your term is auto renewed, you extend your commitment by
+    -- 12 months from the auto renew date. You can cancel this commitment.
+    renewalType :: RenewalType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReservationPlanSettings' 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:
+--
+-- 'commitment', 'reservationPlanSettings_commitment' - The length of the term of your reserved queue pricing plan commitment.
+--
+-- 'reservedSlots', 'reservationPlanSettings_reservedSlots' - Specifies the number of reserved transcode slots (RTS) for this queue.
+-- The number of RTS determines how many jobs the queue can process in
+-- parallel; each RTS can process one job at a time. You can\'t decrease
+-- the number of RTS in your reserved queue. You can increase the number of
+-- RTS by extending your existing commitment with a new 12-month commitment
+-- for the larger number. The new commitment begins when you purchase the
+-- additional capacity. You can\'t cancel your commitment or revert to your
+-- original commitment after you increase the capacity.
+--
+-- 'renewalType', 'reservationPlanSettings_renewalType' - Specifies whether the term of your reserved queue pricing plan is
+-- automatically extended (AUTO_RENEW) or expires (EXPIRE) at the end of
+-- the term. When your term is auto renewed, you extend your commitment by
+-- 12 months from the auto renew date. You can cancel this commitment.
+newReservationPlanSettings ::
+  -- | 'commitment'
+  Commitment ->
+  -- | 'reservedSlots'
+  Prelude.Int ->
+  -- | 'renewalType'
+  RenewalType ->
+  ReservationPlanSettings
+newReservationPlanSettings
+  pCommitment_
+  pReservedSlots_
+  pRenewalType_ =
+    ReservationPlanSettings'
+      { commitment = pCommitment_,
+        reservedSlots = pReservedSlots_,
+        renewalType = pRenewalType_
+      }
+
+-- | The length of the term of your reserved queue pricing plan commitment.
+reservationPlanSettings_commitment :: Lens.Lens' ReservationPlanSettings Commitment
+reservationPlanSettings_commitment = Lens.lens (\ReservationPlanSettings' {commitment} -> commitment) (\s@ReservationPlanSettings' {} a -> s {commitment = a} :: ReservationPlanSettings)
+
+-- | Specifies the number of reserved transcode slots (RTS) for this queue.
+-- The number of RTS determines how many jobs the queue can process in
+-- parallel; each RTS can process one job at a time. You can\'t decrease
+-- the number of RTS in your reserved queue. You can increase the number of
+-- RTS by extending your existing commitment with a new 12-month commitment
+-- for the larger number. The new commitment begins when you purchase the
+-- additional capacity. You can\'t cancel your commitment or revert to your
+-- original commitment after you increase the capacity.
+reservationPlanSettings_reservedSlots :: Lens.Lens' ReservationPlanSettings Prelude.Int
+reservationPlanSettings_reservedSlots = Lens.lens (\ReservationPlanSettings' {reservedSlots} -> reservedSlots) (\s@ReservationPlanSettings' {} a -> s {reservedSlots = a} :: ReservationPlanSettings)
+
+-- | Specifies whether the term of your reserved queue pricing plan is
+-- automatically extended (AUTO_RENEW) or expires (EXPIRE) at the end of
+-- the term. When your term is auto renewed, you extend your commitment by
+-- 12 months from the auto renew date. You can cancel this commitment.
+reservationPlanSettings_renewalType :: Lens.Lens' ReservationPlanSettings RenewalType
+reservationPlanSettings_renewalType = Lens.lens (\ReservationPlanSettings' {renewalType} -> renewalType) (\s@ReservationPlanSettings' {} a -> s {renewalType = a} :: ReservationPlanSettings)
+
+instance Prelude.Hashable ReservationPlanSettings where
+  hashWithSalt _salt ReservationPlanSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` commitment
+      `Prelude.hashWithSalt` reservedSlots
+      `Prelude.hashWithSalt` renewalType
+
+instance Prelude.NFData ReservationPlanSettings where
+  rnf ReservationPlanSettings' {..} =
+    Prelude.rnf commitment
+      `Prelude.seq` Prelude.rnf reservedSlots
+      `Prelude.seq` Prelude.rnf renewalType
+
+instance Data.ToJSON ReservationPlanSettings where
+  toJSON ReservationPlanSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("commitment" Data..= commitment),
+            Prelude.Just ("reservedSlots" Data..= reservedSlots),
+            Prelude.Just ("renewalType" Data..= renewalType)
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/ReservationPlanStatus.hs b/gen/Amazonka/MediaConvert/Types/ReservationPlanStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ReservationPlanStatus.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ReservationPlanStatus
+-- 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.ReservationPlanStatus
+  ( ReservationPlanStatus
+      ( ..,
+        ReservationPlanStatus_ACTIVE,
+        ReservationPlanStatus_EXPIRED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies whether the pricing plan for your reserved queue is ACTIVE or
+-- EXPIRED.
+newtype ReservationPlanStatus = ReservationPlanStatus'
+  { fromReservationPlanStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ReservationPlanStatus_ACTIVE :: ReservationPlanStatus
+pattern ReservationPlanStatus_ACTIVE = ReservationPlanStatus' "ACTIVE"
+
+pattern ReservationPlanStatus_EXPIRED :: ReservationPlanStatus
+pattern ReservationPlanStatus_EXPIRED = ReservationPlanStatus' "EXPIRED"
+
+{-# COMPLETE
+  ReservationPlanStatus_ACTIVE,
+  ReservationPlanStatus_EXPIRED,
+  ReservationPlanStatus'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ResourceTags.hs b/gen/Amazonka/MediaConvert/Types/ResourceTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ResourceTags.hs
@@ -0,0 +1,84 @@
+{-# 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.ResourceTags
+-- 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.ResourceTags where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Amazon Resource Name (ARN) and tags for an AWS Elemental
+-- MediaConvert resource.
+--
+-- /See:/ 'newResourceTags' smart constructor.
+data ResourceTags = ResourceTags'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The tags for the resource.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourceTags' 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:
+--
+-- 'arn', 'resourceTags_arn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'tags', 'resourceTags_tags' - The tags for the resource.
+newResourceTags ::
+  ResourceTags
+newResourceTags =
+  ResourceTags'
+    { arn = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+resourceTags_arn :: Lens.Lens' ResourceTags (Prelude.Maybe Prelude.Text)
+resourceTags_arn = Lens.lens (\ResourceTags' {arn} -> arn) (\s@ResourceTags' {} a -> s {arn = a} :: ResourceTags)
+
+-- | The tags for the resource.
+resourceTags_tags :: Lens.Lens' ResourceTags (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+resourceTags_tags = Lens.lens (\ResourceTags' {tags} -> tags) (\s@ResourceTags' {} a -> s {tags = a} :: ResourceTags) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ResourceTags where
+  parseJSON =
+    Data.withObject
+      "ResourceTags"
+      ( \x ->
+          ResourceTags'
+            Prelude.<$> (x Data..:? "arn")
+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable ResourceTags where
+  hashWithSalt _salt ResourceTags' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData ResourceTags where
+  rnf ResourceTags' {..} =
+    Prelude.rnf arn `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/MediaConvert/Types/RespondToAfd.hs b/gen/Amazonka/MediaConvert/Types/RespondToAfd.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/RespondToAfd.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.RespondToAfd
+-- 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.RespondToAfd
+  ( RespondToAfd
+      ( ..,
+        RespondToAfd_NONE,
+        RespondToAfd_PASSTHROUGH,
+        RespondToAfd_RESPOND
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Respond to AFD (RespondToAfd) to specify how the service changes the
+-- video itself in response to AFD values in the input. * Choose Respond to
+-- clip the input video frame according to the AFD value, input display
+-- aspect ratio, and output display aspect ratio. * Choose Passthrough to
+-- include the input AFD values. Do not choose this when AfdSignaling is
+-- set to (NONE). A preferred implementation of this workflow is to set
+-- RespondToAfd to (NONE) and set AfdSignaling to (AUTO). * Choose None to
+-- remove all input AFD values from this output.
+newtype RespondToAfd = RespondToAfd'
+  { fromRespondToAfd ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RespondToAfd_NONE :: RespondToAfd
+pattern RespondToAfd_NONE = RespondToAfd' "NONE"
+
+pattern RespondToAfd_PASSTHROUGH :: RespondToAfd
+pattern RespondToAfd_PASSTHROUGH = RespondToAfd' "PASSTHROUGH"
+
+pattern RespondToAfd_RESPOND :: RespondToAfd
+pattern RespondToAfd_RESPOND = RespondToAfd' "RESPOND"
+
+{-# COMPLETE
+  RespondToAfd_NONE,
+  RespondToAfd_PASSTHROUGH,
+  RespondToAfd_RESPOND,
+  RespondToAfd'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/RuleType.hs b/gen/Amazonka/MediaConvert/Types/RuleType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/RuleType.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.RuleType
+-- 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.RuleType
+  ( RuleType
+      ( ..,
+        RuleType_ALLOWED_RENDITIONS,
+        RuleType_FORCE_INCLUDE_RENDITIONS,
+        RuleType_MIN_BOTTOM_RENDITION_SIZE,
+        RuleType_MIN_TOP_RENDITION_SIZE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Min top rendition size to specify a minimum size for the highest
+-- resolution in your ABR stack. * The highest resolution in your ABR stack
+-- will be equal to or greater than the value that you enter. For example:
+-- If you specify 1280x720 the highest resolution in your ABR stack will be
+-- equal to or greater than 1280x720. * If you specify a value for Max
+-- resolution, the value that you specify for Min top rendition size must
+-- be less than, or equal to, Max resolution. Use Min bottom rendition size
+-- to specify a minimum size for the lowest resolution in your ABR stack. *
+-- The lowest resolution in your ABR stack will be equal to or greater than
+-- the value that you enter. For example: If you specify 640x360 the lowest
+-- resolution in your ABR stack will be equal to or greater than to
+-- 640x360. * If you specify a Min top rendition size rule, the value that
+-- you specify for Min bottom rendition size must be less than, or equal
+-- to, Min top rendition size. Use Force include renditions to specify one
+-- or more resolutions to include your ABR stack. * (Recommended) To
+-- optimize automated ABR, specify as few resolutions as possible. *
+-- (Required) The number of resolutions that you specify must be equal to,
+-- or less than, the Max renditions setting. * If you specify a Min top
+-- rendition size rule, specify at least one resolution that is equal to,
+-- or greater than, Min top rendition size. * If you specify a Min bottom
+-- rendition size rule, only specify resolutions that are equal to, or
+-- greater than, Min bottom rendition size. * If you specify a Force
+-- include renditions rule, do not specify a separate rule for Allowed
+-- renditions. * Note: The ABR stack may include other resolutions that you
+-- do not specify here, depending on the Max renditions setting. Use
+-- Allowed renditions to specify a list of possible resolutions in your ABR
+-- stack. * (Required) The number of resolutions that you specify must be
+-- equal to, or greater than, the Max renditions setting. * MediaConvert
+-- will create an ABR stack exclusively from the list of resolutions that
+-- you specify. * Some resolutions in the Allowed renditions list may not
+-- be included, however you can force a resolution to be included by
+-- setting Required to ENABLED. * You must specify at least one resolution
+-- that is greater than or equal to any resolutions that you specify in Min
+-- top rendition size or Min bottom rendition size. * If you specify
+-- Allowed renditions, you must not specify a separate rule for Force
+-- include renditions.
+newtype RuleType = RuleType'
+  { fromRuleType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RuleType_ALLOWED_RENDITIONS :: RuleType
+pattern RuleType_ALLOWED_RENDITIONS = RuleType' "ALLOWED_RENDITIONS"
+
+pattern RuleType_FORCE_INCLUDE_RENDITIONS :: RuleType
+pattern RuleType_FORCE_INCLUDE_RENDITIONS = RuleType' "FORCE_INCLUDE_RENDITIONS"
+
+pattern RuleType_MIN_BOTTOM_RENDITION_SIZE :: RuleType
+pattern RuleType_MIN_BOTTOM_RENDITION_SIZE = RuleType' "MIN_BOTTOM_RENDITION_SIZE"
+
+pattern RuleType_MIN_TOP_RENDITION_SIZE :: RuleType
+pattern RuleType_MIN_TOP_RENDITION_SIZE = RuleType' "MIN_TOP_RENDITION_SIZE"
+
+{-# COMPLETE
+  RuleType_ALLOWED_RENDITIONS,
+  RuleType_FORCE_INCLUDE_RENDITIONS,
+  RuleType_MIN_BOTTOM_RENDITION_SIZE,
+  RuleType_MIN_TOP_RENDITION_SIZE,
+  RuleType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/S3DestinationAccessControl.hs b/gen/Amazonka/MediaConvert/Types/S3DestinationAccessControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/S3DestinationAccessControl.hs
@@ -0,0 +1,82 @@
+{-# 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.S3DestinationAccessControl
+-- 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.S3DestinationAccessControl 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.S3ObjectCannedAcl
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Have MediaConvert automatically apply Amazon S3 access control
+-- for the outputs in this output group. When you don\'t use this setting,
+-- S3 automatically applies the default access control list PRIVATE.
+--
+-- /See:/ 'newS3DestinationAccessControl' smart constructor.
+data S3DestinationAccessControl = S3DestinationAccessControl'
+  { -- | Choose an Amazon S3 canned ACL for MediaConvert to apply to this output.
+    cannedAcl :: Prelude.Maybe S3ObjectCannedAcl
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3DestinationAccessControl' 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:
+--
+-- 'cannedAcl', 's3DestinationAccessControl_cannedAcl' - Choose an Amazon S3 canned ACL for MediaConvert to apply to this output.
+newS3DestinationAccessControl ::
+  S3DestinationAccessControl
+newS3DestinationAccessControl =
+  S3DestinationAccessControl'
+    { cannedAcl =
+        Prelude.Nothing
+    }
+
+-- | Choose an Amazon S3 canned ACL for MediaConvert to apply to this output.
+s3DestinationAccessControl_cannedAcl :: Lens.Lens' S3DestinationAccessControl (Prelude.Maybe S3ObjectCannedAcl)
+s3DestinationAccessControl_cannedAcl = Lens.lens (\S3DestinationAccessControl' {cannedAcl} -> cannedAcl) (\s@S3DestinationAccessControl' {} a -> s {cannedAcl = a} :: S3DestinationAccessControl)
+
+instance Data.FromJSON S3DestinationAccessControl where
+  parseJSON =
+    Data.withObject
+      "S3DestinationAccessControl"
+      ( \x ->
+          S3DestinationAccessControl'
+            Prelude.<$> (x Data..:? "cannedAcl")
+      )
+
+instance Prelude.Hashable S3DestinationAccessControl where
+  hashWithSalt _salt S3DestinationAccessControl' {..} =
+    _salt `Prelude.hashWithSalt` cannedAcl
+
+instance Prelude.NFData S3DestinationAccessControl where
+  rnf S3DestinationAccessControl' {..} =
+    Prelude.rnf cannedAcl
+
+instance Data.ToJSON S3DestinationAccessControl where
+  toJSON S3DestinationAccessControl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("cannedAcl" Data..=) Prelude.<$> cannedAcl]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/S3DestinationSettings.hs b/gen/Amazonka/MediaConvert/Types/S3DestinationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/S3DestinationSettings.hs
@@ -0,0 +1,105 @@
+{-# 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.S3DestinationSettings
+-- 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.S3DestinationSettings 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.S3DestinationAccessControl
+import Amazonka.MediaConvert.Types.S3EncryptionSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings associated with S3 destination
+--
+-- /See:/ 'newS3DestinationSettings' smart constructor.
+data S3DestinationSettings = S3DestinationSettings'
+  { -- | Optional. Have MediaConvert automatically apply Amazon S3 access control
+    -- for the outputs in this output group. When you don\'t use this setting,
+    -- S3 automatically applies the default access control list PRIVATE.
+    accessControl :: Prelude.Maybe S3DestinationAccessControl,
+    -- | Settings for how your job outputs are encrypted as they are uploaded to
+    -- Amazon S3.
+    encryption :: Prelude.Maybe S3EncryptionSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3DestinationSettings' 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:
+--
+-- 'accessControl', 's3DestinationSettings_accessControl' - Optional. Have MediaConvert automatically apply Amazon S3 access control
+-- for the outputs in this output group. When you don\'t use this setting,
+-- S3 automatically applies the default access control list PRIVATE.
+--
+-- 'encryption', 's3DestinationSettings_encryption' - Settings for how your job outputs are encrypted as they are uploaded to
+-- Amazon S3.
+newS3DestinationSettings ::
+  S3DestinationSettings
+newS3DestinationSettings =
+  S3DestinationSettings'
+    { accessControl =
+        Prelude.Nothing,
+      encryption = Prelude.Nothing
+    }
+
+-- | Optional. Have MediaConvert automatically apply Amazon S3 access control
+-- for the outputs in this output group. When you don\'t use this setting,
+-- S3 automatically applies the default access control list PRIVATE.
+s3DestinationSettings_accessControl :: Lens.Lens' S3DestinationSettings (Prelude.Maybe S3DestinationAccessControl)
+s3DestinationSettings_accessControl = Lens.lens (\S3DestinationSettings' {accessControl} -> accessControl) (\s@S3DestinationSettings' {} a -> s {accessControl = a} :: S3DestinationSettings)
+
+-- | Settings for how your job outputs are encrypted as they are uploaded to
+-- Amazon S3.
+s3DestinationSettings_encryption :: Lens.Lens' S3DestinationSettings (Prelude.Maybe S3EncryptionSettings)
+s3DestinationSettings_encryption = Lens.lens (\S3DestinationSettings' {encryption} -> encryption) (\s@S3DestinationSettings' {} a -> s {encryption = a} :: S3DestinationSettings)
+
+instance Data.FromJSON S3DestinationSettings where
+  parseJSON =
+    Data.withObject
+      "S3DestinationSettings"
+      ( \x ->
+          S3DestinationSettings'
+            Prelude.<$> (x Data..:? "accessControl")
+            Prelude.<*> (x Data..:? "encryption")
+      )
+
+instance Prelude.Hashable S3DestinationSettings where
+  hashWithSalt _salt S3DestinationSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` accessControl
+      `Prelude.hashWithSalt` encryption
+
+instance Prelude.NFData S3DestinationSettings where
+  rnf S3DestinationSettings' {..} =
+    Prelude.rnf accessControl
+      `Prelude.seq` Prelude.rnf encryption
+
+instance Data.ToJSON S3DestinationSettings where
+  toJSON S3DestinationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accessControl" Data..=) Prelude.<$> accessControl,
+            ("encryption" Data..=) Prelude.<$> encryption
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/S3EncryptionSettings.hs b/gen/Amazonka/MediaConvert/Types/S3EncryptionSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/S3EncryptionSettings.hs
@@ -0,0 +1,186 @@
+{-# 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.S3EncryptionSettings
+-- 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.S3EncryptionSettings 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.S3ServerSideEncryptionType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for how your job outputs are encrypted as they are uploaded to
+-- Amazon S3.
+--
+-- /See:/ 'newS3EncryptionSettings' smart constructor.
+data S3EncryptionSettings = S3EncryptionSettings'
+  { -- | Specify how you want your data keys managed. AWS uses data keys to
+    -- encrypt your content. AWS also encrypts the data keys themselves, using
+    -- a customer master key (CMK), and then stores the encrypted data keys
+    -- alongside your encrypted content. Use this setting to specify which AWS
+    -- service manages the CMK. For simplest set up, choose Amazon S3
+    -- (SERVER_SIDE_ENCRYPTION_S3). If you want your master key to be managed
+    -- by AWS Key Management Service (KMS), choose AWS KMS
+    -- (SERVER_SIDE_ENCRYPTION_KMS). By default, when you choose AWS KMS, KMS
+    -- uses the AWS managed customer master key (CMK) associated with Amazon S3
+    -- to encrypt your data keys. You can optionally choose to specify a
+    -- different, customer managed CMK. Do so by specifying the Amazon Resource
+    -- Name (ARN) of the key for the setting KMS ARN (kmsKeyArn).
+    encryptionType :: Prelude.Maybe S3ServerSideEncryptionType,
+    -- | Optionally, specify the encryption context that you want to use
+    -- alongside your KMS key. AWS KMS uses this encryption context as
+    -- additional authenticated data (AAD) to support authenticated encryption.
+    -- This value must be a base64-encoded UTF-8 string holding JSON which
+    -- represents a string-string map. To use this setting, you must also set
+    -- Server-side encryption (S3ServerSideEncryptionType) to AWS KMS
+    -- (SERVER_SIDE_ENCRYPTION_KMS). For more information about encryption
+    -- context, see:
+    -- https:\/\/docs.aws.amazon.com\/kms\/latest\/developerguide\/concepts.html#encrypt_context.
+    kmsEncryptionContext :: Prelude.Maybe Prelude.Text,
+    -- | Optionally, specify the customer master key (CMK) that you want to use
+    -- to encrypt the data key that AWS uses to encrypt your output content.
+    -- Enter the Amazon Resource Name (ARN) of the CMK. To use this setting,
+    -- you must also set Server-side encryption (S3ServerSideEncryptionType) to
+    -- AWS KMS (SERVER_SIDE_ENCRYPTION_KMS). If you set Server-side encryption
+    -- to AWS KMS but don\'t specify a CMK here, AWS uses the AWS managed CMK
+    -- associated with Amazon S3.
+    kmsKeyArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3EncryptionSettings' 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:
+--
+-- 'encryptionType', 's3EncryptionSettings_encryptionType' - Specify how you want your data keys managed. AWS uses data keys to
+-- encrypt your content. AWS also encrypts the data keys themselves, using
+-- a customer master key (CMK), and then stores the encrypted data keys
+-- alongside your encrypted content. Use this setting to specify which AWS
+-- service manages the CMK. For simplest set up, choose Amazon S3
+-- (SERVER_SIDE_ENCRYPTION_S3). If you want your master key to be managed
+-- by AWS Key Management Service (KMS), choose AWS KMS
+-- (SERVER_SIDE_ENCRYPTION_KMS). By default, when you choose AWS KMS, KMS
+-- uses the AWS managed customer master key (CMK) associated with Amazon S3
+-- to encrypt your data keys. You can optionally choose to specify a
+-- different, customer managed CMK. Do so by specifying the Amazon Resource
+-- Name (ARN) of the key for the setting KMS ARN (kmsKeyArn).
+--
+-- 'kmsEncryptionContext', 's3EncryptionSettings_kmsEncryptionContext' - Optionally, specify the encryption context that you want to use
+-- alongside your KMS key. AWS KMS uses this encryption context as
+-- additional authenticated data (AAD) to support authenticated encryption.
+-- This value must be a base64-encoded UTF-8 string holding JSON which
+-- represents a string-string map. To use this setting, you must also set
+-- Server-side encryption (S3ServerSideEncryptionType) to AWS KMS
+-- (SERVER_SIDE_ENCRYPTION_KMS). For more information about encryption
+-- context, see:
+-- https:\/\/docs.aws.amazon.com\/kms\/latest\/developerguide\/concepts.html#encrypt_context.
+--
+-- 'kmsKeyArn', 's3EncryptionSettings_kmsKeyArn' - Optionally, specify the customer master key (CMK) that you want to use
+-- to encrypt the data key that AWS uses to encrypt your output content.
+-- Enter the Amazon Resource Name (ARN) of the CMK. To use this setting,
+-- you must also set Server-side encryption (S3ServerSideEncryptionType) to
+-- AWS KMS (SERVER_SIDE_ENCRYPTION_KMS). If you set Server-side encryption
+-- to AWS KMS but don\'t specify a CMK here, AWS uses the AWS managed CMK
+-- associated with Amazon S3.
+newS3EncryptionSettings ::
+  S3EncryptionSettings
+newS3EncryptionSettings =
+  S3EncryptionSettings'
+    { encryptionType =
+        Prelude.Nothing,
+      kmsEncryptionContext = Prelude.Nothing,
+      kmsKeyArn = Prelude.Nothing
+    }
+
+-- | Specify how you want your data keys managed. AWS uses data keys to
+-- encrypt your content. AWS also encrypts the data keys themselves, using
+-- a customer master key (CMK), and then stores the encrypted data keys
+-- alongside your encrypted content. Use this setting to specify which AWS
+-- service manages the CMK. For simplest set up, choose Amazon S3
+-- (SERVER_SIDE_ENCRYPTION_S3). If you want your master key to be managed
+-- by AWS Key Management Service (KMS), choose AWS KMS
+-- (SERVER_SIDE_ENCRYPTION_KMS). By default, when you choose AWS KMS, KMS
+-- uses the AWS managed customer master key (CMK) associated with Amazon S3
+-- to encrypt your data keys. You can optionally choose to specify a
+-- different, customer managed CMK. Do so by specifying the Amazon Resource
+-- Name (ARN) of the key for the setting KMS ARN (kmsKeyArn).
+s3EncryptionSettings_encryptionType :: Lens.Lens' S3EncryptionSettings (Prelude.Maybe S3ServerSideEncryptionType)
+s3EncryptionSettings_encryptionType = Lens.lens (\S3EncryptionSettings' {encryptionType} -> encryptionType) (\s@S3EncryptionSettings' {} a -> s {encryptionType = a} :: S3EncryptionSettings)
+
+-- | Optionally, specify the encryption context that you want to use
+-- alongside your KMS key. AWS KMS uses this encryption context as
+-- additional authenticated data (AAD) to support authenticated encryption.
+-- This value must be a base64-encoded UTF-8 string holding JSON which
+-- represents a string-string map. To use this setting, you must also set
+-- Server-side encryption (S3ServerSideEncryptionType) to AWS KMS
+-- (SERVER_SIDE_ENCRYPTION_KMS). For more information about encryption
+-- context, see:
+-- https:\/\/docs.aws.amazon.com\/kms\/latest\/developerguide\/concepts.html#encrypt_context.
+s3EncryptionSettings_kmsEncryptionContext :: Lens.Lens' S3EncryptionSettings (Prelude.Maybe Prelude.Text)
+s3EncryptionSettings_kmsEncryptionContext = Lens.lens (\S3EncryptionSettings' {kmsEncryptionContext} -> kmsEncryptionContext) (\s@S3EncryptionSettings' {} a -> s {kmsEncryptionContext = a} :: S3EncryptionSettings)
+
+-- | Optionally, specify the customer master key (CMK) that you want to use
+-- to encrypt the data key that AWS uses to encrypt your output content.
+-- Enter the Amazon Resource Name (ARN) of the CMK. To use this setting,
+-- you must also set Server-side encryption (S3ServerSideEncryptionType) to
+-- AWS KMS (SERVER_SIDE_ENCRYPTION_KMS). If you set Server-side encryption
+-- to AWS KMS but don\'t specify a CMK here, AWS uses the AWS managed CMK
+-- associated with Amazon S3.
+s3EncryptionSettings_kmsKeyArn :: Lens.Lens' S3EncryptionSettings (Prelude.Maybe Prelude.Text)
+s3EncryptionSettings_kmsKeyArn = Lens.lens (\S3EncryptionSettings' {kmsKeyArn} -> kmsKeyArn) (\s@S3EncryptionSettings' {} a -> s {kmsKeyArn = a} :: S3EncryptionSettings)
+
+instance Data.FromJSON S3EncryptionSettings where
+  parseJSON =
+    Data.withObject
+      "S3EncryptionSettings"
+      ( \x ->
+          S3EncryptionSettings'
+            Prelude.<$> (x Data..:? "encryptionType")
+            Prelude.<*> (x Data..:? "kmsEncryptionContext")
+            Prelude.<*> (x Data..:? "kmsKeyArn")
+      )
+
+instance Prelude.Hashable S3EncryptionSettings where
+  hashWithSalt _salt S3EncryptionSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` encryptionType
+      `Prelude.hashWithSalt` kmsEncryptionContext
+      `Prelude.hashWithSalt` kmsKeyArn
+
+instance Prelude.NFData S3EncryptionSettings where
+  rnf S3EncryptionSettings' {..} =
+    Prelude.rnf encryptionType
+      `Prelude.seq` Prelude.rnf kmsEncryptionContext
+      `Prelude.seq` Prelude.rnf kmsKeyArn
+
+instance Data.ToJSON S3EncryptionSettings where
+  toJSON S3EncryptionSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("encryptionType" Data..=)
+              Prelude.<$> encryptionType,
+            ("kmsEncryptionContext" Data..=)
+              Prelude.<$> kmsEncryptionContext,
+            ("kmsKeyArn" Data..=) Prelude.<$> kmsKeyArn
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/S3ObjectCannedAcl.hs b/gen/Amazonka/MediaConvert/Types/S3ObjectCannedAcl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/S3ObjectCannedAcl.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.S3ObjectCannedAcl
+-- 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.S3ObjectCannedAcl
+  ( S3ObjectCannedAcl
+      ( ..,
+        S3ObjectCannedAcl_AUTHENTICATED_READ,
+        S3ObjectCannedAcl_BUCKET_OWNER_FULL_CONTROL,
+        S3ObjectCannedAcl_BUCKET_OWNER_READ,
+        S3ObjectCannedAcl_PUBLIC_READ
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose an Amazon S3 canned ACL for MediaConvert to apply to this output.
+newtype S3ObjectCannedAcl = S3ObjectCannedAcl'
+  { fromS3ObjectCannedAcl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern S3ObjectCannedAcl_AUTHENTICATED_READ :: S3ObjectCannedAcl
+pattern S3ObjectCannedAcl_AUTHENTICATED_READ = S3ObjectCannedAcl' "AUTHENTICATED_READ"
+
+pattern S3ObjectCannedAcl_BUCKET_OWNER_FULL_CONTROL :: S3ObjectCannedAcl
+pattern S3ObjectCannedAcl_BUCKET_OWNER_FULL_CONTROL = S3ObjectCannedAcl' "BUCKET_OWNER_FULL_CONTROL"
+
+pattern S3ObjectCannedAcl_BUCKET_OWNER_READ :: S3ObjectCannedAcl
+pattern S3ObjectCannedAcl_BUCKET_OWNER_READ = S3ObjectCannedAcl' "BUCKET_OWNER_READ"
+
+pattern S3ObjectCannedAcl_PUBLIC_READ :: S3ObjectCannedAcl
+pattern S3ObjectCannedAcl_PUBLIC_READ = S3ObjectCannedAcl' "PUBLIC_READ"
+
+{-# COMPLETE
+  S3ObjectCannedAcl_AUTHENTICATED_READ,
+  S3ObjectCannedAcl_BUCKET_OWNER_FULL_CONTROL,
+  S3ObjectCannedAcl_BUCKET_OWNER_READ,
+  S3ObjectCannedAcl_PUBLIC_READ,
+  S3ObjectCannedAcl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/S3ServerSideEncryptionType.hs b/gen/Amazonka/MediaConvert/Types/S3ServerSideEncryptionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/S3ServerSideEncryptionType.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.S3ServerSideEncryptionType
+-- 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.S3ServerSideEncryptionType
+  ( S3ServerSideEncryptionType
+      ( ..,
+        S3ServerSideEncryptionType_SERVER_SIDE_ENCRYPTION_KMS,
+        S3ServerSideEncryptionType_SERVER_SIDE_ENCRYPTION_S3
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify how you want your data keys managed. AWS uses data keys to
+-- encrypt your content. AWS also encrypts the data keys themselves, using
+-- a customer master key (CMK), and then stores the encrypted data keys
+-- alongside your encrypted content. Use this setting to specify which AWS
+-- service manages the CMK. For simplest set up, choose Amazon S3
+-- (SERVER_SIDE_ENCRYPTION_S3). If you want your master key to be managed
+-- by AWS Key Management Service (KMS), choose AWS KMS
+-- (SERVER_SIDE_ENCRYPTION_KMS). By default, when you choose AWS KMS, KMS
+-- uses the AWS managed customer master key (CMK) associated with Amazon S3
+-- to encrypt your data keys. You can optionally choose to specify a
+-- different, customer managed CMK. Do so by specifying the Amazon Resource
+-- Name (ARN) of the key for the setting KMS ARN (kmsKeyArn).
+newtype S3ServerSideEncryptionType = S3ServerSideEncryptionType'
+  { fromS3ServerSideEncryptionType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern S3ServerSideEncryptionType_SERVER_SIDE_ENCRYPTION_KMS :: S3ServerSideEncryptionType
+pattern S3ServerSideEncryptionType_SERVER_SIDE_ENCRYPTION_KMS = S3ServerSideEncryptionType' "SERVER_SIDE_ENCRYPTION_KMS"
+
+pattern S3ServerSideEncryptionType_SERVER_SIDE_ENCRYPTION_S3 :: S3ServerSideEncryptionType
+pattern S3ServerSideEncryptionType_SERVER_SIDE_ENCRYPTION_S3 = S3ServerSideEncryptionType' "SERVER_SIDE_ENCRYPTION_S3"
+
+{-# COMPLETE
+  S3ServerSideEncryptionType_SERVER_SIDE_ENCRYPTION_KMS,
+  S3ServerSideEncryptionType_SERVER_SIDE_ENCRYPTION_S3,
+  S3ServerSideEncryptionType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/SampleRangeConversion.hs b/gen/Amazonka/MediaConvert/Types/SampleRangeConversion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/SampleRangeConversion.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.SampleRangeConversion
+-- 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.SampleRangeConversion
+  ( SampleRangeConversion
+      ( ..,
+        SampleRangeConversion_LIMITED_RANGE_SQUEEZE,
+        SampleRangeConversion_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the video color sample range for this output. To create a full
+-- range output, you must start with a full range YUV input and keep the
+-- default value, None (NONE). To create a limited range output from a full
+-- range input, choose Limited range (LIMITED_RANGE_SQUEEZE). With RGB
+-- inputs, your output is always limited range, regardless of your choice
+-- here. When you create a limited range output from a full range input,
+-- MediaConvert limits the active pixel values in a way that depends on the
+-- output\'s bit depth: 8-bit outputs contain only values from 16 through
+-- 235 and 10-bit outputs contain only values from 64 through 940. With
+-- this conversion, MediaConvert also changes the output metadata to note
+-- the limited range.
+newtype SampleRangeConversion = SampleRangeConversion'
+  { fromSampleRangeConversion ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SampleRangeConversion_LIMITED_RANGE_SQUEEZE :: SampleRangeConversion
+pattern SampleRangeConversion_LIMITED_RANGE_SQUEEZE = SampleRangeConversion' "LIMITED_RANGE_SQUEEZE"
+
+pattern SampleRangeConversion_NONE :: SampleRangeConversion
+pattern SampleRangeConversion_NONE = SampleRangeConversion' "NONE"
+
+{-# COMPLETE
+  SampleRangeConversion_LIMITED_RANGE_SQUEEZE,
+  SampleRangeConversion_NONE,
+  SampleRangeConversion'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/ScalingBehavior.hs b/gen/Amazonka/MediaConvert/Types/ScalingBehavior.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/ScalingBehavior.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.ScalingBehavior
+-- 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.ScalingBehavior
+  ( ScalingBehavior
+      ( ..,
+        ScalingBehavior_DEFAULT,
+        ScalingBehavior_STRETCH_TO_OUTPUT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify how the service handles outputs that have a different aspect
+-- ratio from the input aspect ratio. Choose Stretch to output
+-- (STRETCH_TO_OUTPUT) to have the service stretch your video image to fit.
+-- Keep the setting Default (DEFAULT) to have the service letterbox your
+-- video instead. This setting overrides any value that you specify for the
+-- setting Selection placement (position) in this output.
+newtype ScalingBehavior = ScalingBehavior'
+  { fromScalingBehavior ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ScalingBehavior_DEFAULT :: ScalingBehavior
+pattern ScalingBehavior_DEFAULT = ScalingBehavior' "DEFAULT"
+
+pattern ScalingBehavior_STRETCH_TO_OUTPUT :: ScalingBehavior
+pattern ScalingBehavior_STRETCH_TO_OUTPUT = ScalingBehavior' "STRETCH_TO_OUTPUT"
+
+{-# COMPLETE
+  ScalingBehavior_DEFAULT,
+  ScalingBehavior_STRETCH_TO_OUTPUT,
+  ScalingBehavior'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/SccDestinationFramerate.hs b/gen/Amazonka/MediaConvert/Types/SccDestinationFramerate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/SccDestinationFramerate.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.SccDestinationFramerate
+-- 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.SccDestinationFramerate
+  ( SccDestinationFramerate
+      ( ..,
+        SccDestinationFramerate_FRAMERATE_23_97,
+        SccDestinationFramerate_FRAMERATE_24,
+        SccDestinationFramerate_FRAMERATE_25,
+        SccDestinationFramerate_FRAMERATE_29_97_DROPFRAME,
+        SccDestinationFramerate_FRAMERATE_29_97_NON_DROPFRAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Set Framerate (SccDestinationFramerate) to make sure that the captions
+-- and the video are synchronized in the output. Specify a frame rate that
+-- matches the frame rate of the associated video. If the video frame rate
+-- is 29.97, choose 29.97 dropframe (FRAMERATE_29_97_DROPFRAME) only if the
+-- video has video_insertion=true and drop_frame_timecode=true; otherwise,
+-- choose 29.97 non-dropframe (FRAMERATE_29_97_NON_DROPFRAME).
+newtype SccDestinationFramerate = SccDestinationFramerate'
+  { fromSccDestinationFramerate ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SccDestinationFramerate_FRAMERATE_23_97 :: SccDestinationFramerate
+pattern SccDestinationFramerate_FRAMERATE_23_97 = SccDestinationFramerate' "FRAMERATE_23_97"
+
+pattern SccDestinationFramerate_FRAMERATE_24 :: SccDestinationFramerate
+pattern SccDestinationFramerate_FRAMERATE_24 = SccDestinationFramerate' "FRAMERATE_24"
+
+pattern SccDestinationFramerate_FRAMERATE_25 :: SccDestinationFramerate
+pattern SccDestinationFramerate_FRAMERATE_25 = SccDestinationFramerate' "FRAMERATE_25"
+
+pattern SccDestinationFramerate_FRAMERATE_29_97_DROPFRAME :: SccDestinationFramerate
+pattern SccDestinationFramerate_FRAMERATE_29_97_DROPFRAME = SccDestinationFramerate' "FRAMERATE_29_97_DROPFRAME"
+
+pattern SccDestinationFramerate_FRAMERATE_29_97_NON_DROPFRAME :: SccDestinationFramerate
+pattern SccDestinationFramerate_FRAMERATE_29_97_NON_DROPFRAME = SccDestinationFramerate' "FRAMERATE_29_97_NON_DROPFRAME"
+
+{-# COMPLETE
+  SccDestinationFramerate_FRAMERATE_23_97,
+  SccDestinationFramerate_FRAMERATE_24,
+  SccDestinationFramerate_FRAMERATE_25,
+  SccDestinationFramerate_FRAMERATE_29_97_DROPFRAME,
+  SccDestinationFramerate_FRAMERATE_29_97_NON_DROPFRAME,
+  SccDestinationFramerate'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/SccDestinationSettings.hs b/gen/Amazonka/MediaConvert/Types/SccDestinationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/SccDestinationSettings.hs
@@ -0,0 +1,101 @@
+{-# 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.SccDestinationSettings
+-- 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.SccDestinationSettings 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.SccDestinationFramerate
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to SCC captions. SCC is a sidecar format that holds
+-- captions in a file that is separate from the video container. Set up
+-- sidecar captions in the same output group, but different output from
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/scc-srt-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to SCC.
+--
+-- /See:/ 'newSccDestinationSettings' smart constructor.
+data SccDestinationSettings = SccDestinationSettings'
+  { -- | Set Framerate (SccDestinationFramerate) to make sure that the captions
+    -- and the video are synchronized in the output. Specify a frame rate that
+    -- matches the frame rate of the associated video. If the video frame rate
+    -- is 29.97, choose 29.97 dropframe (FRAMERATE_29_97_DROPFRAME) only if the
+    -- video has video_insertion=true and drop_frame_timecode=true; otherwise,
+    -- choose 29.97 non-dropframe (FRAMERATE_29_97_NON_DROPFRAME).
+    framerate :: Prelude.Maybe SccDestinationFramerate
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SccDestinationSettings' 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:
+--
+-- 'framerate', 'sccDestinationSettings_framerate' - Set Framerate (SccDestinationFramerate) to make sure that the captions
+-- and the video are synchronized in the output. Specify a frame rate that
+-- matches the frame rate of the associated video. If the video frame rate
+-- is 29.97, choose 29.97 dropframe (FRAMERATE_29_97_DROPFRAME) only if the
+-- video has video_insertion=true and drop_frame_timecode=true; otherwise,
+-- choose 29.97 non-dropframe (FRAMERATE_29_97_NON_DROPFRAME).
+newSccDestinationSettings ::
+  SccDestinationSettings
+newSccDestinationSettings =
+  SccDestinationSettings'
+    { framerate =
+        Prelude.Nothing
+    }
+
+-- | Set Framerate (SccDestinationFramerate) to make sure that the captions
+-- and the video are synchronized in the output. Specify a frame rate that
+-- matches the frame rate of the associated video. If the video frame rate
+-- is 29.97, choose 29.97 dropframe (FRAMERATE_29_97_DROPFRAME) only if the
+-- video has video_insertion=true and drop_frame_timecode=true; otherwise,
+-- choose 29.97 non-dropframe (FRAMERATE_29_97_NON_DROPFRAME).
+sccDestinationSettings_framerate :: Lens.Lens' SccDestinationSettings (Prelude.Maybe SccDestinationFramerate)
+sccDestinationSettings_framerate = Lens.lens (\SccDestinationSettings' {framerate} -> framerate) (\s@SccDestinationSettings' {} a -> s {framerate = a} :: SccDestinationSettings)
+
+instance Data.FromJSON SccDestinationSettings where
+  parseJSON =
+    Data.withObject
+      "SccDestinationSettings"
+      ( \x ->
+          SccDestinationSettings'
+            Prelude.<$> (x Data..:? "framerate")
+      )
+
+instance Prelude.Hashable SccDestinationSettings where
+  hashWithSalt _salt SccDestinationSettings' {..} =
+    _salt `Prelude.hashWithSalt` framerate
+
+instance Prelude.NFData SccDestinationSettings where
+  rnf SccDestinationSettings' {..} =
+    Prelude.rnf framerate
+
+instance Data.ToJSON SccDestinationSettings where
+  toJSON SccDestinationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("framerate" Data..=) Prelude.<$> framerate]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/SimulateReservedQueue.hs b/gen/Amazonka/MediaConvert/Types/SimulateReservedQueue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/SimulateReservedQueue.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.SimulateReservedQueue
+-- 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.SimulateReservedQueue
+  ( SimulateReservedQueue
+      ( ..,
+        SimulateReservedQueue_DISABLED,
+        SimulateReservedQueue_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Enable this setting when you run a test job to estimate how many
+-- reserved transcoding slots (RTS) you need. When this is enabled,
+-- MediaConvert runs your job from an on-demand queue with similar
+-- performance to what you will see with one RTS in a reserved queue. This
+-- setting is disabled by default.
+newtype SimulateReservedQueue = SimulateReservedQueue'
+  { fromSimulateReservedQueue ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SimulateReservedQueue_DISABLED :: SimulateReservedQueue
+pattern SimulateReservedQueue_DISABLED = SimulateReservedQueue' "DISABLED"
+
+pattern SimulateReservedQueue_ENABLED :: SimulateReservedQueue
+pattern SimulateReservedQueue_ENABLED = SimulateReservedQueue' "ENABLED"
+
+{-# COMPLETE
+  SimulateReservedQueue_DISABLED,
+  SimulateReservedQueue_ENABLED,
+  SimulateReservedQueue'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/SpekeKeyProvider.hs b/gen/Amazonka/MediaConvert/Types/SpekeKeyProvider.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/SpekeKeyProvider.hs
@@ -0,0 +1,147 @@
+{-# 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.SpekeKeyProvider
+-- 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.SpekeKeyProvider where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If your output group type is HLS, DASH, or Microsoft Smooth, use these
+-- settings when doing DRM encryption with a SPEKE-compliant key provider.
+-- If your output group type is CMAF, use the SpekeKeyProviderCmaf settings
+-- instead.
+--
+-- /See:/ 'newSpekeKeyProvider' smart constructor.
+data SpekeKeyProvider = SpekeKeyProvider'
+  { -- | If you want your key provider to encrypt the content keys that it
+    -- provides to MediaConvert, set up a certificate with a master key using
+    -- AWS Certificate Manager. Specify the certificate\'s Amazon Resource Name
+    -- (ARN) here.
+    certificateArn :: Prelude.Maybe Prelude.Text,
+    -- | Specify the resource ID that your SPEKE-compliant key provider uses to
+    -- identify this content.
+    resourceId :: Prelude.Maybe Prelude.Text,
+    -- | Relates to SPEKE implementation. DRM system identifiers. DASH output
+    -- groups support a max of two system ids. Other group types support one
+    -- system id. See https:\/\/dashif.org\/identifiers\/content_protection\/
+    -- for more details.
+    systemIds :: Prelude.Maybe [Prelude.Text],
+    -- | Specify the URL to the key server that your SPEKE-compliant DRM key
+    -- provider uses to provide keys for encrypting your content.
+    url :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SpekeKeyProvider' 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:
+--
+-- 'certificateArn', 'spekeKeyProvider_certificateArn' - If you want your key provider to encrypt the content keys that it
+-- provides to MediaConvert, set up a certificate with a master key using
+-- AWS Certificate Manager. Specify the certificate\'s Amazon Resource Name
+-- (ARN) here.
+--
+-- 'resourceId', 'spekeKeyProvider_resourceId' - Specify the resource ID that your SPEKE-compliant key provider uses to
+-- identify this content.
+--
+-- 'systemIds', 'spekeKeyProvider_systemIds' - Relates to SPEKE implementation. DRM system identifiers. DASH output
+-- groups support a max of two system ids. Other group types support one
+-- system id. See https:\/\/dashif.org\/identifiers\/content_protection\/
+-- for more details.
+--
+-- 'url', 'spekeKeyProvider_url' - Specify the URL to the key server that your SPEKE-compliant DRM key
+-- provider uses to provide keys for encrypting your content.
+newSpekeKeyProvider ::
+  SpekeKeyProvider
+newSpekeKeyProvider =
+  SpekeKeyProvider'
+    { certificateArn = Prelude.Nothing,
+      resourceId = Prelude.Nothing,
+      systemIds = Prelude.Nothing,
+      url = Prelude.Nothing
+    }
+
+-- | If you want your key provider to encrypt the content keys that it
+-- provides to MediaConvert, set up a certificate with a master key using
+-- AWS Certificate Manager. Specify the certificate\'s Amazon Resource Name
+-- (ARN) here.
+spekeKeyProvider_certificateArn :: Lens.Lens' SpekeKeyProvider (Prelude.Maybe Prelude.Text)
+spekeKeyProvider_certificateArn = Lens.lens (\SpekeKeyProvider' {certificateArn} -> certificateArn) (\s@SpekeKeyProvider' {} a -> s {certificateArn = a} :: SpekeKeyProvider)
+
+-- | Specify the resource ID that your SPEKE-compliant key provider uses to
+-- identify this content.
+spekeKeyProvider_resourceId :: Lens.Lens' SpekeKeyProvider (Prelude.Maybe Prelude.Text)
+spekeKeyProvider_resourceId = Lens.lens (\SpekeKeyProvider' {resourceId} -> resourceId) (\s@SpekeKeyProvider' {} a -> s {resourceId = a} :: SpekeKeyProvider)
+
+-- | Relates to SPEKE implementation. DRM system identifiers. DASH output
+-- groups support a max of two system ids. Other group types support one
+-- system id. See https:\/\/dashif.org\/identifiers\/content_protection\/
+-- for more details.
+spekeKeyProvider_systemIds :: Lens.Lens' SpekeKeyProvider (Prelude.Maybe [Prelude.Text])
+spekeKeyProvider_systemIds = Lens.lens (\SpekeKeyProvider' {systemIds} -> systemIds) (\s@SpekeKeyProvider' {} a -> s {systemIds = a} :: SpekeKeyProvider) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specify the URL to the key server that your SPEKE-compliant DRM key
+-- provider uses to provide keys for encrypting your content.
+spekeKeyProvider_url :: Lens.Lens' SpekeKeyProvider (Prelude.Maybe Prelude.Text)
+spekeKeyProvider_url = Lens.lens (\SpekeKeyProvider' {url} -> url) (\s@SpekeKeyProvider' {} a -> s {url = a} :: SpekeKeyProvider)
+
+instance Data.FromJSON SpekeKeyProvider where
+  parseJSON =
+    Data.withObject
+      "SpekeKeyProvider"
+      ( \x ->
+          SpekeKeyProvider'
+            Prelude.<$> (x Data..:? "certificateArn")
+            Prelude.<*> (x Data..:? "resourceId")
+            Prelude.<*> (x Data..:? "systemIds" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "url")
+      )
+
+instance Prelude.Hashable SpekeKeyProvider where
+  hashWithSalt _salt SpekeKeyProvider' {..} =
+    _salt
+      `Prelude.hashWithSalt` certificateArn
+      `Prelude.hashWithSalt` resourceId
+      `Prelude.hashWithSalt` systemIds
+      `Prelude.hashWithSalt` url
+
+instance Prelude.NFData SpekeKeyProvider where
+  rnf SpekeKeyProvider' {..} =
+    Prelude.rnf certificateArn
+      `Prelude.seq` Prelude.rnf resourceId
+      `Prelude.seq` Prelude.rnf systemIds
+      `Prelude.seq` Prelude.rnf url
+
+instance Data.ToJSON SpekeKeyProvider where
+  toJSON SpekeKeyProvider' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("certificateArn" Data..=)
+              Prelude.<$> certificateArn,
+            ("resourceId" Data..=) Prelude.<$> resourceId,
+            ("systemIds" Data..=) Prelude.<$> systemIds,
+            ("url" Data..=) Prelude.<$> url
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/SpekeKeyProviderCmaf.hs b/gen/Amazonka/MediaConvert/Types/SpekeKeyProviderCmaf.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/SpekeKeyProviderCmaf.hs
@@ -0,0 +1,181 @@
+{-# 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.SpekeKeyProviderCmaf
+-- 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.SpekeKeyProviderCmaf where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If your output group type is CMAF, use these settings when doing DRM
+-- encryption with a SPEKE-compliant key provider. If your output group
+-- type is HLS, DASH, or Microsoft Smooth, use the SpekeKeyProvider
+-- settings instead.
+--
+-- /See:/ 'newSpekeKeyProviderCmaf' smart constructor.
+data SpekeKeyProviderCmaf = SpekeKeyProviderCmaf'
+  { -- | If you want your key provider to encrypt the content keys that it
+    -- provides to MediaConvert, set up a certificate with a master key using
+    -- AWS Certificate Manager. Specify the certificate\'s Amazon Resource Name
+    -- (ARN) here.
+    certificateArn :: Prelude.Maybe Prelude.Text,
+    -- | Specify the DRM system IDs that you want signaled in the DASH manifest
+    -- that MediaConvert creates as part of this CMAF package. The DASH
+    -- manifest can currently signal up to three system IDs. For more
+    -- information, see
+    -- https:\/\/dashif.org\/identifiers\/content_protection\/.
+    dashSignaledSystemIds :: Prelude.Maybe [Prelude.Text],
+    -- | Specify the DRM system ID that you want signaled in the HLS manifest
+    -- that MediaConvert creates as part of this CMAF package. The HLS manifest
+    -- can currently signal only one system ID. For more information, see
+    -- https:\/\/dashif.org\/identifiers\/content_protection\/.
+    hlsSignaledSystemIds :: Prelude.Maybe [Prelude.Text],
+    -- | Specify the resource ID that your SPEKE-compliant key provider uses to
+    -- identify this content.
+    resourceId :: Prelude.Maybe Prelude.Text,
+    -- | Specify the URL to the key server that your SPEKE-compliant DRM key
+    -- provider uses to provide keys for encrypting your content.
+    url :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SpekeKeyProviderCmaf' 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:
+--
+-- 'certificateArn', 'spekeKeyProviderCmaf_certificateArn' - If you want your key provider to encrypt the content keys that it
+-- provides to MediaConvert, set up a certificate with a master key using
+-- AWS Certificate Manager. Specify the certificate\'s Amazon Resource Name
+-- (ARN) here.
+--
+-- 'dashSignaledSystemIds', 'spekeKeyProviderCmaf_dashSignaledSystemIds' - Specify the DRM system IDs that you want signaled in the DASH manifest
+-- that MediaConvert creates as part of this CMAF package. The DASH
+-- manifest can currently signal up to three system IDs. For more
+-- information, see
+-- https:\/\/dashif.org\/identifiers\/content_protection\/.
+--
+-- 'hlsSignaledSystemIds', 'spekeKeyProviderCmaf_hlsSignaledSystemIds' - Specify the DRM system ID that you want signaled in the HLS manifest
+-- that MediaConvert creates as part of this CMAF package. The HLS manifest
+-- can currently signal only one system ID. For more information, see
+-- https:\/\/dashif.org\/identifiers\/content_protection\/.
+--
+-- 'resourceId', 'spekeKeyProviderCmaf_resourceId' - Specify the resource ID that your SPEKE-compliant key provider uses to
+-- identify this content.
+--
+-- 'url', 'spekeKeyProviderCmaf_url' - Specify the URL to the key server that your SPEKE-compliant DRM key
+-- provider uses to provide keys for encrypting your content.
+newSpekeKeyProviderCmaf ::
+  SpekeKeyProviderCmaf
+newSpekeKeyProviderCmaf =
+  SpekeKeyProviderCmaf'
+    { certificateArn =
+        Prelude.Nothing,
+      dashSignaledSystemIds = Prelude.Nothing,
+      hlsSignaledSystemIds = Prelude.Nothing,
+      resourceId = Prelude.Nothing,
+      url = Prelude.Nothing
+    }
+
+-- | If you want your key provider to encrypt the content keys that it
+-- provides to MediaConvert, set up a certificate with a master key using
+-- AWS Certificate Manager. Specify the certificate\'s Amazon Resource Name
+-- (ARN) here.
+spekeKeyProviderCmaf_certificateArn :: Lens.Lens' SpekeKeyProviderCmaf (Prelude.Maybe Prelude.Text)
+spekeKeyProviderCmaf_certificateArn = Lens.lens (\SpekeKeyProviderCmaf' {certificateArn} -> certificateArn) (\s@SpekeKeyProviderCmaf' {} a -> s {certificateArn = a} :: SpekeKeyProviderCmaf)
+
+-- | Specify the DRM system IDs that you want signaled in the DASH manifest
+-- that MediaConvert creates as part of this CMAF package. The DASH
+-- manifest can currently signal up to three system IDs. For more
+-- information, see
+-- https:\/\/dashif.org\/identifiers\/content_protection\/.
+spekeKeyProviderCmaf_dashSignaledSystemIds :: Lens.Lens' SpekeKeyProviderCmaf (Prelude.Maybe [Prelude.Text])
+spekeKeyProviderCmaf_dashSignaledSystemIds = Lens.lens (\SpekeKeyProviderCmaf' {dashSignaledSystemIds} -> dashSignaledSystemIds) (\s@SpekeKeyProviderCmaf' {} a -> s {dashSignaledSystemIds = a} :: SpekeKeyProviderCmaf) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specify the DRM system ID that you want signaled in the HLS manifest
+-- that MediaConvert creates as part of this CMAF package. The HLS manifest
+-- can currently signal only one system ID. For more information, see
+-- https:\/\/dashif.org\/identifiers\/content_protection\/.
+spekeKeyProviderCmaf_hlsSignaledSystemIds :: Lens.Lens' SpekeKeyProviderCmaf (Prelude.Maybe [Prelude.Text])
+spekeKeyProviderCmaf_hlsSignaledSystemIds = Lens.lens (\SpekeKeyProviderCmaf' {hlsSignaledSystemIds} -> hlsSignaledSystemIds) (\s@SpekeKeyProviderCmaf' {} a -> s {hlsSignaledSystemIds = a} :: SpekeKeyProviderCmaf) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specify the resource ID that your SPEKE-compliant key provider uses to
+-- identify this content.
+spekeKeyProviderCmaf_resourceId :: Lens.Lens' SpekeKeyProviderCmaf (Prelude.Maybe Prelude.Text)
+spekeKeyProviderCmaf_resourceId = Lens.lens (\SpekeKeyProviderCmaf' {resourceId} -> resourceId) (\s@SpekeKeyProviderCmaf' {} a -> s {resourceId = a} :: SpekeKeyProviderCmaf)
+
+-- | Specify the URL to the key server that your SPEKE-compliant DRM key
+-- provider uses to provide keys for encrypting your content.
+spekeKeyProviderCmaf_url :: Lens.Lens' SpekeKeyProviderCmaf (Prelude.Maybe Prelude.Text)
+spekeKeyProviderCmaf_url = Lens.lens (\SpekeKeyProviderCmaf' {url} -> url) (\s@SpekeKeyProviderCmaf' {} a -> s {url = a} :: SpekeKeyProviderCmaf)
+
+instance Data.FromJSON SpekeKeyProviderCmaf where
+  parseJSON =
+    Data.withObject
+      "SpekeKeyProviderCmaf"
+      ( \x ->
+          SpekeKeyProviderCmaf'
+            Prelude.<$> (x Data..:? "certificateArn")
+            Prelude.<*> ( x
+                            Data..:? "dashSignaledSystemIds"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "hlsSignaledSystemIds"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "resourceId")
+            Prelude.<*> (x Data..:? "url")
+      )
+
+instance Prelude.Hashable SpekeKeyProviderCmaf where
+  hashWithSalt _salt SpekeKeyProviderCmaf' {..} =
+    _salt
+      `Prelude.hashWithSalt` certificateArn
+      `Prelude.hashWithSalt` dashSignaledSystemIds
+      `Prelude.hashWithSalt` hlsSignaledSystemIds
+      `Prelude.hashWithSalt` resourceId
+      `Prelude.hashWithSalt` url
+
+instance Prelude.NFData SpekeKeyProviderCmaf where
+  rnf SpekeKeyProviderCmaf' {..} =
+    Prelude.rnf certificateArn
+      `Prelude.seq` Prelude.rnf dashSignaledSystemIds
+      `Prelude.seq` Prelude.rnf hlsSignaledSystemIds
+      `Prelude.seq` Prelude.rnf resourceId
+      `Prelude.seq` Prelude.rnf url
+
+instance Data.ToJSON SpekeKeyProviderCmaf where
+  toJSON SpekeKeyProviderCmaf' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("certificateArn" Data..=)
+              Prelude.<$> certificateArn,
+            ("dashSignaledSystemIds" Data..=)
+              Prelude.<$> dashSignaledSystemIds,
+            ("hlsSignaledSystemIds" Data..=)
+              Prelude.<$> hlsSignaledSystemIds,
+            ("resourceId" Data..=) Prelude.<$> resourceId,
+            ("url" Data..=) Prelude.<$> url
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/SrtDestinationSettings.hs b/gen/Amazonka/MediaConvert/Types/SrtDestinationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/SrtDestinationSettings.hs
@@ -0,0 +1,102 @@
+{-# 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.SrtDestinationSettings
+-- 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.SrtDestinationSettings 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.SrtStylePassthrough
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to SRT captions. SRT is a sidecar format that holds
+-- captions in a file that is separate from the video container. Set up
+-- sidecar captions in the same output group, but different output from
+-- your video. When you work directly in your JSON job specification,
+-- include this object and any required children when you set
+-- destinationType to SRT.
+--
+-- /See:/ 'newSrtDestinationSettings' smart constructor.
+data SrtDestinationSettings = SrtDestinationSettings'
+  { -- | Set Style passthrough (StylePassthrough) to ENABLED to use the available
+    -- style, color, and position information from your input captions.
+    -- MediaConvert uses default settings for any missing style and position
+    -- information in your input captions. Set Style passthrough to DISABLED,
+    -- or leave blank, to ignore the style and position information from your
+    -- input captions and use simplified output captions.
+    stylePassthrough :: Prelude.Maybe SrtStylePassthrough
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SrtDestinationSettings' 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:
+--
+-- 'stylePassthrough', 'srtDestinationSettings_stylePassthrough' - Set Style passthrough (StylePassthrough) to ENABLED to use the available
+-- style, color, and position information from your input captions.
+-- MediaConvert uses default settings for any missing style and position
+-- information in your input captions. Set Style passthrough to DISABLED,
+-- or leave blank, to ignore the style and position information from your
+-- input captions and use simplified output captions.
+newSrtDestinationSettings ::
+  SrtDestinationSettings
+newSrtDestinationSettings =
+  SrtDestinationSettings'
+    { stylePassthrough =
+        Prelude.Nothing
+    }
+
+-- | Set Style passthrough (StylePassthrough) to ENABLED to use the available
+-- style, color, and position information from your input captions.
+-- MediaConvert uses default settings for any missing style and position
+-- information in your input captions. Set Style passthrough to DISABLED,
+-- or leave blank, to ignore the style and position information from your
+-- input captions and use simplified output captions.
+srtDestinationSettings_stylePassthrough :: Lens.Lens' SrtDestinationSettings (Prelude.Maybe SrtStylePassthrough)
+srtDestinationSettings_stylePassthrough = Lens.lens (\SrtDestinationSettings' {stylePassthrough} -> stylePassthrough) (\s@SrtDestinationSettings' {} a -> s {stylePassthrough = a} :: SrtDestinationSettings)
+
+instance Data.FromJSON SrtDestinationSettings where
+  parseJSON =
+    Data.withObject
+      "SrtDestinationSettings"
+      ( \x ->
+          SrtDestinationSettings'
+            Prelude.<$> (x Data..:? "stylePassthrough")
+      )
+
+instance Prelude.Hashable SrtDestinationSettings where
+  hashWithSalt _salt SrtDestinationSettings' {..} =
+    _salt `Prelude.hashWithSalt` stylePassthrough
+
+instance Prelude.NFData SrtDestinationSettings where
+  rnf SrtDestinationSettings' {..} =
+    Prelude.rnf stylePassthrough
+
+instance Data.ToJSON SrtDestinationSettings where
+  toJSON SrtDestinationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("stylePassthrough" Data..=)
+              Prelude.<$> stylePassthrough
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/SrtStylePassthrough.hs b/gen/Amazonka/MediaConvert/Types/SrtStylePassthrough.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/SrtStylePassthrough.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.SrtStylePassthrough
+-- 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.SrtStylePassthrough
+  ( SrtStylePassthrough
+      ( ..,
+        SrtStylePassthrough_DISABLED,
+        SrtStylePassthrough_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Set Style passthrough (StylePassthrough) to ENABLED to use the available
+-- style, color, and position information from your input captions.
+-- MediaConvert uses default settings for any missing style and position
+-- information in your input captions. Set Style passthrough to DISABLED,
+-- or leave blank, to ignore the style and position information from your
+-- input captions and use simplified output captions.
+newtype SrtStylePassthrough = SrtStylePassthrough'
+  { fromSrtStylePassthrough ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SrtStylePassthrough_DISABLED :: SrtStylePassthrough
+pattern SrtStylePassthrough_DISABLED = SrtStylePassthrough' "DISABLED"
+
+pattern SrtStylePassthrough_ENABLED :: SrtStylePassthrough
+pattern SrtStylePassthrough_ENABLED = SrtStylePassthrough' "ENABLED"
+
+{-# COMPLETE
+  SrtStylePassthrough_DISABLED,
+  SrtStylePassthrough_ENABLED,
+  SrtStylePassthrough'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/StaticKeyProvider.hs b/gen/Amazonka/MediaConvert/Types/StaticKeyProvider.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/StaticKeyProvider.hs
@@ -0,0 +1,136 @@
+{-# 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.StaticKeyProvider
+-- 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.StaticKeyProvider where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use these settings to set up encryption with a static key provider.
+--
+-- /See:/ 'newStaticKeyProvider' smart constructor.
+data StaticKeyProvider = StaticKeyProvider'
+  { -- | Relates to DRM implementation. Sets the value of the KEYFORMAT
+    -- attribute. Must be \'identity\' or a reverse DNS string. May be omitted
+    -- to indicate an implicit value of \'identity\'.
+    keyFormat :: Prelude.Maybe Prelude.Text,
+    -- | Relates to DRM implementation. Either a single positive integer version
+    -- value or a slash delimited list of version values (1\/2\/3).
+    keyFormatVersions :: Prelude.Maybe Prelude.Text,
+    -- | Relates to DRM implementation. Use a 32-character hexidecimal string to
+    -- specify Key Value (StaticKeyValue).
+    staticKeyValue :: Prelude.Maybe Prelude.Text,
+    -- | Relates to DRM implementation. The location of the license server used
+    -- for protecting content.
+    url :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StaticKeyProvider' 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:
+--
+-- 'keyFormat', 'staticKeyProvider_keyFormat' - Relates to DRM implementation. Sets the value of the KEYFORMAT
+-- attribute. Must be \'identity\' or a reverse DNS string. May be omitted
+-- to indicate an implicit value of \'identity\'.
+--
+-- 'keyFormatVersions', 'staticKeyProvider_keyFormatVersions' - Relates to DRM implementation. Either a single positive integer version
+-- value or a slash delimited list of version values (1\/2\/3).
+--
+-- 'staticKeyValue', 'staticKeyProvider_staticKeyValue' - Relates to DRM implementation. Use a 32-character hexidecimal string to
+-- specify Key Value (StaticKeyValue).
+--
+-- 'url', 'staticKeyProvider_url' - Relates to DRM implementation. The location of the license server used
+-- for protecting content.
+newStaticKeyProvider ::
+  StaticKeyProvider
+newStaticKeyProvider =
+  StaticKeyProvider'
+    { keyFormat = Prelude.Nothing,
+      keyFormatVersions = Prelude.Nothing,
+      staticKeyValue = Prelude.Nothing,
+      url = Prelude.Nothing
+    }
+
+-- | Relates to DRM implementation. Sets the value of the KEYFORMAT
+-- attribute. Must be \'identity\' or a reverse DNS string. May be omitted
+-- to indicate an implicit value of \'identity\'.
+staticKeyProvider_keyFormat :: Lens.Lens' StaticKeyProvider (Prelude.Maybe Prelude.Text)
+staticKeyProvider_keyFormat = Lens.lens (\StaticKeyProvider' {keyFormat} -> keyFormat) (\s@StaticKeyProvider' {} a -> s {keyFormat = a} :: StaticKeyProvider)
+
+-- | Relates to DRM implementation. Either a single positive integer version
+-- value or a slash delimited list of version values (1\/2\/3).
+staticKeyProvider_keyFormatVersions :: Lens.Lens' StaticKeyProvider (Prelude.Maybe Prelude.Text)
+staticKeyProvider_keyFormatVersions = Lens.lens (\StaticKeyProvider' {keyFormatVersions} -> keyFormatVersions) (\s@StaticKeyProvider' {} a -> s {keyFormatVersions = a} :: StaticKeyProvider)
+
+-- | Relates to DRM implementation. Use a 32-character hexidecimal string to
+-- specify Key Value (StaticKeyValue).
+staticKeyProvider_staticKeyValue :: Lens.Lens' StaticKeyProvider (Prelude.Maybe Prelude.Text)
+staticKeyProvider_staticKeyValue = Lens.lens (\StaticKeyProvider' {staticKeyValue} -> staticKeyValue) (\s@StaticKeyProvider' {} a -> s {staticKeyValue = a} :: StaticKeyProvider)
+
+-- | Relates to DRM implementation. The location of the license server used
+-- for protecting content.
+staticKeyProvider_url :: Lens.Lens' StaticKeyProvider (Prelude.Maybe Prelude.Text)
+staticKeyProvider_url = Lens.lens (\StaticKeyProvider' {url} -> url) (\s@StaticKeyProvider' {} a -> s {url = a} :: StaticKeyProvider)
+
+instance Data.FromJSON StaticKeyProvider where
+  parseJSON =
+    Data.withObject
+      "StaticKeyProvider"
+      ( \x ->
+          StaticKeyProvider'
+            Prelude.<$> (x Data..:? "keyFormat")
+            Prelude.<*> (x Data..:? "keyFormatVersions")
+            Prelude.<*> (x Data..:? "staticKeyValue")
+            Prelude.<*> (x Data..:? "url")
+      )
+
+instance Prelude.Hashable StaticKeyProvider where
+  hashWithSalt _salt StaticKeyProvider' {..} =
+    _salt
+      `Prelude.hashWithSalt` keyFormat
+      `Prelude.hashWithSalt` keyFormatVersions
+      `Prelude.hashWithSalt` staticKeyValue
+      `Prelude.hashWithSalt` url
+
+instance Prelude.NFData StaticKeyProvider where
+  rnf StaticKeyProvider' {..} =
+    Prelude.rnf keyFormat
+      `Prelude.seq` Prelude.rnf keyFormatVersions
+      `Prelude.seq` Prelude.rnf staticKeyValue
+      `Prelude.seq` Prelude.rnf url
+
+instance Data.ToJSON StaticKeyProvider where
+  toJSON StaticKeyProvider' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("keyFormat" Data..=) Prelude.<$> keyFormat,
+            ("keyFormatVersions" Data..=)
+              Prelude.<$> keyFormatVersions,
+            ("staticKeyValue" Data..=)
+              Prelude.<$> staticKeyValue,
+            ("url" Data..=) Prelude.<$> url
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/StatusUpdateInterval.hs b/gen/Amazonka/MediaConvert/Types/StatusUpdateInterval.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/StatusUpdateInterval.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.StatusUpdateInterval
+-- 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.StatusUpdateInterval
+  ( StatusUpdateInterval
+      ( ..,
+        StatusUpdateInterval_SECONDS_10,
+        StatusUpdateInterval_SECONDS_12,
+        StatusUpdateInterval_SECONDS_120,
+        StatusUpdateInterval_SECONDS_15,
+        StatusUpdateInterval_SECONDS_180,
+        StatusUpdateInterval_SECONDS_20,
+        StatusUpdateInterval_SECONDS_240,
+        StatusUpdateInterval_SECONDS_30,
+        StatusUpdateInterval_SECONDS_300,
+        StatusUpdateInterval_SECONDS_360,
+        StatusUpdateInterval_SECONDS_420,
+        StatusUpdateInterval_SECONDS_480,
+        StatusUpdateInterval_SECONDS_540,
+        StatusUpdateInterval_SECONDS_60,
+        StatusUpdateInterval_SECONDS_600
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
+-- CloudWatch Events. Set the interval, in seconds, between status updates.
+-- MediaConvert sends an update at this interval from the time the service
+-- begins processing your job to the time it completes the transcode or
+-- encounters an error.
+newtype StatusUpdateInterval = StatusUpdateInterval'
+  { fromStatusUpdateInterval ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern StatusUpdateInterval_SECONDS_10 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_10 = StatusUpdateInterval' "SECONDS_10"
+
+pattern StatusUpdateInterval_SECONDS_12 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_12 = StatusUpdateInterval' "SECONDS_12"
+
+pattern StatusUpdateInterval_SECONDS_120 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_120 = StatusUpdateInterval' "SECONDS_120"
+
+pattern StatusUpdateInterval_SECONDS_15 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_15 = StatusUpdateInterval' "SECONDS_15"
+
+pattern StatusUpdateInterval_SECONDS_180 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_180 = StatusUpdateInterval' "SECONDS_180"
+
+pattern StatusUpdateInterval_SECONDS_20 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_20 = StatusUpdateInterval' "SECONDS_20"
+
+pattern StatusUpdateInterval_SECONDS_240 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_240 = StatusUpdateInterval' "SECONDS_240"
+
+pattern StatusUpdateInterval_SECONDS_30 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_30 = StatusUpdateInterval' "SECONDS_30"
+
+pattern StatusUpdateInterval_SECONDS_300 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_300 = StatusUpdateInterval' "SECONDS_300"
+
+pattern StatusUpdateInterval_SECONDS_360 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_360 = StatusUpdateInterval' "SECONDS_360"
+
+pattern StatusUpdateInterval_SECONDS_420 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_420 = StatusUpdateInterval' "SECONDS_420"
+
+pattern StatusUpdateInterval_SECONDS_480 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_480 = StatusUpdateInterval' "SECONDS_480"
+
+pattern StatusUpdateInterval_SECONDS_540 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_540 = StatusUpdateInterval' "SECONDS_540"
+
+pattern StatusUpdateInterval_SECONDS_60 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_60 = StatusUpdateInterval' "SECONDS_60"
+
+pattern StatusUpdateInterval_SECONDS_600 :: StatusUpdateInterval
+pattern StatusUpdateInterval_SECONDS_600 = StatusUpdateInterval' "SECONDS_600"
+
+{-# COMPLETE
+  StatusUpdateInterval_SECONDS_10,
+  StatusUpdateInterval_SECONDS_12,
+  StatusUpdateInterval_SECONDS_120,
+  StatusUpdateInterval_SECONDS_15,
+  StatusUpdateInterval_SECONDS_180,
+  StatusUpdateInterval_SECONDS_20,
+  StatusUpdateInterval_SECONDS_240,
+  StatusUpdateInterval_SECONDS_30,
+  StatusUpdateInterval_SECONDS_300,
+  StatusUpdateInterval_SECONDS_360,
+  StatusUpdateInterval_SECONDS_420,
+  StatusUpdateInterval_SECONDS_480,
+  StatusUpdateInterval_SECONDS_540,
+  StatusUpdateInterval_SECONDS_60,
+  StatusUpdateInterval_SECONDS_600,
+  StatusUpdateInterval'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/TeletextDestinationSettings.hs b/gen/Amazonka/MediaConvert/Types/TeletextDestinationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/TeletextDestinationSettings.hs
@@ -0,0 +1,121 @@
+{-# 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.TeletextDestinationSettings
+-- 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.TeletextDestinationSettings 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.TeletextPageType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to teletext captions. Set up teletext captions in the
+-- same output as your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/teletext-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to
+-- TELETEXT.
+--
+-- /See:/ 'newTeletextDestinationSettings' smart constructor.
+data TeletextDestinationSettings = TeletextDestinationSettings'
+  { -- | Set pageNumber to the Teletext page number for the destination captions
+    -- for this output. This value must be a three-digit hexadecimal string;
+    -- strings ending in -FF are invalid. If you are passing through the entire
+    -- set of Teletext data, do not use this field.
+    pageNumber :: Prelude.Maybe Prelude.Text,
+    -- | Specify the page types for this Teletext page. If you don\'t specify a
+    -- value here, the service sets the page type to the default value Subtitle
+    -- (PAGE_TYPE_SUBTITLE). If you pass through the entire set of Teletext
+    -- data, don\'t use this field. When you pass through a set of Teletext
+    -- pages, your output has the same page types as your input.
+    pageTypes :: Prelude.Maybe [TeletextPageType]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TeletextDestinationSettings' 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:
+--
+-- 'pageNumber', 'teletextDestinationSettings_pageNumber' - Set pageNumber to the Teletext page number for the destination captions
+-- for this output. This value must be a three-digit hexadecimal string;
+-- strings ending in -FF are invalid. If you are passing through the entire
+-- set of Teletext data, do not use this field.
+--
+-- 'pageTypes', 'teletextDestinationSettings_pageTypes' - Specify the page types for this Teletext page. If you don\'t specify a
+-- value here, the service sets the page type to the default value Subtitle
+-- (PAGE_TYPE_SUBTITLE). If you pass through the entire set of Teletext
+-- data, don\'t use this field. When you pass through a set of Teletext
+-- pages, your output has the same page types as your input.
+newTeletextDestinationSettings ::
+  TeletextDestinationSettings
+newTeletextDestinationSettings =
+  TeletextDestinationSettings'
+    { pageNumber =
+        Prelude.Nothing,
+      pageTypes = Prelude.Nothing
+    }
+
+-- | Set pageNumber to the Teletext page number for the destination captions
+-- for this output. This value must be a three-digit hexadecimal string;
+-- strings ending in -FF are invalid. If you are passing through the entire
+-- set of Teletext data, do not use this field.
+teletextDestinationSettings_pageNumber :: Lens.Lens' TeletextDestinationSettings (Prelude.Maybe Prelude.Text)
+teletextDestinationSettings_pageNumber = Lens.lens (\TeletextDestinationSettings' {pageNumber} -> pageNumber) (\s@TeletextDestinationSettings' {} a -> s {pageNumber = a} :: TeletextDestinationSettings)
+
+-- | Specify the page types for this Teletext page. If you don\'t specify a
+-- value here, the service sets the page type to the default value Subtitle
+-- (PAGE_TYPE_SUBTITLE). If you pass through the entire set of Teletext
+-- data, don\'t use this field. When you pass through a set of Teletext
+-- pages, your output has the same page types as your input.
+teletextDestinationSettings_pageTypes :: Lens.Lens' TeletextDestinationSettings (Prelude.Maybe [TeletextPageType])
+teletextDestinationSettings_pageTypes = Lens.lens (\TeletextDestinationSettings' {pageTypes} -> pageTypes) (\s@TeletextDestinationSettings' {} a -> s {pageTypes = a} :: TeletextDestinationSettings) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON TeletextDestinationSettings where
+  parseJSON =
+    Data.withObject
+      "TeletextDestinationSettings"
+      ( \x ->
+          TeletextDestinationSettings'
+            Prelude.<$> (x Data..:? "pageNumber")
+            Prelude.<*> (x Data..:? "pageTypes" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable TeletextDestinationSettings where
+  hashWithSalt _salt TeletextDestinationSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` pageNumber
+      `Prelude.hashWithSalt` pageTypes
+
+instance Prelude.NFData TeletextDestinationSettings where
+  rnf TeletextDestinationSettings' {..} =
+    Prelude.rnf pageNumber
+      `Prelude.seq` Prelude.rnf pageTypes
+
+instance Data.ToJSON TeletextDestinationSettings where
+  toJSON TeletextDestinationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("pageNumber" Data..=) Prelude.<$> pageNumber,
+            ("pageTypes" Data..=) Prelude.<$> pageTypes
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/TeletextPageType.hs b/gen/Amazonka/MediaConvert/Types/TeletextPageType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/TeletextPageType.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.TeletextPageType
+-- 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.TeletextPageType
+  ( TeletextPageType
+      ( ..,
+        TeletextPageType_PAGE_TYPE_ADDL_INFO,
+        TeletextPageType_PAGE_TYPE_HEARING_IMPAIRED_SUBTITLE,
+        TeletextPageType_PAGE_TYPE_INITIAL,
+        TeletextPageType_PAGE_TYPE_PROGRAM_SCHEDULE,
+        TeletextPageType_PAGE_TYPE_SUBTITLE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A page type as defined in the standard ETSI EN 300 468, Table 94
+newtype TeletextPageType = TeletextPageType'
+  { fromTeletextPageType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TeletextPageType_PAGE_TYPE_ADDL_INFO :: TeletextPageType
+pattern TeletextPageType_PAGE_TYPE_ADDL_INFO = TeletextPageType' "PAGE_TYPE_ADDL_INFO"
+
+pattern TeletextPageType_PAGE_TYPE_HEARING_IMPAIRED_SUBTITLE :: TeletextPageType
+pattern TeletextPageType_PAGE_TYPE_HEARING_IMPAIRED_SUBTITLE = TeletextPageType' "PAGE_TYPE_HEARING_IMPAIRED_SUBTITLE"
+
+pattern TeletextPageType_PAGE_TYPE_INITIAL :: TeletextPageType
+pattern TeletextPageType_PAGE_TYPE_INITIAL = TeletextPageType' "PAGE_TYPE_INITIAL"
+
+pattern TeletextPageType_PAGE_TYPE_PROGRAM_SCHEDULE :: TeletextPageType
+pattern TeletextPageType_PAGE_TYPE_PROGRAM_SCHEDULE = TeletextPageType' "PAGE_TYPE_PROGRAM_SCHEDULE"
+
+pattern TeletextPageType_PAGE_TYPE_SUBTITLE :: TeletextPageType
+pattern TeletextPageType_PAGE_TYPE_SUBTITLE = TeletextPageType' "PAGE_TYPE_SUBTITLE"
+
+{-# COMPLETE
+  TeletextPageType_PAGE_TYPE_ADDL_INFO,
+  TeletextPageType_PAGE_TYPE_HEARING_IMPAIRED_SUBTITLE,
+  TeletextPageType_PAGE_TYPE_INITIAL,
+  TeletextPageType_PAGE_TYPE_PROGRAM_SCHEDULE,
+  TeletextPageType_PAGE_TYPE_SUBTITLE,
+  TeletextPageType'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/TeletextSourceSettings.hs b/gen/Amazonka/MediaConvert/Types/TeletextSourceSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/TeletextSourceSettings.hs
@@ -0,0 +1,85 @@
+{-# 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.TeletextSourceSettings
+-- 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.TeletextSourceSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings specific to Teletext caption sources, including Page number.
+--
+-- /See:/ 'newTeletextSourceSettings' smart constructor.
+data TeletextSourceSettings = TeletextSourceSettings'
+  { -- | Use Page Number (PageNumber) to specify the three-digit hexadecimal page
+    -- number that will be used for Teletext captions. Do not use this setting
+    -- if you are passing through teletext from the input source to output.
+    pageNumber :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TeletextSourceSettings' 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:
+--
+-- 'pageNumber', 'teletextSourceSettings_pageNumber' - Use Page Number (PageNumber) to specify the three-digit hexadecimal page
+-- number that will be used for Teletext captions. Do not use this setting
+-- if you are passing through teletext from the input source to output.
+newTeletextSourceSettings ::
+  TeletextSourceSettings
+newTeletextSourceSettings =
+  TeletextSourceSettings'
+    { pageNumber =
+        Prelude.Nothing
+    }
+
+-- | Use Page Number (PageNumber) to specify the three-digit hexadecimal page
+-- number that will be used for Teletext captions. Do not use this setting
+-- if you are passing through teletext from the input source to output.
+teletextSourceSettings_pageNumber :: Lens.Lens' TeletextSourceSettings (Prelude.Maybe Prelude.Text)
+teletextSourceSettings_pageNumber = Lens.lens (\TeletextSourceSettings' {pageNumber} -> pageNumber) (\s@TeletextSourceSettings' {} a -> s {pageNumber = a} :: TeletextSourceSettings)
+
+instance Data.FromJSON TeletextSourceSettings where
+  parseJSON =
+    Data.withObject
+      "TeletextSourceSettings"
+      ( \x ->
+          TeletextSourceSettings'
+            Prelude.<$> (x Data..:? "pageNumber")
+      )
+
+instance Prelude.Hashable TeletextSourceSettings where
+  hashWithSalt _salt TeletextSourceSettings' {..} =
+    _salt `Prelude.hashWithSalt` pageNumber
+
+instance Prelude.NFData TeletextSourceSettings where
+  rnf TeletextSourceSettings' {..} =
+    Prelude.rnf pageNumber
+
+instance Data.ToJSON TeletextSourceSettings where
+  toJSON TeletextSourceSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("pageNumber" Data..=) Prelude.<$> pageNumber]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/TimecodeBurnin.hs b/gen/Amazonka/MediaConvert/Types/TimecodeBurnin.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/TimecodeBurnin.hs
@@ -0,0 +1,129 @@
+{-# 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.TimecodeBurnin
+-- 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.TimecodeBurnin 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.TimecodeBurninPosition
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings for burning the output timecode and specified prefix into the
+-- output.
+--
+-- /See:/ 'newTimecodeBurnin' smart constructor.
+data TimecodeBurnin = TimecodeBurnin'
+  { -- | Use Font Size (FontSize) to set the font size of any burned-in timecode.
+    -- Valid values are 10, 16, 32, 48.
+    fontSize :: Prelude.Maybe Prelude.Natural,
+    -- | Use Position (Position) under under Timecode burn-in (TimecodeBurnIn) to
+    -- specify the location the burned-in timecode on output video.
+    position :: Prelude.Maybe TimecodeBurninPosition,
+    -- | Use Prefix (Prefix) to place ASCII characters before any burned-in
+    -- timecode. For example, a prefix of \"EZ-\" will result in the timecode
+    -- \"EZ-00:00:00:00\". Provide either the characters themselves or the
+    -- ASCII code equivalents. The supported range of characters is 0x20
+    -- through 0x7e. This includes letters, numbers, and all special characters
+    -- represented on a standard English keyboard.
+    prefix :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TimecodeBurnin' 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:
+--
+-- 'fontSize', 'timecodeBurnin_fontSize' - Use Font Size (FontSize) to set the font size of any burned-in timecode.
+-- Valid values are 10, 16, 32, 48.
+--
+-- 'position', 'timecodeBurnin_position' - Use Position (Position) under under Timecode burn-in (TimecodeBurnIn) to
+-- specify the location the burned-in timecode on output video.
+--
+-- 'prefix', 'timecodeBurnin_prefix' - Use Prefix (Prefix) to place ASCII characters before any burned-in
+-- timecode. For example, a prefix of \"EZ-\" will result in the timecode
+-- \"EZ-00:00:00:00\". Provide either the characters themselves or the
+-- ASCII code equivalents. The supported range of characters is 0x20
+-- through 0x7e. This includes letters, numbers, and all special characters
+-- represented on a standard English keyboard.
+newTimecodeBurnin ::
+  TimecodeBurnin
+newTimecodeBurnin =
+  TimecodeBurnin'
+    { fontSize = Prelude.Nothing,
+      position = Prelude.Nothing,
+      prefix = Prelude.Nothing
+    }
+
+-- | Use Font Size (FontSize) to set the font size of any burned-in timecode.
+-- Valid values are 10, 16, 32, 48.
+timecodeBurnin_fontSize :: Lens.Lens' TimecodeBurnin (Prelude.Maybe Prelude.Natural)
+timecodeBurnin_fontSize = Lens.lens (\TimecodeBurnin' {fontSize} -> fontSize) (\s@TimecodeBurnin' {} a -> s {fontSize = a} :: TimecodeBurnin)
+
+-- | Use Position (Position) under under Timecode burn-in (TimecodeBurnIn) to
+-- specify the location the burned-in timecode on output video.
+timecodeBurnin_position :: Lens.Lens' TimecodeBurnin (Prelude.Maybe TimecodeBurninPosition)
+timecodeBurnin_position = Lens.lens (\TimecodeBurnin' {position} -> position) (\s@TimecodeBurnin' {} a -> s {position = a} :: TimecodeBurnin)
+
+-- | Use Prefix (Prefix) to place ASCII characters before any burned-in
+-- timecode. For example, a prefix of \"EZ-\" will result in the timecode
+-- \"EZ-00:00:00:00\". Provide either the characters themselves or the
+-- ASCII code equivalents. The supported range of characters is 0x20
+-- through 0x7e. This includes letters, numbers, and all special characters
+-- represented on a standard English keyboard.
+timecodeBurnin_prefix :: Lens.Lens' TimecodeBurnin (Prelude.Maybe Prelude.Text)
+timecodeBurnin_prefix = Lens.lens (\TimecodeBurnin' {prefix} -> prefix) (\s@TimecodeBurnin' {} a -> s {prefix = a} :: TimecodeBurnin)
+
+instance Data.FromJSON TimecodeBurnin where
+  parseJSON =
+    Data.withObject
+      "TimecodeBurnin"
+      ( \x ->
+          TimecodeBurnin'
+            Prelude.<$> (x Data..:? "fontSize")
+            Prelude.<*> (x Data..:? "position")
+            Prelude.<*> (x Data..:? "prefix")
+      )
+
+instance Prelude.Hashable TimecodeBurnin where
+  hashWithSalt _salt TimecodeBurnin' {..} =
+    _salt
+      `Prelude.hashWithSalt` fontSize
+      `Prelude.hashWithSalt` position
+      `Prelude.hashWithSalt` prefix
+
+instance Prelude.NFData TimecodeBurnin where
+  rnf TimecodeBurnin' {..} =
+    Prelude.rnf fontSize
+      `Prelude.seq` Prelude.rnf position
+      `Prelude.seq` Prelude.rnf prefix
+
+instance Data.ToJSON TimecodeBurnin where
+  toJSON TimecodeBurnin' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("fontSize" Data..=) Prelude.<$> fontSize,
+            ("position" Data..=) Prelude.<$> position,
+            ("prefix" Data..=) Prelude.<$> prefix
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/TimecodeBurninPosition.hs b/gen/Amazonka/MediaConvert/Types/TimecodeBurninPosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/TimecodeBurninPosition.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.TimecodeBurninPosition
+-- 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.TimecodeBurninPosition
+  ( TimecodeBurninPosition
+      ( ..,
+        TimecodeBurninPosition_BOTTOM_CENTER,
+        TimecodeBurninPosition_BOTTOM_LEFT,
+        TimecodeBurninPosition_BOTTOM_RIGHT,
+        TimecodeBurninPosition_MIDDLE_CENTER,
+        TimecodeBurninPosition_MIDDLE_LEFT,
+        TimecodeBurninPosition_MIDDLE_RIGHT,
+        TimecodeBurninPosition_TOP_CENTER,
+        TimecodeBurninPosition_TOP_LEFT,
+        TimecodeBurninPosition_TOP_RIGHT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Position (Position) under under Timecode burn-in (TimecodeBurnIn) to
+-- specify the location the burned-in timecode on output video.
+newtype TimecodeBurninPosition = TimecodeBurninPosition'
+  { fromTimecodeBurninPosition ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TimecodeBurninPosition_BOTTOM_CENTER :: TimecodeBurninPosition
+pattern TimecodeBurninPosition_BOTTOM_CENTER = TimecodeBurninPosition' "BOTTOM_CENTER"
+
+pattern TimecodeBurninPosition_BOTTOM_LEFT :: TimecodeBurninPosition
+pattern TimecodeBurninPosition_BOTTOM_LEFT = TimecodeBurninPosition' "BOTTOM_LEFT"
+
+pattern TimecodeBurninPosition_BOTTOM_RIGHT :: TimecodeBurninPosition
+pattern TimecodeBurninPosition_BOTTOM_RIGHT = TimecodeBurninPosition' "BOTTOM_RIGHT"
+
+pattern TimecodeBurninPosition_MIDDLE_CENTER :: TimecodeBurninPosition
+pattern TimecodeBurninPosition_MIDDLE_CENTER = TimecodeBurninPosition' "MIDDLE_CENTER"
+
+pattern TimecodeBurninPosition_MIDDLE_LEFT :: TimecodeBurninPosition
+pattern TimecodeBurninPosition_MIDDLE_LEFT = TimecodeBurninPosition' "MIDDLE_LEFT"
+
+pattern TimecodeBurninPosition_MIDDLE_RIGHT :: TimecodeBurninPosition
+pattern TimecodeBurninPosition_MIDDLE_RIGHT = TimecodeBurninPosition' "MIDDLE_RIGHT"
+
+pattern TimecodeBurninPosition_TOP_CENTER :: TimecodeBurninPosition
+pattern TimecodeBurninPosition_TOP_CENTER = TimecodeBurninPosition' "TOP_CENTER"
+
+pattern TimecodeBurninPosition_TOP_LEFT :: TimecodeBurninPosition
+pattern TimecodeBurninPosition_TOP_LEFT = TimecodeBurninPosition' "TOP_LEFT"
+
+pattern TimecodeBurninPosition_TOP_RIGHT :: TimecodeBurninPosition
+pattern TimecodeBurninPosition_TOP_RIGHT = TimecodeBurninPosition' "TOP_RIGHT"
+
+{-# COMPLETE
+  TimecodeBurninPosition_BOTTOM_CENTER,
+  TimecodeBurninPosition_BOTTOM_LEFT,
+  TimecodeBurninPosition_BOTTOM_RIGHT,
+  TimecodeBurninPosition_MIDDLE_CENTER,
+  TimecodeBurninPosition_MIDDLE_LEFT,
+  TimecodeBurninPosition_MIDDLE_RIGHT,
+  TimecodeBurninPosition_TOP_CENTER,
+  TimecodeBurninPosition_TOP_LEFT,
+  TimecodeBurninPosition_TOP_RIGHT,
+  TimecodeBurninPosition'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/TimecodeConfig.hs b/gen/Amazonka/MediaConvert/Types/TimecodeConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/TimecodeConfig.hs
@@ -0,0 +1,218 @@
+{-# 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.TimecodeConfig
+-- 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.TimecodeConfig 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.TimecodeSource
+import qualified Amazonka.Prelude as Prelude
+
+-- | These settings control how the service handles timecodes throughout the
+-- job. These settings don\'t affect input clipping.
+--
+-- /See:/ 'newTimecodeConfig' smart constructor.
+data TimecodeConfig = TimecodeConfig'
+  { -- | If you use an editing platform that relies on an anchor timecode, use
+    -- Anchor Timecode (Anchor) to specify a timecode that will match the input
+    -- video frame to the output video frame. Use 24-hour format with frame
+    -- number, (HH:MM:SS:FF) or (HH:MM:SS;FF). This setting ignores frame rate
+    -- conversion. System behavior for Anchor Timecode varies depending on your
+    -- setting for Source (TimecodeSource). * If Source (TimecodeSource) is set
+    -- to Specified Start (SPECIFIEDSTART), the first input frame is the
+    -- specified value in Start Timecode (Start). Anchor Timecode (Anchor) and
+    -- Start Timecode (Start) are used calculate output timecode. * If Source
+    -- (TimecodeSource) is set to Start at 0 (ZEROBASED) the first frame is
+    -- 00:00:00:00. * If Source (TimecodeSource) is set to Embedded (EMBEDDED),
+    -- the first frame is the timecode value on the first input frame of the
+    -- input.
+    anchor :: Prelude.Maybe Prelude.Text,
+    -- | Use Source (TimecodeSource) to set how timecodes are handled within this
+    -- job. To make sure that your video, audio, captions, and markers are
+    -- synchronized and that time-based features, such as image inserter, work
+    -- correctly, choose the Timecode source option that matches your assets.
+    -- All timecodes are in a 24-hour format with frame number (HH:MM:SS:FF). *
+    -- Embedded (EMBEDDED) - Use the timecode that is in the input video. If no
+    -- embedded timecode is in the source, the service will use Start at 0
+    -- (ZEROBASED) instead. * Start at 0 (ZEROBASED) - Set the timecode of the
+    -- initial frame to 00:00:00:00. * Specified Start (SPECIFIEDSTART) - Set
+    -- the timecode of the initial frame to a value other than zero. You use
+    -- Start timecode (Start) to provide this value.
+    source :: Prelude.Maybe TimecodeSource,
+    -- | Only use when you set Source (TimecodeSource) to Specified start
+    -- (SPECIFIEDSTART). Use Start timecode (Start) to specify the timecode for
+    -- the initial frame. Use 24-hour format with frame number, (HH:MM:SS:FF)
+    -- or (HH:MM:SS;FF).
+    start :: Prelude.Maybe Prelude.Text,
+    -- | Only applies to outputs that support program-date-time stamp. Use
+    -- Timestamp offset (TimestampOffset) to overwrite the timecode date
+    -- without affecting the time and frame number. Provide the new date as a
+    -- string in the format \"yyyy-mm-dd\". To use Time stamp offset, you must
+    -- also enable Insert program-date-time (InsertProgramDateTime) in the
+    -- output settings. For example, if the date part of your timecodes is
+    -- 2002-1-25 and you want to change it to one year later, set Timestamp
+    -- offset (TimestampOffset) to 2003-1-25.
+    timestampOffset :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TimecodeConfig' 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:
+--
+-- 'anchor', 'timecodeConfig_anchor' - If you use an editing platform that relies on an anchor timecode, use
+-- Anchor Timecode (Anchor) to specify a timecode that will match the input
+-- video frame to the output video frame. Use 24-hour format with frame
+-- number, (HH:MM:SS:FF) or (HH:MM:SS;FF). This setting ignores frame rate
+-- conversion. System behavior for Anchor Timecode varies depending on your
+-- setting for Source (TimecodeSource). * If Source (TimecodeSource) is set
+-- to Specified Start (SPECIFIEDSTART), the first input frame is the
+-- specified value in Start Timecode (Start). Anchor Timecode (Anchor) and
+-- Start Timecode (Start) are used calculate output timecode. * If Source
+-- (TimecodeSource) is set to Start at 0 (ZEROBASED) the first frame is
+-- 00:00:00:00. * If Source (TimecodeSource) is set to Embedded (EMBEDDED),
+-- the first frame is the timecode value on the first input frame of the
+-- input.
+--
+-- 'source', 'timecodeConfig_source' - Use Source (TimecodeSource) to set how timecodes are handled within this
+-- job. To make sure that your video, audio, captions, and markers are
+-- synchronized and that time-based features, such as image inserter, work
+-- correctly, choose the Timecode source option that matches your assets.
+-- All timecodes are in a 24-hour format with frame number (HH:MM:SS:FF). *
+-- Embedded (EMBEDDED) - Use the timecode that is in the input video. If no
+-- embedded timecode is in the source, the service will use Start at 0
+-- (ZEROBASED) instead. * Start at 0 (ZEROBASED) - Set the timecode of the
+-- initial frame to 00:00:00:00. * Specified Start (SPECIFIEDSTART) - Set
+-- the timecode of the initial frame to a value other than zero. You use
+-- Start timecode (Start) to provide this value.
+--
+-- 'start', 'timecodeConfig_start' - Only use when you set Source (TimecodeSource) to Specified start
+-- (SPECIFIEDSTART). Use Start timecode (Start) to specify the timecode for
+-- the initial frame. Use 24-hour format with frame number, (HH:MM:SS:FF)
+-- or (HH:MM:SS;FF).
+--
+-- 'timestampOffset', 'timecodeConfig_timestampOffset' - Only applies to outputs that support program-date-time stamp. Use
+-- Timestamp offset (TimestampOffset) to overwrite the timecode date
+-- without affecting the time and frame number. Provide the new date as a
+-- string in the format \"yyyy-mm-dd\". To use Time stamp offset, you must
+-- also enable Insert program-date-time (InsertProgramDateTime) in the
+-- output settings. For example, if the date part of your timecodes is
+-- 2002-1-25 and you want to change it to one year later, set Timestamp
+-- offset (TimestampOffset) to 2003-1-25.
+newTimecodeConfig ::
+  TimecodeConfig
+newTimecodeConfig =
+  TimecodeConfig'
+    { anchor = Prelude.Nothing,
+      source = Prelude.Nothing,
+      start = Prelude.Nothing,
+      timestampOffset = Prelude.Nothing
+    }
+
+-- | If you use an editing platform that relies on an anchor timecode, use
+-- Anchor Timecode (Anchor) to specify a timecode that will match the input
+-- video frame to the output video frame. Use 24-hour format with frame
+-- number, (HH:MM:SS:FF) or (HH:MM:SS;FF). This setting ignores frame rate
+-- conversion. System behavior for Anchor Timecode varies depending on your
+-- setting for Source (TimecodeSource). * If Source (TimecodeSource) is set
+-- to Specified Start (SPECIFIEDSTART), the first input frame is the
+-- specified value in Start Timecode (Start). Anchor Timecode (Anchor) and
+-- Start Timecode (Start) are used calculate output timecode. * If Source
+-- (TimecodeSource) is set to Start at 0 (ZEROBASED) the first frame is
+-- 00:00:00:00. * If Source (TimecodeSource) is set to Embedded (EMBEDDED),
+-- the first frame is the timecode value on the first input frame of the
+-- input.
+timecodeConfig_anchor :: Lens.Lens' TimecodeConfig (Prelude.Maybe Prelude.Text)
+timecodeConfig_anchor = Lens.lens (\TimecodeConfig' {anchor} -> anchor) (\s@TimecodeConfig' {} a -> s {anchor = a} :: TimecodeConfig)
+
+-- | Use Source (TimecodeSource) to set how timecodes are handled within this
+-- job. To make sure that your video, audio, captions, and markers are
+-- synchronized and that time-based features, such as image inserter, work
+-- correctly, choose the Timecode source option that matches your assets.
+-- All timecodes are in a 24-hour format with frame number (HH:MM:SS:FF). *
+-- Embedded (EMBEDDED) - Use the timecode that is in the input video. If no
+-- embedded timecode is in the source, the service will use Start at 0
+-- (ZEROBASED) instead. * Start at 0 (ZEROBASED) - Set the timecode of the
+-- initial frame to 00:00:00:00. * Specified Start (SPECIFIEDSTART) - Set
+-- the timecode of the initial frame to a value other than zero. You use
+-- Start timecode (Start) to provide this value.
+timecodeConfig_source :: Lens.Lens' TimecodeConfig (Prelude.Maybe TimecodeSource)
+timecodeConfig_source = Lens.lens (\TimecodeConfig' {source} -> source) (\s@TimecodeConfig' {} a -> s {source = a} :: TimecodeConfig)
+
+-- | Only use when you set Source (TimecodeSource) to Specified start
+-- (SPECIFIEDSTART). Use Start timecode (Start) to specify the timecode for
+-- the initial frame. Use 24-hour format with frame number, (HH:MM:SS:FF)
+-- or (HH:MM:SS;FF).
+timecodeConfig_start :: Lens.Lens' TimecodeConfig (Prelude.Maybe Prelude.Text)
+timecodeConfig_start = Lens.lens (\TimecodeConfig' {start} -> start) (\s@TimecodeConfig' {} a -> s {start = a} :: TimecodeConfig)
+
+-- | Only applies to outputs that support program-date-time stamp. Use
+-- Timestamp offset (TimestampOffset) to overwrite the timecode date
+-- without affecting the time and frame number. Provide the new date as a
+-- string in the format \"yyyy-mm-dd\". To use Time stamp offset, you must
+-- also enable Insert program-date-time (InsertProgramDateTime) in the
+-- output settings. For example, if the date part of your timecodes is
+-- 2002-1-25 and you want to change it to one year later, set Timestamp
+-- offset (TimestampOffset) to 2003-1-25.
+timecodeConfig_timestampOffset :: Lens.Lens' TimecodeConfig (Prelude.Maybe Prelude.Text)
+timecodeConfig_timestampOffset = Lens.lens (\TimecodeConfig' {timestampOffset} -> timestampOffset) (\s@TimecodeConfig' {} a -> s {timestampOffset = a} :: TimecodeConfig)
+
+instance Data.FromJSON TimecodeConfig where
+  parseJSON =
+    Data.withObject
+      "TimecodeConfig"
+      ( \x ->
+          TimecodeConfig'
+            Prelude.<$> (x Data..:? "anchor")
+            Prelude.<*> (x Data..:? "source")
+            Prelude.<*> (x Data..:? "start")
+            Prelude.<*> (x Data..:? "timestampOffset")
+      )
+
+instance Prelude.Hashable TimecodeConfig where
+  hashWithSalt _salt TimecodeConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` anchor
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` start
+      `Prelude.hashWithSalt` timestampOffset
+
+instance Prelude.NFData TimecodeConfig where
+  rnf TimecodeConfig' {..} =
+    Prelude.rnf anchor
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf start
+      `Prelude.seq` Prelude.rnf timestampOffset
+
+instance Data.ToJSON TimecodeConfig where
+  toJSON TimecodeConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("anchor" Data..=) Prelude.<$> anchor,
+            ("source" Data..=) Prelude.<$> source,
+            ("start" Data..=) Prelude.<$> start,
+            ("timestampOffset" Data..=)
+              Prelude.<$> timestampOffset
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/TimecodeSource.hs b/gen/Amazonka/MediaConvert/Types/TimecodeSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/TimecodeSource.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.TimecodeSource
+-- 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.TimecodeSource
+  ( TimecodeSource
+      ( ..,
+        TimecodeSource_EMBEDDED,
+        TimecodeSource_SPECIFIEDSTART,
+        TimecodeSource_ZEROBASED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use Source (TimecodeSource) to set how timecodes are handled within this
+-- job. To make sure that your video, audio, captions, and markers are
+-- synchronized and that time-based features, such as image inserter, work
+-- correctly, choose the Timecode source option that matches your assets.
+-- All timecodes are in a 24-hour format with frame number (HH:MM:SS:FF). *
+-- Embedded (EMBEDDED) - Use the timecode that is in the input video. If no
+-- embedded timecode is in the source, the service will use Start at 0
+-- (ZEROBASED) instead. * Start at 0 (ZEROBASED) - Set the timecode of the
+-- initial frame to 00:00:00:00. * Specified Start (SPECIFIEDSTART) - Set
+-- the timecode of the initial frame to a value other than zero. You use
+-- Start timecode (Start) to provide this value.
+newtype TimecodeSource = TimecodeSource'
+  { fromTimecodeSource ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TimecodeSource_EMBEDDED :: TimecodeSource
+pattern TimecodeSource_EMBEDDED = TimecodeSource' "EMBEDDED"
+
+pattern TimecodeSource_SPECIFIEDSTART :: TimecodeSource
+pattern TimecodeSource_SPECIFIEDSTART = TimecodeSource' "SPECIFIEDSTART"
+
+pattern TimecodeSource_ZEROBASED :: TimecodeSource
+pattern TimecodeSource_ZEROBASED = TimecodeSource' "ZEROBASED"
+
+{-# COMPLETE
+  TimecodeSource_EMBEDDED,
+  TimecodeSource_SPECIFIEDSTART,
+  TimecodeSource_ZEROBASED,
+  TimecodeSource'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/TimedMetadata.hs b/gen/Amazonka/MediaConvert/Types/TimedMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/TimedMetadata.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.TimedMetadata
+-- 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.TimedMetadata
+  ( TimedMetadata
+      ( ..,
+        TimedMetadata_NONE,
+        TimedMetadata_PASSTHROUGH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH) to include
+-- ID3 metadata in this output. This includes ID3 metadata from the
+-- following features: ID3 timestamp period (timedMetadataId3Period), and
+-- Custom ID3 metadata inserter (timedMetadataInsertion). To exclude this
+-- ID3 metadata in this output: set ID3 metadata to None (NONE) or leave
+-- blank.
+newtype TimedMetadata = TimedMetadata'
+  { fromTimedMetadata ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TimedMetadata_NONE :: TimedMetadata
+pattern TimedMetadata_NONE = TimedMetadata' "NONE"
+
+pattern TimedMetadata_PASSTHROUGH :: TimedMetadata
+pattern TimedMetadata_PASSTHROUGH = TimedMetadata' "PASSTHROUGH"
+
+{-# COMPLETE
+  TimedMetadata_NONE,
+  TimedMetadata_PASSTHROUGH,
+  TimedMetadata'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/TimedMetadataInsertion.hs b/gen/Amazonka/MediaConvert/Types/TimedMetadataInsertion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/TimedMetadataInsertion.hs
@@ -0,0 +1,84 @@
+{-# 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.TimedMetadataInsertion
+-- 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.TimedMetadataInsertion 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.Id3Insertion
+import qualified Amazonka.Prelude as Prelude
+
+-- | Insert user-defined custom ID3 metadata (id3) at timecodes (timecode)
+-- that you specify. In each output that you want to include this metadata,
+-- you must set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH).
+--
+-- /See:/ 'newTimedMetadataInsertion' smart constructor.
+data TimedMetadataInsertion = TimedMetadataInsertion'
+  { -- | Id3Insertions contains the array of Id3Insertion instances.
+    id3Insertions :: Prelude.Maybe [Id3Insertion]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TimedMetadataInsertion' 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:
+--
+-- 'id3Insertions', 'timedMetadataInsertion_id3Insertions' - Id3Insertions contains the array of Id3Insertion instances.
+newTimedMetadataInsertion ::
+  TimedMetadataInsertion
+newTimedMetadataInsertion =
+  TimedMetadataInsertion'
+    { id3Insertions =
+        Prelude.Nothing
+    }
+
+-- | Id3Insertions contains the array of Id3Insertion instances.
+timedMetadataInsertion_id3Insertions :: Lens.Lens' TimedMetadataInsertion (Prelude.Maybe [Id3Insertion])
+timedMetadataInsertion_id3Insertions = Lens.lens (\TimedMetadataInsertion' {id3Insertions} -> id3Insertions) (\s@TimedMetadataInsertion' {} a -> s {id3Insertions = a} :: TimedMetadataInsertion) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON TimedMetadataInsertion where
+  parseJSON =
+    Data.withObject
+      "TimedMetadataInsertion"
+      ( \x ->
+          TimedMetadataInsertion'
+            Prelude.<$> (x Data..:? "id3Insertions" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable TimedMetadataInsertion where
+  hashWithSalt _salt TimedMetadataInsertion' {..} =
+    _salt `Prelude.hashWithSalt` id3Insertions
+
+instance Prelude.NFData TimedMetadataInsertion where
+  rnf TimedMetadataInsertion' {..} =
+    Prelude.rnf id3Insertions
+
+instance Data.ToJSON TimedMetadataInsertion where
+  toJSON TimedMetadataInsertion' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("id3Insertions" Data..=)
+              Prelude.<$> id3Insertions
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Timing.hs b/gen/Amazonka/MediaConvert/Types/Timing.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Timing.hs
@@ -0,0 +1,97 @@
+{-# 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.Timing
+-- 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.Timing where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about when jobs are submitted, started, and finished is
+-- specified in Unix epoch format in seconds.
+--
+-- /See:/ 'newTiming' smart constructor.
+data Timing = Timing'
+  { -- | The time, in Unix epoch format, that the transcoding job finished
+    finishTime :: Prelude.Maybe Data.POSIX,
+    -- | The time, in Unix epoch format, that transcoding for the job began.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | The time, in Unix epoch format, that you submitted the job.
+    submitTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Timing' 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:
+--
+-- 'finishTime', 'timing_finishTime' - The time, in Unix epoch format, that the transcoding job finished
+--
+-- 'startTime', 'timing_startTime' - The time, in Unix epoch format, that transcoding for the job began.
+--
+-- 'submitTime', 'timing_submitTime' - The time, in Unix epoch format, that you submitted the job.
+newTiming ::
+  Timing
+newTiming =
+  Timing'
+    { finishTime = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      submitTime = Prelude.Nothing
+    }
+
+-- | The time, in Unix epoch format, that the transcoding job finished
+timing_finishTime :: Lens.Lens' Timing (Prelude.Maybe Prelude.UTCTime)
+timing_finishTime = Lens.lens (\Timing' {finishTime} -> finishTime) (\s@Timing' {} a -> s {finishTime = a} :: Timing) Prelude.. Lens.mapping Data._Time
+
+-- | The time, in Unix epoch format, that transcoding for the job began.
+timing_startTime :: Lens.Lens' Timing (Prelude.Maybe Prelude.UTCTime)
+timing_startTime = Lens.lens (\Timing' {startTime} -> startTime) (\s@Timing' {} a -> s {startTime = a} :: Timing) Prelude.. Lens.mapping Data._Time
+
+-- | The time, in Unix epoch format, that you submitted the job.
+timing_submitTime :: Lens.Lens' Timing (Prelude.Maybe Prelude.UTCTime)
+timing_submitTime = Lens.lens (\Timing' {submitTime} -> submitTime) (\s@Timing' {} a -> s {submitTime = a} :: Timing) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON Timing where
+  parseJSON =
+    Data.withObject
+      "Timing"
+      ( \x ->
+          Timing'
+            Prelude.<$> (x Data..:? "finishTime")
+            Prelude.<*> (x Data..:? "startTime")
+            Prelude.<*> (x Data..:? "submitTime")
+      )
+
+instance Prelude.Hashable Timing where
+  hashWithSalt _salt Timing' {..} =
+    _salt
+      `Prelude.hashWithSalt` finishTime
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` submitTime
+
+instance Prelude.NFData Timing where
+  rnf Timing' {..} =
+    Prelude.rnf finishTime
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf submitTime
diff --git a/gen/Amazonka/MediaConvert/Types/TrackSourceSettings.hs b/gen/Amazonka/MediaConvert/Types/TrackSourceSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/TrackSourceSettings.hs
@@ -0,0 +1,97 @@
+{-# 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.TrackSourceSettings
+-- 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.TrackSourceSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings specific to caption sources that are specified by track number.
+-- Currently, this is only IMSC captions in an IMF package. If your caption
+-- source is IMSC 1.1 in a separate xml file, use FileSourceSettings
+-- instead of TrackSourceSettings.
+--
+-- /See:/ 'newTrackSourceSettings' smart constructor.
+data TrackSourceSettings = TrackSourceSettings'
+  { -- | Use this setting to select a single captions track from a source. Track
+    -- numbers correspond to the order in the captions source file. For IMF
+    -- sources, track numbering is based on the order that the captions appear
+    -- in the CPL. For example, use 1 to select the captions asset that is
+    -- listed first in the CPL. To include more than one captions track in your
+    -- job outputs, create multiple input captions selectors. Specify one track
+    -- per selector.
+    trackNumber :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrackSourceSettings' 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:
+--
+-- 'trackNumber', 'trackSourceSettings_trackNumber' - Use this setting to select a single captions track from a source. Track
+-- numbers correspond to the order in the captions source file. For IMF
+-- sources, track numbering is based on the order that the captions appear
+-- in the CPL. For example, use 1 to select the captions asset that is
+-- listed first in the CPL. To include more than one captions track in your
+-- job outputs, create multiple input captions selectors. Specify one track
+-- per selector.
+newTrackSourceSettings ::
+  TrackSourceSettings
+newTrackSourceSettings =
+  TrackSourceSettings' {trackNumber = Prelude.Nothing}
+
+-- | Use this setting to select a single captions track from a source. Track
+-- numbers correspond to the order in the captions source file. For IMF
+-- sources, track numbering is based on the order that the captions appear
+-- in the CPL. For example, use 1 to select the captions asset that is
+-- listed first in the CPL. To include more than one captions track in your
+-- job outputs, create multiple input captions selectors. Specify one track
+-- per selector.
+trackSourceSettings_trackNumber :: Lens.Lens' TrackSourceSettings (Prelude.Maybe Prelude.Natural)
+trackSourceSettings_trackNumber = Lens.lens (\TrackSourceSettings' {trackNumber} -> trackNumber) (\s@TrackSourceSettings' {} a -> s {trackNumber = a} :: TrackSourceSettings)
+
+instance Data.FromJSON TrackSourceSettings where
+  parseJSON =
+    Data.withObject
+      "TrackSourceSettings"
+      ( \x ->
+          TrackSourceSettings'
+            Prelude.<$> (x Data..:? "trackNumber")
+      )
+
+instance Prelude.Hashable TrackSourceSettings where
+  hashWithSalt _salt TrackSourceSettings' {..} =
+    _salt `Prelude.hashWithSalt` trackNumber
+
+instance Prelude.NFData TrackSourceSettings where
+  rnf TrackSourceSettings' {..} =
+    Prelude.rnf trackNumber
+
+instance Data.ToJSON TrackSourceSettings where
+  toJSON TrackSourceSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("trackNumber" Data..=) Prelude.<$> trackNumber]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/TtmlDestinationSettings.hs b/gen/Amazonka/MediaConvert/Types/TtmlDestinationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/TtmlDestinationSettings.hs
@@ -0,0 +1,91 @@
+{-# 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.TtmlDestinationSettings
+-- 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.TtmlDestinationSettings 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.TtmlStylePassthrough
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to TTML captions. TTML is a sidecar format that holds
+-- captions in a file that is separate from the video container. Set up
+-- sidecar captions in the same output group, but different output from
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to TTML.
+--
+-- /See:/ 'newTtmlDestinationSettings' smart constructor.
+data TtmlDestinationSettings = TtmlDestinationSettings'
+  { -- | Pass through style and position information from a TTML-like input
+    -- source (TTML, IMSC, SMPTE-TT) to the TTML output.
+    stylePassthrough :: Prelude.Maybe TtmlStylePassthrough
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TtmlDestinationSettings' 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:
+--
+-- 'stylePassthrough', 'ttmlDestinationSettings_stylePassthrough' - Pass through style and position information from a TTML-like input
+-- source (TTML, IMSC, SMPTE-TT) to the TTML output.
+newTtmlDestinationSettings ::
+  TtmlDestinationSettings
+newTtmlDestinationSettings =
+  TtmlDestinationSettings'
+    { stylePassthrough =
+        Prelude.Nothing
+    }
+
+-- | Pass through style and position information from a TTML-like input
+-- source (TTML, IMSC, SMPTE-TT) to the TTML output.
+ttmlDestinationSettings_stylePassthrough :: Lens.Lens' TtmlDestinationSettings (Prelude.Maybe TtmlStylePassthrough)
+ttmlDestinationSettings_stylePassthrough = Lens.lens (\TtmlDestinationSettings' {stylePassthrough} -> stylePassthrough) (\s@TtmlDestinationSettings' {} a -> s {stylePassthrough = a} :: TtmlDestinationSettings)
+
+instance Data.FromJSON TtmlDestinationSettings where
+  parseJSON =
+    Data.withObject
+      "TtmlDestinationSettings"
+      ( \x ->
+          TtmlDestinationSettings'
+            Prelude.<$> (x Data..:? "stylePassthrough")
+      )
+
+instance Prelude.Hashable TtmlDestinationSettings where
+  hashWithSalt _salt TtmlDestinationSettings' {..} =
+    _salt `Prelude.hashWithSalt` stylePassthrough
+
+instance Prelude.NFData TtmlDestinationSettings where
+  rnf TtmlDestinationSettings' {..} =
+    Prelude.rnf stylePassthrough
+
+instance Data.ToJSON TtmlDestinationSettings where
+  toJSON TtmlDestinationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("stylePassthrough" Data..=)
+              Prelude.<$> stylePassthrough
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/TtmlStylePassthrough.hs b/gen/Amazonka/MediaConvert/Types/TtmlStylePassthrough.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/TtmlStylePassthrough.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.TtmlStylePassthrough
+-- 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.TtmlStylePassthrough
+  ( TtmlStylePassthrough
+      ( ..,
+        TtmlStylePassthrough_DISABLED,
+        TtmlStylePassthrough_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Pass through style and position information from a TTML-like input
+-- source (TTML, IMSC, SMPTE-TT) to the TTML output.
+newtype TtmlStylePassthrough = TtmlStylePassthrough'
+  { fromTtmlStylePassthrough ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TtmlStylePassthrough_DISABLED :: TtmlStylePassthrough
+pattern TtmlStylePassthrough_DISABLED = TtmlStylePassthrough' "DISABLED"
+
+pattern TtmlStylePassthrough_ENABLED :: TtmlStylePassthrough
+pattern TtmlStylePassthrough_ENABLED = TtmlStylePassthrough' "ENABLED"
+
+{-# COMPLETE
+  TtmlStylePassthrough_DISABLED,
+  TtmlStylePassthrough_ENABLED,
+  TtmlStylePassthrough'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Type.hs b/gen/Amazonka/MediaConvert/Types/Type.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Type.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Type
+-- 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.Type
+  ( Type
+      ( ..,
+        Type_CUSTOM,
+        Type_SYSTEM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Type = Type' {fromType :: Data.Text}
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Type_CUSTOM :: Type
+pattern Type_CUSTOM = Type' "CUSTOM"
+
+pattern Type_SYSTEM :: Type
+pattern Type_SYSTEM = Type' "SYSTEM"
+
+{-# COMPLETE
+  Type_CUSTOM,
+  Type_SYSTEM,
+  Type'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vc3Class.hs b/gen/Amazonka/MediaConvert/Types/Vc3Class.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vc3Class.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vc3Class
+-- 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.Vc3Class
+  ( Vc3Class
+      ( ..,
+        Vc3Class_CLASS_145_8BIT,
+        Vc3Class_CLASS_220_10BIT,
+        Vc3Class_CLASS_220_8BIT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the VC3 class to choose the quality characteristics for this
+-- output. VC3 class, together with the settings Framerate
+-- (framerateNumerator and framerateDenominator) and Resolution (height and
+-- width), determine your output bitrate. For example, say that your video
+-- resolution is 1920x1080 and your framerate is 29.97. Then Class 145
+-- (CLASS_145) gives you an output with a bitrate of approximately 145 Mbps
+-- and Class 220 (CLASS_220) gives you and output with a bitrate of
+-- approximately 220 Mbps. VC3 class also specifies the color bit depth of
+-- your output.
+newtype Vc3Class = Vc3Class'
+  { fromVc3Class ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vc3Class_CLASS_145_8BIT :: Vc3Class
+pattern Vc3Class_CLASS_145_8BIT = Vc3Class' "CLASS_145_8BIT"
+
+pattern Vc3Class_CLASS_220_10BIT :: Vc3Class
+pattern Vc3Class_CLASS_220_10BIT = Vc3Class' "CLASS_220_10BIT"
+
+pattern Vc3Class_CLASS_220_8BIT :: Vc3Class
+pattern Vc3Class_CLASS_220_8BIT = Vc3Class' "CLASS_220_8BIT"
+
+{-# COMPLETE
+  Vc3Class_CLASS_145_8BIT,
+  Vc3Class_CLASS_220_10BIT,
+  Vc3Class_CLASS_220_8BIT,
+  Vc3Class'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vc3FramerateControl.hs b/gen/Amazonka/MediaConvert/Types/Vc3FramerateControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vc3FramerateControl.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vc3FramerateControl
+-- 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.Vc3FramerateControl
+  ( Vc3FramerateControl
+      ( ..,
+        Vc3FramerateControl_INITIALIZE_FROM_SOURCE,
+        Vc3FramerateControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+newtype Vc3FramerateControl = Vc3FramerateControl'
+  { fromVc3FramerateControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vc3FramerateControl_INITIALIZE_FROM_SOURCE :: Vc3FramerateControl
+pattern Vc3FramerateControl_INITIALIZE_FROM_SOURCE = Vc3FramerateControl' "INITIALIZE_FROM_SOURCE"
+
+pattern Vc3FramerateControl_SPECIFIED :: Vc3FramerateControl
+pattern Vc3FramerateControl_SPECIFIED = Vc3FramerateControl' "SPECIFIED"
+
+{-# COMPLETE
+  Vc3FramerateControl_INITIALIZE_FROM_SOURCE,
+  Vc3FramerateControl_SPECIFIED,
+  Vc3FramerateControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vc3FramerateConversionAlgorithm.hs b/gen/Amazonka/MediaConvert/Types/Vc3FramerateConversionAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vc3FramerateConversionAlgorithm.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vc3FramerateConversionAlgorithm
+-- 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.Vc3FramerateConversionAlgorithm
+  ( Vc3FramerateConversionAlgorithm
+      ( ..,
+        Vc3FramerateConversionAlgorithm_DUPLICATE_DROP,
+        Vc3FramerateConversionAlgorithm_FRAMEFORMER,
+        Vc3FramerateConversionAlgorithm_INTERPOLATE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+newtype Vc3FramerateConversionAlgorithm = Vc3FramerateConversionAlgorithm'
+  { fromVc3FramerateConversionAlgorithm ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vc3FramerateConversionAlgorithm_DUPLICATE_DROP :: Vc3FramerateConversionAlgorithm
+pattern Vc3FramerateConversionAlgorithm_DUPLICATE_DROP = Vc3FramerateConversionAlgorithm' "DUPLICATE_DROP"
+
+pattern Vc3FramerateConversionAlgorithm_FRAMEFORMER :: Vc3FramerateConversionAlgorithm
+pattern Vc3FramerateConversionAlgorithm_FRAMEFORMER = Vc3FramerateConversionAlgorithm' "FRAMEFORMER"
+
+pattern Vc3FramerateConversionAlgorithm_INTERPOLATE :: Vc3FramerateConversionAlgorithm
+pattern Vc3FramerateConversionAlgorithm_INTERPOLATE = Vc3FramerateConversionAlgorithm' "INTERPOLATE"
+
+{-# COMPLETE
+  Vc3FramerateConversionAlgorithm_DUPLICATE_DROP,
+  Vc3FramerateConversionAlgorithm_FRAMEFORMER,
+  Vc3FramerateConversionAlgorithm_INTERPOLATE,
+  Vc3FramerateConversionAlgorithm'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vc3InterlaceMode.hs b/gen/Amazonka/MediaConvert/Types/Vc3InterlaceMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vc3InterlaceMode.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vc3InterlaceMode
+-- 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.Vc3InterlaceMode
+  ( Vc3InterlaceMode
+      ( ..,
+        Vc3InterlaceMode_INTERLACED,
+        Vc3InterlaceMode_PROGRESSIVE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Choose the scan line type for this output. If you don\'t
+-- specify a value, MediaConvert will create a progressive output.
+newtype Vc3InterlaceMode = Vc3InterlaceMode'
+  { fromVc3InterlaceMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vc3InterlaceMode_INTERLACED :: Vc3InterlaceMode
+pattern Vc3InterlaceMode_INTERLACED = Vc3InterlaceMode' "INTERLACED"
+
+pattern Vc3InterlaceMode_PROGRESSIVE :: Vc3InterlaceMode
+pattern Vc3InterlaceMode_PROGRESSIVE = Vc3InterlaceMode' "PROGRESSIVE"
+
+{-# COMPLETE
+  Vc3InterlaceMode_INTERLACED,
+  Vc3InterlaceMode_PROGRESSIVE,
+  Vc3InterlaceMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vc3ScanTypeConversionMode.hs b/gen/Amazonka/MediaConvert/Types/Vc3ScanTypeConversionMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vc3ScanTypeConversionMode.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vc3ScanTypeConversionMode
+-- 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.Vc3ScanTypeConversionMode
+  ( Vc3ScanTypeConversionMode
+      ( ..,
+        Vc3ScanTypeConversionMode_INTERLACED,
+        Vc3ScanTypeConversionMode_INTERLACED_OPTIMIZE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+newtype Vc3ScanTypeConversionMode = Vc3ScanTypeConversionMode'
+  { fromVc3ScanTypeConversionMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vc3ScanTypeConversionMode_INTERLACED :: Vc3ScanTypeConversionMode
+pattern Vc3ScanTypeConversionMode_INTERLACED = Vc3ScanTypeConversionMode' "INTERLACED"
+
+pattern Vc3ScanTypeConversionMode_INTERLACED_OPTIMIZE :: Vc3ScanTypeConversionMode
+pattern Vc3ScanTypeConversionMode_INTERLACED_OPTIMIZE = Vc3ScanTypeConversionMode' "INTERLACED_OPTIMIZE"
+
+{-# COMPLETE
+  Vc3ScanTypeConversionMode_INTERLACED,
+  Vc3ScanTypeConversionMode_INTERLACED_OPTIMIZE,
+  Vc3ScanTypeConversionMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vc3Settings.hs b/gen/Amazonka/MediaConvert/Types/Vc3Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vc3Settings.hs
@@ -0,0 +1,401 @@
+{-# 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.Vc3Settings
+-- 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.Vc3Settings 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.Vc3Class
+import Amazonka.MediaConvert.Types.Vc3FramerateControl
+import Amazonka.MediaConvert.Types.Vc3FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.Vc3InterlaceMode
+import Amazonka.MediaConvert.Types.Vc3ScanTypeConversionMode
+import Amazonka.MediaConvert.Types.Vc3SlowPal
+import Amazonka.MediaConvert.Types.Vc3Telecine
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value VC3
+--
+-- /See:/ 'newVc3Settings' smart constructor.
+data Vc3Settings = Vc3Settings'
+  { -- | If you are using the console, use the Framerate setting to specify the
+    -- frame rate for this output. If you want to keep the same frame rate as
+    -- the input video, choose Follow source. If you want to do frame rate
+    -- conversion, choose a frame rate from the dropdown list or choose Custom.
+    -- The framerates shown in the dropdown list are decimal approximations of
+    -- fractions. If you choose Custom, specify your frame rate as a fraction.
+    -- If you are creating your transcoding job specification as a JSON file
+    -- without the console, use FramerateControl to specify which value the
+    -- service uses for the frame rate for this output. Choose
+    -- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+    -- from the input. Choose SPECIFIED if you want the service to use the
+    -- frame rate you specify in the settings FramerateNumerator and
+    -- FramerateDenominator.
+    framerateControl :: Prelude.Maybe Vc3FramerateControl,
+    -- | Choose the method that you want MediaConvert to use when increasing or
+    -- decreasing the frame rate. We recommend using drop duplicate
+    -- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+    -- 30 fps. For numerically complex conversions, you can use interpolate
+    -- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+    -- might introduce undesirable video artifacts. For complex frame rate
+    -- conversions, especially if your source video has already been converted
+    -- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+    -- motion-compensated interpolation. FrameFormer chooses the best
+    -- conversion method frame by frame. Note that using FrameFormer increases
+    -- the transcoding time and incurs a significant add-on cost.
+    framerateConversionAlgorithm :: Prelude.Maybe Vc3FramerateConversionAlgorithm,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+    -- fraction. In this example, use 1001 for the value of
+    -- FramerateDenominator. When you use the console for transcode jobs that
+    -- use frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+    -- fraction. In this example, use 24000 for the value of
+    -- FramerateNumerator. When you use the console for transcode jobs that use
+    -- frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Choose the scan line type for this output. If you don\'t
+    -- specify a value, MediaConvert will create a progressive output.
+    interlaceMode :: Prelude.Maybe Vc3InterlaceMode,
+    -- | Use this setting for interlaced outputs, when your output frame rate is
+    -- half of your input frame rate. In this situation, choose Optimized
+    -- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+    -- output. In this case, each progressive frame from the input corresponds
+    -- to an interlaced field in the output. Keep the default value, Basic
+    -- interlacing (INTERLACED), for all other output frame rates. With basic
+    -- interlacing, MediaConvert performs any frame rate conversion first and
+    -- then interlaces the frames. When you choose Optimized interlacing and
+    -- you set your output frame rate to a value that isn\'t suitable for
+    -- optimized interlacing, MediaConvert automatically falls back to basic
+    -- interlacing. Required settings: To use optimized interlacing, you must
+    -- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+    -- optimized interlacing for hard telecine outputs. You must also set
+    -- Interlace mode (interlaceMode) to a value other than Progressive
+    -- (PROGRESSIVE).
+    scanTypeConversionMode :: Prelude.Maybe Vc3ScanTypeConversionMode,
+    -- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+    -- per second (fps). Enable slow PAL to create a 25 fps output by
+    -- relabeling the video frames and resampling your audio. Note that
+    -- enabling this setting will slightly reduce the duration of your video.
+    -- Related settings: You must also set Framerate to 25. In your JSON job
+    -- specification, set (framerateControl) to (SPECIFIED),
+    -- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+    slowPal :: Prelude.Maybe Vc3SlowPal,
+    -- | When you do frame rate conversion from 23.976 frames per second (fps) to
+    -- 29.97 fps, and your output scan type is interlaced, you can optionally
+    -- enable hard telecine (HARD) to create a smoother picture. When you keep
+    -- the default value, None (NONE), MediaConvert does a standard frame rate
+    -- conversion to 29.97 without doing anything with the field polarity to
+    -- create a smoother picture.
+    telecine :: Prelude.Maybe Vc3Telecine,
+    -- | Specify the VC3 class to choose the quality characteristics for this
+    -- output. VC3 class, together with the settings Framerate
+    -- (framerateNumerator and framerateDenominator) and Resolution (height and
+    -- width), determine your output bitrate. For example, say that your video
+    -- resolution is 1920x1080 and your framerate is 29.97. Then Class 145
+    -- (CLASS_145) gives you an output with a bitrate of approximately 145 Mbps
+    -- and Class 220 (CLASS_220) gives you and output with a bitrate of
+    -- approximately 220 Mbps. VC3 class also specifies the color bit depth of
+    -- your output.
+    vc3Class :: Prelude.Maybe Vc3Class
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Vc3Settings' 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:
+--
+-- 'framerateControl', 'vc3Settings_framerateControl' - If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+--
+-- 'framerateConversionAlgorithm', 'vc3Settings_framerateConversionAlgorithm' - Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+--
+-- 'framerateDenominator', 'vc3Settings_framerateDenominator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'framerateNumerator', 'vc3Settings_framerateNumerator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'interlaceMode', 'vc3Settings_interlaceMode' - Optional. Choose the scan line type for this output. If you don\'t
+-- specify a value, MediaConvert will create a progressive output.
+--
+-- 'scanTypeConversionMode', 'vc3Settings_scanTypeConversionMode' - Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+--
+-- 'slowPal', 'vc3Settings_slowPal' - Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output by
+-- relabeling the video frames and resampling your audio. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Related settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+--
+-- 'telecine', 'vc3Settings_telecine' - When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard telecine (HARD) to create a smoother picture. When you keep
+-- the default value, None (NONE), MediaConvert does a standard frame rate
+-- conversion to 29.97 without doing anything with the field polarity to
+-- create a smoother picture.
+--
+-- 'vc3Class', 'vc3Settings_vc3Class' - Specify the VC3 class to choose the quality characteristics for this
+-- output. VC3 class, together with the settings Framerate
+-- (framerateNumerator and framerateDenominator) and Resolution (height and
+-- width), determine your output bitrate. For example, say that your video
+-- resolution is 1920x1080 and your framerate is 29.97. Then Class 145
+-- (CLASS_145) gives you an output with a bitrate of approximately 145 Mbps
+-- and Class 220 (CLASS_220) gives you and output with a bitrate of
+-- approximately 220 Mbps. VC3 class also specifies the color bit depth of
+-- your output.
+newVc3Settings ::
+  Vc3Settings
+newVc3Settings =
+  Vc3Settings'
+    { framerateControl = Prelude.Nothing,
+      framerateConversionAlgorithm = Prelude.Nothing,
+      framerateDenominator = Prelude.Nothing,
+      framerateNumerator = Prelude.Nothing,
+      interlaceMode = Prelude.Nothing,
+      scanTypeConversionMode = Prelude.Nothing,
+      slowPal = Prelude.Nothing,
+      telecine = Prelude.Nothing,
+      vc3Class = Prelude.Nothing
+    }
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+vc3Settings_framerateControl :: Lens.Lens' Vc3Settings (Prelude.Maybe Vc3FramerateControl)
+vc3Settings_framerateControl = Lens.lens (\Vc3Settings' {framerateControl} -> framerateControl) (\s@Vc3Settings' {} a -> s {framerateControl = a} :: Vc3Settings)
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+vc3Settings_framerateConversionAlgorithm :: Lens.Lens' Vc3Settings (Prelude.Maybe Vc3FramerateConversionAlgorithm)
+vc3Settings_framerateConversionAlgorithm = Lens.lens (\Vc3Settings' {framerateConversionAlgorithm} -> framerateConversionAlgorithm) (\s@Vc3Settings' {} a -> s {framerateConversionAlgorithm = a} :: Vc3Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+vc3Settings_framerateDenominator :: Lens.Lens' Vc3Settings (Prelude.Maybe Prelude.Natural)
+vc3Settings_framerateDenominator = Lens.lens (\Vc3Settings' {framerateDenominator} -> framerateDenominator) (\s@Vc3Settings' {} a -> s {framerateDenominator = a} :: Vc3Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+vc3Settings_framerateNumerator :: Lens.Lens' Vc3Settings (Prelude.Maybe Prelude.Natural)
+vc3Settings_framerateNumerator = Lens.lens (\Vc3Settings' {framerateNumerator} -> framerateNumerator) (\s@Vc3Settings' {} a -> s {framerateNumerator = a} :: Vc3Settings)
+
+-- | Optional. Choose the scan line type for this output. If you don\'t
+-- specify a value, MediaConvert will create a progressive output.
+vc3Settings_interlaceMode :: Lens.Lens' Vc3Settings (Prelude.Maybe Vc3InterlaceMode)
+vc3Settings_interlaceMode = Lens.lens (\Vc3Settings' {interlaceMode} -> interlaceMode) (\s@Vc3Settings' {} a -> s {interlaceMode = a} :: Vc3Settings)
+
+-- | Use this setting for interlaced outputs, when your output frame rate is
+-- half of your input frame rate. In this situation, choose Optimized
+-- interlacing (INTERLACED_OPTIMIZE) to create a better quality interlaced
+-- output. In this case, each progressive frame from the input corresponds
+-- to an interlaced field in the output. Keep the default value, Basic
+-- interlacing (INTERLACED), for all other output frame rates. With basic
+-- interlacing, MediaConvert performs any frame rate conversion first and
+-- then interlaces the frames. When you choose Optimized interlacing and
+-- you set your output frame rate to a value that isn\'t suitable for
+-- optimized interlacing, MediaConvert automatically falls back to basic
+-- interlacing. Required settings: To use optimized interlacing, you must
+-- set Telecine (telecine) to None (NONE) or Soft (SOFT). You can\'t use
+-- optimized interlacing for hard telecine outputs. You must also set
+-- Interlace mode (interlaceMode) to a value other than Progressive
+-- (PROGRESSIVE).
+vc3Settings_scanTypeConversionMode :: Lens.Lens' Vc3Settings (Prelude.Maybe Vc3ScanTypeConversionMode)
+vc3Settings_scanTypeConversionMode = Lens.lens (\Vc3Settings' {scanTypeConversionMode} -> scanTypeConversionMode) (\s@Vc3Settings' {} a -> s {scanTypeConversionMode = a} :: Vc3Settings)
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output by
+-- relabeling the video frames and resampling your audio. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Related settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+vc3Settings_slowPal :: Lens.Lens' Vc3Settings (Prelude.Maybe Vc3SlowPal)
+vc3Settings_slowPal = Lens.lens (\Vc3Settings' {slowPal} -> slowPal) (\s@Vc3Settings' {} a -> s {slowPal = a} :: Vc3Settings)
+
+-- | When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard telecine (HARD) to create a smoother picture. When you keep
+-- the default value, None (NONE), MediaConvert does a standard frame rate
+-- conversion to 29.97 without doing anything with the field polarity to
+-- create a smoother picture.
+vc3Settings_telecine :: Lens.Lens' Vc3Settings (Prelude.Maybe Vc3Telecine)
+vc3Settings_telecine = Lens.lens (\Vc3Settings' {telecine} -> telecine) (\s@Vc3Settings' {} a -> s {telecine = a} :: Vc3Settings)
+
+-- | Specify the VC3 class to choose the quality characteristics for this
+-- output. VC3 class, together with the settings Framerate
+-- (framerateNumerator and framerateDenominator) and Resolution (height and
+-- width), determine your output bitrate. For example, say that your video
+-- resolution is 1920x1080 and your framerate is 29.97. Then Class 145
+-- (CLASS_145) gives you an output with a bitrate of approximately 145 Mbps
+-- and Class 220 (CLASS_220) gives you and output with a bitrate of
+-- approximately 220 Mbps. VC3 class also specifies the color bit depth of
+-- your output.
+vc3Settings_vc3Class :: Lens.Lens' Vc3Settings (Prelude.Maybe Vc3Class)
+vc3Settings_vc3Class = Lens.lens (\Vc3Settings' {vc3Class} -> vc3Class) (\s@Vc3Settings' {} a -> s {vc3Class = a} :: Vc3Settings)
+
+instance Data.FromJSON Vc3Settings where
+  parseJSON =
+    Data.withObject
+      "Vc3Settings"
+      ( \x ->
+          Vc3Settings'
+            Prelude.<$> (x Data..:? "framerateControl")
+            Prelude.<*> (x Data..:? "framerateConversionAlgorithm")
+            Prelude.<*> (x Data..:? "framerateDenominator")
+            Prelude.<*> (x Data..:? "framerateNumerator")
+            Prelude.<*> (x Data..:? "interlaceMode")
+            Prelude.<*> (x Data..:? "scanTypeConversionMode")
+            Prelude.<*> (x Data..:? "slowPal")
+            Prelude.<*> (x Data..:? "telecine")
+            Prelude.<*> (x Data..:? "vc3Class")
+      )
+
+instance Prelude.Hashable Vc3Settings where
+  hashWithSalt _salt Vc3Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` framerateControl
+      `Prelude.hashWithSalt` framerateConversionAlgorithm
+      `Prelude.hashWithSalt` framerateDenominator
+      `Prelude.hashWithSalt` framerateNumerator
+      `Prelude.hashWithSalt` interlaceMode
+      `Prelude.hashWithSalt` scanTypeConversionMode
+      `Prelude.hashWithSalt` slowPal
+      `Prelude.hashWithSalt` telecine
+      `Prelude.hashWithSalt` vc3Class
+
+instance Prelude.NFData Vc3Settings where
+  rnf Vc3Settings' {..} =
+    Prelude.rnf framerateControl
+      `Prelude.seq` Prelude.rnf framerateConversionAlgorithm
+      `Prelude.seq` Prelude.rnf framerateDenominator
+      `Prelude.seq` Prelude.rnf framerateNumerator
+      `Prelude.seq` Prelude.rnf interlaceMode
+      `Prelude.seq` Prelude.rnf scanTypeConversionMode
+      `Prelude.seq` Prelude.rnf slowPal
+      `Prelude.seq` Prelude.rnf telecine
+      `Prelude.seq` Prelude.rnf vc3Class
+
+instance Data.ToJSON Vc3Settings where
+  toJSON Vc3Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("framerateControl" Data..=)
+              Prelude.<$> framerateControl,
+            ("framerateConversionAlgorithm" Data..=)
+              Prelude.<$> framerateConversionAlgorithm,
+            ("framerateDenominator" Data..=)
+              Prelude.<$> framerateDenominator,
+            ("framerateNumerator" Data..=)
+              Prelude.<$> framerateNumerator,
+            ("interlaceMode" Data..=) Prelude.<$> interlaceMode,
+            ("scanTypeConversionMode" Data..=)
+              Prelude.<$> scanTypeConversionMode,
+            ("slowPal" Data..=) Prelude.<$> slowPal,
+            ("telecine" Data..=) Prelude.<$> telecine,
+            ("vc3Class" Data..=) Prelude.<$> vc3Class
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Vc3SlowPal.hs b/gen/Amazonka/MediaConvert/Types/Vc3SlowPal.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vc3SlowPal.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vc3SlowPal
+-- 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.Vc3SlowPal
+  ( Vc3SlowPal
+      ( ..,
+        Vc3SlowPal_DISABLED,
+        Vc3SlowPal_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output by
+-- relabeling the video frames and resampling your audio. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Related settings: You must also set Framerate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+newtype Vc3SlowPal = Vc3SlowPal'
+  { fromVc3SlowPal ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vc3SlowPal_DISABLED :: Vc3SlowPal
+pattern Vc3SlowPal_DISABLED = Vc3SlowPal' "DISABLED"
+
+pattern Vc3SlowPal_ENABLED :: Vc3SlowPal
+pattern Vc3SlowPal_ENABLED = Vc3SlowPal' "ENABLED"
+
+{-# COMPLETE
+  Vc3SlowPal_DISABLED,
+  Vc3SlowPal_ENABLED,
+  Vc3SlowPal'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vc3Telecine.hs b/gen/Amazonka/MediaConvert/Types/Vc3Telecine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vc3Telecine.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vc3Telecine
+-- 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.Vc3Telecine
+  ( Vc3Telecine
+      ( ..,
+        Vc3Telecine_HARD,
+        Vc3Telecine_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | When you do frame rate conversion from 23.976 frames per second (fps) to
+-- 29.97 fps, and your output scan type is interlaced, you can optionally
+-- enable hard telecine (HARD) to create a smoother picture. When you keep
+-- the default value, None (NONE), MediaConvert does a standard frame rate
+-- conversion to 29.97 without doing anything with the field polarity to
+-- create a smoother picture.
+newtype Vc3Telecine = Vc3Telecine'
+  { fromVc3Telecine ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vc3Telecine_HARD :: Vc3Telecine
+pattern Vc3Telecine_HARD = Vc3Telecine' "HARD"
+
+pattern Vc3Telecine_NONE :: Vc3Telecine
+pattern Vc3Telecine_NONE = Vc3Telecine' "NONE"
+
+{-# COMPLETE
+  Vc3Telecine_HARD,
+  Vc3Telecine_NONE,
+  Vc3Telecine'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/VchipAction.hs b/gen/Amazonka/MediaConvert/Types/VchipAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/VchipAction.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.VchipAction
+-- 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.VchipAction
+  ( VchipAction
+      ( ..,
+        VchipAction_PASSTHROUGH,
+        VchipAction_STRIP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The action to take on content advisory XDS packets. If you select
+-- PASSTHROUGH, packets will not be changed. If you select STRIP, any
+-- packets will be removed in output captions.
+newtype VchipAction = VchipAction'
+  { fromVchipAction ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern VchipAction_PASSTHROUGH :: VchipAction
+pattern VchipAction_PASSTHROUGH = VchipAction' "PASSTHROUGH"
+
+pattern VchipAction_STRIP :: VchipAction
+pattern VchipAction_STRIP = VchipAction' "STRIP"
+
+{-# COMPLETE
+  VchipAction_PASSTHROUGH,
+  VchipAction_STRIP,
+  VchipAction'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/VideoCodec.hs b/gen/Amazonka/MediaConvert/Types/VideoCodec.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/VideoCodec.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.VideoCodec
+-- 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.VideoCodec
+  ( VideoCodec
+      ( ..,
+        VideoCodec_AV1,
+        VideoCodec_AVC_INTRA,
+        VideoCodec_FRAME_CAPTURE,
+        VideoCodec_H_264,
+        VideoCodec_H_265,
+        VideoCodec_MPEG2,
+        VideoCodec_PRORES,
+        VideoCodec_VC3,
+        VideoCodec_VP8,
+        VideoCodec_VP9,
+        VideoCodec_XAVC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Type of video codec
+newtype VideoCodec = VideoCodec'
+  { fromVideoCodec ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern VideoCodec_AV1 :: VideoCodec
+pattern VideoCodec_AV1 = VideoCodec' "AV1"
+
+pattern VideoCodec_AVC_INTRA :: VideoCodec
+pattern VideoCodec_AVC_INTRA = VideoCodec' "AVC_INTRA"
+
+pattern VideoCodec_FRAME_CAPTURE :: VideoCodec
+pattern VideoCodec_FRAME_CAPTURE = VideoCodec' "FRAME_CAPTURE"
+
+pattern VideoCodec_H_264 :: VideoCodec
+pattern VideoCodec_H_264 = VideoCodec' "H_264"
+
+pattern VideoCodec_H_265 :: VideoCodec
+pattern VideoCodec_H_265 = VideoCodec' "H_265"
+
+pattern VideoCodec_MPEG2 :: VideoCodec
+pattern VideoCodec_MPEG2 = VideoCodec' "MPEG2"
+
+pattern VideoCodec_PRORES :: VideoCodec
+pattern VideoCodec_PRORES = VideoCodec' "PRORES"
+
+pattern VideoCodec_VC3 :: VideoCodec
+pattern VideoCodec_VC3 = VideoCodec' "VC3"
+
+pattern VideoCodec_VP8 :: VideoCodec
+pattern VideoCodec_VP8 = VideoCodec' "VP8"
+
+pattern VideoCodec_VP9 :: VideoCodec
+pattern VideoCodec_VP9 = VideoCodec' "VP9"
+
+pattern VideoCodec_XAVC :: VideoCodec
+pattern VideoCodec_XAVC = VideoCodec' "XAVC"
+
+{-# COMPLETE
+  VideoCodec_AV1,
+  VideoCodec_AVC_INTRA,
+  VideoCodec_FRAME_CAPTURE,
+  VideoCodec_H_264,
+  VideoCodec_H_265,
+  VideoCodec_MPEG2,
+  VideoCodec_PRORES,
+  VideoCodec_VC3,
+  VideoCodec_VP8,
+  VideoCodec_VP9,
+  VideoCodec_XAVC,
+  VideoCodec'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/VideoCodecSettings.hs b/gen/Amazonka/MediaConvert/Types/VideoCodecSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/VideoCodecSettings.hs
@@ -0,0 +1,291 @@
+{-# 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.VideoCodecSettings
+-- 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.VideoCodecSettings 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.Av1Settings
+import Amazonka.MediaConvert.Types.AvcIntraSettings
+import Amazonka.MediaConvert.Types.FrameCaptureSettings
+import Amazonka.MediaConvert.Types.H264Settings
+import Amazonka.MediaConvert.Types.H265Settings
+import Amazonka.MediaConvert.Types.Mpeg2Settings
+import Amazonka.MediaConvert.Types.ProresSettings
+import Amazonka.MediaConvert.Types.Vc3Settings
+import Amazonka.MediaConvert.Types.VideoCodec
+import Amazonka.MediaConvert.Types.Vp8Settings
+import Amazonka.MediaConvert.Types.Vp9Settings
+import Amazonka.MediaConvert.Types.XavcSettings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Video codec settings, (CodecSettings) under (VideoDescription), contains
+-- the group of settings related to video encoding. The settings in this
+-- group vary depending on the value that you choose for Video codec
+-- (Codec). For each codec enum that you choose, define the corresponding
+-- settings object. The following lists the codec enum, settings object
+-- pairs. * AV1, Av1Settings * AVC_INTRA, AvcIntraSettings * FRAME_CAPTURE,
+-- FrameCaptureSettings * H_264, H264Settings * H_265, H265Settings *
+-- MPEG2, Mpeg2Settings * PRORES, ProresSettings * VC3, Vc3Settings * VP8,
+-- Vp8Settings * VP9, Vp9Settings * XAVC, XavcSettings
+--
+-- /See:/ 'newVideoCodecSettings' smart constructor.
+data VideoCodecSettings = VideoCodecSettings'
+  { -- | Required when you set Codec, under VideoDescription>CodecSettings to the
+    -- value AV1.
+    av1Settings :: Prelude.Maybe Av1Settings,
+    -- | Required when you choose AVC-Intra for your output video codec. For more
+    -- information about the AVC-Intra settings, see the relevant
+    -- specification. For detailed information about SD and HD in AVC-Intra,
+    -- see https:\/\/ieeexplore.ieee.org\/document\/7290936. For information
+    -- about 4K\/2K in AVC-Intra, see
+    -- https:\/\/pro-av.panasonic.net\/en\/avc-ultra\/AVC-ULTRAoverview.pdf.
+    avcIntraSettings :: Prelude.Maybe AvcIntraSettings,
+    -- | Specifies the video codec. This must be equal to one of the enum values
+    -- defined by the object VideoCodec.
+    codec :: Prelude.Maybe VideoCodec,
+    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+    -- to the value FRAME_CAPTURE.
+    frameCaptureSettings :: Prelude.Maybe FrameCaptureSettings,
+    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+    -- to the value H_264.
+    h264Settings :: Prelude.Maybe H264Settings,
+    -- | Settings for H265 codec
+    h265Settings :: Prelude.Maybe H265Settings,
+    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+    -- to the value MPEG2.
+    mpeg2Settings :: Prelude.Maybe Mpeg2Settings,
+    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+    -- to the value PRORES.
+    proresSettings :: Prelude.Maybe ProresSettings,
+    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+    -- to the value VC3
+    vc3Settings :: Prelude.Maybe Vc3Settings,
+    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+    -- to the value VP8.
+    vp8Settings :: Prelude.Maybe Vp8Settings,
+    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+    -- to the value VP9.
+    vp9Settings :: Prelude.Maybe Vp9Settings,
+    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+    -- to the value XAVC.
+    xavcSettings :: Prelude.Maybe XavcSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VideoCodecSettings' 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:
+--
+-- 'av1Settings', 'videoCodecSettings_av1Settings' - Required when you set Codec, under VideoDescription>CodecSettings to the
+-- value AV1.
+--
+-- 'avcIntraSettings', 'videoCodecSettings_avcIntraSettings' - Required when you choose AVC-Intra for your output video codec. For more
+-- information about the AVC-Intra settings, see the relevant
+-- specification. For detailed information about SD and HD in AVC-Intra,
+-- see https:\/\/ieeexplore.ieee.org\/document\/7290936. For information
+-- about 4K\/2K in AVC-Intra, see
+-- https:\/\/pro-av.panasonic.net\/en\/avc-ultra\/AVC-ULTRAoverview.pdf.
+--
+-- 'codec', 'videoCodecSettings_codec' - Specifies the video codec. This must be equal to one of the enum values
+-- defined by the object VideoCodec.
+--
+-- 'frameCaptureSettings', 'videoCodecSettings_frameCaptureSettings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value FRAME_CAPTURE.
+--
+-- 'h264Settings', 'videoCodecSettings_h264Settings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value H_264.
+--
+-- 'h265Settings', 'videoCodecSettings_h265Settings' - Settings for H265 codec
+--
+-- 'mpeg2Settings', 'videoCodecSettings_mpeg2Settings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value MPEG2.
+--
+-- 'proresSettings', 'videoCodecSettings_proresSettings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value PRORES.
+--
+-- 'vc3Settings', 'videoCodecSettings_vc3Settings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value VC3
+--
+-- 'vp8Settings', 'videoCodecSettings_vp8Settings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value VP8.
+--
+-- 'vp9Settings', 'videoCodecSettings_vp9Settings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value VP9.
+--
+-- 'xavcSettings', 'videoCodecSettings_xavcSettings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value XAVC.
+newVideoCodecSettings ::
+  VideoCodecSettings
+newVideoCodecSettings =
+  VideoCodecSettings'
+    { av1Settings = Prelude.Nothing,
+      avcIntraSettings = Prelude.Nothing,
+      codec = Prelude.Nothing,
+      frameCaptureSettings = Prelude.Nothing,
+      h264Settings = Prelude.Nothing,
+      h265Settings = Prelude.Nothing,
+      mpeg2Settings = Prelude.Nothing,
+      proresSettings = Prelude.Nothing,
+      vc3Settings = Prelude.Nothing,
+      vp8Settings = Prelude.Nothing,
+      vp9Settings = Prelude.Nothing,
+      xavcSettings = Prelude.Nothing
+    }
+
+-- | Required when you set Codec, under VideoDescription>CodecSettings to the
+-- value AV1.
+videoCodecSettings_av1Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe Av1Settings)
+videoCodecSettings_av1Settings = Lens.lens (\VideoCodecSettings' {av1Settings} -> av1Settings) (\s@VideoCodecSettings' {} a -> s {av1Settings = a} :: VideoCodecSettings)
+
+-- | Required when you choose AVC-Intra for your output video codec. For more
+-- information about the AVC-Intra settings, see the relevant
+-- specification. For detailed information about SD and HD in AVC-Intra,
+-- see https:\/\/ieeexplore.ieee.org\/document\/7290936. For information
+-- about 4K\/2K in AVC-Intra, see
+-- https:\/\/pro-av.panasonic.net\/en\/avc-ultra\/AVC-ULTRAoverview.pdf.
+videoCodecSettings_avcIntraSettings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe AvcIntraSettings)
+videoCodecSettings_avcIntraSettings = Lens.lens (\VideoCodecSettings' {avcIntraSettings} -> avcIntraSettings) (\s@VideoCodecSettings' {} a -> s {avcIntraSettings = a} :: VideoCodecSettings)
+
+-- | Specifies the video codec. This must be equal to one of the enum values
+-- defined by the object VideoCodec.
+videoCodecSettings_codec :: Lens.Lens' VideoCodecSettings (Prelude.Maybe VideoCodec)
+videoCodecSettings_codec = Lens.lens (\VideoCodecSettings' {codec} -> codec) (\s@VideoCodecSettings' {} a -> s {codec = a} :: VideoCodecSettings)
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value FRAME_CAPTURE.
+videoCodecSettings_frameCaptureSettings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe FrameCaptureSettings)
+videoCodecSettings_frameCaptureSettings = Lens.lens (\VideoCodecSettings' {frameCaptureSettings} -> frameCaptureSettings) (\s@VideoCodecSettings' {} a -> s {frameCaptureSettings = a} :: VideoCodecSettings)
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value H_264.
+videoCodecSettings_h264Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe H264Settings)
+videoCodecSettings_h264Settings = Lens.lens (\VideoCodecSettings' {h264Settings} -> h264Settings) (\s@VideoCodecSettings' {} a -> s {h264Settings = a} :: VideoCodecSettings)
+
+-- | Settings for H265 codec
+videoCodecSettings_h265Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe H265Settings)
+videoCodecSettings_h265Settings = Lens.lens (\VideoCodecSettings' {h265Settings} -> h265Settings) (\s@VideoCodecSettings' {} a -> s {h265Settings = a} :: VideoCodecSettings)
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value MPEG2.
+videoCodecSettings_mpeg2Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe Mpeg2Settings)
+videoCodecSettings_mpeg2Settings = Lens.lens (\VideoCodecSettings' {mpeg2Settings} -> mpeg2Settings) (\s@VideoCodecSettings' {} a -> s {mpeg2Settings = a} :: VideoCodecSettings)
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value PRORES.
+videoCodecSettings_proresSettings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe ProresSettings)
+videoCodecSettings_proresSettings = Lens.lens (\VideoCodecSettings' {proresSettings} -> proresSettings) (\s@VideoCodecSettings' {} a -> s {proresSettings = a} :: VideoCodecSettings)
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value VC3
+videoCodecSettings_vc3Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe Vc3Settings)
+videoCodecSettings_vc3Settings = Lens.lens (\VideoCodecSettings' {vc3Settings} -> vc3Settings) (\s@VideoCodecSettings' {} a -> s {vc3Settings = a} :: VideoCodecSettings)
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value VP8.
+videoCodecSettings_vp8Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe Vp8Settings)
+videoCodecSettings_vp8Settings = Lens.lens (\VideoCodecSettings' {vp8Settings} -> vp8Settings) (\s@VideoCodecSettings' {} a -> s {vp8Settings = a} :: VideoCodecSettings)
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value VP9.
+videoCodecSettings_vp9Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe Vp9Settings)
+videoCodecSettings_vp9Settings = Lens.lens (\VideoCodecSettings' {vp9Settings} -> vp9Settings) (\s@VideoCodecSettings' {} a -> s {vp9Settings = a} :: VideoCodecSettings)
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value XAVC.
+videoCodecSettings_xavcSettings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe XavcSettings)
+videoCodecSettings_xavcSettings = Lens.lens (\VideoCodecSettings' {xavcSettings} -> xavcSettings) (\s@VideoCodecSettings' {} a -> s {xavcSettings = a} :: VideoCodecSettings)
+
+instance Data.FromJSON VideoCodecSettings where
+  parseJSON =
+    Data.withObject
+      "VideoCodecSettings"
+      ( \x ->
+          VideoCodecSettings'
+            Prelude.<$> (x Data..:? "av1Settings")
+            Prelude.<*> (x Data..:? "avcIntraSettings")
+            Prelude.<*> (x Data..:? "codec")
+            Prelude.<*> (x Data..:? "frameCaptureSettings")
+            Prelude.<*> (x Data..:? "h264Settings")
+            Prelude.<*> (x Data..:? "h265Settings")
+            Prelude.<*> (x Data..:? "mpeg2Settings")
+            Prelude.<*> (x Data..:? "proresSettings")
+            Prelude.<*> (x Data..:? "vc3Settings")
+            Prelude.<*> (x Data..:? "vp8Settings")
+            Prelude.<*> (x Data..:? "vp9Settings")
+            Prelude.<*> (x Data..:? "xavcSettings")
+      )
+
+instance Prelude.Hashable VideoCodecSettings where
+  hashWithSalt _salt VideoCodecSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` av1Settings
+      `Prelude.hashWithSalt` avcIntraSettings
+      `Prelude.hashWithSalt` codec
+      `Prelude.hashWithSalt` frameCaptureSettings
+      `Prelude.hashWithSalt` h264Settings
+      `Prelude.hashWithSalt` h265Settings
+      `Prelude.hashWithSalt` mpeg2Settings
+      `Prelude.hashWithSalt` proresSettings
+      `Prelude.hashWithSalt` vc3Settings
+      `Prelude.hashWithSalt` vp8Settings
+      `Prelude.hashWithSalt` vp9Settings
+      `Prelude.hashWithSalt` xavcSettings
+
+instance Prelude.NFData VideoCodecSettings where
+  rnf VideoCodecSettings' {..} =
+    Prelude.rnf av1Settings
+      `Prelude.seq` Prelude.rnf avcIntraSettings
+      `Prelude.seq` Prelude.rnf codec
+      `Prelude.seq` Prelude.rnf frameCaptureSettings
+      `Prelude.seq` Prelude.rnf h264Settings
+      `Prelude.seq` Prelude.rnf h265Settings
+      `Prelude.seq` Prelude.rnf mpeg2Settings
+      `Prelude.seq` Prelude.rnf proresSettings
+      `Prelude.seq` Prelude.rnf vc3Settings
+      `Prelude.seq` Prelude.rnf vp8Settings
+      `Prelude.seq` Prelude.rnf vp9Settings
+      `Prelude.seq` Prelude.rnf xavcSettings
+
+instance Data.ToJSON VideoCodecSettings where
+  toJSON VideoCodecSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("av1Settings" Data..=) Prelude.<$> av1Settings,
+            ("avcIntraSettings" Data..=)
+              Prelude.<$> avcIntraSettings,
+            ("codec" Data..=) Prelude.<$> codec,
+            ("frameCaptureSettings" Data..=)
+              Prelude.<$> frameCaptureSettings,
+            ("h264Settings" Data..=) Prelude.<$> h264Settings,
+            ("h265Settings" Data..=) Prelude.<$> h265Settings,
+            ("mpeg2Settings" Data..=) Prelude.<$> mpeg2Settings,
+            ("proresSettings" Data..=)
+              Prelude.<$> proresSettings,
+            ("vc3Settings" Data..=) Prelude.<$> vc3Settings,
+            ("vp8Settings" Data..=) Prelude.<$> vp8Settings,
+            ("vp9Settings" Data..=) Prelude.<$> vp9Settings,
+            ("xavcSettings" Data..=) Prelude.<$> xavcSettings
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/VideoDescription.hs b/gen/Amazonka/MediaConvert/Types/VideoDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/VideoDescription.hs
@@ -0,0 +1,465 @@
+{-# 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.VideoDescription
+-- 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.VideoDescription 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.AfdSignaling
+import Amazonka.MediaConvert.Types.AntiAlias
+import Amazonka.MediaConvert.Types.ColorMetadata
+import Amazonka.MediaConvert.Types.DropFrameTimecode
+import Amazonka.MediaConvert.Types.Rectangle
+import Amazonka.MediaConvert.Types.RespondToAfd
+import Amazonka.MediaConvert.Types.ScalingBehavior
+import Amazonka.MediaConvert.Types.VideoCodecSettings
+import Amazonka.MediaConvert.Types.VideoPreprocessor
+import Amazonka.MediaConvert.Types.VideoTimecodeInsertion
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to video encoding of your output. The specific video
+-- settings depend on the video codec that you choose. When you work
+-- directly in your JSON job specification, include one instance of Video
+-- description (VideoDescription) per output.
+--
+-- /See:/ 'newVideoDescription' smart constructor.
+data VideoDescription = VideoDescription'
+  { -- | This setting only applies to H.264, H.265, and MPEG2 outputs. Use Insert
+    -- AFD signaling (AfdSignaling) to specify whether the service includes AFD
+    -- values in the output video data and what those values are. * Choose None
+    -- to remove all AFD values from this output. * Choose Fixed to ignore
+    -- input AFD values and instead encode the value specified in the job. *
+    -- Choose Auto to calculate output AFD values based on the input AFD scaler
+    -- data.
+    afdSignaling :: Prelude.Maybe AfdSignaling,
+    -- | The anti-alias filter is automatically applied to all outputs. The
+    -- service no longer accepts the value DISABLED for AntiAlias. If you
+    -- specify that in your job, the service will ignore the setting.
+    antiAlias :: Prelude.Maybe AntiAlias,
+    -- | Video codec settings, (CodecSettings) under (VideoDescription), contains
+    -- the group of settings related to video encoding. The settings in this
+    -- group vary depending on the value that you choose for Video codec
+    -- (Codec). For each codec enum that you choose, define the corresponding
+    -- settings object. The following lists the codec enum, settings object
+    -- pairs. * AV1, Av1Settings * AVC_INTRA, AvcIntraSettings * FRAME_CAPTURE,
+    -- FrameCaptureSettings * H_264, H264Settings * H_265, H265Settings *
+    -- MPEG2, Mpeg2Settings * PRORES, ProresSettings * VC3, Vc3Settings * VP8,
+    -- Vp8Settings * VP9, Vp9Settings * XAVC, XavcSettings
+    codecSettings :: Prelude.Maybe VideoCodecSettings,
+    -- | Choose Insert (INSERT) for this setting to include color metadata in
+    -- this output. Choose Ignore (IGNORE) to exclude color metadata from this
+    -- output. If you don\'t specify a value, the service sets this to Insert
+    -- by default.
+    colorMetadata :: Prelude.Maybe ColorMetadata,
+    -- | Use Cropping selection (crop) to specify the video area that the service
+    -- will include in the output video frame.
+    crop :: Prelude.Maybe Rectangle,
+    -- | Applies only to 29.97 fps outputs. When this feature is enabled, the
+    -- service will use drop-frame timecode on outputs. If it is not possible
+    -- to use drop-frame timecode, the system will fall back to non-drop-frame.
+    -- This setting is enabled by default when Timecode insertion
+    -- (TimecodeInsertion) is enabled.
+    dropFrameTimecode :: Prelude.Maybe DropFrameTimecode,
+    -- | Applies only if you set AFD Signaling(AfdSignaling) to Fixed (FIXED).
+    -- Use Fixed (FixedAfd) to specify a four-bit AFD value which the service
+    -- will write on all frames of this video output.
+    fixedAfd :: Prelude.Maybe Prelude.Natural,
+    -- | Use the Height (Height) setting to define the video resolution height
+    -- for this output. Specify in pixels. If you don\'t provide a value here,
+    -- the service will use the input height.
+    height :: Prelude.Maybe Prelude.Natural,
+    -- | Use Selection placement (position) to define the video area in your
+    -- output frame. The area outside of the rectangle that you specify here is
+    -- black.
+    position :: Prelude.Maybe Rectangle,
+    -- | Use Respond to AFD (RespondToAfd) to specify how the service changes the
+    -- video itself in response to AFD values in the input. * Choose Respond to
+    -- clip the input video frame according to the AFD value, input display
+    -- aspect ratio, and output display aspect ratio. * Choose Passthrough to
+    -- include the input AFD values. Do not choose this when AfdSignaling is
+    -- set to (NONE). A preferred implementation of this workflow is to set
+    -- RespondToAfd to (NONE) and set AfdSignaling to (AUTO). * Choose None to
+    -- remove all input AFD values from this output.
+    respondToAfd :: Prelude.Maybe RespondToAfd,
+    -- | Specify how the service handles outputs that have a different aspect
+    -- ratio from the input aspect ratio. Choose Stretch to output
+    -- (STRETCH_TO_OUTPUT) to have the service stretch your video image to fit.
+    -- Keep the setting Default (DEFAULT) to have the service letterbox your
+    -- video instead. This setting overrides any value that you specify for the
+    -- setting Selection placement (position) in this output.
+    scalingBehavior :: Prelude.Maybe ScalingBehavior,
+    -- | Use Sharpness (Sharpness) setting to specify the strength of
+    -- anti-aliasing. This setting changes the width of the anti-alias filter
+    -- kernel used for scaling. Sharpness only applies if your output
+    -- resolution is different from your input resolution. 0 is the softest
+    -- setting, 100 the sharpest, and 50 recommended for most content.
+    sharpness :: Prelude.Maybe Prelude.Natural,
+    -- | Applies only to H.264, H.265, MPEG2, and ProRes outputs. Only enable
+    -- Timecode insertion when the input frame rate is identical to the output
+    -- frame rate. To include timecodes in this output, set Timecode insertion
+    -- (VideoTimecodeInsertion) to PIC_TIMING_SEI. To leave them out, set it to
+    -- DISABLED. Default is DISABLED. When the service inserts timecodes in an
+    -- output, by default, it uses any embedded timecodes from the input. If
+    -- none are present, the service will set the timecode for the first output
+    -- frame to zero. To change this default behavior, adjust the settings
+    -- under Timecode configuration (TimecodeConfig). In the console, these
+    -- settings are located under Job > Job settings > Timecode configuration.
+    -- Note - Timecode source under input settings (InputTimecodeSource) does
+    -- not affect the timecodes that are inserted in the output. Source under
+    -- Job settings > Timecode configuration (TimecodeSource) does.
+    timecodeInsertion :: Prelude.Maybe VideoTimecodeInsertion,
+    -- | Find additional transcoding features under Preprocessors
+    -- (VideoPreprocessors). Enable the features at each output individually.
+    -- These features are disabled by default.
+    videoPreprocessors :: Prelude.Maybe VideoPreprocessor,
+    -- | Use Width (Width) to define the video resolution width, in pixels, for
+    -- this output. If you don\'t provide a value here, the service will use
+    -- the input width.
+    width :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VideoDescription' 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:
+--
+-- 'afdSignaling', 'videoDescription_afdSignaling' - This setting only applies to H.264, H.265, and MPEG2 outputs. Use Insert
+-- AFD signaling (AfdSignaling) to specify whether the service includes AFD
+-- values in the output video data and what those values are. * Choose None
+-- to remove all AFD values from this output. * Choose Fixed to ignore
+-- input AFD values and instead encode the value specified in the job. *
+-- Choose Auto to calculate output AFD values based on the input AFD scaler
+-- data.
+--
+-- 'antiAlias', 'videoDescription_antiAlias' - The anti-alias filter is automatically applied to all outputs. The
+-- service no longer accepts the value DISABLED for AntiAlias. If you
+-- specify that in your job, the service will ignore the setting.
+--
+-- 'codecSettings', 'videoDescription_codecSettings' - Video codec settings, (CodecSettings) under (VideoDescription), contains
+-- the group of settings related to video encoding. The settings in this
+-- group vary depending on the value that you choose for Video codec
+-- (Codec). For each codec enum that you choose, define the corresponding
+-- settings object. The following lists the codec enum, settings object
+-- pairs. * AV1, Av1Settings * AVC_INTRA, AvcIntraSettings * FRAME_CAPTURE,
+-- FrameCaptureSettings * H_264, H264Settings * H_265, H265Settings *
+-- MPEG2, Mpeg2Settings * PRORES, ProresSettings * VC3, Vc3Settings * VP8,
+-- Vp8Settings * VP9, Vp9Settings * XAVC, XavcSettings
+--
+-- 'colorMetadata', 'videoDescription_colorMetadata' - Choose Insert (INSERT) for this setting to include color metadata in
+-- this output. Choose Ignore (IGNORE) to exclude color metadata from this
+-- output. If you don\'t specify a value, the service sets this to Insert
+-- by default.
+--
+-- 'crop', 'videoDescription_crop' - Use Cropping selection (crop) to specify the video area that the service
+-- will include in the output video frame.
+--
+-- 'dropFrameTimecode', 'videoDescription_dropFrameTimecode' - Applies only to 29.97 fps outputs. When this feature is enabled, the
+-- service will use drop-frame timecode on outputs. If it is not possible
+-- to use drop-frame timecode, the system will fall back to non-drop-frame.
+-- This setting is enabled by default when Timecode insertion
+-- (TimecodeInsertion) is enabled.
+--
+-- 'fixedAfd', 'videoDescription_fixedAfd' - Applies only if you set AFD Signaling(AfdSignaling) to Fixed (FIXED).
+-- Use Fixed (FixedAfd) to specify a four-bit AFD value which the service
+-- will write on all frames of this video output.
+--
+-- 'height', 'videoDescription_height' - Use the Height (Height) setting to define the video resolution height
+-- for this output. Specify in pixels. If you don\'t provide a value here,
+-- the service will use the input height.
+--
+-- 'position', 'videoDescription_position' - Use Selection placement (position) to define the video area in your
+-- output frame. The area outside of the rectangle that you specify here is
+-- black.
+--
+-- 'respondToAfd', 'videoDescription_respondToAfd' - Use Respond to AFD (RespondToAfd) to specify how the service changes the
+-- video itself in response to AFD values in the input. * Choose Respond to
+-- clip the input video frame according to the AFD value, input display
+-- aspect ratio, and output display aspect ratio. * Choose Passthrough to
+-- include the input AFD values. Do not choose this when AfdSignaling is
+-- set to (NONE). A preferred implementation of this workflow is to set
+-- RespondToAfd to (NONE) and set AfdSignaling to (AUTO). * Choose None to
+-- remove all input AFD values from this output.
+--
+-- 'scalingBehavior', 'videoDescription_scalingBehavior' - Specify how the service handles outputs that have a different aspect
+-- ratio from the input aspect ratio. Choose Stretch to output
+-- (STRETCH_TO_OUTPUT) to have the service stretch your video image to fit.
+-- Keep the setting Default (DEFAULT) to have the service letterbox your
+-- video instead. This setting overrides any value that you specify for the
+-- setting Selection placement (position) in this output.
+--
+-- 'sharpness', 'videoDescription_sharpness' - Use Sharpness (Sharpness) setting to specify the strength of
+-- anti-aliasing. This setting changes the width of the anti-alias filter
+-- kernel used for scaling. Sharpness only applies if your output
+-- resolution is different from your input resolution. 0 is the softest
+-- setting, 100 the sharpest, and 50 recommended for most content.
+--
+-- 'timecodeInsertion', 'videoDescription_timecodeInsertion' - Applies only to H.264, H.265, MPEG2, and ProRes outputs. Only enable
+-- Timecode insertion when the input frame rate is identical to the output
+-- frame rate. To include timecodes in this output, set Timecode insertion
+-- (VideoTimecodeInsertion) to PIC_TIMING_SEI. To leave them out, set it to
+-- DISABLED. Default is DISABLED. When the service inserts timecodes in an
+-- output, by default, it uses any embedded timecodes from the input. If
+-- none are present, the service will set the timecode for the first output
+-- frame to zero. To change this default behavior, adjust the settings
+-- under Timecode configuration (TimecodeConfig). In the console, these
+-- settings are located under Job > Job settings > Timecode configuration.
+-- Note - Timecode source under input settings (InputTimecodeSource) does
+-- not affect the timecodes that are inserted in the output. Source under
+-- Job settings > Timecode configuration (TimecodeSource) does.
+--
+-- 'videoPreprocessors', 'videoDescription_videoPreprocessors' - Find additional transcoding features under Preprocessors
+-- (VideoPreprocessors). Enable the features at each output individually.
+-- These features are disabled by default.
+--
+-- 'width', 'videoDescription_width' - Use Width (Width) to define the video resolution width, in pixels, for
+-- this output. If you don\'t provide a value here, the service will use
+-- the input width.
+newVideoDescription ::
+  VideoDescription
+newVideoDescription =
+  VideoDescription'
+    { afdSignaling = Prelude.Nothing,
+      antiAlias = Prelude.Nothing,
+      codecSettings = Prelude.Nothing,
+      colorMetadata = Prelude.Nothing,
+      crop = Prelude.Nothing,
+      dropFrameTimecode = Prelude.Nothing,
+      fixedAfd = Prelude.Nothing,
+      height = Prelude.Nothing,
+      position = Prelude.Nothing,
+      respondToAfd = Prelude.Nothing,
+      scalingBehavior = Prelude.Nothing,
+      sharpness = Prelude.Nothing,
+      timecodeInsertion = Prelude.Nothing,
+      videoPreprocessors = Prelude.Nothing,
+      width = Prelude.Nothing
+    }
+
+-- | This setting only applies to H.264, H.265, and MPEG2 outputs. Use Insert
+-- AFD signaling (AfdSignaling) to specify whether the service includes AFD
+-- values in the output video data and what those values are. * Choose None
+-- to remove all AFD values from this output. * Choose Fixed to ignore
+-- input AFD values and instead encode the value specified in the job. *
+-- Choose Auto to calculate output AFD values based on the input AFD scaler
+-- data.
+videoDescription_afdSignaling :: Lens.Lens' VideoDescription (Prelude.Maybe AfdSignaling)
+videoDescription_afdSignaling = Lens.lens (\VideoDescription' {afdSignaling} -> afdSignaling) (\s@VideoDescription' {} a -> s {afdSignaling = a} :: VideoDescription)
+
+-- | The anti-alias filter is automatically applied to all outputs. The
+-- service no longer accepts the value DISABLED for AntiAlias. If you
+-- specify that in your job, the service will ignore the setting.
+videoDescription_antiAlias :: Lens.Lens' VideoDescription (Prelude.Maybe AntiAlias)
+videoDescription_antiAlias = Lens.lens (\VideoDescription' {antiAlias} -> antiAlias) (\s@VideoDescription' {} a -> s {antiAlias = a} :: VideoDescription)
+
+-- | Video codec settings, (CodecSettings) under (VideoDescription), contains
+-- the group of settings related to video encoding. The settings in this
+-- group vary depending on the value that you choose for Video codec
+-- (Codec). For each codec enum that you choose, define the corresponding
+-- settings object. The following lists the codec enum, settings object
+-- pairs. * AV1, Av1Settings * AVC_INTRA, AvcIntraSettings * FRAME_CAPTURE,
+-- FrameCaptureSettings * H_264, H264Settings * H_265, H265Settings *
+-- MPEG2, Mpeg2Settings * PRORES, ProresSettings * VC3, Vc3Settings * VP8,
+-- Vp8Settings * VP9, Vp9Settings * XAVC, XavcSettings
+videoDescription_codecSettings :: Lens.Lens' VideoDescription (Prelude.Maybe VideoCodecSettings)
+videoDescription_codecSettings = Lens.lens (\VideoDescription' {codecSettings} -> codecSettings) (\s@VideoDescription' {} a -> s {codecSettings = a} :: VideoDescription)
+
+-- | Choose Insert (INSERT) for this setting to include color metadata in
+-- this output. Choose Ignore (IGNORE) to exclude color metadata from this
+-- output. If you don\'t specify a value, the service sets this to Insert
+-- by default.
+videoDescription_colorMetadata :: Lens.Lens' VideoDescription (Prelude.Maybe ColorMetadata)
+videoDescription_colorMetadata = Lens.lens (\VideoDescription' {colorMetadata} -> colorMetadata) (\s@VideoDescription' {} a -> s {colorMetadata = a} :: VideoDescription)
+
+-- | Use Cropping selection (crop) to specify the video area that the service
+-- will include in the output video frame.
+videoDescription_crop :: Lens.Lens' VideoDescription (Prelude.Maybe Rectangle)
+videoDescription_crop = Lens.lens (\VideoDescription' {crop} -> crop) (\s@VideoDescription' {} a -> s {crop = a} :: VideoDescription)
+
+-- | Applies only to 29.97 fps outputs. When this feature is enabled, the
+-- service will use drop-frame timecode on outputs. If it is not possible
+-- to use drop-frame timecode, the system will fall back to non-drop-frame.
+-- This setting is enabled by default when Timecode insertion
+-- (TimecodeInsertion) is enabled.
+videoDescription_dropFrameTimecode :: Lens.Lens' VideoDescription (Prelude.Maybe DropFrameTimecode)
+videoDescription_dropFrameTimecode = Lens.lens (\VideoDescription' {dropFrameTimecode} -> dropFrameTimecode) (\s@VideoDescription' {} a -> s {dropFrameTimecode = a} :: VideoDescription)
+
+-- | Applies only if you set AFD Signaling(AfdSignaling) to Fixed (FIXED).
+-- Use Fixed (FixedAfd) to specify a four-bit AFD value which the service
+-- will write on all frames of this video output.
+videoDescription_fixedAfd :: Lens.Lens' VideoDescription (Prelude.Maybe Prelude.Natural)
+videoDescription_fixedAfd = Lens.lens (\VideoDescription' {fixedAfd} -> fixedAfd) (\s@VideoDescription' {} a -> s {fixedAfd = a} :: VideoDescription)
+
+-- | Use the Height (Height) setting to define the video resolution height
+-- for this output. Specify in pixels. If you don\'t provide a value here,
+-- the service will use the input height.
+videoDescription_height :: Lens.Lens' VideoDescription (Prelude.Maybe Prelude.Natural)
+videoDescription_height = Lens.lens (\VideoDescription' {height} -> height) (\s@VideoDescription' {} a -> s {height = a} :: VideoDescription)
+
+-- | Use Selection placement (position) to define the video area in your
+-- output frame. The area outside of the rectangle that you specify here is
+-- black.
+videoDescription_position :: Lens.Lens' VideoDescription (Prelude.Maybe Rectangle)
+videoDescription_position = Lens.lens (\VideoDescription' {position} -> position) (\s@VideoDescription' {} a -> s {position = a} :: VideoDescription)
+
+-- | Use Respond to AFD (RespondToAfd) to specify how the service changes the
+-- video itself in response to AFD values in the input. * Choose Respond to
+-- clip the input video frame according to the AFD value, input display
+-- aspect ratio, and output display aspect ratio. * Choose Passthrough to
+-- include the input AFD values. Do not choose this when AfdSignaling is
+-- set to (NONE). A preferred implementation of this workflow is to set
+-- RespondToAfd to (NONE) and set AfdSignaling to (AUTO). * Choose None to
+-- remove all input AFD values from this output.
+videoDescription_respondToAfd :: Lens.Lens' VideoDescription (Prelude.Maybe RespondToAfd)
+videoDescription_respondToAfd = Lens.lens (\VideoDescription' {respondToAfd} -> respondToAfd) (\s@VideoDescription' {} a -> s {respondToAfd = a} :: VideoDescription)
+
+-- | Specify how the service handles outputs that have a different aspect
+-- ratio from the input aspect ratio. Choose Stretch to output
+-- (STRETCH_TO_OUTPUT) to have the service stretch your video image to fit.
+-- Keep the setting Default (DEFAULT) to have the service letterbox your
+-- video instead. This setting overrides any value that you specify for the
+-- setting Selection placement (position) in this output.
+videoDescription_scalingBehavior :: Lens.Lens' VideoDescription (Prelude.Maybe ScalingBehavior)
+videoDescription_scalingBehavior = Lens.lens (\VideoDescription' {scalingBehavior} -> scalingBehavior) (\s@VideoDescription' {} a -> s {scalingBehavior = a} :: VideoDescription)
+
+-- | Use Sharpness (Sharpness) setting to specify the strength of
+-- anti-aliasing. This setting changes the width of the anti-alias filter
+-- kernel used for scaling. Sharpness only applies if your output
+-- resolution is different from your input resolution. 0 is the softest
+-- setting, 100 the sharpest, and 50 recommended for most content.
+videoDescription_sharpness :: Lens.Lens' VideoDescription (Prelude.Maybe Prelude.Natural)
+videoDescription_sharpness = Lens.lens (\VideoDescription' {sharpness} -> sharpness) (\s@VideoDescription' {} a -> s {sharpness = a} :: VideoDescription)
+
+-- | Applies only to H.264, H.265, MPEG2, and ProRes outputs. Only enable
+-- Timecode insertion when the input frame rate is identical to the output
+-- frame rate. To include timecodes in this output, set Timecode insertion
+-- (VideoTimecodeInsertion) to PIC_TIMING_SEI. To leave them out, set it to
+-- DISABLED. Default is DISABLED. When the service inserts timecodes in an
+-- output, by default, it uses any embedded timecodes from the input. If
+-- none are present, the service will set the timecode for the first output
+-- frame to zero. To change this default behavior, adjust the settings
+-- under Timecode configuration (TimecodeConfig). In the console, these
+-- settings are located under Job > Job settings > Timecode configuration.
+-- Note - Timecode source under input settings (InputTimecodeSource) does
+-- not affect the timecodes that are inserted in the output. Source under
+-- Job settings > Timecode configuration (TimecodeSource) does.
+videoDescription_timecodeInsertion :: Lens.Lens' VideoDescription (Prelude.Maybe VideoTimecodeInsertion)
+videoDescription_timecodeInsertion = Lens.lens (\VideoDescription' {timecodeInsertion} -> timecodeInsertion) (\s@VideoDescription' {} a -> s {timecodeInsertion = a} :: VideoDescription)
+
+-- | Find additional transcoding features under Preprocessors
+-- (VideoPreprocessors). Enable the features at each output individually.
+-- These features are disabled by default.
+videoDescription_videoPreprocessors :: Lens.Lens' VideoDescription (Prelude.Maybe VideoPreprocessor)
+videoDescription_videoPreprocessors = Lens.lens (\VideoDescription' {videoPreprocessors} -> videoPreprocessors) (\s@VideoDescription' {} a -> s {videoPreprocessors = a} :: VideoDescription)
+
+-- | Use Width (Width) to define the video resolution width, in pixels, for
+-- this output. If you don\'t provide a value here, the service will use
+-- the input width.
+videoDescription_width :: Lens.Lens' VideoDescription (Prelude.Maybe Prelude.Natural)
+videoDescription_width = Lens.lens (\VideoDescription' {width} -> width) (\s@VideoDescription' {} a -> s {width = a} :: VideoDescription)
+
+instance Data.FromJSON VideoDescription where
+  parseJSON =
+    Data.withObject
+      "VideoDescription"
+      ( \x ->
+          VideoDescription'
+            Prelude.<$> (x Data..:? "afdSignaling")
+            Prelude.<*> (x Data..:? "antiAlias")
+            Prelude.<*> (x Data..:? "codecSettings")
+            Prelude.<*> (x Data..:? "colorMetadata")
+            Prelude.<*> (x Data..:? "crop")
+            Prelude.<*> (x Data..:? "dropFrameTimecode")
+            Prelude.<*> (x Data..:? "fixedAfd")
+            Prelude.<*> (x Data..:? "height")
+            Prelude.<*> (x Data..:? "position")
+            Prelude.<*> (x Data..:? "respondToAfd")
+            Prelude.<*> (x Data..:? "scalingBehavior")
+            Prelude.<*> (x Data..:? "sharpness")
+            Prelude.<*> (x Data..:? "timecodeInsertion")
+            Prelude.<*> (x Data..:? "videoPreprocessors")
+            Prelude.<*> (x Data..:? "width")
+      )
+
+instance Prelude.Hashable VideoDescription where
+  hashWithSalt _salt VideoDescription' {..} =
+    _salt
+      `Prelude.hashWithSalt` afdSignaling
+      `Prelude.hashWithSalt` antiAlias
+      `Prelude.hashWithSalt` codecSettings
+      `Prelude.hashWithSalt` colorMetadata
+      `Prelude.hashWithSalt` crop
+      `Prelude.hashWithSalt` dropFrameTimecode
+      `Prelude.hashWithSalt` fixedAfd
+      `Prelude.hashWithSalt` height
+      `Prelude.hashWithSalt` position
+      `Prelude.hashWithSalt` respondToAfd
+      `Prelude.hashWithSalt` scalingBehavior
+      `Prelude.hashWithSalt` sharpness
+      `Prelude.hashWithSalt` timecodeInsertion
+      `Prelude.hashWithSalt` videoPreprocessors
+      `Prelude.hashWithSalt` width
+
+instance Prelude.NFData VideoDescription where
+  rnf VideoDescription' {..} =
+    Prelude.rnf afdSignaling
+      `Prelude.seq` Prelude.rnf antiAlias
+      `Prelude.seq` Prelude.rnf codecSettings
+      `Prelude.seq` Prelude.rnf colorMetadata
+      `Prelude.seq` Prelude.rnf crop
+      `Prelude.seq` Prelude.rnf dropFrameTimecode
+      `Prelude.seq` Prelude.rnf fixedAfd
+      `Prelude.seq` Prelude.rnf height
+      `Prelude.seq` Prelude.rnf position
+      `Prelude.seq` Prelude.rnf respondToAfd
+      `Prelude.seq` Prelude.rnf scalingBehavior
+      `Prelude.seq` Prelude.rnf sharpness
+      `Prelude.seq` Prelude.rnf timecodeInsertion
+      `Prelude.seq` Prelude.rnf videoPreprocessors
+      `Prelude.seq` Prelude.rnf width
+
+instance Data.ToJSON VideoDescription where
+  toJSON VideoDescription' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("afdSignaling" Data..=) Prelude.<$> afdSignaling,
+            ("antiAlias" Data..=) Prelude.<$> antiAlias,
+            ("codecSettings" Data..=) Prelude.<$> codecSettings,
+            ("colorMetadata" Data..=) Prelude.<$> colorMetadata,
+            ("crop" Data..=) Prelude.<$> crop,
+            ("dropFrameTimecode" Data..=)
+              Prelude.<$> dropFrameTimecode,
+            ("fixedAfd" Data..=) Prelude.<$> fixedAfd,
+            ("height" Data..=) Prelude.<$> height,
+            ("position" Data..=) Prelude.<$> position,
+            ("respondToAfd" Data..=) Prelude.<$> respondToAfd,
+            ("scalingBehavior" Data..=)
+              Prelude.<$> scalingBehavior,
+            ("sharpness" Data..=) Prelude.<$> sharpness,
+            ("timecodeInsertion" Data..=)
+              Prelude.<$> timecodeInsertion,
+            ("videoPreprocessors" Data..=)
+              Prelude.<$> videoPreprocessors,
+            ("width" Data..=) Prelude.<$> width
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/VideoDetail.hs b/gen/Amazonka/MediaConvert/Types/VideoDetail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/VideoDetail.hs
@@ -0,0 +1,84 @@
+{-# 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.VideoDetail
+-- 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.VideoDetail where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains details about the output\'s video stream
+--
+-- /See:/ 'newVideoDetail' smart constructor.
+data VideoDetail = VideoDetail'
+  { -- | Height in pixels for the output
+    heightInPx :: Prelude.Maybe Prelude.Int,
+    -- | Width in pixels for the output
+    widthInPx :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VideoDetail' 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:
+--
+-- 'heightInPx', 'videoDetail_heightInPx' - Height in pixels for the output
+--
+-- 'widthInPx', 'videoDetail_widthInPx' - Width in pixels for the output
+newVideoDetail ::
+  VideoDetail
+newVideoDetail =
+  VideoDetail'
+    { heightInPx = Prelude.Nothing,
+      widthInPx = Prelude.Nothing
+    }
+
+-- | Height in pixels for the output
+videoDetail_heightInPx :: Lens.Lens' VideoDetail (Prelude.Maybe Prelude.Int)
+videoDetail_heightInPx = Lens.lens (\VideoDetail' {heightInPx} -> heightInPx) (\s@VideoDetail' {} a -> s {heightInPx = a} :: VideoDetail)
+
+-- | Width in pixels for the output
+videoDetail_widthInPx :: Lens.Lens' VideoDetail (Prelude.Maybe Prelude.Int)
+videoDetail_widthInPx = Lens.lens (\VideoDetail' {widthInPx} -> widthInPx) (\s@VideoDetail' {} a -> s {widthInPx = a} :: VideoDetail)
+
+instance Data.FromJSON VideoDetail where
+  parseJSON =
+    Data.withObject
+      "VideoDetail"
+      ( \x ->
+          VideoDetail'
+            Prelude.<$> (x Data..:? "heightInPx")
+            Prelude.<*> (x Data..:? "widthInPx")
+      )
+
+instance Prelude.Hashable VideoDetail where
+  hashWithSalt _salt VideoDetail' {..} =
+    _salt
+      `Prelude.hashWithSalt` heightInPx
+      `Prelude.hashWithSalt` widthInPx
+
+instance Prelude.NFData VideoDetail where
+  rnf VideoDetail' {..} =
+    Prelude.rnf heightInPx
+      `Prelude.seq` Prelude.rnf widthInPx
diff --git a/gen/Amazonka/MediaConvert/Types/VideoPreprocessor.hs b/gen/Amazonka/MediaConvert/Types/VideoPreprocessor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/VideoPreprocessor.hs
@@ -0,0 +1,221 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.VideoPreprocessor
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.MediaConvert.Types.VideoPreprocessor where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaConvert.Types.ColorCorrector
+import Amazonka.MediaConvert.Types.Deinterlacer
+import Amazonka.MediaConvert.Types.DolbyVision
+import Amazonka.MediaConvert.Types.Hdr10Plus
+import Amazonka.MediaConvert.Types.ImageInserter
+import Amazonka.MediaConvert.Types.NoiseReducer
+import Amazonka.MediaConvert.Types.PartnerWatermarking
+import Amazonka.MediaConvert.Types.TimecodeBurnin
+import qualified Amazonka.Prelude as Prelude
+
+-- | Find additional transcoding features under Preprocessors
+-- (VideoPreprocessors). Enable the features at each output individually.
+-- These features are disabled by default.
+--
+-- /See:/ 'newVideoPreprocessor' smart constructor.
+data VideoPreprocessor = VideoPreprocessor'
+  { -- | Use these settings to convert the color space or to modify properties
+    -- such as hue and contrast for this output. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/converting-the-color-space.html.
+    colorCorrector :: Prelude.Maybe ColorCorrector,
+    -- | Use the deinterlacer to produce smoother motion and a clearer picture.
+    -- For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-scan-type.html.
+    deinterlacer :: Prelude.Maybe Deinterlacer,
+    -- | Enable Dolby Vision feature to produce Dolby Vision compatible video
+    -- output.
+    dolbyVision :: Prelude.Maybe DolbyVision,
+    -- | Enable HDR10+ analyis and metadata injection. Compatible with HEVC only.
+    hdr10Plus :: Prelude.Maybe Hdr10Plus,
+    -- | Enable the Image inserter (ImageInserter) feature to include a graphic
+    -- overlay on your video. Enable or disable this feature for each output
+    -- individually. This setting is disabled by default.
+    imageInserter :: Prelude.Maybe ImageInserter,
+    -- | Enable the Noise reducer (NoiseReducer) feature to remove noise from
+    -- your video output if necessary. Enable or disable this feature for each
+    -- output individually. This setting is disabled by default.
+    noiseReducer :: Prelude.Maybe NoiseReducer,
+    -- | If you work with a third party video watermarking partner, use the group
+    -- of settings that correspond with your watermarking partner to include
+    -- watermarks in your output.
+    partnerWatermarking :: Prelude.Maybe PartnerWatermarking,
+    -- | Settings for burning the output timecode and specified prefix into the
+    -- output.
+    timecodeBurnin :: Prelude.Maybe TimecodeBurnin
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VideoPreprocessor' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'colorCorrector', 'videoPreprocessor_colorCorrector' - Use these settings to convert the color space or to modify properties
+-- such as hue and contrast for this output. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/converting-the-color-space.html.
+--
+-- 'deinterlacer', 'videoPreprocessor_deinterlacer' - Use the deinterlacer to produce smoother motion and a clearer picture.
+-- For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-scan-type.html.
+--
+-- 'dolbyVision', 'videoPreprocessor_dolbyVision' - Enable Dolby Vision feature to produce Dolby Vision compatible video
+-- output.
+--
+-- 'hdr10Plus', 'videoPreprocessor_hdr10Plus' - Enable HDR10+ analyis and metadata injection. Compatible with HEVC only.
+--
+-- 'imageInserter', 'videoPreprocessor_imageInserter' - Enable the Image inserter (ImageInserter) feature to include a graphic
+-- overlay on your video. Enable or disable this feature for each output
+-- individually. This setting is disabled by default.
+--
+-- 'noiseReducer', 'videoPreprocessor_noiseReducer' - Enable the Noise reducer (NoiseReducer) feature to remove noise from
+-- your video output if necessary. Enable or disable this feature for each
+-- output individually. This setting is disabled by default.
+--
+-- 'partnerWatermarking', 'videoPreprocessor_partnerWatermarking' - If you work with a third party video watermarking partner, use the group
+-- of settings that correspond with your watermarking partner to include
+-- watermarks in your output.
+--
+-- 'timecodeBurnin', 'videoPreprocessor_timecodeBurnin' - Settings for burning the output timecode and specified prefix into the
+-- output.
+newVideoPreprocessor ::
+  VideoPreprocessor
+newVideoPreprocessor =
+  VideoPreprocessor'
+    { colorCorrector =
+        Prelude.Nothing,
+      deinterlacer = Prelude.Nothing,
+      dolbyVision = Prelude.Nothing,
+      hdr10Plus = Prelude.Nothing,
+      imageInserter = Prelude.Nothing,
+      noiseReducer = Prelude.Nothing,
+      partnerWatermarking = Prelude.Nothing,
+      timecodeBurnin = Prelude.Nothing
+    }
+
+-- | Use these settings to convert the color space or to modify properties
+-- such as hue and contrast for this output. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/converting-the-color-space.html.
+videoPreprocessor_colorCorrector :: Lens.Lens' VideoPreprocessor (Prelude.Maybe ColorCorrector)
+videoPreprocessor_colorCorrector = Lens.lens (\VideoPreprocessor' {colorCorrector} -> colorCorrector) (\s@VideoPreprocessor' {} a -> s {colorCorrector = a} :: VideoPreprocessor)
+
+-- | Use the deinterlacer to produce smoother motion and a clearer picture.
+-- For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-scan-type.html.
+videoPreprocessor_deinterlacer :: Lens.Lens' VideoPreprocessor (Prelude.Maybe Deinterlacer)
+videoPreprocessor_deinterlacer = Lens.lens (\VideoPreprocessor' {deinterlacer} -> deinterlacer) (\s@VideoPreprocessor' {} a -> s {deinterlacer = a} :: VideoPreprocessor)
+
+-- | Enable Dolby Vision feature to produce Dolby Vision compatible video
+-- output.
+videoPreprocessor_dolbyVision :: Lens.Lens' VideoPreprocessor (Prelude.Maybe DolbyVision)
+videoPreprocessor_dolbyVision = Lens.lens (\VideoPreprocessor' {dolbyVision} -> dolbyVision) (\s@VideoPreprocessor' {} a -> s {dolbyVision = a} :: VideoPreprocessor)
+
+-- | Enable HDR10+ analyis and metadata injection. Compatible with HEVC only.
+videoPreprocessor_hdr10Plus :: Lens.Lens' VideoPreprocessor (Prelude.Maybe Hdr10Plus)
+videoPreprocessor_hdr10Plus = Lens.lens (\VideoPreprocessor' {hdr10Plus} -> hdr10Plus) (\s@VideoPreprocessor' {} a -> s {hdr10Plus = a} :: VideoPreprocessor)
+
+-- | Enable the Image inserter (ImageInserter) feature to include a graphic
+-- overlay on your video. Enable or disable this feature for each output
+-- individually. This setting is disabled by default.
+videoPreprocessor_imageInserter :: Lens.Lens' VideoPreprocessor (Prelude.Maybe ImageInserter)
+videoPreprocessor_imageInserter = Lens.lens (\VideoPreprocessor' {imageInserter} -> imageInserter) (\s@VideoPreprocessor' {} a -> s {imageInserter = a} :: VideoPreprocessor)
+
+-- | Enable the Noise reducer (NoiseReducer) feature to remove noise from
+-- your video output if necessary. Enable or disable this feature for each
+-- output individually. This setting is disabled by default.
+videoPreprocessor_noiseReducer :: Lens.Lens' VideoPreprocessor (Prelude.Maybe NoiseReducer)
+videoPreprocessor_noiseReducer = Lens.lens (\VideoPreprocessor' {noiseReducer} -> noiseReducer) (\s@VideoPreprocessor' {} a -> s {noiseReducer = a} :: VideoPreprocessor)
+
+-- | If you work with a third party video watermarking partner, use the group
+-- of settings that correspond with your watermarking partner to include
+-- watermarks in your output.
+videoPreprocessor_partnerWatermarking :: Lens.Lens' VideoPreprocessor (Prelude.Maybe PartnerWatermarking)
+videoPreprocessor_partnerWatermarking = Lens.lens (\VideoPreprocessor' {partnerWatermarking} -> partnerWatermarking) (\s@VideoPreprocessor' {} a -> s {partnerWatermarking = a} :: VideoPreprocessor)
+
+-- | Settings for burning the output timecode and specified prefix into the
+-- output.
+videoPreprocessor_timecodeBurnin :: Lens.Lens' VideoPreprocessor (Prelude.Maybe TimecodeBurnin)
+videoPreprocessor_timecodeBurnin = Lens.lens (\VideoPreprocessor' {timecodeBurnin} -> timecodeBurnin) (\s@VideoPreprocessor' {} a -> s {timecodeBurnin = a} :: VideoPreprocessor)
+
+instance Data.FromJSON VideoPreprocessor where
+  parseJSON =
+    Data.withObject
+      "VideoPreprocessor"
+      ( \x ->
+          VideoPreprocessor'
+            Prelude.<$> (x Data..:? "colorCorrector")
+            Prelude.<*> (x Data..:? "deinterlacer")
+            Prelude.<*> (x Data..:? "dolbyVision")
+            Prelude.<*> (x Data..:? "hdr10Plus")
+            Prelude.<*> (x Data..:? "imageInserter")
+            Prelude.<*> (x Data..:? "noiseReducer")
+            Prelude.<*> (x Data..:? "partnerWatermarking")
+            Prelude.<*> (x Data..:? "timecodeBurnin")
+      )
+
+instance Prelude.Hashable VideoPreprocessor where
+  hashWithSalt _salt VideoPreprocessor' {..} =
+    _salt
+      `Prelude.hashWithSalt` colorCorrector
+      `Prelude.hashWithSalt` deinterlacer
+      `Prelude.hashWithSalt` dolbyVision
+      `Prelude.hashWithSalt` hdr10Plus
+      `Prelude.hashWithSalt` imageInserter
+      `Prelude.hashWithSalt` noiseReducer
+      `Prelude.hashWithSalt` partnerWatermarking
+      `Prelude.hashWithSalt` timecodeBurnin
+
+instance Prelude.NFData VideoPreprocessor where
+  rnf VideoPreprocessor' {..} =
+    Prelude.rnf colorCorrector
+      `Prelude.seq` Prelude.rnf deinterlacer
+      `Prelude.seq` Prelude.rnf dolbyVision
+      `Prelude.seq` Prelude.rnf hdr10Plus
+      `Prelude.seq` Prelude.rnf imageInserter
+      `Prelude.seq` Prelude.rnf noiseReducer
+      `Prelude.seq` Prelude.rnf partnerWatermarking
+      `Prelude.seq` Prelude.rnf timecodeBurnin
+
+instance Data.ToJSON VideoPreprocessor where
+  toJSON VideoPreprocessor' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("colorCorrector" Data..=)
+              Prelude.<$> colorCorrector,
+            ("deinterlacer" Data..=) Prelude.<$> deinterlacer,
+            ("dolbyVision" Data..=) Prelude.<$> dolbyVision,
+            ("hdr10Plus" Data..=) Prelude.<$> hdr10Plus,
+            ("imageInserter" Data..=) Prelude.<$> imageInserter,
+            ("noiseReducer" Data..=) Prelude.<$> noiseReducer,
+            ("partnerWatermarking" Data..=)
+              Prelude.<$> partnerWatermarking,
+            ("timecodeBurnin" Data..=)
+              Prelude.<$> timecodeBurnin
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/VideoSelector.hs b/gen/Amazonka/MediaConvert/Types/VideoSelector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/VideoSelector.hs
@@ -0,0 +1,424 @@
+{-# 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.VideoSelector
+-- 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.VideoSelector 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.AlphaBehavior
+import Amazonka.MediaConvert.Types.ColorSpace
+import Amazonka.MediaConvert.Types.ColorSpaceUsage
+import Amazonka.MediaConvert.Types.EmbeddedTimecodeOverride
+import Amazonka.MediaConvert.Types.Hdr10Metadata
+import Amazonka.MediaConvert.Types.InputRotate
+import Amazonka.MediaConvert.Types.InputSampleRange
+import Amazonka.MediaConvert.Types.PadVideo
+import qualified Amazonka.Prelude as Prelude
+
+-- | Input video selectors contain the video settings for the input. Each of
+-- your inputs can have up to one video selector.
+--
+-- /See:/ 'newVideoSelector' smart constructor.
+data VideoSelector = VideoSelector'
+  { -- | Ignore this setting unless this input is a QuickTime animation with an
+    -- alpha channel. Use this setting to create separate Key and Fill outputs.
+    -- In each output, specify which part of the input MediaConvert uses. Leave
+    -- this setting at the default value DISCARD to delete the alpha channel
+    -- and preserve the video. Set it to REMAP_TO_LUMA to delete the video and
+    -- map the alpha channel to the luma channel of your outputs.
+    alphaBehavior :: Prelude.Maybe AlphaBehavior,
+    -- | If your input video has accurate color space metadata, or if you don\'t
+    -- know about color space, leave this set to the default value Follow. The
+    -- service will automatically detect your input color space. If your input
+    -- video has metadata indicating the wrong color space, specify the
+    -- accurate color space here. If your input video is HDR 10 and the SMPTE
+    -- ST 2086 Mastering Display Color Volume static metadata isn\'t present in
+    -- your video stream, or if that metadata is present but not accurate,
+    -- choose Force HDR 10 here and specify correct values in the input HDR 10
+    -- metadata settings. For more information about MediaConvert HDR jobs, see
+    -- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/hdr. Select P3D65
+    -- (SDR) to set the input color space metadata to the following: * Color
+    -- primaries: Display P3 * Transfer characteristics: SMPTE 428M * Matrix
+    -- coefficients: BT.709
+    colorSpace :: Prelude.Maybe ColorSpace,
+    -- | There are two sources for color metadata, the input file and the job
+    -- input settings Color space (ColorSpace) and HDR master display
+    -- information settings(Hdr10Metadata). The Color space usage setting
+    -- determines which takes precedence. Choose Force (FORCE) to use color
+    -- metadata from the input job settings. If you don\'t specify values for
+    -- those settings, the service defaults to using metadata from your input.
+    -- FALLBACK - Choose Fallback (FALLBACK) to use color metadata from the
+    -- source when it is present. If there\'s no color metadata in your input
+    -- file, the service defaults to using values you specify in the input
+    -- settings.
+    colorSpaceUsage :: Prelude.Maybe ColorSpaceUsage,
+    -- | Set Embedded timecode override (embeddedTimecodeOverride) to Use MDPM
+    -- (USE_MDPM) when your AVCHD input contains timecode tag data in the
+    -- Modified Digital Video Pack Metadata (MDPM). When you do, we recommend
+    -- you also set Timecode source (inputTimecodeSource) to Embedded
+    -- (EMBEDDED). Leave Embedded timecode override blank, or set to None
+    -- (NONE), when your input does not contain MDPM timecode.
+    embeddedTimecodeOverride :: Prelude.Maybe EmbeddedTimecodeOverride,
+    -- | Use these settings to provide HDR 10 metadata that is missing or
+    -- inaccurate in your input video. Appropriate values vary depending on the
+    -- input video and must be provided by a color grader. The color grader
+    -- generates these values during the HDR 10 mastering process. The valid
+    -- range for each of these settings is 0 to 50,000. Each increment
+    -- represents 0.00002 in CIE1931 color coordinate. Related settings - When
+    -- you specify these values, you must also set Color space (ColorSpace) to
+    -- HDR 10 (HDR10). To specify whether the the values you specify here take
+    -- precedence over the values in the metadata of your input file, set Color
+    -- space usage (ColorSpaceUsage). To specify whether color metadata is
+    -- included in an output, set Color metadata (ColorMetadata). For more
+    -- information about MediaConvert HDR jobs, see
+    -- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/hdr.
+    hdr10Metadata :: Prelude.Maybe Hdr10Metadata,
+    -- | Use this setting if your input has video and audio durations that don\'t
+    -- align, and your output or player has strict alignment requirements.
+    -- Examples: Input audio track has a delayed start. Input video track ends
+    -- before audio ends. When you set Pad video (padVideo) to Black (BLACK),
+    -- MediaConvert generates black video frames so that output video and audio
+    -- durations match. Black video frames are added at the beginning or end,
+    -- depending on your input. To keep the default behavior and not generate
+    -- black video, set Pad video to Disabled (DISABLED) or leave blank.
+    padVideo :: Prelude.Maybe PadVideo,
+    -- | Use PID (Pid) to select specific video data from an input file. Specify
+    -- this value as an integer; the system automatically converts it to the
+    -- hexidecimal value. For example, 257 selects PID 0x101. A PID, or packet
+    -- identifier, is an identifier for a set of data in an MPEG-2 transport
+    -- stream container.
+    pid :: Prelude.Maybe Prelude.Natural,
+    -- | Selects a specific program from within a multi-program transport stream.
+    -- Note that Quad 4K is not currently supported.
+    programNumber :: Prelude.Maybe Prelude.Int,
+    -- | Use Rotate (InputRotate) to specify how the service rotates your video.
+    -- You can choose automatic rotation or specify a rotation. You can specify
+    -- a clockwise rotation of 0, 90, 180, or 270 degrees. If your input video
+    -- container is .mov or .mp4 and your input has rotation metadata, you can
+    -- choose Automatic to have the service rotate your video according to the
+    -- rotation specified in the metadata. The rotation must be within one
+    -- degree of 90, 180, or 270 degrees. If the rotation metadata specifies
+    -- any other rotation, the service will default to no rotation. By default,
+    -- the service does no rotation, even if your input video has rotation
+    -- metadata. The service doesn\'t pass through rotation metadata.
+    rotate :: Prelude.Maybe InputRotate,
+    -- | If the sample range metadata in your input video is accurate, or if you
+    -- don\'t know about sample range, keep the default value, Follow (FOLLOW),
+    -- for this setting. When you do, the service automatically detects your
+    -- input sample range. If your input video has metadata indicating the
+    -- wrong sample range, specify the accurate sample range here. When you do,
+    -- MediaConvert ignores any sample range information in the input metadata.
+    -- Regardless of whether MediaConvert uses the input sample range or the
+    -- sample range that you specify, MediaConvert uses the sample range for
+    -- transcoding and also writes it to the output metadata.
+    sampleRange :: Prelude.Maybe InputSampleRange
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VideoSelector' 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:
+--
+-- 'alphaBehavior', 'videoSelector_alphaBehavior' - Ignore this setting unless this input is a QuickTime animation with an
+-- alpha channel. Use this setting to create separate Key and Fill outputs.
+-- In each output, specify which part of the input MediaConvert uses. Leave
+-- this setting at the default value DISCARD to delete the alpha channel
+-- and preserve the video. Set it to REMAP_TO_LUMA to delete the video and
+-- map the alpha channel to the luma channel of your outputs.
+--
+-- 'colorSpace', 'videoSelector_colorSpace' - If your input video has accurate color space metadata, or if you don\'t
+-- know about color space, leave this set to the default value Follow. The
+-- service will automatically detect your input color space. If your input
+-- video has metadata indicating the wrong color space, specify the
+-- accurate color space here. If your input video is HDR 10 and the SMPTE
+-- ST 2086 Mastering Display Color Volume static metadata isn\'t present in
+-- your video stream, or if that metadata is present but not accurate,
+-- choose Force HDR 10 here and specify correct values in the input HDR 10
+-- metadata settings. For more information about MediaConvert HDR jobs, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/hdr. Select P3D65
+-- (SDR) to set the input color space metadata to the following: * Color
+-- primaries: Display P3 * Transfer characteristics: SMPTE 428M * Matrix
+-- coefficients: BT.709
+--
+-- 'colorSpaceUsage', 'videoSelector_colorSpaceUsage' - There are two sources for color metadata, the input file and the job
+-- input settings Color space (ColorSpace) and HDR master display
+-- information settings(Hdr10Metadata). The Color space usage setting
+-- determines which takes precedence. Choose Force (FORCE) to use color
+-- metadata from the input job settings. If you don\'t specify values for
+-- those settings, the service defaults to using metadata from your input.
+-- FALLBACK - Choose Fallback (FALLBACK) to use color metadata from the
+-- source when it is present. If there\'s no color metadata in your input
+-- file, the service defaults to using values you specify in the input
+-- settings.
+--
+-- 'embeddedTimecodeOverride', 'videoSelector_embeddedTimecodeOverride' - Set Embedded timecode override (embeddedTimecodeOverride) to Use MDPM
+-- (USE_MDPM) when your AVCHD input contains timecode tag data in the
+-- Modified Digital Video Pack Metadata (MDPM). When you do, we recommend
+-- you also set Timecode source (inputTimecodeSource) to Embedded
+-- (EMBEDDED). Leave Embedded timecode override blank, or set to None
+-- (NONE), when your input does not contain MDPM timecode.
+--
+-- 'hdr10Metadata', 'videoSelector_hdr10Metadata' - Use these settings to provide HDR 10 metadata that is missing or
+-- inaccurate in your input video. Appropriate values vary depending on the
+-- input video and must be provided by a color grader. The color grader
+-- generates these values during the HDR 10 mastering process. The valid
+-- range for each of these settings is 0 to 50,000. Each increment
+-- represents 0.00002 in CIE1931 color coordinate. Related settings - When
+-- you specify these values, you must also set Color space (ColorSpace) to
+-- HDR 10 (HDR10). To specify whether the the values you specify here take
+-- precedence over the values in the metadata of your input file, set Color
+-- space usage (ColorSpaceUsage). To specify whether color metadata is
+-- included in an output, set Color metadata (ColorMetadata). For more
+-- information about MediaConvert HDR jobs, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/hdr.
+--
+-- 'padVideo', 'videoSelector_padVideo' - Use this setting if your input has video and audio durations that don\'t
+-- align, and your output or player has strict alignment requirements.
+-- Examples: Input audio track has a delayed start. Input video track ends
+-- before audio ends. When you set Pad video (padVideo) to Black (BLACK),
+-- MediaConvert generates black video frames so that output video and audio
+-- durations match. Black video frames are added at the beginning or end,
+-- depending on your input. To keep the default behavior and not generate
+-- black video, set Pad video to Disabled (DISABLED) or leave blank.
+--
+-- 'pid', 'videoSelector_pid' - Use PID (Pid) to select specific video data from an input file. Specify
+-- this value as an integer; the system automatically converts it to the
+-- hexidecimal value. For example, 257 selects PID 0x101. A PID, or packet
+-- identifier, is an identifier for a set of data in an MPEG-2 transport
+-- stream container.
+--
+-- 'programNumber', 'videoSelector_programNumber' - Selects a specific program from within a multi-program transport stream.
+-- Note that Quad 4K is not currently supported.
+--
+-- 'rotate', 'videoSelector_rotate' - Use Rotate (InputRotate) to specify how the service rotates your video.
+-- You can choose automatic rotation or specify a rotation. You can specify
+-- a clockwise rotation of 0, 90, 180, or 270 degrees. If your input video
+-- container is .mov or .mp4 and your input has rotation metadata, you can
+-- choose Automatic to have the service rotate your video according to the
+-- rotation specified in the metadata. The rotation must be within one
+-- degree of 90, 180, or 270 degrees. If the rotation metadata specifies
+-- any other rotation, the service will default to no rotation. By default,
+-- the service does no rotation, even if your input video has rotation
+-- metadata. The service doesn\'t pass through rotation metadata.
+--
+-- 'sampleRange', 'videoSelector_sampleRange' - If the sample range metadata in your input video is accurate, or if you
+-- don\'t know about sample range, keep the default value, Follow (FOLLOW),
+-- for this setting. When you do, the service automatically detects your
+-- input sample range. If your input video has metadata indicating the
+-- wrong sample range, specify the accurate sample range here. When you do,
+-- MediaConvert ignores any sample range information in the input metadata.
+-- Regardless of whether MediaConvert uses the input sample range or the
+-- sample range that you specify, MediaConvert uses the sample range for
+-- transcoding and also writes it to the output metadata.
+newVideoSelector ::
+  VideoSelector
+newVideoSelector =
+  VideoSelector'
+    { alphaBehavior = Prelude.Nothing,
+      colorSpace = Prelude.Nothing,
+      colorSpaceUsage = Prelude.Nothing,
+      embeddedTimecodeOverride = Prelude.Nothing,
+      hdr10Metadata = Prelude.Nothing,
+      padVideo = Prelude.Nothing,
+      pid = Prelude.Nothing,
+      programNumber = Prelude.Nothing,
+      rotate = Prelude.Nothing,
+      sampleRange = Prelude.Nothing
+    }
+
+-- | Ignore this setting unless this input is a QuickTime animation with an
+-- alpha channel. Use this setting to create separate Key and Fill outputs.
+-- In each output, specify which part of the input MediaConvert uses. Leave
+-- this setting at the default value DISCARD to delete the alpha channel
+-- and preserve the video. Set it to REMAP_TO_LUMA to delete the video and
+-- map the alpha channel to the luma channel of your outputs.
+videoSelector_alphaBehavior :: Lens.Lens' VideoSelector (Prelude.Maybe AlphaBehavior)
+videoSelector_alphaBehavior = Lens.lens (\VideoSelector' {alphaBehavior} -> alphaBehavior) (\s@VideoSelector' {} a -> s {alphaBehavior = a} :: VideoSelector)
+
+-- | If your input video has accurate color space metadata, or if you don\'t
+-- know about color space, leave this set to the default value Follow. The
+-- service will automatically detect your input color space. If your input
+-- video has metadata indicating the wrong color space, specify the
+-- accurate color space here. If your input video is HDR 10 and the SMPTE
+-- ST 2086 Mastering Display Color Volume static metadata isn\'t present in
+-- your video stream, or if that metadata is present but not accurate,
+-- choose Force HDR 10 here and specify correct values in the input HDR 10
+-- metadata settings. For more information about MediaConvert HDR jobs, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/hdr. Select P3D65
+-- (SDR) to set the input color space metadata to the following: * Color
+-- primaries: Display P3 * Transfer characteristics: SMPTE 428M * Matrix
+-- coefficients: BT.709
+videoSelector_colorSpace :: Lens.Lens' VideoSelector (Prelude.Maybe ColorSpace)
+videoSelector_colorSpace = Lens.lens (\VideoSelector' {colorSpace} -> colorSpace) (\s@VideoSelector' {} a -> s {colorSpace = a} :: VideoSelector)
+
+-- | There are two sources for color metadata, the input file and the job
+-- input settings Color space (ColorSpace) and HDR master display
+-- information settings(Hdr10Metadata). The Color space usage setting
+-- determines which takes precedence. Choose Force (FORCE) to use color
+-- metadata from the input job settings. If you don\'t specify values for
+-- those settings, the service defaults to using metadata from your input.
+-- FALLBACK - Choose Fallback (FALLBACK) to use color metadata from the
+-- source when it is present. If there\'s no color metadata in your input
+-- file, the service defaults to using values you specify in the input
+-- settings.
+videoSelector_colorSpaceUsage :: Lens.Lens' VideoSelector (Prelude.Maybe ColorSpaceUsage)
+videoSelector_colorSpaceUsage = Lens.lens (\VideoSelector' {colorSpaceUsage} -> colorSpaceUsage) (\s@VideoSelector' {} a -> s {colorSpaceUsage = a} :: VideoSelector)
+
+-- | Set Embedded timecode override (embeddedTimecodeOverride) to Use MDPM
+-- (USE_MDPM) when your AVCHD input contains timecode tag data in the
+-- Modified Digital Video Pack Metadata (MDPM). When you do, we recommend
+-- you also set Timecode source (inputTimecodeSource) to Embedded
+-- (EMBEDDED). Leave Embedded timecode override blank, or set to None
+-- (NONE), when your input does not contain MDPM timecode.
+videoSelector_embeddedTimecodeOverride :: Lens.Lens' VideoSelector (Prelude.Maybe EmbeddedTimecodeOverride)
+videoSelector_embeddedTimecodeOverride = Lens.lens (\VideoSelector' {embeddedTimecodeOverride} -> embeddedTimecodeOverride) (\s@VideoSelector' {} a -> s {embeddedTimecodeOverride = a} :: VideoSelector)
+
+-- | Use these settings to provide HDR 10 metadata that is missing or
+-- inaccurate in your input video. Appropriate values vary depending on the
+-- input video and must be provided by a color grader. The color grader
+-- generates these values during the HDR 10 mastering process. The valid
+-- range for each of these settings is 0 to 50,000. Each increment
+-- represents 0.00002 in CIE1931 color coordinate. Related settings - When
+-- you specify these values, you must also set Color space (ColorSpace) to
+-- HDR 10 (HDR10). To specify whether the the values you specify here take
+-- precedence over the values in the metadata of your input file, set Color
+-- space usage (ColorSpaceUsage). To specify whether color metadata is
+-- included in an output, set Color metadata (ColorMetadata). For more
+-- information about MediaConvert HDR jobs, see
+-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/hdr.
+videoSelector_hdr10Metadata :: Lens.Lens' VideoSelector (Prelude.Maybe Hdr10Metadata)
+videoSelector_hdr10Metadata = Lens.lens (\VideoSelector' {hdr10Metadata} -> hdr10Metadata) (\s@VideoSelector' {} a -> s {hdr10Metadata = a} :: VideoSelector)
+
+-- | Use this setting if your input has video and audio durations that don\'t
+-- align, and your output or player has strict alignment requirements.
+-- Examples: Input audio track has a delayed start. Input video track ends
+-- before audio ends. When you set Pad video (padVideo) to Black (BLACK),
+-- MediaConvert generates black video frames so that output video and audio
+-- durations match. Black video frames are added at the beginning or end,
+-- depending on your input. To keep the default behavior and not generate
+-- black video, set Pad video to Disabled (DISABLED) or leave blank.
+videoSelector_padVideo :: Lens.Lens' VideoSelector (Prelude.Maybe PadVideo)
+videoSelector_padVideo = Lens.lens (\VideoSelector' {padVideo} -> padVideo) (\s@VideoSelector' {} a -> s {padVideo = a} :: VideoSelector)
+
+-- | Use PID (Pid) to select specific video data from an input file. Specify
+-- this value as an integer; the system automatically converts it to the
+-- hexidecimal value. For example, 257 selects PID 0x101. A PID, or packet
+-- identifier, is an identifier for a set of data in an MPEG-2 transport
+-- stream container.
+videoSelector_pid :: Lens.Lens' VideoSelector (Prelude.Maybe Prelude.Natural)
+videoSelector_pid = Lens.lens (\VideoSelector' {pid} -> pid) (\s@VideoSelector' {} a -> s {pid = a} :: VideoSelector)
+
+-- | Selects a specific program from within a multi-program transport stream.
+-- Note that Quad 4K is not currently supported.
+videoSelector_programNumber :: Lens.Lens' VideoSelector (Prelude.Maybe Prelude.Int)
+videoSelector_programNumber = Lens.lens (\VideoSelector' {programNumber} -> programNumber) (\s@VideoSelector' {} a -> s {programNumber = a} :: VideoSelector)
+
+-- | Use Rotate (InputRotate) to specify how the service rotates your video.
+-- You can choose automatic rotation or specify a rotation. You can specify
+-- a clockwise rotation of 0, 90, 180, or 270 degrees. If your input video
+-- container is .mov or .mp4 and your input has rotation metadata, you can
+-- choose Automatic to have the service rotate your video according to the
+-- rotation specified in the metadata. The rotation must be within one
+-- degree of 90, 180, or 270 degrees. If the rotation metadata specifies
+-- any other rotation, the service will default to no rotation. By default,
+-- the service does no rotation, even if your input video has rotation
+-- metadata. The service doesn\'t pass through rotation metadata.
+videoSelector_rotate :: Lens.Lens' VideoSelector (Prelude.Maybe InputRotate)
+videoSelector_rotate = Lens.lens (\VideoSelector' {rotate} -> rotate) (\s@VideoSelector' {} a -> s {rotate = a} :: VideoSelector)
+
+-- | If the sample range metadata in your input video is accurate, or if you
+-- don\'t know about sample range, keep the default value, Follow (FOLLOW),
+-- for this setting. When you do, the service automatically detects your
+-- input sample range. If your input video has metadata indicating the
+-- wrong sample range, specify the accurate sample range here. When you do,
+-- MediaConvert ignores any sample range information in the input metadata.
+-- Regardless of whether MediaConvert uses the input sample range or the
+-- sample range that you specify, MediaConvert uses the sample range for
+-- transcoding and also writes it to the output metadata.
+videoSelector_sampleRange :: Lens.Lens' VideoSelector (Prelude.Maybe InputSampleRange)
+videoSelector_sampleRange = Lens.lens (\VideoSelector' {sampleRange} -> sampleRange) (\s@VideoSelector' {} a -> s {sampleRange = a} :: VideoSelector)
+
+instance Data.FromJSON VideoSelector where
+  parseJSON =
+    Data.withObject
+      "VideoSelector"
+      ( \x ->
+          VideoSelector'
+            Prelude.<$> (x Data..:? "alphaBehavior")
+            Prelude.<*> (x Data..:? "colorSpace")
+            Prelude.<*> (x Data..:? "colorSpaceUsage")
+            Prelude.<*> (x Data..:? "embeddedTimecodeOverride")
+            Prelude.<*> (x Data..:? "hdr10Metadata")
+            Prelude.<*> (x Data..:? "padVideo")
+            Prelude.<*> (x Data..:? "pid")
+            Prelude.<*> (x Data..:? "programNumber")
+            Prelude.<*> (x Data..:? "rotate")
+            Prelude.<*> (x Data..:? "sampleRange")
+      )
+
+instance Prelude.Hashable VideoSelector where
+  hashWithSalt _salt VideoSelector' {..} =
+    _salt
+      `Prelude.hashWithSalt` alphaBehavior
+      `Prelude.hashWithSalt` colorSpace
+      `Prelude.hashWithSalt` colorSpaceUsage
+      `Prelude.hashWithSalt` embeddedTimecodeOverride
+      `Prelude.hashWithSalt` hdr10Metadata
+      `Prelude.hashWithSalt` padVideo
+      `Prelude.hashWithSalt` pid
+      `Prelude.hashWithSalt` programNumber
+      `Prelude.hashWithSalt` rotate
+      `Prelude.hashWithSalt` sampleRange
+
+instance Prelude.NFData VideoSelector where
+  rnf VideoSelector' {..} =
+    Prelude.rnf alphaBehavior
+      `Prelude.seq` Prelude.rnf colorSpace
+      `Prelude.seq` Prelude.rnf colorSpaceUsage
+      `Prelude.seq` Prelude.rnf embeddedTimecodeOverride
+      `Prelude.seq` Prelude.rnf hdr10Metadata
+      `Prelude.seq` Prelude.rnf padVideo
+      `Prelude.seq` Prelude.rnf pid
+      `Prelude.seq` Prelude.rnf programNumber
+      `Prelude.seq` Prelude.rnf rotate
+      `Prelude.seq` Prelude.rnf sampleRange
+
+instance Data.ToJSON VideoSelector where
+  toJSON VideoSelector' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("alphaBehavior" Data..=) Prelude.<$> alphaBehavior,
+            ("colorSpace" Data..=) Prelude.<$> colorSpace,
+            ("colorSpaceUsage" Data..=)
+              Prelude.<$> colorSpaceUsage,
+            ("embeddedTimecodeOverride" Data..=)
+              Prelude.<$> embeddedTimecodeOverride,
+            ("hdr10Metadata" Data..=) Prelude.<$> hdr10Metadata,
+            ("padVideo" Data..=) Prelude.<$> padVideo,
+            ("pid" Data..=) Prelude.<$> pid,
+            ("programNumber" Data..=) Prelude.<$> programNumber,
+            ("rotate" Data..=) Prelude.<$> rotate,
+            ("sampleRange" Data..=) Prelude.<$> sampleRange
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/VideoTimecodeInsertion.hs b/gen/Amazonka/MediaConvert/Types/VideoTimecodeInsertion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/VideoTimecodeInsertion.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.VideoTimecodeInsertion
+-- 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.VideoTimecodeInsertion
+  ( VideoTimecodeInsertion
+      ( ..,
+        VideoTimecodeInsertion_DISABLED,
+        VideoTimecodeInsertion_PIC_TIMING_SEI
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Applies only to H.264, H.265, MPEG2, and ProRes outputs. Only enable
+-- Timecode insertion when the input frame rate is identical to the output
+-- frame rate. To include timecodes in this output, set Timecode insertion
+-- (VideoTimecodeInsertion) to PIC_TIMING_SEI. To leave them out, set it to
+-- DISABLED. Default is DISABLED. When the service inserts timecodes in an
+-- output, by default, it uses any embedded timecodes from the input. If
+-- none are present, the service will set the timecode for the first output
+-- frame to zero. To change this default behavior, adjust the settings
+-- under Timecode configuration (TimecodeConfig). In the console, these
+-- settings are located under Job > Job settings > Timecode configuration.
+-- Note - Timecode source under input settings (InputTimecodeSource) does
+-- not affect the timecodes that are inserted in the output. Source under
+-- Job settings > Timecode configuration (TimecodeSource) does.
+newtype VideoTimecodeInsertion = VideoTimecodeInsertion'
+  { fromVideoTimecodeInsertion ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern VideoTimecodeInsertion_DISABLED :: VideoTimecodeInsertion
+pattern VideoTimecodeInsertion_DISABLED = VideoTimecodeInsertion' "DISABLED"
+
+pattern VideoTimecodeInsertion_PIC_TIMING_SEI :: VideoTimecodeInsertion
+pattern VideoTimecodeInsertion_PIC_TIMING_SEI = VideoTimecodeInsertion' "PIC_TIMING_SEI"
+
+{-# COMPLETE
+  VideoTimecodeInsertion_DISABLED,
+  VideoTimecodeInsertion_PIC_TIMING_SEI,
+  VideoTimecodeInsertion'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/VorbisSettings.hs b/gen/Amazonka/MediaConvert/Types/VorbisSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/VorbisSettings.hs
@@ -0,0 +1,128 @@
+{-# 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.VorbisSettings
+-- 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.VorbisSettings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set Codec, under AudioDescriptions>CodecSettings, to
+-- the value Vorbis.
+--
+-- /See:/ 'newVorbisSettings' smart constructor.
+data VorbisSettings = VorbisSettings'
+  { -- | Optional. Specify the number of channels in this output audio track.
+    -- Choosing Mono on the console gives you 1 output channel; choosing Stereo
+    -- gives you 2. In the API, valid values are 1 and 2. The default value is
+    -- 2.
+    channels :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Specify the audio sample rate in Hz. Valid values are 22050,
+    -- 32000, 44100, and 48000. The default value is 48000.
+    sampleRate :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Specify the variable audio quality of this Vorbis output from
+    -- -1 (lowest quality, ~45 kbit\/s) to 10 (highest quality, ~500 kbit\/s).
+    -- The default value is 4 (~128 kbit\/s). Values 5 and 6 are approximately
+    -- 160 and 192 kbit\/s, respectively.
+    vbrQuality :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VorbisSettings' 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:
+--
+-- 'channels', 'vorbisSettings_channels' - Optional. Specify the number of channels in this output audio track.
+-- Choosing Mono on the console gives you 1 output channel; choosing Stereo
+-- gives you 2. In the API, valid values are 1 and 2. The default value is
+-- 2.
+--
+-- 'sampleRate', 'vorbisSettings_sampleRate' - Optional. Specify the audio sample rate in Hz. Valid values are 22050,
+-- 32000, 44100, and 48000. The default value is 48000.
+--
+-- 'vbrQuality', 'vorbisSettings_vbrQuality' - Optional. Specify the variable audio quality of this Vorbis output from
+-- -1 (lowest quality, ~45 kbit\/s) to 10 (highest quality, ~500 kbit\/s).
+-- The default value is 4 (~128 kbit\/s). Values 5 and 6 are approximately
+-- 160 and 192 kbit\/s, respectively.
+newVorbisSettings ::
+  VorbisSettings
+newVorbisSettings =
+  VorbisSettings'
+    { channels = Prelude.Nothing,
+      sampleRate = Prelude.Nothing,
+      vbrQuality = Prelude.Nothing
+    }
+
+-- | Optional. Specify the number of channels in this output audio track.
+-- Choosing Mono on the console gives you 1 output channel; choosing Stereo
+-- gives you 2. In the API, valid values are 1 and 2. The default value is
+-- 2.
+vorbisSettings_channels :: Lens.Lens' VorbisSettings (Prelude.Maybe Prelude.Natural)
+vorbisSettings_channels = Lens.lens (\VorbisSettings' {channels} -> channels) (\s@VorbisSettings' {} a -> s {channels = a} :: VorbisSettings)
+
+-- | Optional. Specify the audio sample rate in Hz. Valid values are 22050,
+-- 32000, 44100, and 48000. The default value is 48000.
+vorbisSettings_sampleRate :: Lens.Lens' VorbisSettings (Prelude.Maybe Prelude.Natural)
+vorbisSettings_sampleRate = Lens.lens (\VorbisSettings' {sampleRate} -> sampleRate) (\s@VorbisSettings' {} a -> s {sampleRate = a} :: VorbisSettings)
+
+-- | Optional. Specify the variable audio quality of this Vorbis output from
+-- -1 (lowest quality, ~45 kbit\/s) to 10 (highest quality, ~500 kbit\/s).
+-- The default value is 4 (~128 kbit\/s). Values 5 and 6 are approximately
+-- 160 and 192 kbit\/s, respectively.
+vorbisSettings_vbrQuality :: Lens.Lens' VorbisSettings (Prelude.Maybe Prelude.Int)
+vorbisSettings_vbrQuality = Lens.lens (\VorbisSettings' {vbrQuality} -> vbrQuality) (\s@VorbisSettings' {} a -> s {vbrQuality = a} :: VorbisSettings)
+
+instance Data.FromJSON VorbisSettings where
+  parseJSON =
+    Data.withObject
+      "VorbisSettings"
+      ( \x ->
+          VorbisSettings'
+            Prelude.<$> (x Data..:? "channels")
+            Prelude.<*> (x Data..:? "sampleRate")
+            Prelude.<*> (x Data..:? "vbrQuality")
+      )
+
+instance Prelude.Hashable VorbisSettings where
+  hashWithSalt _salt VorbisSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` channels
+      `Prelude.hashWithSalt` sampleRate
+      `Prelude.hashWithSalt` vbrQuality
+
+instance Prelude.NFData VorbisSettings where
+  rnf VorbisSettings' {..} =
+    Prelude.rnf channels
+      `Prelude.seq` Prelude.rnf sampleRate
+      `Prelude.seq` Prelude.rnf vbrQuality
+
+instance Data.ToJSON VorbisSettings where
+  toJSON VorbisSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("channels" Data..=) Prelude.<$> channels,
+            ("sampleRate" Data..=) Prelude.<$> sampleRate,
+            ("vbrQuality" Data..=) Prelude.<$> vbrQuality
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Vp8FramerateControl.hs b/gen/Amazonka/MediaConvert/Types/Vp8FramerateControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vp8FramerateControl.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vp8FramerateControl
+-- 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.Vp8FramerateControl
+  ( Vp8FramerateControl
+      ( ..,
+        Vp8FramerateControl_INITIALIZE_FROM_SOURCE,
+        Vp8FramerateControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+newtype Vp8FramerateControl = Vp8FramerateControl'
+  { fromVp8FramerateControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vp8FramerateControl_INITIALIZE_FROM_SOURCE :: Vp8FramerateControl
+pattern Vp8FramerateControl_INITIALIZE_FROM_SOURCE = Vp8FramerateControl' "INITIALIZE_FROM_SOURCE"
+
+pattern Vp8FramerateControl_SPECIFIED :: Vp8FramerateControl
+pattern Vp8FramerateControl_SPECIFIED = Vp8FramerateControl' "SPECIFIED"
+
+{-# COMPLETE
+  Vp8FramerateControl_INITIALIZE_FROM_SOURCE,
+  Vp8FramerateControl_SPECIFIED,
+  Vp8FramerateControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vp8FramerateConversionAlgorithm.hs b/gen/Amazonka/MediaConvert/Types/Vp8FramerateConversionAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vp8FramerateConversionAlgorithm.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vp8FramerateConversionAlgorithm
+-- 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.Vp8FramerateConversionAlgorithm
+  ( Vp8FramerateConversionAlgorithm
+      ( ..,
+        Vp8FramerateConversionAlgorithm_DUPLICATE_DROP,
+        Vp8FramerateConversionAlgorithm_FRAMEFORMER,
+        Vp8FramerateConversionAlgorithm_INTERPOLATE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+newtype Vp8FramerateConversionAlgorithm = Vp8FramerateConversionAlgorithm'
+  { fromVp8FramerateConversionAlgorithm ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vp8FramerateConversionAlgorithm_DUPLICATE_DROP :: Vp8FramerateConversionAlgorithm
+pattern Vp8FramerateConversionAlgorithm_DUPLICATE_DROP = Vp8FramerateConversionAlgorithm' "DUPLICATE_DROP"
+
+pattern Vp8FramerateConversionAlgorithm_FRAMEFORMER :: Vp8FramerateConversionAlgorithm
+pattern Vp8FramerateConversionAlgorithm_FRAMEFORMER = Vp8FramerateConversionAlgorithm' "FRAMEFORMER"
+
+pattern Vp8FramerateConversionAlgorithm_INTERPOLATE :: Vp8FramerateConversionAlgorithm
+pattern Vp8FramerateConversionAlgorithm_INTERPOLATE = Vp8FramerateConversionAlgorithm' "INTERPOLATE"
+
+{-# COMPLETE
+  Vp8FramerateConversionAlgorithm_DUPLICATE_DROP,
+  Vp8FramerateConversionAlgorithm_FRAMEFORMER,
+  Vp8FramerateConversionAlgorithm_INTERPOLATE,
+  Vp8FramerateConversionAlgorithm'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vp8ParControl.hs b/gen/Amazonka/MediaConvert/Types/Vp8ParControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vp8ParControl.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vp8ParControl
+-- 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.Vp8ParControl
+  ( Vp8ParControl
+      ( ..,
+        Vp8ParControl_INITIALIZE_FROM_SOURCE,
+        Vp8ParControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+newtype Vp8ParControl = Vp8ParControl'
+  { fromVp8ParControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vp8ParControl_INITIALIZE_FROM_SOURCE :: Vp8ParControl
+pattern Vp8ParControl_INITIALIZE_FROM_SOURCE = Vp8ParControl' "INITIALIZE_FROM_SOURCE"
+
+pattern Vp8ParControl_SPECIFIED :: Vp8ParControl
+pattern Vp8ParControl_SPECIFIED = Vp8ParControl' "SPECIFIED"
+
+{-# COMPLETE
+  Vp8ParControl_INITIALIZE_FROM_SOURCE,
+  Vp8ParControl_SPECIFIED,
+  Vp8ParControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vp8QualityTuningLevel.hs b/gen/Amazonka/MediaConvert/Types/Vp8QualityTuningLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vp8QualityTuningLevel.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vp8QualityTuningLevel
+-- 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.Vp8QualityTuningLevel
+  ( Vp8QualityTuningLevel
+      ( ..,
+        Vp8QualityTuningLevel_MULTI_PASS,
+        Vp8QualityTuningLevel_MULTI_PASS_HQ
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, multi-pass encoding.
+newtype Vp8QualityTuningLevel = Vp8QualityTuningLevel'
+  { fromVp8QualityTuningLevel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vp8QualityTuningLevel_MULTI_PASS :: Vp8QualityTuningLevel
+pattern Vp8QualityTuningLevel_MULTI_PASS = Vp8QualityTuningLevel' "MULTI_PASS"
+
+pattern Vp8QualityTuningLevel_MULTI_PASS_HQ :: Vp8QualityTuningLevel
+pattern Vp8QualityTuningLevel_MULTI_PASS_HQ = Vp8QualityTuningLevel' "MULTI_PASS_HQ"
+
+{-# COMPLETE
+  Vp8QualityTuningLevel_MULTI_PASS,
+  Vp8QualityTuningLevel_MULTI_PASS_HQ,
+  Vp8QualityTuningLevel'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vp8RateControlMode.hs b/gen/Amazonka/MediaConvert/Types/Vp8RateControlMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vp8RateControlMode.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vp8RateControlMode
+-- 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.Vp8RateControlMode
+  ( Vp8RateControlMode
+      ( ..,
+        Vp8RateControlMode_VBR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | With the VP8 codec, you can use only the variable bitrate (VBR) rate
+-- control mode.
+newtype Vp8RateControlMode = Vp8RateControlMode'
+  { fromVp8RateControlMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vp8RateControlMode_VBR :: Vp8RateControlMode
+pattern Vp8RateControlMode_VBR = Vp8RateControlMode' "VBR"
+
+{-# COMPLETE
+  Vp8RateControlMode_VBR,
+  Vp8RateControlMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vp8Settings.hs b/gen/Amazonka/MediaConvert/Types/Vp8Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vp8Settings.hs
@@ -0,0 +1,426 @@
+{-# 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.Vp8Settings
+-- 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.Vp8Settings 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.Vp8FramerateControl
+import Amazonka.MediaConvert.Types.Vp8FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.Vp8ParControl
+import Amazonka.MediaConvert.Types.Vp8QualityTuningLevel
+import Amazonka.MediaConvert.Types.Vp8RateControlMode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value VP8.
+--
+-- /See:/ 'newVp8Settings' smart constructor.
+data Vp8Settings = Vp8Settings'
+  { -- | Target bitrate in bits\/second. For example, enter five megabits per
+    -- second as 5000000.
+    bitrate :: Prelude.Maybe Prelude.Natural,
+    -- | If you are using the console, use the Framerate setting to specify the
+    -- frame rate for this output. If you want to keep the same frame rate as
+    -- the input video, choose Follow source. If you want to do frame rate
+    -- conversion, choose a frame rate from the dropdown list or choose Custom.
+    -- The framerates shown in the dropdown list are decimal approximations of
+    -- fractions. If you choose Custom, specify your frame rate as a fraction.
+    -- If you are creating your transcoding job specification as a JSON file
+    -- without the console, use FramerateControl to specify which value the
+    -- service uses for the frame rate for this output. Choose
+    -- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+    -- from the input. Choose SPECIFIED if you want the service to use the
+    -- frame rate you specify in the settings FramerateNumerator and
+    -- FramerateDenominator.
+    framerateControl :: Prelude.Maybe Vp8FramerateControl,
+    -- | Choose the method that you want MediaConvert to use when increasing or
+    -- decreasing the frame rate. We recommend using drop duplicate
+    -- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+    -- 30 fps. For numerically complex conversions, you can use interpolate
+    -- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+    -- might introduce undesirable video artifacts. For complex frame rate
+    -- conversions, especially if your source video has already been converted
+    -- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+    -- motion-compensated interpolation. FrameFormer chooses the best
+    -- conversion method frame by frame. Note that using FrameFormer increases
+    -- the transcoding time and incurs a significant add-on cost.
+    framerateConversionAlgorithm :: Prelude.Maybe Vp8FramerateConversionAlgorithm,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+    -- fraction. In this example, use 1001 for the value of
+    -- FramerateDenominator. When you use the console for transcode jobs that
+    -- use frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+    -- fraction. In this example, use 24000 for the value of
+    -- FramerateNumerator. When you use the console for transcode jobs that use
+    -- frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | GOP Length (keyframe interval) in frames. Must be greater than zero.
+    gopSize :: Prelude.Maybe Prelude.Double,
+    -- | Optional. Size of buffer (HRD buffer model) in bits. For example, enter
+    -- five megabits as 5000000.
+    hrdBufferSize :: Prelude.Maybe Prelude.Natural,
+    -- | Ignore this setting unless you set qualityTuningLevel to MULTI_PASS.
+    -- Optional. Specify the maximum bitrate in bits\/second. For example,
+    -- enter five megabits per second as 5000000. The default behavior uses
+    -- twice the target bitrate as the maximum bitrate.
+    maxBitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Specify how the service determines the pixel aspect ratio
+    -- (PAR) for this output. The default behavior, Follow source
+    -- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+    -- output. To specify a different PAR in the console, choose any value
+    -- other than Follow source. To specify a different PAR by editing the JSON
+    -- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+    -- setting, you must also specify values for the parNumerator and
+    -- parDenominator settings.
+    parControl :: Prelude.Maybe Vp8ParControl,
+    -- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+    -- the console, this corresponds to any value other than Follow source.
+    -- When you specify an output pixel aspect ratio (PAR) that is different
+    -- from your input video PAR, provide your output PAR as a ratio. For
+    -- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+    -- In this example, the value for parDenominator is 33.
+    parDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+    -- the console, this corresponds to any value other than Follow source.
+    -- When you specify an output pixel aspect ratio (PAR) that is different
+    -- from your input video PAR, provide your output PAR as a ratio. For
+    -- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+    -- In this example, the value for parNumerator is 40.
+    parNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+    -- you want to trade off encoding speed for output video quality. The
+    -- default behavior is faster, lower quality, multi-pass encoding.
+    qualityTuningLevel :: Prelude.Maybe Vp8QualityTuningLevel,
+    -- | With the VP8 codec, you can use only the variable bitrate (VBR) rate
+    -- control mode.
+    rateControlMode :: Prelude.Maybe Vp8RateControlMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Vp8Settings' 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:
+--
+-- 'bitrate', 'vp8Settings_bitrate' - Target bitrate in bits\/second. For example, enter five megabits per
+-- second as 5000000.
+--
+-- 'framerateControl', 'vp8Settings_framerateControl' - If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+--
+-- 'framerateConversionAlgorithm', 'vp8Settings_framerateConversionAlgorithm' - Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+--
+-- 'framerateDenominator', 'vp8Settings_framerateDenominator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'framerateNumerator', 'vp8Settings_framerateNumerator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'gopSize', 'vp8Settings_gopSize' - GOP Length (keyframe interval) in frames. Must be greater than zero.
+--
+-- 'hrdBufferSize', 'vp8Settings_hrdBufferSize' - Optional. Size of buffer (HRD buffer model) in bits. For example, enter
+-- five megabits as 5000000.
+--
+-- 'maxBitrate', 'vp8Settings_maxBitrate' - Ignore this setting unless you set qualityTuningLevel to MULTI_PASS.
+-- Optional. Specify the maximum bitrate in bits\/second. For example,
+-- enter five megabits per second as 5000000. The default behavior uses
+-- twice the target bitrate as the maximum bitrate.
+--
+-- 'parControl', 'vp8Settings_parControl' - Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+--
+-- 'parDenominator', 'vp8Settings_parDenominator' - Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parDenominator is 33.
+--
+-- 'parNumerator', 'vp8Settings_parNumerator' - Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parNumerator is 40.
+--
+-- 'qualityTuningLevel', 'vp8Settings_qualityTuningLevel' - Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, multi-pass encoding.
+--
+-- 'rateControlMode', 'vp8Settings_rateControlMode' - With the VP8 codec, you can use only the variable bitrate (VBR) rate
+-- control mode.
+newVp8Settings ::
+  Vp8Settings
+newVp8Settings =
+  Vp8Settings'
+    { bitrate = Prelude.Nothing,
+      framerateControl = Prelude.Nothing,
+      framerateConversionAlgorithm = Prelude.Nothing,
+      framerateDenominator = Prelude.Nothing,
+      framerateNumerator = Prelude.Nothing,
+      gopSize = Prelude.Nothing,
+      hrdBufferSize = Prelude.Nothing,
+      maxBitrate = Prelude.Nothing,
+      parControl = Prelude.Nothing,
+      parDenominator = Prelude.Nothing,
+      parNumerator = Prelude.Nothing,
+      qualityTuningLevel = Prelude.Nothing,
+      rateControlMode = Prelude.Nothing
+    }
+
+-- | Target bitrate in bits\/second. For example, enter five megabits per
+-- second as 5000000.
+vp8Settings_bitrate :: Lens.Lens' Vp8Settings (Prelude.Maybe Prelude.Natural)
+vp8Settings_bitrate = Lens.lens (\Vp8Settings' {bitrate} -> bitrate) (\s@Vp8Settings' {} a -> s {bitrate = a} :: Vp8Settings)
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+vp8Settings_framerateControl :: Lens.Lens' Vp8Settings (Prelude.Maybe Vp8FramerateControl)
+vp8Settings_framerateControl = Lens.lens (\Vp8Settings' {framerateControl} -> framerateControl) (\s@Vp8Settings' {} a -> s {framerateControl = a} :: Vp8Settings)
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+vp8Settings_framerateConversionAlgorithm :: Lens.Lens' Vp8Settings (Prelude.Maybe Vp8FramerateConversionAlgorithm)
+vp8Settings_framerateConversionAlgorithm = Lens.lens (\Vp8Settings' {framerateConversionAlgorithm} -> framerateConversionAlgorithm) (\s@Vp8Settings' {} a -> s {framerateConversionAlgorithm = a} :: Vp8Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+vp8Settings_framerateDenominator :: Lens.Lens' Vp8Settings (Prelude.Maybe Prelude.Natural)
+vp8Settings_framerateDenominator = Lens.lens (\Vp8Settings' {framerateDenominator} -> framerateDenominator) (\s@Vp8Settings' {} a -> s {framerateDenominator = a} :: Vp8Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+vp8Settings_framerateNumerator :: Lens.Lens' Vp8Settings (Prelude.Maybe Prelude.Natural)
+vp8Settings_framerateNumerator = Lens.lens (\Vp8Settings' {framerateNumerator} -> framerateNumerator) (\s@Vp8Settings' {} a -> s {framerateNumerator = a} :: Vp8Settings)
+
+-- | GOP Length (keyframe interval) in frames. Must be greater than zero.
+vp8Settings_gopSize :: Lens.Lens' Vp8Settings (Prelude.Maybe Prelude.Double)
+vp8Settings_gopSize = Lens.lens (\Vp8Settings' {gopSize} -> gopSize) (\s@Vp8Settings' {} a -> s {gopSize = a} :: Vp8Settings)
+
+-- | Optional. Size of buffer (HRD buffer model) in bits. For example, enter
+-- five megabits as 5000000.
+vp8Settings_hrdBufferSize :: Lens.Lens' Vp8Settings (Prelude.Maybe Prelude.Natural)
+vp8Settings_hrdBufferSize = Lens.lens (\Vp8Settings' {hrdBufferSize} -> hrdBufferSize) (\s@Vp8Settings' {} a -> s {hrdBufferSize = a} :: Vp8Settings)
+
+-- | Ignore this setting unless you set qualityTuningLevel to MULTI_PASS.
+-- Optional. Specify the maximum bitrate in bits\/second. For example,
+-- enter five megabits per second as 5000000. The default behavior uses
+-- twice the target bitrate as the maximum bitrate.
+vp8Settings_maxBitrate :: Lens.Lens' Vp8Settings (Prelude.Maybe Prelude.Natural)
+vp8Settings_maxBitrate = Lens.lens (\Vp8Settings' {maxBitrate} -> maxBitrate) (\s@Vp8Settings' {} a -> s {maxBitrate = a} :: Vp8Settings)
+
+-- | Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+vp8Settings_parControl :: Lens.Lens' Vp8Settings (Prelude.Maybe Vp8ParControl)
+vp8Settings_parControl = Lens.lens (\Vp8Settings' {parControl} -> parControl) (\s@Vp8Settings' {} a -> s {parControl = a} :: Vp8Settings)
+
+-- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parDenominator is 33.
+vp8Settings_parDenominator :: Lens.Lens' Vp8Settings (Prelude.Maybe Prelude.Natural)
+vp8Settings_parDenominator = Lens.lens (\Vp8Settings' {parDenominator} -> parDenominator) (\s@Vp8Settings' {} a -> s {parDenominator = a} :: Vp8Settings)
+
+-- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parNumerator is 40.
+vp8Settings_parNumerator :: Lens.Lens' Vp8Settings (Prelude.Maybe Prelude.Natural)
+vp8Settings_parNumerator = Lens.lens (\Vp8Settings' {parNumerator} -> parNumerator) (\s@Vp8Settings' {} a -> s {parNumerator = a} :: Vp8Settings)
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, multi-pass encoding.
+vp8Settings_qualityTuningLevel :: Lens.Lens' Vp8Settings (Prelude.Maybe Vp8QualityTuningLevel)
+vp8Settings_qualityTuningLevel = Lens.lens (\Vp8Settings' {qualityTuningLevel} -> qualityTuningLevel) (\s@Vp8Settings' {} a -> s {qualityTuningLevel = a} :: Vp8Settings)
+
+-- | With the VP8 codec, you can use only the variable bitrate (VBR) rate
+-- control mode.
+vp8Settings_rateControlMode :: Lens.Lens' Vp8Settings (Prelude.Maybe Vp8RateControlMode)
+vp8Settings_rateControlMode = Lens.lens (\Vp8Settings' {rateControlMode} -> rateControlMode) (\s@Vp8Settings' {} a -> s {rateControlMode = a} :: Vp8Settings)
+
+instance Data.FromJSON Vp8Settings where
+  parseJSON =
+    Data.withObject
+      "Vp8Settings"
+      ( \x ->
+          Vp8Settings'
+            Prelude.<$> (x Data..:? "bitrate")
+            Prelude.<*> (x Data..:? "framerateControl")
+            Prelude.<*> (x Data..:? "framerateConversionAlgorithm")
+            Prelude.<*> (x Data..:? "framerateDenominator")
+            Prelude.<*> (x Data..:? "framerateNumerator")
+            Prelude.<*> (x Data..:? "gopSize")
+            Prelude.<*> (x Data..:? "hrdBufferSize")
+            Prelude.<*> (x Data..:? "maxBitrate")
+            Prelude.<*> (x Data..:? "parControl")
+            Prelude.<*> (x Data..:? "parDenominator")
+            Prelude.<*> (x Data..:? "parNumerator")
+            Prelude.<*> (x Data..:? "qualityTuningLevel")
+            Prelude.<*> (x Data..:? "rateControlMode")
+      )
+
+instance Prelude.Hashable Vp8Settings where
+  hashWithSalt _salt Vp8Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` bitrate
+      `Prelude.hashWithSalt` framerateControl
+      `Prelude.hashWithSalt` framerateConversionAlgorithm
+      `Prelude.hashWithSalt` framerateDenominator
+      `Prelude.hashWithSalt` framerateNumerator
+      `Prelude.hashWithSalt` gopSize
+      `Prelude.hashWithSalt` hrdBufferSize
+      `Prelude.hashWithSalt` maxBitrate
+      `Prelude.hashWithSalt` parControl
+      `Prelude.hashWithSalt` parDenominator
+      `Prelude.hashWithSalt` parNumerator
+      `Prelude.hashWithSalt` qualityTuningLevel
+      `Prelude.hashWithSalt` rateControlMode
+
+instance Prelude.NFData Vp8Settings where
+  rnf Vp8Settings' {..} =
+    Prelude.rnf bitrate
+      `Prelude.seq` Prelude.rnf framerateControl
+      `Prelude.seq` Prelude.rnf framerateConversionAlgorithm
+      `Prelude.seq` Prelude.rnf framerateDenominator
+      `Prelude.seq` Prelude.rnf framerateNumerator
+      `Prelude.seq` Prelude.rnf gopSize
+      `Prelude.seq` Prelude.rnf hrdBufferSize
+      `Prelude.seq` Prelude.rnf maxBitrate
+      `Prelude.seq` Prelude.rnf parControl
+      `Prelude.seq` Prelude.rnf parDenominator
+      `Prelude.seq` Prelude.rnf parNumerator
+      `Prelude.seq` Prelude.rnf qualityTuningLevel
+      `Prelude.seq` Prelude.rnf rateControlMode
+
+instance Data.ToJSON Vp8Settings where
+  toJSON Vp8Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bitrate" Data..=) Prelude.<$> bitrate,
+            ("framerateControl" Data..=)
+              Prelude.<$> framerateControl,
+            ("framerateConversionAlgorithm" Data..=)
+              Prelude.<$> framerateConversionAlgorithm,
+            ("framerateDenominator" Data..=)
+              Prelude.<$> framerateDenominator,
+            ("framerateNumerator" Data..=)
+              Prelude.<$> framerateNumerator,
+            ("gopSize" Data..=) Prelude.<$> gopSize,
+            ("hrdBufferSize" Data..=) Prelude.<$> hrdBufferSize,
+            ("maxBitrate" Data..=) Prelude.<$> maxBitrate,
+            ("parControl" Data..=) Prelude.<$> parControl,
+            ("parDenominator" Data..=)
+              Prelude.<$> parDenominator,
+            ("parNumerator" Data..=) Prelude.<$> parNumerator,
+            ("qualityTuningLevel" Data..=)
+              Prelude.<$> qualityTuningLevel,
+            ("rateControlMode" Data..=)
+              Prelude.<$> rateControlMode
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Vp9FramerateControl.hs b/gen/Amazonka/MediaConvert/Types/Vp9FramerateControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vp9FramerateControl.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vp9FramerateControl
+-- 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.Vp9FramerateControl
+  ( Vp9FramerateControl
+      ( ..,
+        Vp9FramerateControl_INITIALIZE_FROM_SOURCE,
+        Vp9FramerateControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+newtype Vp9FramerateControl = Vp9FramerateControl'
+  { fromVp9FramerateControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vp9FramerateControl_INITIALIZE_FROM_SOURCE :: Vp9FramerateControl
+pattern Vp9FramerateControl_INITIALIZE_FROM_SOURCE = Vp9FramerateControl' "INITIALIZE_FROM_SOURCE"
+
+pattern Vp9FramerateControl_SPECIFIED :: Vp9FramerateControl
+pattern Vp9FramerateControl_SPECIFIED = Vp9FramerateControl' "SPECIFIED"
+
+{-# COMPLETE
+  Vp9FramerateControl_INITIALIZE_FROM_SOURCE,
+  Vp9FramerateControl_SPECIFIED,
+  Vp9FramerateControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vp9FramerateConversionAlgorithm.hs b/gen/Amazonka/MediaConvert/Types/Vp9FramerateConversionAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vp9FramerateConversionAlgorithm.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vp9FramerateConversionAlgorithm
+-- 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.Vp9FramerateConversionAlgorithm
+  ( Vp9FramerateConversionAlgorithm
+      ( ..,
+        Vp9FramerateConversionAlgorithm_DUPLICATE_DROP,
+        Vp9FramerateConversionAlgorithm_FRAMEFORMER,
+        Vp9FramerateConversionAlgorithm_INTERPOLATE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+newtype Vp9FramerateConversionAlgorithm = Vp9FramerateConversionAlgorithm'
+  { fromVp9FramerateConversionAlgorithm ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vp9FramerateConversionAlgorithm_DUPLICATE_DROP :: Vp9FramerateConversionAlgorithm
+pattern Vp9FramerateConversionAlgorithm_DUPLICATE_DROP = Vp9FramerateConversionAlgorithm' "DUPLICATE_DROP"
+
+pattern Vp9FramerateConversionAlgorithm_FRAMEFORMER :: Vp9FramerateConversionAlgorithm
+pattern Vp9FramerateConversionAlgorithm_FRAMEFORMER = Vp9FramerateConversionAlgorithm' "FRAMEFORMER"
+
+pattern Vp9FramerateConversionAlgorithm_INTERPOLATE :: Vp9FramerateConversionAlgorithm
+pattern Vp9FramerateConversionAlgorithm_INTERPOLATE = Vp9FramerateConversionAlgorithm' "INTERPOLATE"
+
+{-# COMPLETE
+  Vp9FramerateConversionAlgorithm_DUPLICATE_DROP,
+  Vp9FramerateConversionAlgorithm_FRAMEFORMER,
+  Vp9FramerateConversionAlgorithm_INTERPOLATE,
+  Vp9FramerateConversionAlgorithm'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vp9ParControl.hs b/gen/Amazonka/MediaConvert/Types/Vp9ParControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vp9ParControl.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vp9ParControl
+-- 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.Vp9ParControl
+  ( Vp9ParControl
+      ( ..,
+        Vp9ParControl_INITIALIZE_FROM_SOURCE,
+        Vp9ParControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Specify how the service determines the pixel aspect ratio
+-- (PAR) for this output. The default behavior, Follow source
+-- (INITIALIZE_FROM_SOURCE), uses the PAR from your input video for your
+-- output. To specify a different PAR in the console, choose any value
+-- other than Follow source. To specify a different PAR by editing the JSON
+-- job specification, choose SPECIFIED. When you choose SPECIFIED for this
+-- setting, you must also specify values for the parNumerator and
+-- parDenominator settings.
+newtype Vp9ParControl = Vp9ParControl'
+  { fromVp9ParControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vp9ParControl_INITIALIZE_FROM_SOURCE :: Vp9ParControl
+pattern Vp9ParControl_INITIALIZE_FROM_SOURCE = Vp9ParControl' "INITIALIZE_FROM_SOURCE"
+
+pattern Vp9ParControl_SPECIFIED :: Vp9ParControl
+pattern Vp9ParControl_SPECIFIED = Vp9ParControl' "SPECIFIED"
+
+{-# COMPLETE
+  Vp9ParControl_INITIALIZE_FROM_SOURCE,
+  Vp9ParControl_SPECIFIED,
+  Vp9ParControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vp9QualityTuningLevel.hs b/gen/Amazonka/MediaConvert/Types/Vp9QualityTuningLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vp9QualityTuningLevel.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vp9QualityTuningLevel
+-- 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.Vp9QualityTuningLevel
+  ( Vp9QualityTuningLevel
+      ( ..,
+        Vp9QualityTuningLevel_MULTI_PASS,
+        Vp9QualityTuningLevel_MULTI_PASS_HQ
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, multi-pass encoding.
+newtype Vp9QualityTuningLevel = Vp9QualityTuningLevel'
+  { fromVp9QualityTuningLevel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vp9QualityTuningLevel_MULTI_PASS :: Vp9QualityTuningLevel
+pattern Vp9QualityTuningLevel_MULTI_PASS = Vp9QualityTuningLevel' "MULTI_PASS"
+
+pattern Vp9QualityTuningLevel_MULTI_PASS_HQ :: Vp9QualityTuningLevel
+pattern Vp9QualityTuningLevel_MULTI_PASS_HQ = Vp9QualityTuningLevel' "MULTI_PASS_HQ"
+
+{-# COMPLETE
+  Vp9QualityTuningLevel_MULTI_PASS,
+  Vp9QualityTuningLevel_MULTI_PASS_HQ,
+  Vp9QualityTuningLevel'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vp9RateControlMode.hs b/gen/Amazonka/MediaConvert/Types/Vp9RateControlMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vp9RateControlMode.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Vp9RateControlMode
+-- 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.Vp9RateControlMode
+  ( Vp9RateControlMode
+      ( ..,
+        Vp9RateControlMode_VBR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | With the VP9 codec, you can use only the variable bitrate (VBR) rate
+-- control mode.
+newtype Vp9RateControlMode = Vp9RateControlMode'
+  { fromVp9RateControlMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Vp9RateControlMode_VBR :: Vp9RateControlMode
+pattern Vp9RateControlMode_VBR = Vp9RateControlMode' "VBR"
+
+{-# COMPLETE
+  Vp9RateControlMode_VBR,
+  Vp9RateControlMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Vp9Settings.hs b/gen/Amazonka/MediaConvert/Types/Vp9Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Vp9Settings.hs
@@ -0,0 +1,411 @@
+{-# 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.Vp9Settings
+-- 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.Vp9Settings 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.Vp9FramerateControl
+import Amazonka.MediaConvert.Types.Vp9FramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.Vp9ParControl
+import Amazonka.MediaConvert.Types.Vp9QualityTuningLevel
+import Amazonka.MediaConvert.Types.Vp9RateControlMode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value VP9.
+--
+-- /See:/ 'newVp9Settings' smart constructor.
+data Vp9Settings = Vp9Settings'
+  { -- | Target bitrate in bits\/second. For example, enter five megabits per
+    -- second as 5000000.
+    bitrate :: Prelude.Maybe Prelude.Natural,
+    -- | If you are using the console, use the Framerate setting to specify the
+    -- frame rate for this output. If you want to keep the same frame rate as
+    -- the input video, choose Follow source. If you want to do frame rate
+    -- conversion, choose a frame rate from the dropdown list or choose Custom.
+    -- The framerates shown in the dropdown list are decimal approximations of
+    -- fractions. If you choose Custom, specify your frame rate as a fraction.
+    -- If you are creating your transcoding job specification as a JSON file
+    -- without the console, use FramerateControl to specify which value the
+    -- service uses for the frame rate for this output. Choose
+    -- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+    -- from the input. Choose SPECIFIED if you want the service to use the
+    -- frame rate you specify in the settings FramerateNumerator and
+    -- FramerateDenominator.
+    framerateControl :: Prelude.Maybe Vp9FramerateControl,
+    -- | Choose the method that you want MediaConvert to use when increasing or
+    -- decreasing the frame rate. We recommend using drop duplicate
+    -- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+    -- 30 fps. For numerically complex conversions, you can use interpolate
+    -- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+    -- might introduce undesirable video artifacts. For complex frame rate
+    -- conversions, especially if your source video has already been converted
+    -- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+    -- motion-compensated interpolation. FrameFormer chooses the best
+    -- conversion method frame by frame. Note that using FrameFormer increases
+    -- the transcoding time and incurs a significant add-on cost.
+    framerateConversionAlgorithm :: Prelude.Maybe Vp9FramerateConversionAlgorithm,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+    -- fraction. In this example, use 1001 for the value of
+    -- FramerateDenominator. When you use the console for transcode jobs that
+    -- use frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+    -- fraction. In this example, use 24000 for the value of
+    -- FramerateNumerator. When you use the console for transcode jobs that use
+    -- frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | GOP Length (keyframe interval) in frames. Must be greater than zero.
+    gopSize :: Prelude.Maybe Prelude.Double,
+    -- | Size of buffer (HRD buffer model) in bits. For example, enter five
+    -- megabits as 5000000.
+    hrdBufferSize :: Prelude.Maybe Prelude.Natural,
+    -- | Ignore this setting unless you set qualityTuningLevel to MULTI_PASS.
+    -- Optional. Specify the maximum bitrate in bits\/second. For example,
+    -- enter five megabits per second as 5000000. The default behavior uses
+    -- twice the target bitrate as the maximum bitrate.
+    maxBitrate :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Specify how the service determines the pixel aspect ratio for
+    -- this output. The default behavior is to use the same pixel aspect ratio
+    -- as your input video.
+    parControl :: Prelude.Maybe Vp9ParControl,
+    -- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+    -- the console, this corresponds to any value other than Follow source.
+    -- When you specify an output pixel aspect ratio (PAR) that is different
+    -- from your input video PAR, provide your output PAR as a ratio. For
+    -- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+    -- In this example, the value for parDenominator is 33.
+    parDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+    -- the console, this corresponds to any value other than Follow source.
+    -- When you specify an output pixel aspect ratio (PAR) that is different
+    -- from your input video PAR, provide your output PAR as a ratio. For
+    -- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+    -- In this example, the value for parNumerator is 40.
+    parNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+    -- you want to trade off encoding speed for output video quality. The
+    -- default behavior is faster, lower quality, multi-pass encoding.
+    qualityTuningLevel :: Prelude.Maybe Vp9QualityTuningLevel,
+    -- | With the VP9 codec, you can use only the variable bitrate (VBR) rate
+    -- control mode.
+    rateControlMode :: Prelude.Maybe Vp9RateControlMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Vp9Settings' 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:
+--
+-- 'bitrate', 'vp9Settings_bitrate' - Target bitrate in bits\/second. For example, enter five megabits per
+-- second as 5000000.
+--
+-- 'framerateControl', 'vp9Settings_framerateControl' - If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+--
+-- 'framerateConversionAlgorithm', 'vp9Settings_framerateConversionAlgorithm' - Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+--
+-- 'framerateDenominator', 'vp9Settings_framerateDenominator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'framerateNumerator', 'vp9Settings_framerateNumerator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'gopSize', 'vp9Settings_gopSize' - GOP Length (keyframe interval) in frames. Must be greater than zero.
+--
+-- 'hrdBufferSize', 'vp9Settings_hrdBufferSize' - Size of buffer (HRD buffer model) in bits. For example, enter five
+-- megabits as 5000000.
+--
+-- 'maxBitrate', 'vp9Settings_maxBitrate' - Ignore this setting unless you set qualityTuningLevel to MULTI_PASS.
+-- Optional. Specify the maximum bitrate in bits\/second. For example,
+-- enter five megabits per second as 5000000. The default behavior uses
+-- twice the target bitrate as the maximum bitrate.
+--
+-- 'parControl', 'vp9Settings_parControl' - Optional. Specify how the service determines the pixel aspect ratio for
+-- this output. The default behavior is to use the same pixel aspect ratio
+-- as your input video.
+--
+-- 'parDenominator', 'vp9Settings_parDenominator' - Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parDenominator is 33.
+--
+-- 'parNumerator', 'vp9Settings_parNumerator' - Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parNumerator is 40.
+--
+-- 'qualityTuningLevel', 'vp9Settings_qualityTuningLevel' - Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, multi-pass encoding.
+--
+-- 'rateControlMode', 'vp9Settings_rateControlMode' - With the VP9 codec, you can use only the variable bitrate (VBR) rate
+-- control mode.
+newVp9Settings ::
+  Vp9Settings
+newVp9Settings =
+  Vp9Settings'
+    { bitrate = Prelude.Nothing,
+      framerateControl = Prelude.Nothing,
+      framerateConversionAlgorithm = Prelude.Nothing,
+      framerateDenominator = Prelude.Nothing,
+      framerateNumerator = Prelude.Nothing,
+      gopSize = Prelude.Nothing,
+      hrdBufferSize = Prelude.Nothing,
+      maxBitrate = Prelude.Nothing,
+      parControl = Prelude.Nothing,
+      parDenominator = Prelude.Nothing,
+      parNumerator = Prelude.Nothing,
+      qualityTuningLevel = Prelude.Nothing,
+      rateControlMode = Prelude.Nothing
+    }
+
+-- | Target bitrate in bits\/second. For example, enter five megabits per
+-- second as 5000000.
+vp9Settings_bitrate :: Lens.Lens' Vp9Settings (Prelude.Maybe Prelude.Natural)
+vp9Settings_bitrate = Lens.lens (\Vp9Settings' {bitrate} -> bitrate) (\s@Vp9Settings' {} a -> s {bitrate = a} :: Vp9Settings)
+
+-- | If you are using the console, use the Framerate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list or choose Custom.
+-- The framerates shown in the dropdown list are decimal approximations of
+-- fractions. If you choose Custom, specify your frame rate as a fraction.
+-- If you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+vp9Settings_framerateControl :: Lens.Lens' Vp9Settings (Prelude.Maybe Vp9FramerateControl)
+vp9Settings_framerateControl = Lens.lens (\Vp9Settings' {framerateControl} -> framerateControl) (\s@Vp9Settings' {} a -> s {framerateControl = a} :: Vp9Settings)
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+vp9Settings_framerateConversionAlgorithm :: Lens.Lens' Vp9Settings (Prelude.Maybe Vp9FramerateConversionAlgorithm)
+vp9Settings_framerateConversionAlgorithm = Lens.lens (\Vp9Settings' {framerateConversionAlgorithm} -> framerateConversionAlgorithm) (\s@Vp9Settings' {} a -> s {framerateConversionAlgorithm = a} :: Vp9Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+vp9Settings_framerateDenominator :: Lens.Lens' Vp9Settings (Prelude.Maybe Prelude.Natural)
+vp9Settings_framerateDenominator = Lens.lens (\Vp9Settings' {framerateDenominator} -> framerateDenominator) (\s@Vp9Settings' {} a -> s {framerateDenominator = a} :: Vp9Settings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+vp9Settings_framerateNumerator :: Lens.Lens' Vp9Settings (Prelude.Maybe Prelude.Natural)
+vp9Settings_framerateNumerator = Lens.lens (\Vp9Settings' {framerateNumerator} -> framerateNumerator) (\s@Vp9Settings' {} a -> s {framerateNumerator = a} :: Vp9Settings)
+
+-- | GOP Length (keyframe interval) in frames. Must be greater than zero.
+vp9Settings_gopSize :: Lens.Lens' Vp9Settings (Prelude.Maybe Prelude.Double)
+vp9Settings_gopSize = Lens.lens (\Vp9Settings' {gopSize} -> gopSize) (\s@Vp9Settings' {} a -> s {gopSize = a} :: Vp9Settings)
+
+-- | Size of buffer (HRD buffer model) in bits. For example, enter five
+-- megabits as 5000000.
+vp9Settings_hrdBufferSize :: Lens.Lens' Vp9Settings (Prelude.Maybe Prelude.Natural)
+vp9Settings_hrdBufferSize = Lens.lens (\Vp9Settings' {hrdBufferSize} -> hrdBufferSize) (\s@Vp9Settings' {} a -> s {hrdBufferSize = a} :: Vp9Settings)
+
+-- | Ignore this setting unless you set qualityTuningLevel to MULTI_PASS.
+-- Optional. Specify the maximum bitrate in bits\/second. For example,
+-- enter five megabits per second as 5000000. The default behavior uses
+-- twice the target bitrate as the maximum bitrate.
+vp9Settings_maxBitrate :: Lens.Lens' Vp9Settings (Prelude.Maybe Prelude.Natural)
+vp9Settings_maxBitrate = Lens.lens (\Vp9Settings' {maxBitrate} -> maxBitrate) (\s@Vp9Settings' {} a -> s {maxBitrate = a} :: Vp9Settings)
+
+-- | Optional. Specify how the service determines the pixel aspect ratio for
+-- this output. The default behavior is to use the same pixel aspect ratio
+-- as your input video.
+vp9Settings_parControl :: Lens.Lens' Vp9Settings (Prelude.Maybe Vp9ParControl)
+vp9Settings_parControl = Lens.lens (\Vp9Settings' {parControl} -> parControl) (\s@Vp9Settings' {} a -> s {parControl = a} :: Vp9Settings)
+
+-- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parDenominator is 33.
+vp9Settings_parDenominator :: Lens.Lens' Vp9Settings (Prelude.Maybe Prelude.Natural)
+vp9Settings_parDenominator = Lens.lens (\Vp9Settings' {parDenominator} -> parDenominator) (\s@Vp9Settings' {} a -> s {parDenominator = a} :: Vp9Settings)
+
+-- | Required when you set Pixel aspect ratio (parControl) to SPECIFIED. On
+-- the console, this corresponds to any value other than Follow source.
+-- When you specify an output pixel aspect ratio (PAR) that is different
+-- from your input video PAR, provide your output PAR as a ratio. For
+-- example, for D1\/DV NTSC widescreen, you would specify the ratio 40:33.
+-- In this example, the value for parNumerator is 40.
+vp9Settings_parNumerator :: Lens.Lens' Vp9Settings (Prelude.Maybe Prelude.Natural)
+vp9Settings_parNumerator = Lens.lens (\Vp9Settings' {parNumerator} -> parNumerator) (\s@Vp9Settings' {} a -> s {parNumerator = a} :: Vp9Settings)
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, multi-pass encoding.
+vp9Settings_qualityTuningLevel :: Lens.Lens' Vp9Settings (Prelude.Maybe Vp9QualityTuningLevel)
+vp9Settings_qualityTuningLevel = Lens.lens (\Vp9Settings' {qualityTuningLevel} -> qualityTuningLevel) (\s@Vp9Settings' {} a -> s {qualityTuningLevel = a} :: Vp9Settings)
+
+-- | With the VP9 codec, you can use only the variable bitrate (VBR) rate
+-- control mode.
+vp9Settings_rateControlMode :: Lens.Lens' Vp9Settings (Prelude.Maybe Vp9RateControlMode)
+vp9Settings_rateControlMode = Lens.lens (\Vp9Settings' {rateControlMode} -> rateControlMode) (\s@Vp9Settings' {} a -> s {rateControlMode = a} :: Vp9Settings)
+
+instance Data.FromJSON Vp9Settings where
+  parseJSON =
+    Data.withObject
+      "Vp9Settings"
+      ( \x ->
+          Vp9Settings'
+            Prelude.<$> (x Data..:? "bitrate")
+            Prelude.<*> (x Data..:? "framerateControl")
+            Prelude.<*> (x Data..:? "framerateConversionAlgorithm")
+            Prelude.<*> (x Data..:? "framerateDenominator")
+            Prelude.<*> (x Data..:? "framerateNumerator")
+            Prelude.<*> (x Data..:? "gopSize")
+            Prelude.<*> (x Data..:? "hrdBufferSize")
+            Prelude.<*> (x Data..:? "maxBitrate")
+            Prelude.<*> (x Data..:? "parControl")
+            Prelude.<*> (x Data..:? "parDenominator")
+            Prelude.<*> (x Data..:? "parNumerator")
+            Prelude.<*> (x Data..:? "qualityTuningLevel")
+            Prelude.<*> (x Data..:? "rateControlMode")
+      )
+
+instance Prelude.Hashable Vp9Settings where
+  hashWithSalt _salt Vp9Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` bitrate
+      `Prelude.hashWithSalt` framerateControl
+      `Prelude.hashWithSalt` framerateConversionAlgorithm
+      `Prelude.hashWithSalt` framerateDenominator
+      `Prelude.hashWithSalt` framerateNumerator
+      `Prelude.hashWithSalt` gopSize
+      `Prelude.hashWithSalt` hrdBufferSize
+      `Prelude.hashWithSalt` maxBitrate
+      `Prelude.hashWithSalt` parControl
+      `Prelude.hashWithSalt` parDenominator
+      `Prelude.hashWithSalt` parNumerator
+      `Prelude.hashWithSalt` qualityTuningLevel
+      `Prelude.hashWithSalt` rateControlMode
+
+instance Prelude.NFData Vp9Settings where
+  rnf Vp9Settings' {..} =
+    Prelude.rnf bitrate
+      `Prelude.seq` Prelude.rnf framerateControl
+      `Prelude.seq` Prelude.rnf framerateConversionAlgorithm
+      `Prelude.seq` Prelude.rnf framerateDenominator
+      `Prelude.seq` Prelude.rnf framerateNumerator
+      `Prelude.seq` Prelude.rnf gopSize
+      `Prelude.seq` Prelude.rnf hrdBufferSize
+      `Prelude.seq` Prelude.rnf maxBitrate
+      `Prelude.seq` Prelude.rnf parControl
+      `Prelude.seq` Prelude.rnf parDenominator
+      `Prelude.seq` Prelude.rnf parNumerator
+      `Prelude.seq` Prelude.rnf qualityTuningLevel
+      `Prelude.seq` Prelude.rnf rateControlMode
+
+instance Data.ToJSON Vp9Settings where
+  toJSON Vp9Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bitrate" Data..=) Prelude.<$> bitrate,
+            ("framerateControl" Data..=)
+              Prelude.<$> framerateControl,
+            ("framerateConversionAlgorithm" Data..=)
+              Prelude.<$> framerateConversionAlgorithm,
+            ("framerateDenominator" Data..=)
+              Prelude.<$> framerateDenominator,
+            ("framerateNumerator" Data..=)
+              Prelude.<$> framerateNumerator,
+            ("gopSize" Data..=) Prelude.<$> gopSize,
+            ("hrdBufferSize" Data..=) Prelude.<$> hrdBufferSize,
+            ("maxBitrate" Data..=) Prelude.<$> maxBitrate,
+            ("parControl" Data..=) Prelude.<$> parControl,
+            ("parDenominator" Data..=)
+              Prelude.<$> parDenominator,
+            ("parNumerator" Data..=) Prelude.<$> parNumerator,
+            ("qualityTuningLevel" Data..=)
+              Prelude.<$> qualityTuningLevel,
+            ("rateControlMode" Data..=)
+              Prelude.<$> rateControlMode
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/WatermarkingStrength.hs b/gen/Amazonka/MediaConvert/Types/WatermarkingStrength.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/WatermarkingStrength.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.WatermarkingStrength
+-- 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.WatermarkingStrength
+  ( WatermarkingStrength
+      ( ..,
+        WatermarkingStrength_DEFAULT,
+        WatermarkingStrength_LIGHTER,
+        WatermarkingStrength_LIGHTEST,
+        WatermarkingStrength_STRONGER,
+        WatermarkingStrength_STRONGEST
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Ignore this setting unless Nagra support directs you to
+-- specify a value. When you don\'t specify a value here, the Nagra
+-- NexGuard library uses its default value.
+newtype WatermarkingStrength = WatermarkingStrength'
+  { fromWatermarkingStrength ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern WatermarkingStrength_DEFAULT :: WatermarkingStrength
+pattern WatermarkingStrength_DEFAULT = WatermarkingStrength' "DEFAULT"
+
+pattern WatermarkingStrength_LIGHTER :: WatermarkingStrength
+pattern WatermarkingStrength_LIGHTER = WatermarkingStrength' "LIGHTER"
+
+pattern WatermarkingStrength_LIGHTEST :: WatermarkingStrength
+pattern WatermarkingStrength_LIGHTEST = WatermarkingStrength' "LIGHTEST"
+
+pattern WatermarkingStrength_STRONGER :: WatermarkingStrength
+pattern WatermarkingStrength_STRONGER = WatermarkingStrength' "STRONGER"
+
+pattern WatermarkingStrength_STRONGEST :: WatermarkingStrength
+pattern WatermarkingStrength_STRONGEST = WatermarkingStrength' "STRONGEST"
+
+{-# COMPLETE
+  WatermarkingStrength_DEFAULT,
+  WatermarkingStrength_LIGHTER,
+  WatermarkingStrength_LIGHTEST,
+  WatermarkingStrength_STRONGER,
+  WatermarkingStrength_STRONGEST,
+  WatermarkingStrength'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/WavFormat.hs b/gen/Amazonka/MediaConvert/Types/WavFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/WavFormat.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.WavFormat
+-- 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.WavFormat
+  ( WavFormat
+      ( ..,
+        WavFormat_RF64,
+        WavFormat_RIFF
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The service defaults to using RIFF for WAV outputs. If your output audio
+-- is likely to exceed 4 GB in file size, or if you otherwise need the
+-- extended support of the RF64 format, set your output WAV file format to
+-- RF64.
+newtype WavFormat = WavFormat'
+  { fromWavFormat ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern WavFormat_RF64 :: WavFormat
+pattern WavFormat_RF64 = WavFormat' "RF64"
+
+pattern WavFormat_RIFF :: WavFormat
+pattern WavFormat_RIFF = WavFormat' "RIFF"
+
+{-# COMPLETE
+  WavFormat_RF64,
+  WavFormat_RIFF,
+  WavFormat'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/WavSettings.hs b/gen/Amazonka/MediaConvert/Types/WavSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/WavSettings.hs
@@ -0,0 +1,139 @@
+{-# 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.WavSettings
+-- 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.WavSettings 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.WavFormat
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
+-- to the value WAV.
+--
+-- /See:/ 'newWavSettings' smart constructor.
+data WavSettings = WavSettings'
+  { -- | Specify Bit depth (BitDepth), in bits per sample, to choose the encoding
+    -- quality for this audio track.
+    bitDepth :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the number of channels in this output audio track. Valid values
+    -- are 1 and even numbers up to 64. For example, 1, 2, 4, 6, and so on, up
+    -- to 64.
+    channels :: Prelude.Maybe Prelude.Natural,
+    -- | The service defaults to using RIFF for WAV outputs. If your output audio
+    -- is likely to exceed 4 GB in file size, or if you otherwise need the
+    -- extended support of the RF64 format, set your output WAV file format to
+    -- RF64.
+    format :: Prelude.Maybe WavFormat,
+    -- | Sample rate in Hz.
+    sampleRate :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WavSettings' 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:
+--
+-- 'bitDepth', 'wavSettings_bitDepth' - Specify Bit depth (BitDepth), in bits per sample, to choose the encoding
+-- quality for this audio track.
+--
+-- 'channels', 'wavSettings_channels' - Specify the number of channels in this output audio track. Valid values
+-- are 1 and even numbers up to 64. For example, 1, 2, 4, 6, and so on, up
+-- to 64.
+--
+-- 'format', 'wavSettings_format' - The service defaults to using RIFF for WAV outputs. If your output audio
+-- is likely to exceed 4 GB in file size, or if you otherwise need the
+-- extended support of the RF64 format, set your output WAV file format to
+-- RF64.
+--
+-- 'sampleRate', 'wavSettings_sampleRate' - Sample rate in Hz.
+newWavSettings ::
+  WavSettings
+newWavSettings =
+  WavSettings'
+    { bitDepth = Prelude.Nothing,
+      channels = Prelude.Nothing,
+      format = Prelude.Nothing,
+      sampleRate = Prelude.Nothing
+    }
+
+-- | Specify Bit depth (BitDepth), in bits per sample, to choose the encoding
+-- quality for this audio track.
+wavSettings_bitDepth :: Lens.Lens' WavSettings (Prelude.Maybe Prelude.Natural)
+wavSettings_bitDepth = Lens.lens (\WavSettings' {bitDepth} -> bitDepth) (\s@WavSettings' {} a -> s {bitDepth = a} :: WavSettings)
+
+-- | Specify the number of channels in this output audio track. Valid values
+-- are 1 and even numbers up to 64. For example, 1, 2, 4, 6, and so on, up
+-- to 64.
+wavSettings_channels :: Lens.Lens' WavSettings (Prelude.Maybe Prelude.Natural)
+wavSettings_channels = Lens.lens (\WavSettings' {channels} -> channels) (\s@WavSettings' {} a -> s {channels = a} :: WavSettings)
+
+-- | The service defaults to using RIFF for WAV outputs. If your output audio
+-- is likely to exceed 4 GB in file size, or if you otherwise need the
+-- extended support of the RF64 format, set your output WAV file format to
+-- RF64.
+wavSettings_format :: Lens.Lens' WavSettings (Prelude.Maybe WavFormat)
+wavSettings_format = Lens.lens (\WavSettings' {format} -> format) (\s@WavSettings' {} a -> s {format = a} :: WavSettings)
+
+-- | Sample rate in Hz.
+wavSettings_sampleRate :: Lens.Lens' WavSettings (Prelude.Maybe Prelude.Natural)
+wavSettings_sampleRate = Lens.lens (\WavSettings' {sampleRate} -> sampleRate) (\s@WavSettings' {} a -> s {sampleRate = a} :: WavSettings)
+
+instance Data.FromJSON WavSettings where
+  parseJSON =
+    Data.withObject
+      "WavSettings"
+      ( \x ->
+          WavSettings'
+            Prelude.<$> (x Data..:? "bitDepth")
+            Prelude.<*> (x Data..:? "channels")
+            Prelude.<*> (x Data..:? "format")
+            Prelude.<*> (x Data..:? "sampleRate")
+      )
+
+instance Prelude.Hashable WavSettings where
+  hashWithSalt _salt WavSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` bitDepth
+      `Prelude.hashWithSalt` channels
+      `Prelude.hashWithSalt` format
+      `Prelude.hashWithSalt` sampleRate
+
+instance Prelude.NFData WavSettings where
+  rnf WavSettings' {..} =
+    Prelude.rnf bitDepth
+      `Prelude.seq` Prelude.rnf channels
+      `Prelude.seq` Prelude.rnf format
+      `Prelude.seq` Prelude.rnf sampleRate
+
+instance Data.ToJSON WavSettings where
+  toJSON WavSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bitDepth" Data..=) Prelude.<$> bitDepth,
+            ("channels" Data..=) Prelude.<$> channels,
+            ("format" Data..=) Prelude.<$> format,
+            ("sampleRate" Data..=) Prelude.<$> sampleRate
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/WebvttAccessibilitySubs.hs b/gen/Amazonka/MediaConvert/Types/WebvttAccessibilitySubs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/WebvttAccessibilitySubs.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.WebvttAccessibilitySubs
+-- 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.WebvttAccessibilitySubs
+  ( WebvttAccessibilitySubs
+      ( ..,
+        WebvttAccessibilitySubs_DISABLED,
+        WebvttAccessibilitySubs_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Set Accessibility subtitles to Enabled if the ISMC or WebVTT captions
+-- track is intended to provide accessibility for people who are deaf or
+-- hard of hearing. When you enable this feature, MediaConvert adds the
+-- following attributes under EXT-X-MEDIA in the HLS or CMAF manifest for
+-- this track:
+-- CHARACTERISTICS=\"public.accessibility.describes-spoken-dialog,public.accessibility.describes-music-and-sound\"
+-- and AUTOSELECT=\"YES\". Keep the default value, Disabled, if the
+-- captions track is not intended to provide such accessibility.
+-- MediaConvert will not add the above attributes.
+newtype WebvttAccessibilitySubs = WebvttAccessibilitySubs'
+  { fromWebvttAccessibilitySubs ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern WebvttAccessibilitySubs_DISABLED :: WebvttAccessibilitySubs
+pattern WebvttAccessibilitySubs_DISABLED = WebvttAccessibilitySubs' "DISABLED"
+
+pattern WebvttAccessibilitySubs_ENABLED :: WebvttAccessibilitySubs
+pattern WebvttAccessibilitySubs_ENABLED = WebvttAccessibilitySubs' "ENABLED"
+
+{-# COMPLETE
+  WebvttAccessibilitySubs_DISABLED,
+  WebvttAccessibilitySubs_ENABLED,
+  WebvttAccessibilitySubs'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/WebvttDestinationSettings.hs b/gen/Amazonka/MediaConvert/Types/WebvttDestinationSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/WebvttDestinationSettings.hs
@@ -0,0 +1,154 @@
+{-# 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.WebvttDestinationSettings
+-- 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.WebvttDestinationSettings 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.WebvttAccessibilitySubs
+import Amazonka.MediaConvert.Types.WebvttStylePassthrough
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings related to WebVTT captions. WebVTT is a sidecar format that
+-- holds captions in a file that is separate from the video container. Set
+-- up sidecar captions in the same output group, but different output from
+-- your video. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
+-- When you work directly in your JSON job specification, include this
+-- object and any required children when you set destinationType to WebVTT.
+--
+-- /See:/ 'newWebvttDestinationSettings' smart constructor.
+data WebvttDestinationSettings = WebvttDestinationSettings'
+  { -- | Set Accessibility subtitles to Enabled if the ISMC or WebVTT captions
+    -- track is intended to provide accessibility for people who are deaf or
+    -- hard of hearing. When you enable this feature, MediaConvert adds the
+    -- following attributes under EXT-X-MEDIA in the HLS or CMAF manifest for
+    -- this track:
+    -- CHARACTERISTICS=\"public.accessibility.describes-spoken-dialog,public.accessibility.describes-music-and-sound\"
+    -- and AUTOSELECT=\"YES\". Keep the default value, Disabled, if the
+    -- captions track is not intended to provide such accessibility.
+    -- MediaConvert will not add the above attributes.
+    accessibility :: Prelude.Maybe WebvttAccessibilitySubs,
+    -- | To use the available style, color, and position information from your
+    -- input captions: Set Style passthrough (stylePassthrough) to Enabled
+    -- (ENABLED). MediaConvert uses default settings when style and position
+    -- information is missing from your input captions. To recreate the input
+    -- captions exactly: Set Style passthrough to Strict (STRICT). MediaConvert
+    -- automatically applies timing adjustments, including adjustments for
+    -- frame rate conversion, ad avails, and input clipping. Your input
+    -- captions format must be WebVTT. To ignore the style and position
+    -- information from your input captions and use simplified output captions:
+    -- Set Style passthrough to Disabled (DISABLED), or leave blank.
+    stylePassthrough :: Prelude.Maybe WebvttStylePassthrough
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WebvttDestinationSettings' 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:
+--
+-- 'accessibility', 'webvttDestinationSettings_accessibility' - Set Accessibility subtitles to Enabled if the ISMC or WebVTT captions
+-- track is intended to provide accessibility for people who are deaf or
+-- hard of hearing. When you enable this feature, MediaConvert adds the
+-- following attributes under EXT-X-MEDIA in the HLS or CMAF manifest for
+-- this track:
+-- CHARACTERISTICS=\"public.accessibility.describes-spoken-dialog,public.accessibility.describes-music-and-sound\"
+-- and AUTOSELECT=\"YES\". Keep the default value, Disabled, if the
+-- captions track is not intended to provide such accessibility.
+-- MediaConvert will not add the above attributes.
+--
+-- 'stylePassthrough', 'webvttDestinationSettings_stylePassthrough' - To use the available style, color, and position information from your
+-- input captions: Set Style passthrough (stylePassthrough) to Enabled
+-- (ENABLED). MediaConvert uses default settings when style and position
+-- information is missing from your input captions. To recreate the input
+-- captions exactly: Set Style passthrough to Strict (STRICT). MediaConvert
+-- automatically applies timing adjustments, including adjustments for
+-- frame rate conversion, ad avails, and input clipping. Your input
+-- captions format must be WebVTT. To ignore the style and position
+-- information from your input captions and use simplified output captions:
+-- Set Style passthrough to Disabled (DISABLED), or leave blank.
+newWebvttDestinationSettings ::
+  WebvttDestinationSettings
+newWebvttDestinationSettings =
+  WebvttDestinationSettings'
+    { accessibility =
+        Prelude.Nothing,
+      stylePassthrough = Prelude.Nothing
+    }
+
+-- | Set Accessibility subtitles to Enabled if the ISMC or WebVTT captions
+-- track is intended to provide accessibility for people who are deaf or
+-- hard of hearing. When you enable this feature, MediaConvert adds the
+-- following attributes under EXT-X-MEDIA in the HLS or CMAF manifest for
+-- this track:
+-- CHARACTERISTICS=\"public.accessibility.describes-spoken-dialog,public.accessibility.describes-music-and-sound\"
+-- and AUTOSELECT=\"YES\". Keep the default value, Disabled, if the
+-- captions track is not intended to provide such accessibility.
+-- MediaConvert will not add the above attributes.
+webvttDestinationSettings_accessibility :: Lens.Lens' WebvttDestinationSettings (Prelude.Maybe WebvttAccessibilitySubs)
+webvttDestinationSettings_accessibility = Lens.lens (\WebvttDestinationSettings' {accessibility} -> accessibility) (\s@WebvttDestinationSettings' {} a -> s {accessibility = a} :: WebvttDestinationSettings)
+
+-- | To use the available style, color, and position information from your
+-- input captions: Set Style passthrough (stylePassthrough) to Enabled
+-- (ENABLED). MediaConvert uses default settings when style and position
+-- information is missing from your input captions. To recreate the input
+-- captions exactly: Set Style passthrough to Strict (STRICT). MediaConvert
+-- automatically applies timing adjustments, including adjustments for
+-- frame rate conversion, ad avails, and input clipping. Your input
+-- captions format must be WebVTT. To ignore the style and position
+-- information from your input captions and use simplified output captions:
+-- Set Style passthrough to Disabled (DISABLED), or leave blank.
+webvttDestinationSettings_stylePassthrough :: Lens.Lens' WebvttDestinationSettings (Prelude.Maybe WebvttStylePassthrough)
+webvttDestinationSettings_stylePassthrough = Lens.lens (\WebvttDestinationSettings' {stylePassthrough} -> stylePassthrough) (\s@WebvttDestinationSettings' {} a -> s {stylePassthrough = a} :: WebvttDestinationSettings)
+
+instance Data.FromJSON WebvttDestinationSettings where
+  parseJSON =
+    Data.withObject
+      "WebvttDestinationSettings"
+      ( \x ->
+          WebvttDestinationSettings'
+            Prelude.<$> (x Data..:? "accessibility")
+            Prelude.<*> (x Data..:? "stylePassthrough")
+      )
+
+instance Prelude.Hashable WebvttDestinationSettings where
+  hashWithSalt _salt WebvttDestinationSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` accessibility
+      `Prelude.hashWithSalt` stylePassthrough
+
+instance Prelude.NFData WebvttDestinationSettings where
+  rnf WebvttDestinationSettings' {..} =
+    Prelude.rnf accessibility
+      `Prelude.seq` Prelude.rnf stylePassthrough
+
+instance Data.ToJSON WebvttDestinationSettings where
+  toJSON WebvttDestinationSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accessibility" Data..=) Prelude.<$> accessibility,
+            ("stylePassthrough" Data..=)
+              Prelude.<$> stylePassthrough
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/WebvttHlsSourceSettings.hs b/gen/Amazonka/MediaConvert/Types/WebvttHlsSourceSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/WebvttHlsSourceSettings.hs
@@ -0,0 +1,118 @@
+{-# 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.WebvttHlsSourceSettings
+-- 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.WebvttHlsSourceSettings 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.LanguageCode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Settings specific to WebVTT sources in HLS alternative rendition group.
+-- Specify the properties (renditionGroupId, renditionName or
+-- renditionLanguageCode) to identify the unique subtitle track among the
+-- alternative rendition groups present in the HLS manifest. If no unique
+-- track is found, or multiple tracks match the specified properties, the
+-- job fails. If there is only one subtitle track in the rendition group,
+-- the settings can be left empty and the default subtitle track will be
+-- chosen. If your caption source is a sidecar file, use FileSourceSettings
+-- instead of WebvttHlsSourceSettings.
+--
+-- /See:/ 'newWebvttHlsSourceSettings' smart constructor.
+data WebvttHlsSourceSettings = WebvttHlsSourceSettings'
+  { -- | Optional. Specify alternative group ID
+    renditionGroupId :: Prelude.Maybe Prelude.Text,
+    -- | Optional. Specify ISO 639-2 or ISO 639-3 code in the language property
+    renditionLanguageCode :: Prelude.Maybe LanguageCode,
+    -- | Optional. Specify media name
+    renditionName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WebvttHlsSourceSettings' 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:
+--
+-- 'renditionGroupId', 'webvttHlsSourceSettings_renditionGroupId' - Optional. Specify alternative group ID
+--
+-- 'renditionLanguageCode', 'webvttHlsSourceSettings_renditionLanguageCode' - Optional. Specify ISO 639-2 or ISO 639-3 code in the language property
+--
+-- 'renditionName', 'webvttHlsSourceSettings_renditionName' - Optional. Specify media name
+newWebvttHlsSourceSettings ::
+  WebvttHlsSourceSettings
+newWebvttHlsSourceSettings =
+  WebvttHlsSourceSettings'
+    { renditionGroupId =
+        Prelude.Nothing,
+      renditionLanguageCode = Prelude.Nothing,
+      renditionName = Prelude.Nothing
+    }
+
+-- | Optional. Specify alternative group ID
+webvttHlsSourceSettings_renditionGroupId :: Lens.Lens' WebvttHlsSourceSettings (Prelude.Maybe Prelude.Text)
+webvttHlsSourceSettings_renditionGroupId = Lens.lens (\WebvttHlsSourceSettings' {renditionGroupId} -> renditionGroupId) (\s@WebvttHlsSourceSettings' {} a -> s {renditionGroupId = a} :: WebvttHlsSourceSettings)
+
+-- | Optional. Specify ISO 639-2 or ISO 639-3 code in the language property
+webvttHlsSourceSettings_renditionLanguageCode :: Lens.Lens' WebvttHlsSourceSettings (Prelude.Maybe LanguageCode)
+webvttHlsSourceSettings_renditionLanguageCode = Lens.lens (\WebvttHlsSourceSettings' {renditionLanguageCode} -> renditionLanguageCode) (\s@WebvttHlsSourceSettings' {} a -> s {renditionLanguageCode = a} :: WebvttHlsSourceSettings)
+
+-- | Optional. Specify media name
+webvttHlsSourceSettings_renditionName :: Lens.Lens' WebvttHlsSourceSettings (Prelude.Maybe Prelude.Text)
+webvttHlsSourceSettings_renditionName = Lens.lens (\WebvttHlsSourceSettings' {renditionName} -> renditionName) (\s@WebvttHlsSourceSettings' {} a -> s {renditionName = a} :: WebvttHlsSourceSettings)
+
+instance Data.FromJSON WebvttHlsSourceSettings where
+  parseJSON =
+    Data.withObject
+      "WebvttHlsSourceSettings"
+      ( \x ->
+          WebvttHlsSourceSettings'
+            Prelude.<$> (x Data..:? "renditionGroupId")
+            Prelude.<*> (x Data..:? "renditionLanguageCode")
+            Prelude.<*> (x Data..:? "renditionName")
+      )
+
+instance Prelude.Hashable WebvttHlsSourceSettings where
+  hashWithSalt _salt WebvttHlsSourceSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` renditionGroupId
+      `Prelude.hashWithSalt` renditionLanguageCode
+      `Prelude.hashWithSalt` renditionName
+
+instance Prelude.NFData WebvttHlsSourceSettings where
+  rnf WebvttHlsSourceSettings' {..} =
+    Prelude.rnf renditionGroupId
+      `Prelude.seq` Prelude.rnf renditionLanguageCode
+      `Prelude.seq` Prelude.rnf renditionName
+
+instance Data.ToJSON WebvttHlsSourceSettings where
+  toJSON WebvttHlsSourceSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("renditionGroupId" Data..=)
+              Prelude.<$> renditionGroupId,
+            ("renditionLanguageCode" Data..=)
+              Prelude.<$> renditionLanguageCode,
+            ("renditionName" Data..=) Prelude.<$> renditionName
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/WebvttStylePassthrough.hs b/gen/Amazonka/MediaConvert/Types/WebvttStylePassthrough.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/WebvttStylePassthrough.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.WebvttStylePassthrough
+-- 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.WebvttStylePassthrough
+  ( WebvttStylePassthrough
+      ( ..,
+        WebvttStylePassthrough_DISABLED,
+        WebvttStylePassthrough_ENABLED,
+        WebvttStylePassthrough_STRICT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | To use the available style, color, and position information from your
+-- input captions: Set Style passthrough (stylePassthrough) to Enabled
+-- (ENABLED). MediaConvert uses default settings when style and position
+-- information is missing from your input captions. To recreate the input
+-- captions exactly: Set Style passthrough to Strict (STRICT). MediaConvert
+-- automatically applies timing adjustments, including adjustments for
+-- frame rate conversion, ad avails, and input clipping. Your input
+-- captions format must be WebVTT. To ignore the style and position
+-- information from your input captions and use simplified output captions:
+-- Set Style passthrough to Disabled (DISABLED), or leave blank.
+newtype WebvttStylePassthrough = WebvttStylePassthrough'
+  { fromWebvttStylePassthrough ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern WebvttStylePassthrough_DISABLED :: WebvttStylePassthrough
+pattern WebvttStylePassthrough_DISABLED = WebvttStylePassthrough' "DISABLED"
+
+pattern WebvttStylePassthrough_ENABLED :: WebvttStylePassthrough
+pattern WebvttStylePassthrough_ENABLED = WebvttStylePassthrough' "ENABLED"
+
+pattern WebvttStylePassthrough_STRICT :: WebvttStylePassthrough
+pattern WebvttStylePassthrough_STRICT = WebvttStylePassthrough' "STRICT"
+
+{-# COMPLETE
+  WebvttStylePassthrough_DISABLED,
+  WebvttStylePassthrough_ENABLED,
+  WebvttStylePassthrough_STRICT,
+  WebvttStylePassthrough'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Xavc4kIntraCbgProfileClass.hs b/gen/Amazonka/MediaConvert/Types/Xavc4kIntraCbgProfileClass.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Xavc4kIntraCbgProfileClass.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Xavc4kIntraCbgProfileClass
+-- 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.Xavc4kIntraCbgProfileClass
+  ( Xavc4kIntraCbgProfileClass
+      ( ..,
+        Xavc4kIntraCbgProfileClass_CLASS_100,
+        Xavc4kIntraCbgProfileClass_CLASS_300,
+        Xavc4kIntraCbgProfileClass_CLASS_480
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the XAVC Intra 4k (CBG) Class to set the bitrate of your output.
+-- Outputs of the same class have similar image quality over the operating
+-- points that are valid for that class.
+newtype Xavc4kIntraCbgProfileClass = Xavc4kIntraCbgProfileClass'
+  { fromXavc4kIntraCbgProfileClass ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Xavc4kIntraCbgProfileClass_CLASS_100 :: Xavc4kIntraCbgProfileClass
+pattern Xavc4kIntraCbgProfileClass_CLASS_100 = Xavc4kIntraCbgProfileClass' "CLASS_100"
+
+pattern Xavc4kIntraCbgProfileClass_CLASS_300 :: Xavc4kIntraCbgProfileClass
+pattern Xavc4kIntraCbgProfileClass_CLASS_300 = Xavc4kIntraCbgProfileClass' "CLASS_300"
+
+pattern Xavc4kIntraCbgProfileClass_CLASS_480 :: Xavc4kIntraCbgProfileClass
+pattern Xavc4kIntraCbgProfileClass_CLASS_480 = Xavc4kIntraCbgProfileClass' "CLASS_480"
+
+{-# COMPLETE
+  Xavc4kIntraCbgProfileClass_CLASS_100,
+  Xavc4kIntraCbgProfileClass_CLASS_300,
+  Xavc4kIntraCbgProfileClass_CLASS_480,
+  Xavc4kIntraCbgProfileClass'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Xavc4kIntraCbgProfileSettings.hs b/gen/Amazonka/MediaConvert/Types/Xavc4kIntraCbgProfileSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Xavc4kIntraCbgProfileSettings.hs
@@ -0,0 +1,91 @@
+{-# 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.Xavc4kIntraCbgProfileSettings
+-- 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.Xavc4kIntraCbgProfileSettings 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.Xavc4kIntraCbgProfileClass
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value
+-- XAVC_4K_INTRA_CBG.
+--
+-- /See:/ 'newXavc4kIntraCbgProfileSettings' smart constructor.
+data Xavc4kIntraCbgProfileSettings = Xavc4kIntraCbgProfileSettings'
+  { -- | Specify the XAVC Intra 4k (CBG) Class to set the bitrate of your output.
+    -- Outputs of the same class have similar image quality over the operating
+    -- points that are valid for that class.
+    xavcClass :: Prelude.Maybe Xavc4kIntraCbgProfileClass
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Xavc4kIntraCbgProfileSettings' 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:
+--
+-- 'xavcClass', 'xavc4kIntraCbgProfileSettings_xavcClass' - Specify the XAVC Intra 4k (CBG) Class to set the bitrate of your output.
+-- Outputs of the same class have similar image quality over the operating
+-- points that are valid for that class.
+newXavc4kIntraCbgProfileSettings ::
+  Xavc4kIntraCbgProfileSettings
+newXavc4kIntraCbgProfileSettings =
+  Xavc4kIntraCbgProfileSettings'
+    { xavcClass =
+        Prelude.Nothing
+    }
+
+-- | Specify the XAVC Intra 4k (CBG) Class to set the bitrate of your output.
+-- Outputs of the same class have similar image quality over the operating
+-- points that are valid for that class.
+xavc4kIntraCbgProfileSettings_xavcClass :: Lens.Lens' Xavc4kIntraCbgProfileSettings (Prelude.Maybe Xavc4kIntraCbgProfileClass)
+xavc4kIntraCbgProfileSettings_xavcClass = Lens.lens (\Xavc4kIntraCbgProfileSettings' {xavcClass} -> xavcClass) (\s@Xavc4kIntraCbgProfileSettings' {} a -> s {xavcClass = a} :: Xavc4kIntraCbgProfileSettings)
+
+instance Data.FromJSON Xavc4kIntraCbgProfileSettings where
+  parseJSON =
+    Data.withObject
+      "Xavc4kIntraCbgProfileSettings"
+      ( \x ->
+          Xavc4kIntraCbgProfileSettings'
+            Prelude.<$> (x Data..:? "xavcClass")
+      )
+
+instance
+  Prelude.Hashable
+    Xavc4kIntraCbgProfileSettings
+  where
+  hashWithSalt _salt Xavc4kIntraCbgProfileSettings' {..} =
+    _salt `Prelude.hashWithSalt` xavcClass
+
+instance Prelude.NFData Xavc4kIntraCbgProfileSettings where
+  rnf Xavc4kIntraCbgProfileSettings' {..} =
+    Prelude.rnf xavcClass
+
+instance Data.ToJSON Xavc4kIntraCbgProfileSettings where
+  toJSON Xavc4kIntraCbgProfileSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("xavcClass" Data..=) Prelude.<$> xavcClass]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Xavc4kIntraVbrProfileClass.hs b/gen/Amazonka/MediaConvert/Types/Xavc4kIntraVbrProfileClass.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Xavc4kIntraVbrProfileClass.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Xavc4kIntraVbrProfileClass
+-- 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.Xavc4kIntraVbrProfileClass
+  ( Xavc4kIntraVbrProfileClass
+      ( ..,
+        Xavc4kIntraVbrProfileClass_CLASS_100,
+        Xavc4kIntraVbrProfileClass_CLASS_300,
+        Xavc4kIntraVbrProfileClass_CLASS_480
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the XAVC Intra 4k (VBR) Class to set the bitrate of your output.
+-- Outputs of the same class have similar image quality over the operating
+-- points that are valid for that class.
+newtype Xavc4kIntraVbrProfileClass = Xavc4kIntraVbrProfileClass'
+  { fromXavc4kIntraVbrProfileClass ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Xavc4kIntraVbrProfileClass_CLASS_100 :: Xavc4kIntraVbrProfileClass
+pattern Xavc4kIntraVbrProfileClass_CLASS_100 = Xavc4kIntraVbrProfileClass' "CLASS_100"
+
+pattern Xavc4kIntraVbrProfileClass_CLASS_300 :: Xavc4kIntraVbrProfileClass
+pattern Xavc4kIntraVbrProfileClass_CLASS_300 = Xavc4kIntraVbrProfileClass' "CLASS_300"
+
+pattern Xavc4kIntraVbrProfileClass_CLASS_480 :: Xavc4kIntraVbrProfileClass
+pattern Xavc4kIntraVbrProfileClass_CLASS_480 = Xavc4kIntraVbrProfileClass' "CLASS_480"
+
+{-# COMPLETE
+  Xavc4kIntraVbrProfileClass_CLASS_100,
+  Xavc4kIntraVbrProfileClass_CLASS_300,
+  Xavc4kIntraVbrProfileClass_CLASS_480,
+  Xavc4kIntraVbrProfileClass'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Xavc4kIntraVbrProfileSettings.hs b/gen/Amazonka/MediaConvert/Types/Xavc4kIntraVbrProfileSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Xavc4kIntraVbrProfileSettings.hs
@@ -0,0 +1,91 @@
+{-# 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.Xavc4kIntraVbrProfileSettings
+-- 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.Xavc4kIntraVbrProfileSettings 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.Xavc4kIntraVbrProfileClass
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value
+-- XAVC_4K_INTRA_VBR.
+--
+-- /See:/ 'newXavc4kIntraVbrProfileSettings' smart constructor.
+data Xavc4kIntraVbrProfileSettings = Xavc4kIntraVbrProfileSettings'
+  { -- | Specify the XAVC Intra 4k (VBR) Class to set the bitrate of your output.
+    -- Outputs of the same class have similar image quality over the operating
+    -- points that are valid for that class.
+    xavcClass :: Prelude.Maybe Xavc4kIntraVbrProfileClass
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Xavc4kIntraVbrProfileSettings' 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:
+--
+-- 'xavcClass', 'xavc4kIntraVbrProfileSettings_xavcClass' - Specify the XAVC Intra 4k (VBR) Class to set the bitrate of your output.
+-- Outputs of the same class have similar image quality over the operating
+-- points that are valid for that class.
+newXavc4kIntraVbrProfileSettings ::
+  Xavc4kIntraVbrProfileSettings
+newXavc4kIntraVbrProfileSettings =
+  Xavc4kIntraVbrProfileSettings'
+    { xavcClass =
+        Prelude.Nothing
+    }
+
+-- | Specify the XAVC Intra 4k (VBR) Class to set the bitrate of your output.
+-- Outputs of the same class have similar image quality over the operating
+-- points that are valid for that class.
+xavc4kIntraVbrProfileSettings_xavcClass :: Lens.Lens' Xavc4kIntraVbrProfileSettings (Prelude.Maybe Xavc4kIntraVbrProfileClass)
+xavc4kIntraVbrProfileSettings_xavcClass = Lens.lens (\Xavc4kIntraVbrProfileSettings' {xavcClass} -> xavcClass) (\s@Xavc4kIntraVbrProfileSettings' {} a -> s {xavcClass = a} :: Xavc4kIntraVbrProfileSettings)
+
+instance Data.FromJSON Xavc4kIntraVbrProfileSettings where
+  parseJSON =
+    Data.withObject
+      "Xavc4kIntraVbrProfileSettings"
+      ( \x ->
+          Xavc4kIntraVbrProfileSettings'
+            Prelude.<$> (x Data..:? "xavcClass")
+      )
+
+instance
+  Prelude.Hashable
+    Xavc4kIntraVbrProfileSettings
+  where
+  hashWithSalt _salt Xavc4kIntraVbrProfileSettings' {..} =
+    _salt `Prelude.hashWithSalt` xavcClass
+
+instance Prelude.NFData Xavc4kIntraVbrProfileSettings where
+  rnf Xavc4kIntraVbrProfileSettings' {..} =
+    Prelude.rnf xavcClass
+
+instance Data.ToJSON Xavc4kIntraVbrProfileSettings where
+  toJSON Xavc4kIntraVbrProfileSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("xavcClass" Data..=) Prelude.<$> xavcClass]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/Xavc4kProfileBitrateClass.hs b/gen/Amazonka/MediaConvert/Types/Xavc4kProfileBitrateClass.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Xavc4kProfileBitrateClass.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Xavc4kProfileBitrateClass
+-- 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.Xavc4kProfileBitrateClass
+  ( Xavc4kProfileBitrateClass
+      ( ..,
+        Xavc4kProfileBitrateClass_BITRATE_CLASS_100,
+        Xavc4kProfileBitrateClass_BITRATE_CLASS_140,
+        Xavc4kProfileBitrateClass_BITRATE_CLASS_200
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the XAVC 4k (Long GOP) Bitrate Class to set the bitrate of your
+-- output. Outputs of the same class have similar image quality over the
+-- operating points that are valid for that class.
+newtype Xavc4kProfileBitrateClass = Xavc4kProfileBitrateClass'
+  { fromXavc4kProfileBitrateClass ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Xavc4kProfileBitrateClass_BITRATE_CLASS_100 :: Xavc4kProfileBitrateClass
+pattern Xavc4kProfileBitrateClass_BITRATE_CLASS_100 = Xavc4kProfileBitrateClass' "BITRATE_CLASS_100"
+
+pattern Xavc4kProfileBitrateClass_BITRATE_CLASS_140 :: Xavc4kProfileBitrateClass
+pattern Xavc4kProfileBitrateClass_BITRATE_CLASS_140 = Xavc4kProfileBitrateClass' "BITRATE_CLASS_140"
+
+pattern Xavc4kProfileBitrateClass_BITRATE_CLASS_200 :: Xavc4kProfileBitrateClass
+pattern Xavc4kProfileBitrateClass_BITRATE_CLASS_200 = Xavc4kProfileBitrateClass' "BITRATE_CLASS_200"
+
+{-# COMPLETE
+  Xavc4kProfileBitrateClass_BITRATE_CLASS_100,
+  Xavc4kProfileBitrateClass_BITRATE_CLASS_140,
+  Xavc4kProfileBitrateClass_BITRATE_CLASS_200,
+  Xavc4kProfileBitrateClass'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Xavc4kProfileCodecProfile.hs b/gen/Amazonka/MediaConvert/Types/Xavc4kProfileCodecProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Xavc4kProfileCodecProfile.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Xavc4kProfileCodecProfile
+-- 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.Xavc4kProfileCodecProfile
+  ( Xavc4kProfileCodecProfile
+      ( ..,
+        Xavc4kProfileCodecProfile_HIGH,
+        Xavc4kProfileCodecProfile_HIGH_422
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the codec profile for this output. Choose High, 8-bit, 4:2:0
+-- (HIGH) or High, 10-bit, 4:2:2 (HIGH_422). These profiles are specified
+-- in ITU-T H.264.
+newtype Xavc4kProfileCodecProfile = Xavc4kProfileCodecProfile'
+  { fromXavc4kProfileCodecProfile ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Xavc4kProfileCodecProfile_HIGH :: Xavc4kProfileCodecProfile
+pattern Xavc4kProfileCodecProfile_HIGH = Xavc4kProfileCodecProfile' "HIGH"
+
+pattern Xavc4kProfileCodecProfile_HIGH_422 :: Xavc4kProfileCodecProfile
+pattern Xavc4kProfileCodecProfile_HIGH_422 = Xavc4kProfileCodecProfile' "HIGH_422"
+
+{-# COMPLETE
+  Xavc4kProfileCodecProfile_HIGH,
+  Xavc4kProfileCodecProfile_HIGH_422,
+  Xavc4kProfileCodecProfile'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Xavc4kProfileQualityTuningLevel.hs b/gen/Amazonka/MediaConvert/Types/Xavc4kProfileQualityTuningLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Xavc4kProfileQualityTuningLevel.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.Xavc4kProfileQualityTuningLevel
+-- 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.Xavc4kProfileQualityTuningLevel
+  ( Xavc4kProfileQualityTuningLevel
+      ( ..,
+        Xavc4kProfileQualityTuningLevel_MULTI_PASS_HQ,
+        Xavc4kProfileQualityTuningLevel_SINGLE_PASS,
+        Xavc4kProfileQualityTuningLevel_SINGLE_PASS_HQ
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+newtype Xavc4kProfileQualityTuningLevel = Xavc4kProfileQualityTuningLevel'
+  { fromXavc4kProfileQualityTuningLevel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Xavc4kProfileQualityTuningLevel_MULTI_PASS_HQ :: Xavc4kProfileQualityTuningLevel
+pattern Xavc4kProfileQualityTuningLevel_MULTI_PASS_HQ = Xavc4kProfileQualityTuningLevel' "MULTI_PASS_HQ"
+
+pattern Xavc4kProfileQualityTuningLevel_SINGLE_PASS :: Xavc4kProfileQualityTuningLevel
+pattern Xavc4kProfileQualityTuningLevel_SINGLE_PASS = Xavc4kProfileQualityTuningLevel' "SINGLE_PASS"
+
+pattern Xavc4kProfileQualityTuningLevel_SINGLE_PASS_HQ :: Xavc4kProfileQualityTuningLevel
+pattern Xavc4kProfileQualityTuningLevel_SINGLE_PASS_HQ = Xavc4kProfileQualityTuningLevel' "SINGLE_PASS_HQ"
+
+{-# COMPLETE
+  Xavc4kProfileQualityTuningLevel_MULTI_PASS_HQ,
+  Xavc4kProfileQualityTuningLevel_SINGLE_PASS,
+  Xavc4kProfileQualityTuningLevel_SINGLE_PASS_HQ,
+  Xavc4kProfileQualityTuningLevel'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/Xavc4kProfileSettings.hs b/gen/Amazonka/MediaConvert/Types/Xavc4kProfileSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/Xavc4kProfileSettings.hs
@@ -0,0 +1,280 @@
+{-# 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.Xavc4kProfileSettings
+-- 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.Xavc4kProfileSettings 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.Xavc4kProfileBitrateClass
+import Amazonka.MediaConvert.Types.Xavc4kProfileCodecProfile
+import Amazonka.MediaConvert.Types.Xavc4kProfileQualityTuningLevel
+import Amazonka.MediaConvert.Types.XavcFlickerAdaptiveQuantization
+import Amazonka.MediaConvert.Types.XavcGopBReference
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value XAVC_4K.
+--
+-- /See:/ 'newXavc4kProfileSettings' smart constructor.
+data Xavc4kProfileSettings = Xavc4kProfileSettings'
+  { -- | Specify the XAVC 4k (Long GOP) Bitrate Class to set the bitrate of your
+    -- output. Outputs of the same class have similar image quality over the
+    -- operating points that are valid for that class.
+    bitrateClass :: Prelude.Maybe Xavc4kProfileBitrateClass,
+    -- | Specify the codec profile for this output. Choose High, 8-bit, 4:2:0
+    -- (HIGH) or High, 10-bit, 4:2:2 (HIGH_422). These profiles are specified
+    -- in ITU-T H.264.
+    codecProfile :: Prelude.Maybe Xavc4kProfileCodecProfile,
+    -- | The best way to set up adaptive quantization is to keep the default
+    -- value, Auto (AUTO), for the setting Adaptive quantization
+    -- (XavcAdaptiveQuantization). When you do so, MediaConvert automatically
+    -- applies the best types of quantization for your video content. Include
+    -- this setting in your JSON job specification only when you choose to
+    -- change the default value for Adaptive quantization. Enable this setting
+    -- to have the encoder reduce I-frame pop. I-frame pop appears as a visual
+    -- flicker that can arise when the encoder saves bits by copying some
+    -- macroblocks many times from frame to frame, and then refreshes them at
+    -- the I-frame. When you enable this setting, the encoder updates these
+    -- macroblocks slightly more often to smooth out the flicker. This setting
+    -- is disabled by default. Related setting: In addition to enabling this
+    -- setting, you must also set Adaptive quantization (adaptiveQuantization)
+    -- to a value other than Off (OFF) or Auto (AUTO). Use Adaptive
+    -- quantization to adjust the degree of smoothing that Flicker adaptive
+    -- quantization provides.
+    flickerAdaptiveQuantization :: Prelude.Maybe XavcFlickerAdaptiveQuantization,
+    -- | Specify whether the encoder uses B-frames as reference frames for other
+    -- pictures in the same GOP. Choose Allow (ENABLED) to allow the encoder to
+    -- use B-frames as reference frames. Choose Don\'t allow (DISABLED) to
+    -- prevent the encoder from using B-frames as reference frames.
+    gopBReference :: Prelude.Maybe XavcGopBReference,
+    -- | Frequency of closed GOPs. In streaming applications, it is recommended
+    -- that this be set to 1 so a decoder joining mid-stream will receive an
+    -- IDR frame as quickly as possible. Setting this value to 0 will break
+    -- output segmenting.
+    gopClosedCadence :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the size of the buffer that MediaConvert uses in the HRD buffer
+    -- model for this output. Specify this value in bits; for example, enter
+    -- five megabits as 5000000. When you don\'t set this value, or you set it
+    -- to zero, MediaConvert calculates the default by doubling the bitrate of
+    -- this output point.
+    hrdBufferSize :: Prelude.Maybe Prelude.Natural,
+    -- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+    -- you want to trade off encoding speed for output video quality. The
+    -- default behavior is faster, lower quality, single-pass encoding.
+    qualityTuningLevel :: Prelude.Maybe Xavc4kProfileQualityTuningLevel,
+    -- | Number of slices per picture. Must be less than or equal to the number
+    -- of macroblock rows for progressive pictures, and less than or equal to
+    -- half the number of macroblock rows for interlaced pictures.
+    slices :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Xavc4kProfileSettings' 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:
+--
+-- 'bitrateClass', 'xavc4kProfileSettings_bitrateClass' - Specify the XAVC 4k (Long GOP) Bitrate Class to set the bitrate of your
+-- output. Outputs of the same class have similar image quality over the
+-- operating points that are valid for that class.
+--
+-- 'codecProfile', 'xavc4kProfileSettings_codecProfile' - Specify the codec profile for this output. Choose High, 8-bit, 4:2:0
+-- (HIGH) or High, 10-bit, 4:2:2 (HIGH_422). These profiles are specified
+-- in ITU-T H.264.
+--
+-- 'flickerAdaptiveQuantization', 'xavc4kProfileSettings_flickerAdaptiveQuantization' - The best way to set up adaptive quantization is to keep the default
+-- value, Auto (AUTO), for the setting Adaptive quantization
+-- (XavcAdaptiveQuantization). When you do so, MediaConvert automatically
+-- applies the best types of quantization for your video content. Include
+-- this setting in your JSON job specification only when you choose to
+-- change the default value for Adaptive quantization. Enable this setting
+-- to have the encoder reduce I-frame pop. I-frame pop appears as a visual
+-- flicker that can arise when the encoder saves bits by copying some
+-- macroblocks many times from frame to frame, and then refreshes them at
+-- the I-frame. When you enable this setting, the encoder updates these
+-- macroblocks slightly more often to smooth out the flicker. This setting
+-- is disabled by default. Related setting: In addition to enabling this
+-- setting, you must also set Adaptive quantization (adaptiveQuantization)
+-- to a value other than Off (OFF) or Auto (AUTO). Use Adaptive
+-- quantization to adjust the degree of smoothing that Flicker adaptive
+-- quantization provides.
+--
+-- 'gopBReference', 'xavc4kProfileSettings_gopBReference' - Specify whether the encoder uses B-frames as reference frames for other
+-- pictures in the same GOP. Choose Allow (ENABLED) to allow the encoder to
+-- use B-frames as reference frames. Choose Don\'t allow (DISABLED) to
+-- prevent the encoder from using B-frames as reference frames.
+--
+-- 'gopClosedCadence', 'xavc4kProfileSettings_gopClosedCadence' - Frequency of closed GOPs. In streaming applications, it is recommended
+-- that this be set to 1 so a decoder joining mid-stream will receive an
+-- IDR frame as quickly as possible. Setting this value to 0 will break
+-- output segmenting.
+--
+-- 'hrdBufferSize', 'xavc4kProfileSettings_hrdBufferSize' - Specify the size of the buffer that MediaConvert uses in the HRD buffer
+-- model for this output. Specify this value in bits; for example, enter
+-- five megabits as 5000000. When you don\'t set this value, or you set it
+-- to zero, MediaConvert calculates the default by doubling the bitrate of
+-- this output point.
+--
+-- 'qualityTuningLevel', 'xavc4kProfileSettings_qualityTuningLevel' - Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+--
+-- 'slices', 'xavc4kProfileSettings_slices' - Number of slices per picture. Must be less than or equal to the number
+-- of macroblock rows for progressive pictures, and less than or equal to
+-- half the number of macroblock rows for interlaced pictures.
+newXavc4kProfileSettings ::
+  Xavc4kProfileSettings
+newXavc4kProfileSettings =
+  Xavc4kProfileSettings'
+    { bitrateClass =
+        Prelude.Nothing,
+      codecProfile = Prelude.Nothing,
+      flickerAdaptiveQuantization = Prelude.Nothing,
+      gopBReference = Prelude.Nothing,
+      gopClosedCadence = Prelude.Nothing,
+      hrdBufferSize = Prelude.Nothing,
+      qualityTuningLevel = Prelude.Nothing,
+      slices = Prelude.Nothing
+    }
+
+-- | Specify the XAVC 4k (Long GOP) Bitrate Class to set the bitrate of your
+-- output. Outputs of the same class have similar image quality over the
+-- operating points that are valid for that class.
+xavc4kProfileSettings_bitrateClass :: Lens.Lens' Xavc4kProfileSettings (Prelude.Maybe Xavc4kProfileBitrateClass)
+xavc4kProfileSettings_bitrateClass = Lens.lens (\Xavc4kProfileSettings' {bitrateClass} -> bitrateClass) (\s@Xavc4kProfileSettings' {} a -> s {bitrateClass = a} :: Xavc4kProfileSettings)
+
+-- | Specify the codec profile for this output. Choose High, 8-bit, 4:2:0
+-- (HIGH) or High, 10-bit, 4:2:2 (HIGH_422). These profiles are specified
+-- in ITU-T H.264.
+xavc4kProfileSettings_codecProfile :: Lens.Lens' Xavc4kProfileSettings (Prelude.Maybe Xavc4kProfileCodecProfile)
+xavc4kProfileSettings_codecProfile = Lens.lens (\Xavc4kProfileSettings' {codecProfile} -> codecProfile) (\s@Xavc4kProfileSettings' {} a -> s {codecProfile = a} :: Xavc4kProfileSettings)
+
+-- | The best way to set up adaptive quantization is to keep the default
+-- value, Auto (AUTO), for the setting Adaptive quantization
+-- (XavcAdaptiveQuantization). When you do so, MediaConvert automatically
+-- applies the best types of quantization for your video content. Include
+-- this setting in your JSON job specification only when you choose to
+-- change the default value for Adaptive quantization. Enable this setting
+-- to have the encoder reduce I-frame pop. I-frame pop appears as a visual
+-- flicker that can arise when the encoder saves bits by copying some
+-- macroblocks many times from frame to frame, and then refreshes them at
+-- the I-frame. When you enable this setting, the encoder updates these
+-- macroblocks slightly more often to smooth out the flicker. This setting
+-- is disabled by default. Related setting: In addition to enabling this
+-- setting, you must also set Adaptive quantization (adaptiveQuantization)
+-- to a value other than Off (OFF) or Auto (AUTO). Use Adaptive
+-- quantization to adjust the degree of smoothing that Flicker adaptive
+-- quantization provides.
+xavc4kProfileSettings_flickerAdaptiveQuantization :: Lens.Lens' Xavc4kProfileSettings (Prelude.Maybe XavcFlickerAdaptiveQuantization)
+xavc4kProfileSettings_flickerAdaptiveQuantization = Lens.lens (\Xavc4kProfileSettings' {flickerAdaptiveQuantization} -> flickerAdaptiveQuantization) (\s@Xavc4kProfileSettings' {} a -> s {flickerAdaptiveQuantization = a} :: Xavc4kProfileSettings)
+
+-- | Specify whether the encoder uses B-frames as reference frames for other
+-- pictures in the same GOP. Choose Allow (ENABLED) to allow the encoder to
+-- use B-frames as reference frames. Choose Don\'t allow (DISABLED) to
+-- prevent the encoder from using B-frames as reference frames.
+xavc4kProfileSettings_gopBReference :: Lens.Lens' Xavc4kProfileSettings (Prelude.Maybe XavcGopBReference)
+xavc4kProfileSettings_gopBReference = Lens.lens (\Xavc4kProfileSettings' {gopBReference} -> gopBReference) (\s@Xavc4kProfileSettings' {} a -> s {gopBReference = a} :: Xavc4kProfileSettings)
+
+-- | Frequency of closed GOPs. In streaming applications, it is recommended
+-- that this be set to 1 so a decoder joining mid-stream will receive an
+-- IDR frame as quickly as possible. Setting this value to 0 will break
+-- output segmenting.
+xavc4kProfileSettings_gopClosedCadence :: Lens.Lens' Xavc4kProfileSettings (Prelude.Maybe Prelude.Natural)
+xavc4kProfileSettings_gopClosedCadence = Lens.lens (\Xavc4kProfileSettings' {gopClosedCadence} -> gopClosedCadence) (\s@Xavc4kProfileSettings' {} a -> s {gopClosedCadence = a} :: Xavc4kProfileSettings)
+
+-- | Specify the size of the buffer that MediaConvert uses in the HRD buffer
+-- model for this output. Specify this value in bits; for example, enter
+-- five megabits as 5000000. When you don\'t set this value, or you set it
+-- to zero, MediaConvert calculates the default by doubling the bitrate of
+-- this output point.
+xavc4kProfileSettings_hrdBufferSize :: Lens.Lens' Xavc4kProfileSettings (Prelude.Maybe Prelude.Natural)
+xavc4kProfileSettings_hrdBufferSize = Lens.lens (\Xavc4kProfileSettings' {hrdBufferSize} -> hrdBufferSize) (\s@Xavc4kProfileSettings' {} a -> s {hrdBufferSize = a} :: Xavc4kProfileSettings)
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+xavc4kProfileSettings_qualityTuningLevel :: Lens.Lens' Xavc4kProfileSettings (Prelude.Maybe Xavc4kProfileQualityTuningLevel)
+xavc4kProfileSettings_qualityTuningLevel = Lens.lens (\Xavc4kProfileSettings' {qualityTuningLevel} -> qualityTuningLevel) (\s@Xavc4kProfileSettings' {} a -> s {qualityTuningLevel = a} :: Xavc4kProfileSettings)
+
+-- | Number of slices per picture. Must be less than or equal to the number
+-- of macroblock rows for progressive pictures, and less than or equal to
+-- half the number of macroblock rows for interlaced pictures.
+xavc4kProfileSettings_slices :: Lens.Lens' Xavc4kProfileSettings (Prelude.Maybe Prelude.Natural)
+xavc4kProfileSettings_slices = Lens.lens (\Xavc4kProfileSettings' {slices} -> slices) (\s@Xavc4kProfileSettings' {} a -> s {slices = a} :: Xavc4kProfileSettings)
+
+instance Data.FromJSON Xavc4kProfileSettings where
+  parseJSON =
+    Data.withObject
+      "Xavc4kProfileSettings"
+      ( \x ->
+          Xavc4kProfileSettings'
+            Prelude.<$> (x Data..:? "bitrateClass")
+            Prelude.<*> (x Data..:? "codecProfile")
+            Prelude.<*> (x Data..:? "flickerAdaptiveQuantization")
+            Prelude.<*> (x Data..:? "gopBReference")
+            Prelude.<*> (x Data..:? "gopClosedCadence")
+            Prelude.<*> (x Data..:? "hrdBufferSize")
+            Prelude.<*> (x Data..:? "qualityTuningLevel")
+            Prelude.<*> (x Data..:? "slices")
+      )
+
+instance Prelude.Hashable Xavc4kProfileSettings where
+  hashWithSalt _salt Xavc4kProfileSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` bitrateClass
+      `Prelude.hashWithSalt` codecProfile
+      `Prelude.hashWithSalt` flickerAdaptiveQuantization
+      `Prelude.hashWithSalt` gopBReference
+      `Prelude.hashWithSalt` gopClosedCadence
+      `Prelude.hashWithSalt` hrdBufferSize
+      `Prelude.hashWithSalt` qualityTuningLevel
+      `Prelude.hashWithSalt` slices
+
+instance Prelude.NFData Xavc4kProfileSettings where
+  rnf Xavc4kProfileSettings' {..} =
+    Prelude.rnf bitrateClass
+      `Prelude.seq` Prelude.rnf codecProfile
+      `Prelude.seq` Prelude.rnf flickerAdaptiveQuantization
+      `Prelude.seq` Prelude.rnf gopBReference
+      `Prelude.seq` Prelude.rnf gopClosedCadence
+      `Prelude.seq` Prelude.rnf hrdBufferSize
+      `Prelude.seq` Prelude.rnf qualityTuningLevel
+      `Prelude.seq` Prelude.rnf slices
+
+instance Data.ToJSON Xavc4kProfileSettings where
+  toJSON Xavc4kProfileSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bitrateClass" Data..=) Prelude.<$> bitrateClass,
+            ("codecProfile" Data..=) Prelude.<$> codecProfile,
+            ("flickerAdaptiveQuantization" Data..=)
+              Prelude.<$> flickerAdaptiveQuantization,
+            ("gopBReference" Data..=) Prelude.<$> gopBReference,
+            ("gopClosedCadence" Data..=)
+              Prelude.<$> gopClosedCadence,
+            ("hrdBufferSize" Data..=) Prelude.<$> hrdBufferSize,
+            ("qualityTuningLevel" Data..=)
+              Prelude.<$> qualityTuningLevel,
+            ("slices" Data..=) Prelude.<$> slices
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/XavcAdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/XavcAdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcAdaptiveQuantization.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcAdaptiveQuantization
+-- 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.XavcAdaptiveQuantization
+  ( XavcAdaptiveQuantization
+      ( ..,
+        XavcAdaptiveQuantization_AUTO,
+        XavcAdaptiveQuantization_HIGH,
+        XavcAdaptiveQuantization_HIGHER,
+        XavcAdaptiveQuantization_LOW,
+        XavcAdaptiveQuantization_MAX,
+        XavcAdaptiveQuantization_MEDIUM,
+        XavcAdaptiveQuantization_OFF
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Keep the default value, Auto (AUTO), for this setting to have
+-- MediaConvert automatically apply the best types of quantization for your
+-- video content. When you want to apply your quantization settings
+-- manually, you must set Adaptive quantization (adaptiveQuantization) to a
+-- value other than Auto (AUTO). Use this setting to specify the strength
+-- of any adaptive quantization filters that you enable. If you don\'t want
+-- MediaConvert to do any adaptive quantization in this transcode, set
+-- Adaptive quantization to Off (OFF). Related settings: The value that you
+-- choose here applies to the following settings: Flicker adaptive
+-- quantization (flickerAdaptiveQuantization), Spatial adaptive
+-- quantization (spatialAdaptiveQuantization), and Temporal adaptive
+-- quantization (temporalAdaptiveQuantization).
+newtype XavcAdaptiveQuantization = XavcAdaptiveQuantization'
+  { fromXavcAdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcAdaptiveQuantization_AUTO :: XavcAdaptiveQuantization
+pattern XavcAdaptiveQuantization_AUTO = XavcAdaptiveQuantization' "AUTO"
+
+pattern XavcAdaptiveQuantization_HIGH :: XavcAdaptiveQuantization
+pattern XavcAdaptiveQuantization_HIGH = XavcAdaptiveQuantization' "HIGH"
+
+pattern XavcAdaptiveQuantization_HIGHER :: XavcAdaptiveQuantization
+pattern XavcAdaptiveQuantization_HIGHER = XavcAdaptiveQuantization' "HIGHER"
+
+pattern XavcAdaptiveQuantization_LOW :: XavcAdaptiveQuantization
+pattern XavcAdaptiveQuantization_LOW = XavcAdaptiveQuantization' "LOW"
+
+pattern XavcAdaptiveQuantization_MAX :: XavcAdaptiveQuantization
+pattern XavcAdaptiveQuantization_MAX = XavcAdaptiveQuantization' "MAX"
+
+pattern XavcAdaptiveQuantization_MEDIUM :: XavcAdaptiveQuantization
+pattern XavcAdaptiveQuantization_MEDIUM = XavcAdaptiveQuantization' "MEDIUM"
+
+pattern XavcAdaptiveQuantization_OFF :: XavcAdaptiveQuantization
+pattern XavcAdaptiveQuantization_OFF = XavcAdaptiveQuantization' "OFF"
+
+{-# COMPLETE
+  XavcAdaptiveQuantization_AUTO,
+  XavcAdaptiveQuantization_HIGH,
+  XavcAdaptiveQuantization_HIGHER,
+  XavcAdaptiveQuantization_LOW,
+  XavcAdaptiveQuantization_MAX,
+  XavcAdaptiveQuantization_MEDIUM,
+  XavcAdaptiveQuantization_OFF,
+  XavcAdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcEntropyEncoding.hs b/gen/Amazonka/MediaConvert/Types/XavcEntropyEncoding.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcEntropyEncoding.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcEntropyEncoding
+-- 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.XavcEntropyEncoding
+  ( XavcEntropyEncoding
+      ( ..,
+        XavcEntropyEncoding_AUTO,
+        XavcEntropyEncoding_CABAC,
+        XavcEntropyEncoding_CAVLC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Choose a specific entropy encoding mode only when you want to
+-- override XAVC recommendations. If you choose the value auto,
+-- MediaConvert uses the mode that the XAVC file format specifies given
+-- this output\'s operating point.
+newtype XavcEntropyEncoding = XavcEntropyEncoding'
+  { fromXavcEntropyEncoding ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcEntropyEncoding_AUTO :: XavcEntropyEncoding
+pattern XavcEntropyEncoding_AUTO = XavcEntropyEncoding' "AUTO"
+
+pattern XavcEntropyEncoding_CABAC :: XavcEntropyEncoding
+pattern XavcEntropyEncoding_CABAC = XavcEntropyEncoding' "CABAC"
+
+pattern XavcEntropyEncoding_CAVLC :: XavcEntropyEncoding
+pattern XavcEntropyEncoding_CAVLC = XavcEntropyEncoding' "CAVLC"
+
+{-# COMPLETE
+  XavcEntropyEncoding_AUTO,
+  XavcEntropyEncoding_CABAC,
+  XavcEntropyEncoding_CAVLC,
+  XavcEntropyEncoding'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcFlickerAdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/XavcFlickerAdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcFlickerAdaptiveQuantization.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcFlickerAdaptiveQuantization
+-- 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.XavcFlickerAdaptiveQuantization
+  ( XavcFlickerAdaptiveQuantization
+      ( ..,
+        XavcFlickerAdaptiveQuantization_DISABLED,
+        XavcFlickerAdaptiveQuantization_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The best way to set up adaptive quantization is to keep the default
+-- value, Auto (AUTO), for the setting Adaptive quantization
+-- (XavcAdaptiveQuantization). When you do so, MediaConvert automatically
+-- applies the best types of quantization for your video content. Include
+-- this setting in your JSON job specification only when you choose to
+-- change the default value for Adaptive quantization. Enable this setting
+-- to have the encoder reduce I-frame pop. I-frame pop appears as a visual
+-- flicker that can arise when the encoder saves bits by copying some
+-- macroblocks many times from frame to frame, and then refreshes them at
+-- the I-frame. When you enable this setting, the encoder updates these
+-- macroblocks slightly more often to smooth out the flicker. This setting
+-- is disabled by default. Related setting: In addition to enabling this
+-- setting, you must also set Adaptive quantization (adaptiveQuantization)
+-- to a value other than Off (OFF) or Auto (AUTO). Use Adaptive
+-- quantization to adjust the degree of smoothing that Flicker adaptive
+-- quantization provides.
+newtype XavcFlickerAdaptiveQuantization = XavcFlickerAdaptiveQuantization'
+  { fromXavcFlickerAdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcFlickerAdaptiveQuantization_DISABLED :: XavcFlickerAdaptiveQuantization
+pattern XavcFlickerAdaptiveQuantization_DISABLED = XavcFlickerAdaptiveQuantization' "DISABLED"
+
+pattern XavcFlickerAdaptiveQuantization_ENABLED :: XavcFlickerAdaptiveQuantization
+pattern XavcFlickerAdaptiveQuantization_ENABLED = XavcFlickerAdaptiveQuantization' "ENABLED"
+
+{-# COMPLETE
+  XavcFlickerAdaptiveQuantization_DISABLED,
+  XavcFlickerAdaptiveQuantization_ENABLED,
+  XavcFlickerAdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcFramerateControl.hs b/gen/Amazonka/MediaConvert/Types/XavcFramerateControl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcFramerateControl.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcFramerateControl
+-- 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.XavcFramerateControl
+  ( XavcFramerateControl
+      ( ..,
+        XavcFramerateControl_INITIALIZE_FROM_SOURCE,
+        XavcFramerateControl_SPECIFIED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | If you are using the console, use the Frame rate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list. The framerates
+-- shown in the dropdown list are decimal approximations of fractions. If
+-- you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate that you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+newtype XavcFramerateControl = XavcFramerateControl'
+  { fromXavcFramerateControl ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcFramerateControl_INITIALIZE_FROM_SOURCE :: XavcFramerateControl
+pattern XavcFramerateControl_INITIALIZE_FROM_SOURCE = XavcFramerateControl' "INITIALIZE_FROM_SOURCE"
+
+pattern XavcFramerateControl_SPECIFIED :: XavcFramerateControl
+pattern XavcFramerateControl_SPECIFIED = XavcFramerateControl' "SPECIFIED"
+
+{-# COMPLETE
+  XavcFramerateControl_INITIALIZE_FROM_SOURCE,
+  XavcFramerateControl_SPECIFIED,
+  XavcFramerateControl'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcFramerateConversionAlgorithm.hs b/gen/Amazonka/MediaConvert/Types/XavcFramerateConversionAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcFramerateConversionAlgorithm.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcFramerateConversionAlgorithm
+-- 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.XavcFramerateConversionAlgorithm
+  ( XavcFramerateConversionAlgorithm
+      ( ..,
+        XavcFramerateConversionAlgorithm_DUPLICATE_DROP,
+        XavcFramerateConversionAlgorithm_FRAMEFORMER,
+        XavcFramerateConversionAlgorithm_INTERPOLATE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+newtype XavcFramerateConversionAlgorithm = XavcFramerateConversionAlgorithm'
+  { fromXavcFramerateConversionAlgorithm ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcFramerateConversionAlgorithm_DUPLICATE_DROP :: XavcFramerateConversionAlgorithm
+pattern XavcFramerateConversionAlgorithm_DUPLICATE_DROP = XavcFramerateConversionAlgorithm' "DUPLICATE_DROP"
+
+pattern XavcFramerateConversionAlgorithm_FRAMEFORMER :: XavcFramerateConversionAlgorithm
+pattern XavcFramerateConversionAlgorithm_FRAMEFORMER = XavcFramerateConversionAlgorithm' "FRAMEFORMER"
+
+pattern XavcFramerateConversionAlgorithm_INTERPOLATE :: XavcFramerateConversionAlgorithm
+pattern XavcFramerateConversionAlgorithm_INTERPOLATE = XavcFramerateConversionAlgorithm' "INTERPOLATE"
+
+{-# COMPLETE
+  XavcFramerateConversionAlgorithm_DUPLICATE_DROP,
+  XavcFramerateConversionAlgorithm_FRAMEFORMER,
+  XavcFramerateConversionAlgorithm_INTERPOLATE,
+  XavcFramerateConversionAlgorithm'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcGopBReference.hs b/gen/Amazonka/MediaConvert/Types/XavcGopBReference.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcGopBReference.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcGopBReference
+-- 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.XavcGopBReference
+  ( XavcGopBReference
+      ( ..,
+        XavcGopBReference_DISABLED,
+        XavcGopBReference_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify whether the encoder uses B-frames as reference frames for other
+-- pictures in the same GOP. Choose Allow (ENABLED) to allow the encoder to
+-- use B-frames as reference frames. Choose Don\'t allow (DISABLED) to
+-- prevent the encoder from using B-frames as reference frames.
+newtype XavcGopBReference = XavcGopBReference'
+  { fromXavcGopBReference ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcGopBReference_DISABLED :: XavcGopBReference
+pattern XavcGopBReference_DISABLED = XavcGopBReference' "DISABLED"
+
+pattern XavcGopBReference_ENABLED :: XavcGopBReference
+pattern XavcGopBReference_ENABLED = XavcGopBReference' "ENABLED"
+
+{-# COMPLETE
+  XavcGopBReference_DISABLED,
+  XavcGopBReference_ENABLED,
+  XavcGopBReference'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcHdIntraCbgProfileClass.hs b/gen/Amazonka/MediaConvert/Types/XavcHdIntraCbgProfileClass.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcHdIntraCbgProfileClass.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcHdIntraCbgProfileClass
+-- 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.XavcHdIntraCbgProfileClass
+  ( XavcHdIntraCbgProfileClass
+      ( ..,
+        XavcHdIntraCbgProfileClass_CLASS_100,
+        XavcHdIntraCbgProfileClass_CLASS_200,
+        XavcHdIntraCbgProfileClass_CLASS_50
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the XAVC Intra HD (CBG) Class to set the bitrate of your output.
+-- Outputs of the same class have similar image quality over the operating
+-- points that are valid for that class.
+newtype XavcHdIntraCbgProfileClass = XavcHdIntraCbgProfileClass'
+  { fromXavcHdIntraCbgProfileClass ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcHdIntraCbgProfileClass_CLASS_100 :: XavcHdIntraCbgProfileClass
+pattern XavcHdIntraCbgProfileClass_CLASS_100 = XavcHdIntraCbgProfileClass' "CLASS_100"
+
+pattern XavcHdIntraCbgProfileClass_CLASS_200 :: XavcHdIntraCbgProfileClass
+pattern XavcHdIntraCbgProfileClass_CLASS_200 = XavcHdIntraCbgProfileClass' "CLASS_200"
+
+pattern XavcHdIntraCbgProfileClass_CLASS_50 :: XavcHdIntraCbgProfileClass
+pattern XavcHdIntraCbgProfileClass_CLASS_50 = XavcHdIntraCbgProfileClass' "CLASS_50"
+
+{-# COMPLETE
+  XavcHdIntraCbgProfileClass_CLASS_100,
+  XavcHdIntraCbgProfileClass_CLASS_200,
+  XavcHdIntraCbgProfileClass_CLASS_50,
+  XavcHdIntraCbgProfileClass'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcHdIntraCbgProfileSettings.hs b/gen/Amazonka/MediaConvert/Types/XavcHdIntraCbgProfileSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcHdIntraCbgProfileSettings.hs
@@ -0,0 +1,91 @@
+{-# 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.XavcHdIntraCbgProfileSettings
+-- 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.XavcHdIntraCbgProfileSettings 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.XavcHdIntraCbgProfileClass
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value
+-- XAVC_HD_INTRA_CBG.
+--
+-- /See:/ 'newXavcHdIntraCbgProfileSettings' smart constructor.
+data XavcHdIntraCbgProfileSettings = XavcHdIntraCbgProfileSettings'
+  { -- | Specify the XAVC Intra HD (CBG) Class to set the bitrate of your output.
+    -- Outputs of the same class have similar image quality over the operating
+    -- points that are valid for that class.
+    xavcClass :: Prelude.Maybe XavcHdIntraCbgProfileClass
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'XavcHdIntraCbgProfileSettings' 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:
+--
+-- 'xavcClass', 'xavcHdIntraCbgProfileSettings_xavcClass' - Specify the XAVC Intra HD (CBG) Class to set the bitrate of your output.
+-- Outputs of the same class have similar image quality over the operating
+-- points that are valid for that class.
+newXavcHdIntraCbgProfileSettings ::
+  XavcHdIntraCbgProfileSettings
+newXavcHdIntraCbgProfileSettings =
+  XavcHdIntraCbgProfileSettings'
+    { xavcClass =
+        Prelude.Nothing
+    }
+
+-- | Specify the XAVC Intra HD (CBG) Class to set the bitrate of your output.
+-- Outputs of the same class have similar image quality over the operating
+-- points that are valid for that class.
+xavcHdIntraCbgProfileSettings_xavcClass :: Lens.Lens' XavcHdIntraCbgProfileSettings (Prelude.Maybe XavcHdIntraCbgProfileClass)
+xavcHdIntraCbgProfileSettings_xavcClass = Lens.lens (\XavcHdIntraCbgProfileSettings' {xavcClass} -> xavcClass) (\s@XavcHdIntraCbgProfileSettings' {} a -> s {xavcClass = a} :: XavcHdIntraCbgProfileSettings)
+
+instance Data.FromJSON XavcHdIntraCbgProfileSettings where
+  parseJSON =
+    Data.withObject
+      "XavcHdIntraCbgProfileSettings"
+      ( \x ->
+          XavcHdIntraCbgProfileSettings'
+            Prelude.<$> (x Data..:? "xavcClass")
+      )
+
+instance
+  Prelude.Hashable
+    XavcHdIntraCbgProfileSettings
+  where
+  hashWithSalt _salt XavcHdIntraCbgProfileSettings' {..} =
+    _salt `Prelude.hashWithSalt` xavcClass
+
+instance Prelude.NFData XavcHdIntraCbgProfileSettings where
+  rnf XavcHdIntraCbgProfileSettings' {..} =
+    Prelude.rnf xavcClass
+
+instance Data.ToJSON XavcHdIntraCbgProfileSettings where
+  toJSON XavcHdIntraCbgProfileSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("xavcClass" Data..=) Prelude.<$> xavcClass]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/XavcHdProfileBitrateClass.hs b/gen/Amazonka/MediaConvert/Types/XavcHdProfileBitrateClass.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcHdProfileBitrateClass.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcHdProfileBitrateClass
+-- 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.XavcHdProfileBitrateClass
+  ( XavcHdProfileBitrateClass
+      ( ..,
+        XavcHdProfileBitrateClass_BITRATE_CLASS_25,
+        XavcHdProfileBitrateClass_BITRATE_CLASS_35,
+        XavcHdProfileBitrateClass_BITRATE_CLASS_50
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the XAVC HD (Long GOP) Bitrate Class to set the bitrate of your
+-- output. Outputs of the same class have similar image quality over the
+-- operating points that are valid for that class.
+newtype XavcHdProfileBitrateClass = XavcHdProfileBitrateClass'
+  { fromXavcHdProfileBitrateClass ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcHdProfileBitrateClass_BITRATE_CLASS_25 :: XavcHdProfileBitrateClass
+pattern XavcHdProfileBitrateClass_BITRATE_CLASS_25 = XavcHdProfileBitrateClass' "BITRATE_CLASS_25"
+
+pattern XavcHdProfileBitrateClass_BITRATE_CLASS_35 :: XavcHdProfileBitrateClass
+pattern XavcHdProfileBitrateClass_BITRATE_CLASS_35 = XavcHdProfileBitrateClass' "BITRATE_CLASS_35"
+
+pattern XavcHdProfileBitrateClass_BITRATE_CLASS_50 :: XavcHdProfileBitrateClass
+pattern XavcHdProfileBitrateClass_BITRATE_CLASS_50 = XavcHdProfileBitrateClass' "BITRATE_CLASS_50"
+
+{-# COMPLETE
+  XavcHdProfileBitrateClass_BITRATE_CLASS_25,
+  XavcHdProfileBitrateClass_BITRATE_CLASS_35,
+  XavcHdProfileBitrateClass_BITRATE_CLASS_50,
+  XavcHdProfileBitrateClass'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcHdProfileQualityTuningLevel.hs b/gen/Amazonka/MediaConvert/Types/XavcHdProfileQualityTuningLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcHdProfileQualityTuningLevel.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcHdProfileQualityTuningLevel
+-- 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.XavcHdProfileQualityTuningLevel
+  ( XavcHdProfileQualityTuningLevel
+      ( ..,
+        XavcHdProfileQualityTuningLevel_MULTI_PASS_HQ,
+        XavcHdProfileQualityTuningLevel_SINGLE_PASS,
+        XavcHdProfileQualityTuningLevel_SINGLE_PASS_HQ
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+newtype XavcHdProfileQualityTuningLevel = XavcHdProfileQualityTuningLevel'
+  { fromXavcHdProfileQualityTuningLevel ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcHdProfileQualityTuningLevel_MULTI_PASS_HQ :: XavcHdProfileQualityTuningLevel
+pattern XavcHdProfileQualityTuningLevel_MULTI_PASS_HQ = XavcHdProfileQualityTuningLevel' "MULTI_PASS_HQ"
+
+pattern XavcHdProfileQualityTuningLevel_SINGLE_PASS :: XavcHdProfileQualityTuningLevel
+pattern XavcHdProfileQualityTuningLevel_SINGLE_PASS = XavcHdProfileQualityTuningLevel' "SINGLE_PASS"
+
+pattern XavcHdProfileQualityTuningLevel_SINGLE_PASS_HQ :: XavcHdProfileQualityTuningLevel
+pattern XavcHdProfileQualityTuningLevel_SINGLE_PASS_HQ = XavcHdProfileQualityTuningLevel' "SINGLE_PASS_HQ"
+
+{-# COMPLETE
+  XavcHdProfileQualityTuningLevel_MULTI_PASS_HQ,
+  XavcHdProfileQualityTuningLevel_SINGLE_PASS,
+  XavcHdProfileQualityTuningLevel_SINGLE_PASS_HQ,
+  XavcHdProfileQualityTuningLevel'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcHdProfileSettings.hs b/gen/Amazonka/MediaConvert/Types/XavcHdProfileSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcHdProfileSettings.hs
@@ -0,0 +1,336 @@
+{-# 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.XavcHdProfileSettings
+-- 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.XavcHdProfileSettings 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.XavcFlickerAdaptiveQuantization
+import Amazonka.MediaConvert.Types.XavcGopBReference
+import Amazonka.MediaConvert.Types.XavcHdProfileBitrateClass
+import Amazonka.MediaConvert.Types.XavcHdProfileQualityTuningLevel
+import Amazonka.MediaConvert.Types.XavcHdProfileTelecine
+import Amazonka.MediaConvert.Types.XavcInterlaceMode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value XAVC_HD.
+--
+-- /See:/ 'newXavcHdProfileSettings' smart constructor.
+data XavcHdProfileSettings = XavcHdProfileSettings'
+  { -- | Specify the XAVC HD (Long GOP) Bitrate Class to set the bitrate of your
+    -- output. Outputs of the same class have similar image quality over the
+    -- operating points that are valid for that class.
+    bitrateClass :: Prelude.Maybe XavcHdProfileBitrateClass,
+    -- | The best way to set up adaptive quantization is to keep the default
+    -- value, Auto (AUTO), for the setting Adaptive quantization
+    -- (XavcAdaptiveQuantization). When you do so, MediaConvert automatically
+    -- applies the best types of quantization for your video content. Include
+    -- this setting in your JSON job specification only when you choose to
+    -- change the default value for Adaptive quantization. Enable this setting
+    -- to have the encoder reduce I-frame pop. I-frame pop appears as a visual
+    -- flicker that can arise when the encoder saves bits by copying some
+    -- macroblocks many times from frame to frame, and then refreshes them at
+    -- the I-frame. When you enable this setting, the encoder updates these
+    -- macroblocks slightly more often to smooth out the flicker. This setting
+    -- is disabled by default. Related setting: In addition to enabling this
+    -- setting, you must also set Adaptive quantization (adaptiveQuantization)
+    -- to a value other than Off (OFF) or Auto (AUTO). Use Adaptive
+    -- quantization to adjust the degree of smoothing that Flicker adaptive
+    -- quantization provides.
+    flickerAdaptiveQuantization :: Prelude.Maybe XavcFlickerAdaptiveQuantization,
+    -- | Specify whether the encoder uses B-frames as reference frames for other
+    -- pictures in the same GOP. Choose Allow (ENABLED) to allow the encoder to
+    -- use B-frames as reference frames. Choose Don\'t allow (DISABLED) to
+    -- prevent the encoder from using B-frames as reference frames.
+    gopBReference :: Prelude.Maybe XavcGopBReference,
+    -- | Frequency of closed GOPs. In streaming applications, it is recommended
+    -- that this be set to 1 so a decoder joining mid-stream will receive an
+    -- IDR frame as quickly as possible. Setting this value to 0 will break
+    -- output segmenting.
+    gopClosedCadence :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the size of the buffer that MediaConvert uses in the HRD buffer
+    -- model for this output. Specify this value in bits; for example, enter
+    -- five megabits as 5000000. When you don\'t set this value, or you set it
+    -- to zero, MediaConvert calculates the default by doubling the bitrate of
+    -- this output point.
+    hrdBufferSize :: Prelude.Maybe Prelude.Natural,
+    -- | Choose the scan line type for the output. Keep the default value,
+    -- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+    -- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+    -- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+    -- the same field polarity throughout. Use Follow, default top
+    -- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+    -- produce outputs with the same field polarity as the source. For jobs
+    -- that have multiple inputs, the output field polarity might change over
+    -- the course of the output. Follow behavior depends on the input scan
+    -- type. If the source is interlaced, the output will be interlaced with
+    -- the same polarity as the source. If the source is progressive, the
+    -- output will be interlaced with top field bottom field first, depending
+    -- on which of the Follow options you choose.
+    interlaceMode :: Prelude.Maybe XavcInterlaceMode,
+    -- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+    -- you want to trade off encoding speed for output video quality. The
+    -- default behavior is faster, lower quality, single-pass encoding.
+    qualityTuningLevel :: Prelude.Maybe XavcHdProfileQualityTuningLevel,
+    -- | Number of slices per picture. Must be less than or equal to the number
+    -- of macroblock rows for progressive pictures, and less than or equal to
+    -- half the number of macroblock rows for interlaced pictures.
+    slices :: Prelude.Maybe Prelude.Natural,
+    -- | Ignore this setting unless you set Frame rate (framerateNumerator
+    -- divided by framerateDenominator) to 29.970. If your input framerate is
+    -- 23.976, choose Hard (HARD). Otherwise, keep the default value None
+    -- (NONE). For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-telecine-and-inverse-telecine.html.
+    telecine :: Prelude.Maybe XavcHdProfileTelecine
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'XavcHdProfileSettings' 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:
+--
+-- 'bitrateClass', 'xavcHdProfileSettings_bitrateClass' - Specify the XAVC HD (Long GOP) Bitrate Class to set the bitrate of your
+-- output. Outputs of the same class have similar image quality over the
+-- operating points that are valid for that class.
+--
+-- 'flickerAdaptiveQuantization', 'xavcHdProfileSettings_flickerAdaptiveQuantization' - The best way to set up adaptive quantization is to keep the default
+-- value, Auto (AUTO), for the setting Adaptive quantization
+-- (XavcAdaptiveQuantization). When you do so, MediaConvert automatically
+-- applies the best types of quantization for your video content. Include
+-- this setting in your JSON job specification only when you choose to
+-- change the default value for Adaptive quantization. Enable this setting
+-- to have the encoder reduce I-frame pop. I-frame pop appears as a visual
+-- flicker that can arise when the encoder saves bits by copying some
+-- macroblocks many times from frame to frame, and then refreshes them at
+-- the I-frame. When you enable this setting, the encoder updates these
+-- macroblocks slightly more often to smooth out the flicker. This setting
+-- is disabled by default. Related setting: In addition to enabling this
+-- setting, you must also set Adaptive quantization (adaptiveQuantization)
+-- to a value other than Off (OFF) or Auto (AUTO). Use Adaptive
+-- quantization to adjust the degree of smoothing that Flicker adaptive
+-- quantization provides.
+--
+-- 'gopBReference', 'xavcHdProfileSettings_gopBReference' - Specify whether the encoder uses B-frames as reference frames for other
+-- pictures in the same GOP. Choose Allow (ENABLED) to allow the encoder to
+-- use B-frames as reference frames. Choose Don\'t allow (DISABLED) to
+-- prevent the encoder from using B-frames as reference frames.
+--
+-- 'gopClosedCadence', 'xavcHdProfileSettings_gopClosedCadence' - Frequency of closed GOPs. In streaming applications, it is recommended
+-- that this be set to 1 so a decoder joining mid-stream will receive an
+-- IDR frame as quickly as possible. Setting this value to 0 will break
+-- output segmenting.
+--
+-- 'hrdBufferSize', 'xavcHdProfileSettings_hrdBufferSize' - Specify the size of the buffer that MediaConvert uses in the HRD buffer
+-- model for this output. Specify this value in bits; for example, enter
+-- five megabits as 5000000. When you don\'t set this value, or you set it
+-- to zero, MediaConvert calculates the default by doubling the bitrate of
+-- this output point.
+--
+-- 'interlaceMode', 'xavcHdProfileSettings_interlaceMode' - Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+--
+-- 'qualityTuningLevel', 'xavcHdProfileSettings_qualityTuningLevel' - Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+--
+-- 'slices', 'xavcHdProfileSettings_slices' - Number of slices per picture. Must be less than or equal to the number
+-- of macroblock rows for progressive pictures, and less than or equal to
+-- half the number of macroblock rows for interlaced pictures.
+--
+-- 'telecine', 'xavcHdProfileSettings_telecine' - Ignore this setting unless you set Frame rate (framerateNumerator
+-- divided by framerateDenominator) to 29.970. If your input framerate is
+-- 23.976, choose Hard (HARD). Otherwise, keep the default value None
+-- (NONE). For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-telecine-and-inverse-telecine.html.
+newXavcHdProfileSettings ::
+  XavcHdProfileSettings
+newXavcHdProfileSettings =
+  XavcHdProfileSettings'
+    { bitrateClass =
+        Prelude.Nothing,
+      flickerAdaptiveQuantization = Prelude.Nothing,
+      gopBReference = Prelude.Nothing,
+      gopClosedCadence = Prelude.Nothing,
+      hrdBufferSize = Prelude.Nothing,
+      interlaceMode = Prelude.Nothing,
+      qualityTuningLevel = Prelude.Nothing,
+      slices = Prelude.Nothing,
+      telecine = Prelude.Nothing
+    }
+
+-- | Specify the XAVC HD (Long GOP) Bitrate Class to set the bitrate of your
+-- output. Outputs of the same class have similar image quality over the
+-- operating points that are valid for that class.
+xavcHdProfileSettings_bitrateClass :: Lens.Lens' XavcHdProfileSettings (Prelude.Maybe XavcHdProfileBitrateClass)
+xavcHdProfileSettings_bitrateClass = Lens.lens (\XavcHdProfileSettings' {bitrateClass} -> bitrateClass) (\s@XavcHdProfileSettings' {} a -> s {bitrateClass = a} :: XavcHdProfileSettings)
+
+-- | The best way to set up adaptive quantization is to keep the default
+-- value, Auto (AUTO), for the setting Adaptive quantization
+-- (XavcAdaptiveQuantization). When you do so, MediaConvert automatically
+-- applies the best types of quantization for your video content. Include
+-- this setting in your JSON job specification only when you choose to
+-- change the default value for Adaptive quantization. Enable this setting
+-- to have the encoder reduce I-frame pop. I-frame pop appears as a visual
+-- flicker that can arise when the encoder saves bits by copying some
+-- macroblocks many times from frame to frame, and then refreshes them at
+-- the I-frame. When you enable this setting, the encoder updates these
+-- macroblocks slightly more often to smooth out the flicker. This setting
+-- is disabled by default. Related setting: In addition to enabling this
+-- setting, you must also set Adaptive quantization (adaptiveQuantization)
+-- to a value other than Off (OFF) or Auto (AUTO). Use Adaptive
+-- quantization to adjust the degree of smoothing that Flicker adaptive
+-- quantization provides.
+xavcHdProfileSettings_flickerAdaptiveQuantization :: Lens.Lens' XavcHdProfileSettings (Prelude.Maybe XavcFlickerAdaptiveQuantization)
+xavcHdProfileSettings_flickerAdaptiveQuantization = Lens.lens (\XavcHdProfileSettings' {flickerAdaptiveQuantization} -> flickerAdaptiveQuantization) (\s@XavcHdProfileSettings' {} a -> s {flickerAdaptiveQuantization = a} :: XavcHdProfileSettings)
+
+-- | Specify whether the encoder uses B-frames as reference frames for other
+-- pictures in the same GOP. Choose Allow (ENABLED) to allow the encoder to
+-- use B-frames as reference frames. Choose Don\'t allow (DISABLED) to
+-- prevent the encoder from using B-frames as reference frames.
+xavcHdProfileSettings_gopBReference :: Lens.Lens' XavcHdProfileSettings (Prelude.Maybe XavcGopBReference)
+xavcHdProfileSettings_gopBReference = Lens.lens (\XavcHdProfileSettings' {gopBReference} -> gopBReference) (\s@XavcHdProfileSettings' {} a -> s {gopBReference = a} :: XavcHdProfileSettings)
+
+-- | Frequency of closed GOPs. In streaming applications, it is recommended
+-- that this be set to 1 so a decoder joining mid-stream will receive an
+-- IDR frame as quickly as possible. Setting this value to 0 will break
+-- output segmenting.
+xavcHdProfileSettings_gopClosedCadence :: Lens.Lens' XavcHdProfileSettings (Prelude.Maybe Prelude.Natural)
+xavcHdProfileSettings_gopClosedCadence = Lens.lens (\XavcHdProfileSettings' {gopClosedCadence} -> gopClosedCadence) (\s@XavcHdProfileSettings' {} a -> s {gopClosedCadence = a} :: XavcHdProfileSettings)
+
+-- | Specify the size of the buffer that MediaConvert uses in the HRD buffer
+-- model for this output. Specify this value in bits; for example, enter
+-- five megabits as 5000000. When you don\'t set this value, or you set it
+-- to zero, MediaConvert calculates the default by doubling the bitrate of
+-- this output point.
+xavcHdProfileSettings_hrdBufferSize :: Lens.Lens' XavcHdProfileSettings (Prelude.Maybe Prelude.Natural)
+xavcHdProfileSettings_hrdBufferSize = Lens.lens (\XavcHdProfileSettings' {hrdBufferSize} -> hrdBufferSize) (\s@XavcHdProfileSettings' {} a -> s {hrdBufferSize = a} :: XavcHdProfileSettings)
+
+-- | Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+xavcHdProfileSettings_interlaceMode :: Lens.Lens' XavcHdProfileSettings (Prelude.Maybe XavcInterlaceMode)
+xavcHdProfileSettings_interlaceMode = Lens.lens (\XavcHdProfileSettings' {interlaceMode} -> interlaceMode) (\s@XavcHdProfileSettings' {} a -> s {interlaceMode = a} :: XavcHdProfileSettings)
+
+-- | Optional. Use Quality tuning level (qualityTuningLevel) to choose how
+-- you want to trade off encoding speed for output video quality. The
+-- default behavior is faster, lower quality, single-pass encoding.
+xavcHdProfileSettings_qualityTuningLevel :: Lens.Lens' XavcHdProfileSettings (Prelude.Maybe XavcHdProfileQualityTuningLevel)
+xavcHdProfileSettings_qualityTuningLevel = Lens.lens (\XavcHdProfileSettings' {qualityTuningLevel} -> qualityTuningLevel) (\s@XavcHdProfileSettings' {} a -> s {qualityTuningLevel = a} :: XavcHdProfileSettings)
+
+-- | Number of slices per picture. Must be less than or equal to the number
+-- of macroblock rows for progressive pictures, and less than or equal to
+-- half the number of macroblock rows for interlaced pictures.
+xavcHdProfileSettings_slices :: Lens.Lens' XavcHdProfileSettings (Prelude.Maybe Prelude.Natural)
+xavcHdProfileSettings_slices = Lens.lens (\XavcHdProfileSettings' {slices} -> slices) (\s@XavcHdProfileSettings' {} a -> s {slices = a} :: XavcHdProfileSettings)
+
+-- | Ignore this setting unless you set Frame rate (framerateNumerator
+-- divided by framerateDenominator) to 29.970. If your input framerate is
+-- 23.976, choose Hard (HARD). Otherwise, keep the default value None
+-- (NONE). For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-telecine-and-inverse-telecine.html.
+xavcHdProfileSettings_telecine :: Lens.Lens' XavcHdProfileSettings (Prelude.Maybe XavcHdProfileTelecine)
+xavcHdProfileSettings_telecine = Lens.lens (\XavcHdProfileSettings' {telecine} -> telecine) (\s@XavcHdProfileSettings' {} a -> s {telecine = a} :: XavcHdProfileSettings)
+
+instance Data.FromJSON XavcHdProfileSettings where
+  parseJSON =
+    Data.withObject
+      "XavcHdProfileSettings"
+      ( \x ->
+          XavcHdProfileSettings'
+            Prelude.<$> (x Data..:? "bitrateClass")
+            Prelude.<*> (x Data..:? "flickerAdaptiveQuantization")
+            Prelude.<*> (x Data..:? "gopBReference")
+            Prelude.<*> (x Data..:? "gopClosedCadence")
+            Prelude.<*> (x Data..:? "hrdBufferSize")
+            Prelude.<*> (x Data..:? "interlaceMode")
+            Prelude.<*> (x Data..:? "qualityTuningLevel")
+            Prelude.<*> (x Data..:? "slices")
+            Prelude.<*> (x Data..:? "telecine")
+      )
+
+instance Prelude.Hashable XavcHdProfileSettings where
+  hashWithSalt _salt XavcHdProfileSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` bitrateClass
+      `Prelude.hashWithSalt` flickerAdaptiveQuantization
+      `Prelude.hashWithSalt` gopBReference
+      `Prelude.hashWithSalt` gopClosedCadence
+      `Prelude.hashWithSalt` hrdBufferSize
+      `Prelude.hashWithSalt` interlaceMode
+      `Prelude.hashWithSalt` qualityTuningLevel
+      `Prelude.hashWithSalt` slices
+      `Prelude.hashWithSalt` telecine
+
+instance Prelude.NFData XavcHdProfileSettings where
+  rnf XavcHdProfileSettings' {..} =
+    Prelude.rnf bitrateClass
+      `Prelude.seq` Prelude.rnf flickerAdaptiveQuantization
+      `Prelude.seq` Prelude.rnf gopBReference
+      `Prelude.seq` Prelude.rnf gopClosedCadence
+      `Prelude.seq` Prelude.rnf hrdBufferSize
+      `Prelude.seq` Prelude.rnf interlaceMode
+      `Prelude.seq` Prelude.rnf qualityTuningLevel
+      `Prelude.seq` Prelude.rnf slices
+      `Prelude.seq` Prelude.rnf telecine
+
+instance Data.ToJSON XavcHdProfileSettings where
+  toJSON XavcHdProfileSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bitrateClass" Data..=) Prelude.<$> bitrateClass,
+            ("flickerAdaptiveQuantization" Data..=)
+              Prelude.<$> flickerAdaptiveQuantization,
+            ("gopBReference" Data..=) Prelude.<$> gopBReference,
+            ("gopClosedCadence" Data..=)
+              Prelude.<$> gopClosedCadence,
+            ("hrdBufferSize" Data..=) Prelude.<$> hrdBufferSize,
+            ("interlaceMode" Data..=) Prelude.<$> interlaceMode,
+            ("qualityTuningLevel" Data..=)
+              Prelude.<$> qualityTuningLevel,
+            ("slices" Data..=) Prelude.<$> slices,
+            ("telecine" Data..=) Prelude.<$> telecine
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/XavcHdProfileTelecine.hs b/gen/Amazonka/MediaConvert/Types/XavcHdProfileTelecine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcHdProfileTelecine.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcHdProfileTelecine
+-- 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.XavcHdProfileTelecine
+  ( XavcHdProfileTelecine
+      ( ..,
+        XavcHdProfileTelecine_HARD,
+        XavcHdProfileTelecine_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless you set Frame rate (framerateNumerator
+-- divided by framerateDenominator) to 29.970. If your input framerate is
+-- 23.976, choose Hard (HARD). Otherwise, keep the default value None
+-- (NONE). For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-telecine-and-inverse-telecine.html.
+newtype XavcHdProfileTelecine = XavcHdProfileTelecine'
+  { fromXavcHdProfileTelecine ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcHdProfileTelecine_HARD :: XavcHdProfileTelecine
+pattern XavcHdProfileTelecine_HARD = XavcHdProfileTelecine' "HARD"
+
+pattern XavcHdProfileTelecine_NONE :: XavcHdProfileTelecine
+pattern XavcHdProfileTelecine_NONE = XavcHdProfileTelecine' "NONE"
+
+{-# COMPLETE
+  XavcHdProfileTelecine_HARD,
+  XavcHdProfileTelecine_NONE,
+  XavcHdProfileTelecine'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcInterlaceMode.hs b/gen/Amazonka/MediaConvert/Types/XavcInterlaceMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcInterlaceMode.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcInterlaceMode
+-- 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.XavcInterlaceMode
+  ( XavcInterlaceMode
+      ( ..,
+        XavcInterlaceMode_BOTTOM_FIELD,
+        XavcInterlaceMode_FOLLOW_BOTTOM_FIELD,
+        XavcInterlaceMode_FOLLOW_TOP_FIELD,
+        XavcInterlaceMode_PROGRESSIVE,
+        XavcInterlaceMode_TOP_FIELD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Choose the scan line type for the output. Keep the default value,
+-- Progressive (PROGRESSIVE) to create a progressive output, regardless of
+-- the scan type of your input. Use Top field first (TOP_FIELD) or Bottom
+-- field first (BOTTOM_FIELD) to create an output that\'s interlaced with
+-- the same field polarity throughout. Use Follow, default top
+-- (FOLLOW_TOP_FIELD) or Follow, default bottom (FOLLOW_BOTTOM_FIELD) to
+-- produce outputs with the same field polarity as the source. For jobs
+-- that have multiple inputs, the output field polarity might change over
+-- the course of the output. Follow behavior depends on the input scan
+-- type. If the source is interlaced, the output will be interlaced with
+-- the same polarity as the source. If the source is progressive, the
+-- output will be interlaced with top field bottom field first, depending
+-- on which of the Follow options you choose.
+newtype XavcInterlaceMode = XavcInterlaceMode'
+  { fromXavcInterlaceMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcInterlaceMode_BOTTOM_FIELD :: XavcInterlaceMode
+pattern XavcInterlaceMode_BOTTOM_FIELD = XavcInterlaceMode' "BOTTOM_FIELD"
+
+pattern XavcInterlaceMode_FOLLOW_BOTTOM_FIELD :: XavcInterlaceMode
+pattern XavcInterlaceMode_FOLLOW_BOTTOM_FIELD = XavcInterlaceMode' "FOLLOW_BOTTOM_FIELD"
+
+pattern XavcInterlaceMode_FOLLOW_TOP_FIELD :: XavcInterlaceMode
+pattern XavcInterlaceMode_FOLLOW_TOP_FIELD = XavcInterlaceMode' "FOLLOW_TOP_FIELD"
+
+pattern XavcInterlaceMode_PROGRESSIVE :: XavcInterlaceMode
+pattern XavcInterlaceMode_PROGRESSIVE = XavcInterlaceMode' "PROGRESSIVE"
+
+pattern XavcInterlaceMode_TOP_FIELD :: XavcInterlaceMode
+pattern XavcInterlaceMode_TOP_FIELD = XavcInterlaceMode' "TOP_FIELD"
+
+{-# COMPLETE
+  XavcInterlaceMode_BOTTOM_FIELD,
+  XavcInterlaceMode_FOLLOW_BOTTOM_FIELD,
+  XavcInterlaceMode_FOLLOW_TOP_FIELD,
+  XavcInterlaceMode_PROGRESSIVE,
+  XavcInterlaceMode_TOP_FIELD,
+  XavcInterlaceMode'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcProfile.hs b/gen/Amazonka/MediaConvert/Types/XavcProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcProfile.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcProfile
+-- 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.XavcProfile
+  ( XavcProfile
+      ( ..,
+        XavcProfile_XAVC_4K,
+        XavcProfile_XAVC_4K_INTRA_CBG,
+        XavcProfile_XAVC_4K_INTRA_VBR,
+        XavcProfile_XAVC_HD,
+        XavcProfile_XAVC_HD_INTRA_CBG
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specify the XAVC profile for this output. For more information, see the
+-- Sony documentation at https:\/\/www.xavc-info.org\/. Note that
+-- MediaConvert doesn\'t support the interlaced video XAVC operating points
+-- for XAVC_HD_INTRA_CBG. To create an interlaced XAVC output, choose the
+-- profile XAVC_HD.
+newtype XavcProfile = XavcProfile'
+  { fromXavcProfile ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcProfile_XAVC_4K :: XavcProfile
+pattern XavcProfile_XAVC_4K = XavcProfile' "XAVC_4K"
+
+pattern XavcProfile_XAVC_4K_INTRA_CBG :: XavcProfile
+pattern XavcProfile_XAVC_4K_INTRA_CBG = XavcProfile' "XAVC_4K_INTRA_CBG"
+
+pattern XavcProfile_XAVC_4K_INTRA_VBR :: XavcProfile
+pattern XavcProfile_XAVC_4K_INTRA_VBR = XavcProfile' "XAVC_4K_INTRA_VBR"
+
+pattern XavcProfile_XAVC_HD :: XavcProfile
+pattern XavcProfile_XAVC_HD = XavcProfile' "XAVC_HD"
+
+pattern XavcProfile_XAVC_HD_INTRA_CBG :: XavcProfile
+pattern XavcProfile_XAVC_HD_INTRA_CBG = XavcProfile' "XAVC_HD_INTRA_CBG"
+
+{-# COMPLETE
+  XavcProfile_XAVC_4K,
+  XavcProfile_XAVC_4K_INTRA_CBG,
+  XavcProfile_XAVC_4K_INTRA_VBR,
+  XavcProfile_XAVC_HD,
+  XavcProfile_XAVC_HD_INTRA_CBG,
+  XavcProfile'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcSettings.hs b/gen/Amazonka/MediaConvert/Types/XavcSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcSettings.hs
@@ -0,0 +1,649 @@
+{-# 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.XavcSettings
+-- 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.XavcSettings 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.Xavc4kIntraCbgProfileSettings
+import Amazonka.MediaConvert.Types.Xavc4kIntraVbrProfileSettings
+import Amazonka.MediaConvert.Types.Xavc4kProfileSettings
+import Amazonka.MediaConvert.Types.XavcAdaptiveQuantization
+import Amazonka.MediaConvert.Types.XavcEntropyEncoding
+import Amazonka.MediaConvert.Types.XavcFramerateControl
+import Amazonka.MediaConvert.Types.XavcFramerateConversionAlgorithm
+import Amazonka.MediaConvert.Types.XavcHdIntraCbgProfileSettings
+import Amazonka.MediaConvert.Types.XavcHdProfileSettings
+import Amazonka.MediaConvert.Types.XavcProfile
+import Amazonka.MediaConvert.Types.XavcSlowPal
+import Amazonka.MediaConvert.Types.XavcSpatialAdaptiveQuantization
+import Amazonka.MediaConvert.Types.XavcTemporalAdaptiveQuantization
+import qualified Amazonka.Prelude as Prelude
+
+-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
+-- to the value XAVC.
+--
+-- /See:/ 'newXavcSettings' smart constructor.
+data XavcSettings = XavcSettings'
+  { -- | Keep the default value, Auto (AUTO), for this setting to have
+    -- MediaConvert automatically apply the best types of quantization for your
+    -- video content. When you want to apply your quantization settings
+    -- manually, you must set Adaptive quantization (adaptiveQuantization) to a
+    -- value other than Auto (AUTO). Use this setting to specify the strength
+    -- of any adaptive quantization filters that you enable. If you don\'t want
+    -- MediaConvert to do any adaptive quantization in this transcode, set
+    -- Adaptive quantization to Off (OFF). Related settings: The value that you
+    -- choose here applies to the following settings: Flicker adaptive
+    -- quantization (flickerAdaptiveQuantization), Spatial adaptive
+    -- quantization (spatialAdaptiveQuantization), and Temporal adaptive
+    -- quantization (temporalAdaptiveQuantization).
+    adaptiveQuantization :: Prelude.Maybe XavcAdaptiveQuantization,
+    -- | Optional. Choose a specific entropy encoding mode only when you want to
+    -- override XAVC recommendations. If you choose the value auto,
+    -- MediaConvert uses the mode that the XAVC file format specifies given
+    -- this output\'s operating point.
+    entropyEncoding :: Prelude.Maybe XavcEntropyEncoding,
+    -- | If you are using the console, use the Frame rate setting to specify the
+    -- frame rate for this output. If you want to keep the same frame rate as
+    -- the input video, choose Follow source. If you want to do frame rate
+    -- conversion, choose a frame rate from the dropdown list. The framerates
+    -- shown in the dropdown list are decimal approximations of fractions. If
+    -- you are creating your transcoding job specification as a JSON file
+    -- without the console, use FramerateControl to specify which value the
+    -- service uses for the frame rate for this output. Choose
+    -- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+    -- from the input. Choose SPECIFIED if you want the service to use the
+    -- frame rate that you specify in the settings FramerateNumerator and
+    -- FramerateDenominator.
+    framerateControl :: Prelude.Maybe XavcFramerateControl,
+    -- | Choose the method that you want MediaConvert to use when increasing or
+    -- decreasing the frame rate. We recommend using drop duplicate
+    -- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+    -- 30 fps. For numerically complex conversions, you can use interpolate
+    -- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+    -- might introduce undesirable video artifacts. For complex frame rate
+    -- conversions, especially if your source video has already been converted
+    -- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+    -- motion-compensated interpolation. FrameFormer chooses the best
+    -- conversion method frame by frame. Note that using FrameFormer increases
+    -- the transcoding time and incurs a significant add-on cost.
+    framerateConversionAlgorithm :: Prelude.Maybe XavcFramerateConversionAlgorithm,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+    -- fraction. In this example, use 1001 for the value of
+    -- FramerateDenominator. When you use the console for transcode jobs that
+    -- use frame rate conversion, provide the value as a decimal number for
+    -- Frame rate. In this example, specify 23.976.
+    framerateDenominator :: Prelude.Maybe Prelude.Natural,
+    -- | When you use the API for transcode jobs that use frame rate conversion,
+    -- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+    -- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+    -- fraction. In this example, use 24000 for the value of
+    -- FramerateNumerator. When you use the console for transcode jobs that use
+    -- frame rate conversion, provide the value as a decimal number for
+    -- Framerate. In this example, specify 23.976.
+    framerateNumerator :: Prelude.Maybe Prelude.Natural,
+    -- | Specify the XAVC profile for this output. For more information, see the
+    -- Sony documentation at https:\/\/www.xavc-info.org\/. Note that
+    -- MediaConvert doesn\'t support the interlaced video XAVC operating points
+    -- for XAVC_HD_INTRA_CBG. To create an interlaced XAVC output, choose the
+    -- profile XAVC_HD.
+    profile :: Prelude.Maybe XavcProfile,
+    -- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+    -- per second (fps). Enable slow PAL to create a 25 fps output by
+    -- relabeling the video frames and resampling your audio. Note that
+    -- enabling this setting will slightly reduce the duration of your video.
+    -- Related settings: You must also set Frame rate to 25. In your JSON job
+    -- specification, set (framerateControl) to (SPECIFIED),
+    -- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+    slowPal :: Prelude.Maybe XavcSlowPal,
+    -- | Ignore this setting unless your downstream workflow requires that you
+    -- specify it explicitly. Otherwise, we recommend that you adjust the
+    -- softness of your output by using a lower value for the setting Sharpness
+    -- (sharpness) or by enabling a noise reducer filter (noiseReducerFilter).
+    -- The Softness (softness) setting specifies the quantization matrices that
+    -- the encoder uses. Keep the default value, 0, for flat quantization.
+    -- Choose the value 1 or 16 to use the default JVT softening quantization
+    -- matricies from the H.264 specification. Choose a value from 17 to 128 to
+    -- use planar interpolation. Increasing values from 17 to 128 result in
+    -- increasing reduction of high-frequency data. The value 128 results in
+    -- the softest video.
+    softness :: Prelude.Maybe Prelude.Natural,
+    -- | The best way to set up adaptive quantization is to keep the default
+    -- value, Auto (AUTO), for the setting Adaptive quantization
+    -- (adaptiveQuantization). When you do so, MediaConvert automatically
+    -- applies the best types of quantization for your video content. Include
+    -- this setting in your JSON job specification only when you choose to
+    -- change the default value for Adaptive quantization. For this setting,
+    -- keep the default value, Enabled (ENABLED), to adjust quantization within
+    -- each frame based on spatial variation of content complexity. When you
+    -- enable this feature, the encoder uses fewer bits on areas that can
+    -- sustain more distortion with no noticeable visual degradation and uses
+    -- more bits on areas where any small distortion will be noticeable. For
+    -- example, complex textured blocks are encoded with fewer bits and smooth
+    -- textured blocks are encoded with more bits. Enabling this feature will
+    -- almost always improve your video quality. Note, though, that this
+    -- feature doesn\'t take into account where the viewer\'s attention is
+    -- likely to be. If viewers are likely to be focusing their attention on a
+    -- part of the screen with a lot of complex texture, you might choose to
+    -- disable this feature. Related setting: When you enable spatial adaptive
+    -- quantization, set the value for Adaptive quantization
+    -- (adaptiveQuantization) depending on your content. For homogeneous
+    -- content, such as cartoons and video games, set it to Low. For content
+    -- with a wider variety of textures, set it to High or Higher.
+    spatialAdaptiveQuantization :: Prelude.Maybe XavcSpatialAdaptiveQuantization,
+    -- | The best way to set up adaptive quantization is to keep the default
+    -- value, Auto (AUTO), for the setting Adaptive quantization
+    -- (adaptiveQuantization). When you do so, MediaConvert automatically
+    -- applies the best types of quantization for your video content. Include
+    -- this setting in your JSON job specification only when you choose to
+    -- change the default value for Adaptive quantization. For this setting,
+    -- keep the default value, Enabled (ENABLED), to adjust quantization within
+    -- each frame based on temporal variation of content complexity. When you
+    -- enable this feature, the encoder uses fewer bits on areas of the frame
+    -- that aren\'t moving and uses more bits on complex objects with sharp
+    -- edges that move a lot. For example, this feature improves the
+    -- readability of text tickers on newscasts and scoreboards on sports
+    -- matches. Enabling this feature will almost always improve your video
+    -- quality. Note, though, that this feature doesn\'t take into account
+    -- where the viewer\'s attention is likely to be. If viewers are likely to
+    -- be focusing their attention on a part of the screen that doesn\'t have
+    -- moving objects with sharp edges, such as sports athletes\' faces, you
+    -- might choose to disable this feature. Related setting: When you enable
+    -- temporal adaptive quantization, adjust the strength of the filter with
+    -- the setting Adaptive quantization (adaptiveQuantization).
+    temporalAdaptiveQuantization :: Prelude.Maybe XavcTemporalAdaptiveQuantization,
+    -- | Required when you set (Profile) under
+    -- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value
+    -- XAVC_4K_INTRA_CBG.
+    xavc4kIntraCbgProfileSettings :: Prelude.Maybe Xavc4kIntraCbgProfileSettings,
+    -- | Required when you set (Profile) under
+    -- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value
+    -- XAVC_4K_INTRA_VBR.
+    xavc4kIntraVbrProfileSettings :: Prelude.Maybe Xavc4kIntraVbrProfileSettings,
+    -- | Required when you set (Profile) under
+    -- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value XAVC_4K.
+    xavc4kProfileSettings :: Prelude.Maybe Xavc4kProfileSettings,
+    -- | Required when you set (Profile) under
+    -- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value
+    -- XAVC_HD_INTRA_CBG.
+    xavcHdIntraCbgProfileSettings :: Prelude.Maybe XavcHdIntraCbgProfileSettings,
+    -- | Required when you set (Profile) under
+    -- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value XAVC_HD.
+    xavcHdProfileSettings :: Prelude.Maybe XavcHdProfileSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'XavcSettings' 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:
+--
+-- 'adaptiveQuantization', 'xavcSettings_adaptiveQuantization' - Keep the default value, Auto (AUTO), for this setting to have
+-- MediaConvert automatically apply the best types of quantization for your
+-- video content. When you want to apply your quantization settings
+-- manually, you must set Adaptive quantization (adaptiveQuantization) to a
+-- value other than Auto (AUTO). Use this setting to specify the strength
+-- of any adaptive quantization filters that you enable. If you don\'t want
+-- MediaConvert to do any adaptive quantization in this transcode, set
+-- Adaptive quantization to Off (OFF). Related settings: The value that you
+-- choose here applies to the following settings: Flicker adaptive
+-- quantization (flickerAdaptiveQuantization), Spatial adaptive
+-- quantization (spatialAdaptiveQuantization), and Temporal adaptive
+-- quantization (temporalAdaptiveQuantization).
+--
+-- 'entropyEncoding', 'xavcSettings_entropyEncoding' - Optional. Choose a specific entropy encoding mode only when you want to
+-- override XAVC recommendations. If you choose the value auto,
+-- MediaConvert uses the mode that the XAVC file format specifies given
+-- this output\'s operating point.
+--
+-- 'framerateControl', 'xavcSettings_framerateControl' - If you are using the console, use the Frame rate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list. The framerates
+-- shown in the dropdown list are decimal approximations of fractions. If
+-- you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate that you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+--
+-- 'framerateConversionAlgorithm', 'xavcSettings_framerateConversionAlgorithm' - Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+--
+-- 'framerateDenominator', 'xavcSettings_framerateDenominator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Frame rate. In this example, specify 23.976.
+--
+-- 'framerateNumerator', 'xavcSettings_framerateNumerator' - When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+--
+-- 'profile', 'xavcSettings_profile' - Specify the XAVC profile for this output. For more information, see the
+-- Sony documentation at https:\/\/www.xavc-info.org\/. Note that
+-- MediaConvert doesn\'t support the interlaced video XAVC operating points
+-- for XAVC_HD_INTRA_CBG. To create an interlaced XAVC output, choose the
+-- profile XAVC_HD.
+--
+-- 'slowPal', 'xavcSettings_slowPal' - Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output by
+-- relabeling the video frames and resampling your audio. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Related settings: You must also set Frame rate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+--
+-- 'softness', 'xavcSettings_softness' - Ignore this setting unless your downstream workflow requires that you
+-- specify it explicitly. Otherwise, we recommend that you adjust the
+-- softness of your output by using a lower value for the setting Sharpness
+-- (sharpness) or by enabling a noise reducer filter (noiseReducerFilter).
+-- The Softness (softness) setting specifies the quantization matrices that
+-- the encoder uses. Keep the default value, 0, for flat quantization.
+-- Choose the value 1 or 16 to use the default JVT softening quantization
+-- matricies from the H.264 specification. Choose a value from 17 to 128 to
+-- use planar interpolation. Increasing values from 17 to 128 result in
+-- increasing reduction of high-frequency data. The value 128 results in
+-- the softest video.
+--
+-- 'spatialAdaptiveQuantization', 'xavcSettings_spatialAdaptiveQuantization' - The best way to set up adaptive quantization is to keep the default
+-- value, Auto (AUTO), for the setting Adaptive quantization
+-- (adaptiveQuantization). When you do so, MediaConvert automatically
+-- applies the best types of quantization for your video content. Include
+-- this setting in your JSON job specification only when you choose to
+-- change the default value for Adaptive quantization. For this setting,
+-- keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on spatial variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas that can
+-- sustain more distortion with no noticeable visual degradation and uses
+-- more bits on areas where any small distortion will be noticeable. For
+-- example, complex textured blocks are encoded with fewer bits and smooth
+-- textured blocks are encoded with more bits. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen with a lot of complex texture, you might choose to
+-- disable this feature. Related setting: When you enable spatial adaptive
+-- quantization, set the value for Adaptive quantization
+-- (adaptiveQuantization) depending on your content. For homogeneous
+-- content, such as cartoons and video games, set it to Low. For content
+-- with a wider variety of textures, set it to High or Higher.
+--
+-- 'temporalAdaptiveQuantization', 'xavcSettings_temporalAdaptiveQuantization' - The best way to set up adaptive quantization is to keep the default
+-- value, Auto (AUTO), for the setting Adaptive quantization
+-- (adaptiveQuantization). When you do so, MediaConvert automatically
+-- applies the best types of quantization for your video content. Include
+-- this setting in your JSON job specification only when you choose to
+-- change the default value for Adaptive quantization. For this setting,
+-- keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on temporal variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas of the frame
+-- that aren\'t moving and uses more bits on complex objects with sharp
+-- edges that move a lot. For example, this feature improves the
+-- readability of text tickers on newscasts and scoreboards on sports
+-- matches. Enabling this feature will almost always improve your video
+-- quality. Note, though, that this feature doesn\'t take into account
+-- where the viewer\'s attention is likely to be. If viewers are likely to
+-- be focusing their attention on a part of the screen that doesn\'t have
+-- moving objects with sharp edges, such as sports athletes\' faces, you
+-- might choose to disable this feature. Related setting: When you enable
+-- temporal adaptive quantization, adjust the strength of the filter with
+-- the setting Adaptive quantization (adaptiveQuantization).
+--
+-- 'xavc4kIntraCbgProfileSettings', 'xavcSettings_xavc4kIntraCbgProfileSettings' - Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value
+-- XAVC_4K_INTRA_CBG.
+--
+-- 'xavc4kIntraVbrProfileSettings', 'xavcSettings_xavc4kIntraVbrProfileSettings' - Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value
+-- XAVC_4K_INTRA_VBR.
+--
+-- 'xavc4kProfileSettings', 'xavcSettings_xavc4kProfileSettings' - Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value XAVC_4K.
+--
+-- 'xavcHdIntraCbgProfileSettings', 'xavcSettings_xavcHdIntraCbgProfileSettings' - Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value
+-- XAVC_HD_INTRA_CBG.
+--
+-- 'xavcHdProfileSettings', 'xavcSettings_xavcHdProfileSettings' - Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value XAVC_HD.
+newXavcSettings ::
+  XavcSettings
+newXavcSettings =
+  XavcSettings'
+    { adaptiveQuantization =
+        Prelude.Nothing,
+      entropyEncoding = Prelude.Nothing,
+      framerateControl = Prelude.Nothing,
+      framerateConversionAlgorithm = Prelude.Nothing,
+      framerateDenominator = Prelude.Nothing,
+      framerateNumerator = Prelude.Nothing,
+      profile = Prelude.Nothing,
+      slowPal = Prelude.Nothing,
+      softness = Prelude.Nothing,
+      spatialAdaptiveQuantization = Prelude.Nothing,
+      temporalAdaptiveQuantization = Prelude.Nothing,
+      xavc4kIntraCbgProfileSettings = Prelude.Nothing,
+      xavc4kIntraVbrProfileSettings = Prelude.Nothing,
+      xavc4kProfileSettings = Prelude.Nothing,
+      xavcHdIntraCbgProfileSettings = Prelude.Nothing,
+      xavcHdProfileSettings = Prelude.Nothing
+    }
+
+-- | Keep the default value, Auto (AUTO), for this setting to have
+-- MediaConvert automatically apply the best types of quantization for your
+-- video content. When you want to apply your quantization settings
+-- manually, you must set Adaptive quantization (adaptiveQuantization) to a
+-- value other than Auto (AUTO). Use this setting to specify the strength
+-- of any adaptive quantization filters that you enable. If you don\'t want
+-- MediaConvert to do any adaptive quantization in this transcode, set
+-- Adaptive quantization to Off (OFF). Related settings: The value that you
+-- choose here applies to the following settings: Flicker adaptive
+-- quantization (flickerAdaptiveQuantization), Spatial adaptive
+-- quantization (spatialAdaptiveQuantization), and Temporal adaptive
+-- quantization (temporalAdaptiveQuantization).
+xavcSettings_adaptiveQuantization :: Lens.Lens' XavcSettings (Prelude.Maybe XavcAdaptiveQuantization)
+xavcSettings_adaptiveQuantization = Lens.lens (\XavcSettings' {adaptiveQuantization} -> adaptiveQuantization) (\s@XavcSettings' {} a -> s {adaptiveQuantization = a} :: XavcSettings)
+
+-- | Optional. Choose a specific entropy encoding mode only when you want to
+-- override XAVC recommendations. If you choose the value auto,
+-- MediaConvert uses the mode that the XAVC file format specifies given
+-- this output\'s operating point.
+xavcSettings_entropyEncoding :: Lens.Lens' XavcSettings (Prelude.Maybe XavcEntropyEncoding)
+xavcSettings_entropyEncoding = Lens.lens (\XavcSettings' {entropyEncoding} -> entropyEncoding) (\s@XavcSettings' {} a -> s {entropyEncoding = a} :: XavcSettings)
+
+-- | If you are using the console, use the Frame rate setting to specify the
+-- frame rate for this output. If you want to keep the same frame rate as
+-- the input video, choose Follow source. If you want to do frame rate
+-- conversion, choose a frame rate from the dropdown list. The framerates
+-- shown in the dropdown list are decimal approximations of fractions. If
+-- you are creating your transcoding job specification as a JSON file
+-- without the console, use FramerateControl to specify which value the
+-- service uses for the frame rate for this output. Choose
+-- INITIALIZE_FROM_SOURCE if you want the service to use the frame rate
+-- from the input. Choose SPECIFIED if you want the service to use the
+-- frame rate that you specify in the settings FramerateNumerator and
+-- FramerateDenominator.
+xavcSettings_framerateControl :: Lens.Lens' XavcSettings (Prelude.Maybe XavcFramerateControl)
+xavcSettings_framerateControl = Lens.lens (\XavcSettings' {framerateControl} -> framerateControl) (\s@XavcSettings' {} a -> s {framerateControl = a} :: XavcSettings)
+
+-- | Choose the method that you want MediaConvert to use when increasing or
+-- decreasing the frame rate. We recommend using drop duplicate
+-- (DUPLICATE_DROP) for numerically simple conversions, such as 60 fps to
+-- 30 fps. For numerically complex conversions, you can use interpolate
+-- (INTERPOLATE) to avoid stutter. This results in a smooth picture, but
+-- might introduce undesirable video artifacts. For complex frame rate
+-- conversions, especially if your source video has already been converted
+-- from its original cadence, use FrameFormer (FRAMEFORMER) to do
+-- motion-compensated interpolation. FrameFormer chooses the best
+-- conversion method frame by frame. Note that using FrameFormer increases
+-- the transcoding time and incurs a significant add-on cost.
+xavcSettings_framerateConversionAlgorithm :: Lens.Lens' XavcSettings (Prelude.Maybe XavcFramerateConversionAlgorithm)
+xavcSettings_framerateConversionAlgorithm = Lens.lens (\XavcSettings' {framerateConversionAlgorithm} -> framerateConversionAlgorithm) (\s@XavcSettings' {} a -> s {framerateConversionAlgorithm = a} :: XavcSettings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateDenominator to specify the denominator of this
+-- fraction. In this example, use 1001 for the value of
+-- FramerateDenominator. When you use the console for transcode jobs that
+-- use frame rate conversion, provide the value as a decimal number for
+-- Frame rate. In this example, specify 23.976.
+xavcSettings_framerateDenominator :: Lens.Lens' XavcSettings (Prelude.Maybe Prelude.Natural)
+xavcSettings_framerateDenominator = Lens.lens (\XavcSettings' {framerateDenominator} -> framerateDenominator) (\s@XavcSettings' {} a -> s {framerateDenominator = a} :: XavcSettings)
+
+-- | When you use the API for transcode jobs that use frame rate conversion,
+-- specify the frame rate as a fraction. For example, 24000 \/ 1001 =
+-- 23.976 fps. Use FramerateNumerator to specify the numerator of this
+-- fraction. In this example, use 24000 for the value of
+-- FramerateNumerator. When you use the console for transcode jobs that use
+-- frame rate conversion, provide the value as a decimal number for
+-- Framerate. In this example, specify 23.976.
+xavcSettings_framerateNumerator :: Lens.Lens' XavcSettings (Prelude.Maybe Prelude.Natural)
+xavcSettings_framerateNumerator = Lens.lens (\XavcSettings' {framerateNumerator} -> framerateNumerator) (\s@XavcSettings' {} a -> s {framerateNumerator = a} :: XavcSettings)
+
+-- | Specify the XAVC profile for this output. For more information, see the
+-- Sony documentation at https:\/\/www.xavc-info.org\/. Note that
+-- MediaConvert doesn\'t support the interlaced video XAVC operating points
+-- for XAVC_HD_INTRA_CBG. To create an interlaced XAVC output, choose the
+-- profile XAVC_HD.
+xavcSettings_profile :: Lens.Lens' XavcSettings (Prelude.Maybe XavcProfile)
+xavcSettings_profile = Lens.lens (\XavcSettings' {profile} -> profile) (\s@XavcSettings' {} a -> s {profile = a} :: XavcSettings)
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output by
+-- relabeling the video frames and resampling your audio. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Related settings: You must also set Frame rate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+xavcSettings_slowPal :: Lens.Lens' XavcSettings (Prelude.Maybe XavcSlowPal)
+xavcSettings_slowPal = Lens.lens (\XavcSettings' {slowPal} -> slowPal) (\s@XavcSettings' {} a -> s {slowPal = a} :: XavcSettings)
+
+-- | Ignore this setting unless your downstream workflow requires that you
+-- specify it explicitly. Otherwise, we recommend that you adjust the
+-- softness of your output by using a lower value for the setting Sharpness
+-- (sharpness) or by enabling a noise reducer filter (noiseReducerFilter).
+-- The Softness (softness) setting specifies the quantization matrices that
+-- the encoder uses. Keep the default value, 0, for flat quantization.
+-- Choose the value 1 or 16 to use the default JVT softening quantization
+-- matricies from the H.264 specification. Choose a value from 17 to 128 to
+-- use planar interpolation. Increasing values from 17 to 128 result in
+-- increasing reduction of high-frequency data. The value 128 results in
+-- the softest video.
+xavcSettings_softness :: Lens.Lens' XavcSettings (Prelude.Maybe Prelude.Natural)
+xavcSettings_softness = Lens.lens (\XavcSettings' {softness} -> softness) (\s@XavcSettings' {} a -> s {softness = a} :: XavcSettings)
+
+-- | The best way to set up adaptive quantization is to keep the default
+-- value, Auto (AUTO), for the setting Adaptive quantization
+-- (adaptiveQuantization). When you do so, MediaConvert automatically
+-- applies the best types of quantization for your video content. Include
+-- this setting in your JSON job specification only when you choose to
+-- change the default value for Adaptive quantization. For this setting,
+-- keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on spatial variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas that can
+-- sustain more distortion with no noticeable visual degradation and uses
+-- more bits on areas where any small distortion will be noticeable. For
+-- example, complex textured blocks are encoded with fewer bits and smooth
+-- textured blocks are encoded with more bits. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen with a lot of complex texture, you might choose to
+-- disable this feature. Related setting: When you enable spatial adaptive
+-- quantization, set the value for Adaptive quantization
+-- (adaptiveQuantization) depending on your content. For homogeneous
+-- content, such as cartoons and video games, set it to Low. For content
+-- with a wider variety of textures, set it to High or Higher.
+xavcSettings_spatialAdaptiveQuantization :: Lens.Lens' XavcSettings (Prelude.Maybe XavcSpatialAdaptiveQuantization)
+xavcSettings_spatialAdaptiveQuantization = Lens.lens (\XavcSettings' {spatialAdaptiveQuantization} -> spatialAdaptiveQuantization) (\s@XavcSettings' {} a -> s {spatialAdaptiveQuantization = a} :: XavcSettings)
+
+-- | The best way to set up adaptive quantization is to keep the default
+-- value, Auto (AUTO), for the setting Adaptive quantization
+-- (adaptiveQuantization). When you do so, MediaConvert automatically
+-- applies the best types of quantization for your video content. Include
+-- this setting in your JSON job specification only when you choose to
+-- change the default value for Adaptive quantization. For this setting,
+-- keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on temporal variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas of the frame
+-- that aren\'t moving and uses more bits on complex objects with sharp
+-- edges that move a lot. For example, this feature improves the
+-- readability of text tickers on newscasts and scoreboards on sports
+-- matches. Enabling this feature will almost always improve your video
+-- quality. Note, though, that this feature doesn\'t take into account
+-- where the viewer\'s attention is likely to be. If viewers are likely to
+-- be focusing their attention on a part of the screen that doesn\'t have
+-- moving objects with sharp edges, such as sports athletes\' faces, you
+-- might choose to disable this feature. Related setting: When you enable
+-- temporal adaptive quantization, adjust the strength of the filter with
+-- the setting Adaptive quantization (adaptiveQuantization).
+xavcSettings_temporalAdaptiveQuantization :: Lens.Lens' XavcSettings (Prelude.Maybe XavcTemporalAdaptiveQuantization)
+xavcSettings_temporalAdaptiveQuantization = Lens.lens (\XavcSettings' {temporalAdaptiveQuantization} -> temporalAdaptiveQuantization) (\s@XavcSettings' {} a -> s {temporalAdaptiveQuantization = a} :: XavcSettings)
+
+-- | Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value
+-- XAVC_4K_INTRA_CBG.
+xavcSettings_xavc4kIntraCbgProfileSettings :: Lens.Lens' XavcSettings (Prelude.Maybe Xavc4kIntraCbgProfileSettings)
+xavcSettings_xavc4kIntraCbgProfileSettings = Lens.lens (\XavcSettings' {xavc4kIntraCbgProfileSettings} -> xavc4kIntraCbgProfileSettings) (\s@XavcSettings' {} a -> s {xavc4kIntraCbgProfileSettings = a} :: XavcSettings)
+
+-- | Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value
+-- XAVC_4K_INTRA_VBR.
+xavcSettings_xavc4kIntraVbrProfileSettings :: Lens.Lens' XavcSettings (Prelude.Maybe Xavc4kIntraVbrProfileSettings)
+xavcSettings_xavc4kIntraVbrProfileSettings = Lens.lens (\XavcSettings' {xavc4kIntraVbrProfileSettings} -> xavc4kIntraVbrProfileSettings) (\s@XavcSettings' {} a -> s {xavc4kIntraVbrProfileSettings = a} :: XavcSettings)
+
+-- | Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value XAVC_4K.
+xavcSettings_xavc4kProfileSettings :: Lens.Lens' XavcSettings (Prelude.Maybe Xavc4kProfileSettings)
+xavcSettings_xavc4kProfileSettings = Lens.lens (\XavcSettings' {xavc4kProfileSettings} -> xavc4kProfileSettings) (\s@XavcSettings' {} a -> s {xavc4kProfileSettings = a} :: XavcSettings)
+
+-- | Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value
+-- XAVC_HD_INTRA_CBG.
+xavcSettings_xavcHdIntraCbgProfileSettings :: Lens.Lens' XavcSettings (Prelude.Maybe XavcHdIntraCbgProfileSettings)
+xavcSettings_xavcHdIntraCbgProfileSettings = Lens.lens (\XavcSettings' {xavcHdIntraCbgProfileSettings} -> xavcHdIntraCbgProfileSettings) (\s@XavcSettings' {} a -> s {xavcHdIntraCbgProfileSettings = a} :: XavcSettings)
+
+-- | Required when you set (Profile) under
+-- (VideoDescription)>(CodecSettings)>(XavcSettings) to the value XAVC_HD.
+xavcSettings_xavcHdProfileSettings :: Lens.Lens' XavcSettings (Prelude.Maybe XavcHdProfileSettings)
+xavcSettings_xavcHdProfileSettings = Lens.lens (\XavcSettings' {xavcHdProfileSettings} -> xavcHdProfileSettings) (\s@XavcSettings' {} a -> s {xavcHdProfileSettings = a} :: XavcSettings)
+
+instance Data.FromJSON XavcSettings where
+  parseJSON =
+    Data.withObject
+      "XavcSettings"
+      ( \x ->
+          XavcSettings'
+            Prelude.<$> (x Data..:? "adaptiveQuantization")
+            Prelude.<*> (x Data..:? "entropyEncoding")
+            Prelude.<*> (x Data..:? "framerateControl")
+            Prelude.<*> (x Data..:? "framerateConversionAlgorithm")
+            Prelude.<*> (x Data..:? "framerateDenominator")
+            Prelude.<*> (x Data..:? "framerateNumerator")
+            Prelude.<*> (x Data..:? "profile")
+            Prelude.<*> (x Data..:? "slowPal")
+            Prelude.<*> (x Data..:? "softness")
+            Prelude.<*> (x Data..:? "spatialAdaptiveQuantization")
+            Prelude.<*> (x Data..:? "temporalAdaptiveQuantization")
+            Prelude.<*> (x Data..:? "xavc4kIntraCbgProfileSettings")
+            Prelude.<*> (x Data..:? "xavc4kIntraVbrProfileSettings")
+            Prelude.<*> (x Data..:? "xavc4kProfileSettings")
+            Prelude.<*> (x Data..:? "xavcHdIntraCbgProfileSettings")
+            Prelude.<*> (x Data..:? "xavcHdProfileSettings")
+      )
+
+instance Prelude.Hashable XavcSettings where
+  hashWithSalt _salt XavcSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` adaptiveQuantization
+      `Prelude.hashWithSalt` entropyEncoding
+      `Prelude.hashWithSalt` framerateControl
+      `Prelude.hashWithSalt` framerateConversionAlgorithm
+      `Prelude.hashWithSalt` framerateDenominator
+      `Prelude.hashWithSalt` framerateNumerator
+      `Prelude.hashWithSalt` profile
+      `Prelude.hashWithSalt` slowPal
+      `Prelude.hashWithSalt` softness
+      `Prelude.hashWithSalt` spatialAdaptiveQuantization
+      `Prelude.hashWithSalt` temporalAdaptiveQuantization
+      `Prelude.hashWithSalt` xavc4kIntraCbgProfileSettings
+      `Prelude.hashWithSalt` xavc4kIntraVbrProfileSettings
+      `Prelude.hashWithSalt` xavc4kProfileSettings
+      `Prelude.hashWithSalt` xavcHdIntraCbgProfileSettings
+      `Prelude.hashWithSalt` xavcHdProfileSettings
+
+instance Prelude.NFData XavcSettings where
+  rnf XavcSettings' {..} =
+    Prelude.rnf adaptiveQuantization
+      `Prelude.seq` Prelude.rnf entropyEncoding
+      `Prelude.seq` Prelude.rnf framerateControl
+      `Prelude.seq` Prelude.rnf framerateConversionAlgorithm
+      `Prelude.seq` Prelude.rnf framerateDenominator
+      `Prelude.seq` Prelude.rnf framerateNumerator
+      `Prelude.seq` Prelude.rnf profile
+      `Prelude.seq` Prelude.rnf slowPal
+      `Prelude.seq` Prelude.rnf softness
+      `Prelude.seq` Prelude.rnf spatialAdaptiveQuantization
+      `Prelude.seq` Prelude.rnf temporalAdaptiveQuantization
+      `Prelude.seq` Prelude.rnf xavc4kIntraCbgProfileSettings
+      `Prelude.seq` Prelude.rnf xavc4kIntraVbrProfileSettings
+      `Prelude.seq` Prelude.rnf xavc4kProfileSettings
+      `Prelude.seq` Prelude.rnf
+        xavcHdIntraCbgProfileSettings
+      `Prelude.seq` Prelude.rnf xavcHdProfileSettings
+
+instance Data.ToJSON XavcSettings where
+  toJSON XavcSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("adaptiveQuantization" Data..=)
+              Prelude.<$> adaptiveQuantization,
+            ("entropyEncoding" Data..=)
+              Prelude.<$> entropyEncoding,
+            ("framerateControl" Data..=)
+              Prelude.<$> framerateControl,
+            ("framerateConversionAlgorithm" Data..=)
+              Prelude.<$> framerateConversionAlgorithm,
+            ("framerateDenominator" Data..=)
+              Prelude.<$> framerateDenominator,
+            ("framerateNumerator" Data..=)
+              Prelude.<$> framerateNumerator,
+            ("profile" Data..=) Prelude.<$> profile,
+            ("slowPal" Data..=) Prelude.<$> slowPal,
+            ("softness" Data..=) Prelude.<$> softness,
+            ("spatialAdaptiveQuantization" Data..=)
+              Prelude.<$> spatialAdaptiveQuantization,
+            ("temporalAdaptiveQuantization" Data..=)
+              Prelude.<$> temporalAdaptiveQuantization,
+            ("xavc4kIntraCbgProfileSettings" Data..=)
+              Prelude.<$> xavc4kIntraCbgProfileSettings,
+            ("xavc4kIntraVbrProfileSettings" Data..=)
+              Prelude.<$> xavc4kIntraVbrProfileSettings,
+            ("xavc4kProfileSettings" Data..=)
+              Prelude.<$> xavc4kProfileSettings,
+            ("xavcHdIntraCbgProfileSettings" Data..=)
+              Prelude.<$> xavcHdIntraCbgProfileSettings,
+            ("xavcHdProfileSettings" Data..=)
+              Prelude.<$> xavcHdProfileSettings
+          ]
+      )
diff --git a/gen/Amazonka/MediaConvert/Types/XavcSlowPal.hs b/gen/Amazonka/MediaConvert/Types/XavcSlowPal.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcSlowPal.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcSlowPal
+-- 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.XavcSlowPal
+  ( XavcSlowPal
+      ( ..,
+        XavcSlowPal_DISABLED,
+        XavcSlowPal_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Ignore this setting unless your input frame rate is 23.976 or 24 frames
+-- per second (fps). Enable slow PAL to create a 25 fps output by
+-- relabeling the video frames and resampling your audio. Note that
+-- enabling this setting will slightly reduce the duration of your video.
+-- Related settings: You must also set Frame rate to 25. In your JSON job
+-- specification, set (framerateControl) to (SPECIFIED),
+-- (framerateNumerator) to 25 and (framerateDenominator) to 1.
+newtype XavcSlowPal = XavcSlowPal'
+  { fromXavcSlowPal ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcSlowPal_DISABLED :: XavcSlowPal
+pattern XavcSlowPal_DISABLED = XavcSlowPal' "DISABLED"
+
+pattern XavcSlowPal_ENABLED :: XavcSlowPal
+pattern XavcSlowPal_ENABLED = XavcSlowPal' "ENABLED"
+
+{-# COMPLETE
+  XavcSlowPal_DISABLED,
+  XavcSlowPal_ENABLED,
+  XavcSlowPal'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcSpatialAdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/XavcSpatialAdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcSpatialAdaptiveQuantization.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcSpatialAdaptiveQuantization
+-- 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.XavcSpatialAdaptiveQuantization
+  ( XavcSpatialAdaptiveQuantization
+      ( ..,
+        XavcSpatialAdaptiveQuantization_DISABLED,
+        XavcSpatialAdaptiveQuantization_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The best way to set up adaptive quantization is to keep the default
+-- value, Auto (AUTO), for the setting Adaptive quantization
+-- (adaptiveQuantization). When you do so, MediaConvert automatically
+-- applies the best types of quantization for your video content. Include
+-- this setting in your JSON job specification only when you choose to
+-- change the default value for Adaptive quantization. For this setting,
+-- keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on spatial variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas that can
+-- sustain more distortion with no noticeable visual degradation and uses
+-- more bits on areas where any small distortion will be noticeable. For
+-- example, complex textured blocks are encoded with fewer bits and smooth
+-- textured blocks are encoded with more bits. Enabling this feature will
+-- almost always improve your video quality. Note, though, that this
+-- feature doesn\'t take into account where the viewer\'s attention is
+-- likely to be. If viewers are likely to be focusing their attention on a
+-- part of the screen with a lot of complex texture, you might choose to
+-- disable this feature. Related setting: When you enable spatial adaptive
+-- quantization, set the value for Adaptive quantization
+-- (adaptiveQuantization) depending on your content. For homogeneous
+-- content, such as cartoons and video games, set it to Low. For content
+-- with a wider variety of textures, set it to High or Higher.
+newtype XavcSpatialAdaptiveQuantization = XavcSpatialAdaptiveQuantization'
+  { fromXavcSpatialAdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcSpatialAdaptiveQuantization_DISABLED :: XavcSpatialAdaptiveQuantization
+pattern XavcSpatialAdaptiveQuantization_DISABLED = XavcSpatialAdaptiveQuantization' "DISABLED"
+
+pattern XavcSpatialAdaptiveQuantization_ENABLED :: XavcSpatialAdaptiveQuantization
+pattern XavcSpatialAdaptiveQuantization_ENABLED = XavcSpatialAdaptiveQuantization' "ENABLED"
+
+{-# COMPLETE
+  XavcSpatialAdaptiveQuantization_DISABLED,
+  XavcSpatialAdaptiveQuantization_ENABLED,
+  XavcSpatialAdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/Types/XavcTemporalAdaptiveQuantization.hs b/gen/Amazonka/MediaConvert/Types/XavcTemporalAdaptiveQuantization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Types/XavcTemporalAdaptiveQuantization.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Types.XavcTemporalAdaptiveQuantization
+-- 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.XavcTemporalAdaptiveQuantization
+  ( XavcTemporalAdaptiveQuantization
+      ( ..,
+        XavcTemporalAdaptiveQuantization_DISABLED,
+        XavcTemporalAdaptiveQuantization_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The best way to set up adaptive quantization is to keep the default
+-- value, Auto (AUTO), for the setting Adaptive quantization
+-- (adaptiveQuantization). When you do so, MediaConvert automatically
+-- applies the best types of quantization for your video content. Include
+-- this setting in your JSON job specification only when you choose to
+-- change the default value for Adaptive quantization. For this setting,
+-- keep the default value, Enabled (ENABLED), to adjust quantization within
+-- each frame based on temporal variation of content complexity. When you
+-- enable this feature, the encoder uses fewer bits on areas of the frame
+-- that aren\'t moving and uses more bits on complex objects with sharp
+-- edges that move a lot. For example, this feature improves the
+-- readability of text tickers on newscasts and scoreboards on sports
+-- matches. Enabling this feature will almost always improve your video
+-- quality. Note, though, that this feature doesn\'t take into account
+-- where the viewer\'s attention is likely to be. If viewers are likely to
+-- be focusing their attention on a part of the screen that doesn\'t have
+-- moving objects with sharp edges, such as sports athletes\' faces, you
+-- might choose to disable this feature. Related setting: When you enable
+-- temporal adaptive quantization, adjust the strength of the filter with
+-- the setting Adaptive quantization (adaptiveQuantization).
+newtype XavcTemporalAdaptiveQuantization = XavcTemporalAdaptiveQuantization'
+  { fromXavcTemporalAdaptiveQuantization ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern XavcTemporalAdaptiveQuantization_DISABLED :: XavcTemporalAdaptiveQuantization
+pattern XavcTemporalAdaptiveQuantization_DISABLED = XavcTemporalAdaptiveQuantization' "DISABLED"
+
+pattern XavcTemporalAdaptiveQuantization_ENABLED :: XavcTemporalAdaptiveQuantization
+pattern XavcTemporalAdaptiveQuantization_ENABLED = XavcTemporalAdaptiveQuantization' "ENABLED"
+
+{-# COMPLETE
+  XavcTemporalAdaptiveQuantization_DISABLED,
+  XavcTemporalAdaptiveQuantization_ENABLED,
+  XavcTemporalAdaptiveQuantization'
+  #-}
diff --git a/gen/Amazonka/MediaConvert/UntagResource.hs b/gen/Amazonka/MediaConvert/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/UntagResource.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.UntagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Remove tags from a MediaConvert queue, preset, or job template. For
+-- information about tagging, see the User Guide at
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/tagging-resources.html
+module Amazonka.MediaConvert.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_tagKeys,
+    untagResource_arn,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The keys of the tags that you want to remove from the resource.
+    tagKeys :: Prelude.Maybe [Prelude.Text],
+    -- | The Amazon Resource Name (ARN) of the resource that you want to remove
+    -- tags from. To get the ARN, send a GET request with the resource name.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' 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:
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The keys of the tags that you want to remove from the resource.
+--
+-- 'arn', 'untagResource_arn' - The Amazon Resource Name (ARN) of the resource that you want to remove
+-- tags from. To get the ARN, send a GET request with the resource name.
+newUntagResource ::
+  -- | 'arn'
+  Prelude.Text ->
+  UntagResource
+newUntagResource pArn_ =
+  UntagResource'
+    { tagKeys = Prelude.Nothing,
+      arn = pArn_
+    }
+
+-- | The keys of the tags that you want to remove from the resource.
+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.Maybe [Prelude.Text])
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the resource that you want to remove
+-- tags from. To get the ARN, send a GET request with the resource name.
+untagResource_arn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_arn = Lens.lens (\UntagResource' {arn} -> arn) (\s@UntagResource' {} a -> s {arn = a} :: UntagResource)
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` tagKeys
+      `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf tagKeys `Prelude.seq` Prelude.rnf arn
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UntagResource where
+  toJSON UntagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("tagKeys" Data..=) Prelude.<$> tagKeys]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat
+      ["/2017-08-29/tags/", Data.toBS arn]
+
+instance Data.ToQuery UntagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' 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:
+--
+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/UpdateJobTemplate.hs b/gen/Amazonka/MediaConvert/UpdateJobTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/UpdateJobTemplate.hs
@@ -0,0 +1,317 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.UpdateJobTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modify one of your existing job templates.
+module Amazonka.MediaConvert.UpdateJobTemplate
+  ( -- * Creating a Request
+    UpdateJobTemplate (..),
+    newUpdateJobTemplate,
+
+    -- * Request Lenses
+    updateJobTemplate_accelerationSettings,
+    updateJobTemplate_category,
+    updateJobTemplate_description,
+    updateJobTemplate_hopDestinations,
+    updateJobTemplate_priority,
+    updateJobTemplate_queue,
+    updateJobTemplate_settings,
+    updateJobTemplate_statusUpdateInterval,
+    updateJobTemplate_name,
+
+    -- * Destructuring the Response
+    UpdateJobTemplateResponse (..),
+    newUpdateJobTemplateResponse,
+
+    -- * Response Lenses
+    updateJobTemplateResponse_jobTemplate,
+    updateJobTemplateResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateJobTemplate' smart constructor.
+data UpdateJobTemplate = UpdateJobTemplate'
+  { -- | Accelerated transcoding can significantly speed up jobs with long,
+    -- visually complex content. Outputs that use this feature incur pro-tier
+    -- pricing. For information about feature limitations, see the AWS
+    -- Elemental MediaConvert User Guide.
+    accelerationSettings :: Prelude.Maybe AccelerationSettings,
+    -- | The new category for the job template, if you are changing it.
+    category :: Prelude.Maybe Prelude.Text,
+    -- | The new description for the job template, if you are changing it.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Optional list of hop destinations.
+    hopDestinations :: Prelude.Maybe [HopDestination],
+    -- | Specify the relative priority for this job. In any given queue, the
+    -- service begins processing the job with the highest value first. When
+    -- more than one job has the same priority, the service begins processing
+    -- the job that you submitted first. If you don\'t specify a priority, the
+    -- service uses the default value 0.
+    priority :: Prelude.Maybe Prelude.Int,
+    -- | The new queue for the job template, if you are changing it.
+    queue :: Prelude.Maybe Prelude.Text,
+    -- | JobTemplateSettings contains all the transcode settings saved in the
+    -- template that will be applied to jobs created from it.
+    settings :: Prelude.Maybe JobTemplateSettings,
+    -- | Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
+    -- CloudWatch Events. Set the interval, in seconds, between status updates.
+    -- MediaConvert sends an update at this interval from the time the service
+    -- begins processing your job to the time it completes the transcode or
+    -- encounters an error.
+    statusUpdateInterval :: Prelude.Maybe StatusUpdateInterval,
+    -- | The name of the job template you are modifying
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateJobTemplate' 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:
+--
+-- 'accelerationSettings', 'updateJobTemplate_accelerationSettings' - Accelerated transcoding can significantly speed up jobs with long,
+-- visually complex content. Outputs that use this feature incur pro-tier
+-- pricing. For information about feature limitations, see the AWS
+-- Elemental MediaConvert User Guide.
+--
+-- 'category', 'updateJobTemplate_category' - The new category for the job template, if you are changing it.
+--
+-- 'description', 'updateJobTemplate_description' - The new description for the job template, if you are changing it.
+--
+-- 'hopDestinations', 'updateJobTemplate_hopDestinations' - Optional list of hop destinations.
+--
+-- 'priority', 'updateJobTemplate_priority' - Specify the relative priority for this job. In any given queue, the
+-- service begins processing the job with the highest value first. When
+-- more than one job has the same priority, the service begins processing
+-- the job that you submitted first. If you don\'t specify a priority, the
+-- service uses the default value 0.
+--
+-- 'queue', 'updateJobTemplate_queue' - The new queue for the job template, if you are changing it.
+--
+-- 'settings', 'updateJobTemplate_settings' - JobTemplateSettings contains all the transcode settings saved in the
+-- template that will be applied to jobs created from it.
+--
+-- 'statusUpdateInterval', 'updateJobTemplate_statusUpdateInterval' - Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
+-- CloudWatch Events. Set the interval, in seconds, between status updates.
+-- MediaConvert sends an update at this interval from the time the service
+-- begins processing your job to the time it completes the transcode or
+-- encounters an error.
+--
+-- 'name', 'updateJobTemplate_name' - The name of the job template you are modifying
+newUpdateJobTemplate ::
+  -- | 'name'
+  Prelude.Text ->
+  UpdateJobTemplate
+newUpdateJobTemplate pName_ =
+  UpdateJobTemplate'
+    { accelerationSettings =
+        Prelude.Nothing,
+      category = Prelude.Nothing,
+      description = Prelude.Nothing,
+      hopDestinations = Prelude.Nothing,
+      priority = Prelude.Nothing,
+      queue = Prelude.Nothing,
+      settings = Prelude.Nothing,
+      statusUpdateInterval = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | Accelerated transcoding can significantly speed up jobs with long,
+-- visually complex content. Outputs that use this feature incur pro-tier
+-- pricing. For information about feature limitations, see the AWS
+-- Elemental MediaConvert User Guide.
+updateJobTemplate_accelerationSettings :: Lens.Lens' UpdateJobTemplate (Prelude.Maybe AccelerationSettings)
+updateJobTemplate_accelerationSettings = Lens.lens (\UpdateJobTemplate' {accelerationSettings} -> accelerationSettings) (\s@UpdateJobTemplate' {} a -> s {accelerationSettings = a} :: UpdateJobTemplate)
+
+-- | The new category for the job template, if you are changing it.
+updateJobTemplate_category :: Lens.Lens' UpdateJobTemplate (Prelude.Maybe Prelude.Text)
+updateJobTemplate_category = Lens.lens (\UpdateJobTemplate' {category} -> category) (\s@UpdateJobTemplate' {} a -> s {category = a} :: UpdateJobTemplate)
+
+-- | The new description for the job template, if you are changing it.
+updateJobTemplate_description :: Lens.Lens' UpdateJobTemplate (Prelude.Maybe Prelude.Text)
+updateJobTemplate_description = Lens.lens (\UpdateJobTemplate' {description} -> description) (\s@UpdateJobTemplate' {} a -> s {description = a} :: UpdateJobTemplate)
+
+-- | Optional list of hop destinations.
+updateJobTemplate_hopDestinations :: Lens.Lens' UpdateJobTemplate (Prelude.Maybe [HopDestination])
+updateJobTemplate_hopDestinations = Lens.lens (\UpdateJobTemplate' {hopDestinations} -> hopDestinations) (\s@UpdateJobTemplate' {} a -> s {hopDestinations = a} :: UpdateJobTemplate) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specify the relative priority for this job. In any given queue, the
+-- service begins processing the job with the highest value first. When
+-- more than one job has the same priority, the service begins processing
+-- the job that you submitted first. If you don\'t specify a priority, the
+-- service uses the default value 0.
+updateJobTemplate_priority :: Lens.Lens' UpdateJobTemplate (Prelude.Maybe Prelude.Int)
+updateJobTemplate_priority = Lens.lens (\UpdateJobTemplate' {priority} -> priority) (\s@UpdateJobTemplate' {} a -> s {priority = a} :: UpdateJobTemplate)
+
+-- | The new queue for the job template, if you are changing it.
+updateJobTemplate_queue :: Lens.Lens' UpdateJobTemplate (Prelude.Maybe Prelude.Text)
+updateJobTemplate_queue = Lens.lens (\UpdateJobTemplate' {queue} -> queue) (\s@UpdateJobTemplate' {} a -> s {queue = a} :: UpdateJobTemplate)
+
+-- | JobTemplateSettings contains all the transcode settings saved in the
+-- template that will be applied to jobs created from it.
+updateJobTemplate_settings :: Lens.Lens' UpdateJobTemplate (Prelude.Maybe JobTemplateSettings)
+updateJobTemplate_settings = Lens.lens (\UpdateJobTemplate' {settings} -> settings) (\s@UpdateJobTemplate' {} a -> s {settings = a} :: UpdateJobTemplate)
+
+-- | Specify how often MediaConvert sends STATUS_UPDATE events to Amazon
+-- CloudWatch Events. Set the interval, in seconds, between status updates.
+-- MediaConvert sends an update at this interval from the time the service
+-- begins processing your job to the time it completes the transcode or
+-- encounters an error.
+updateJobTemplate_statusUpdateInterval :: Lens.Lens' UpdateJobTemplate (Prelude.Maybe StatusUpdateInterval)
+updateJobTemplate_statusUpdateInterval = Lens.lens (\UpdateJobTemplate' {statusUpdateInterval} -> statusUpdateInterval) (\s@UpdateJobTemplate' {} a -> s {statusUpdateInterval = a} :: UpdateJobTemplate)
+
+-- | The name of the job template you are modifying
+updateJobTemplate_name :: Lens.Lens' UpdateJobTemplate Prelude.Text
+updateJobTemplate_name = Lens.lens (\UpdateJobTemplate' {name} -> name) (\s@UpdateJobTemplate' {} a -> s {name = a} :: UpdateJobTemplate)
+
+instance Core.AWSRequest UpdateJobTemplate where
+  type
+    AWSResponse UpdateJobTemplate =
+      UpdateJobTemplateResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateJobTemplateResponse'
+            Prelude.<$> (x Data..?> "jobTemplate")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateJobTemplate where
+  hashWithSalt _salt UpdateJobTemplate' {..} =
+    _salt
+      `Prelude.hashWithSalt` accelerationSettings
+      `Prelude.hashWithSalt` category
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` hopDestinations
+      `Prelude.hashWithSalt` priority
+      `Prelude.hashWithSalt` queue
+      `Prelude.hashWithSalt` settings
+      `Prelude.hashWithSalt` statusUpdateInterval
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData UpdateJobTemplate where
+  rnf UpdateJobTemplate' {..} =
+    Prelude.rnf accelerationSettings
+      `Prelude.seq` Prelude.rnf category
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf hopDestinations
+      `Prelude.seq` Prelude.rnf priority
+      `Prelude.seq` Prelude.rnf queue
+      `Prelude.seq` Prelude.rnf settings
+      `Prelude.seq` Prelude.rnf statusUpdateInterval
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders UpdateJobTemplate where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateJobTemplate where
+  toJSON UpdateJobTemplate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("accelerationSettings" Data..=)
+              Prelude.<$> accelerationSettings,
+            ("category" Data..=) Prelude.<$> category,
+            ("description" Data..=) Prelude.<$> description,
+            ("hopDestinations" Data..=)
+              Prelude.<$> hopDestinations,
+            ("priority" Data..=) Prelude.<$> priority,
+            ("queue" Data..=) Prelude.<$> queue,
+            ("settings" Data..=) Prelude.<$> settings,
+            ("statusUpdateInterval" Data..=)
+              Prelude.<$> statusUpdateInterval
+          ]
+      )
+
+instance Data.ToPath UpdateJobTemplate where
+  toPath UpdateJobTemplate' {..} =
+    Prelude.mconcat
+      ["/2017-08-29/jobTemplates/", Data.toBS name]
+
+instance Data.ToQuery UpdateJobTemplate where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateJobTemplateResponse' smart constructor.
+data UpdateJobTemplateResponse = UpdateJobTemplateResponse'
+  { -- | A job template is a pre-made set of encoding instructions that you can
+    -- use to quickly create a job.
+    jobTemplate :: Prelude.Maybe JobTemplate,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateJobTemplateResponse' 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:
+--
+-- 'jobTemplate', 'updateJobTemplateResponse_jobTemplate' - A job template is a pre-made set of encoding instructions that you can
+-- use to quickly create a job.
+--
+-- 'httpStatus', 'updateJobTemplateResponse_httpStatus' - The response's http status code.
+newUpdateJobTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateJobTemplateResponse
+newUpdateJobTemplateResponse pHttpStatus_ =
+  UpdateJobTemplateResponse'
+    { jobTemplate =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A job template is a pre-made set of encoding instructions that you can
+-- use to quickly create a job.
+updateJobTemplateResponse_jobTemplate :: Lens.Lens' UpdateJobTemplateResponse (Prelude.Maybe JobTemplate)
+updateJobTemplateResponse_jobTemplate = Lens.lens (\UpdateJobTemplateResponse' {jobTemplate} -> jobTemplate) (\s@UpdateJobTemplateResponse' {} a -> s {jobTemplate = a} :: UpdateJobTemplateResponse)
+
+-- | The response's http status code.
+updateJobTemplateResponse_httpStatus :: Lens.Lens' UpdateJobTemplateResponse Prelude.Int
+updateJobTemplateResponse_httpStatus = Lens.lens (\UpdateJobTemplateResponse' {httpStatus} -> httpStatus) (\s@UpdateJobTemplateResponse' {} a -> s {httpStatus = a} :: UpdateJobTemplateResponse)
+
+instance Prelude.NFData UpdateJobTemplateResponse where
+  rnf UpdateJobTemplateResponse' {..} =
+    Prelude.rnf jobTemplate
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/UpdatePreset.hs b/gen/Amazonka/MediaConvert/UpdatePreset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/UpdatePreset.hs
@@ -0,0 +1,212 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.UpdatePreset
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modify one of your existing presets.
+module Amazonka.MediaConvert.UpdatePreset
+  ( -- * Creating a Request
+    UpdatePreset (..),
+    newUpdatePreset,
+
+    -- * Request Lenses
+    updatePreset_category,
+    updatePreset_description,
+    updatePreset_settings,
+    updatePreset_name,
+
+    -- * Destructuring the Response
+    UpdatePresetResponse (..),
+    newUpdatePresetResponse,
+
+    -- * Response Lenses
+    updatePresetResponse_preset,
+    updatePresetResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdatePreset' smart constructor.
+data UpdatePreset = UpdatePreset'
+  { -- | The new category for the preset, if you are changing it.
+    category :: Prelude.Maybe Prelude.Text,
+    -- | The new description for the preset, if you are changing it.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Settings for preset
+    settings :: Prelude.Maybe PresetSettings,
+    -- | The name of the preset you are modifying.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePreset' 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:
+--
+-- 'category', 'updatePreset_category' - The new category for the preset, if you are changing it.
+--
+-- 'description', 'updatePreset_description' - The new description for the preset, if you are changing it.
+--
+-- 'settings', 'updatePreset_settings' - Settings for preset
+--
+-- 'name', 'updatePreset_name' - The name of the preset you are modifying.
+newUpdatePreset ::
+  -- | 'name'
+  Prelude.Text ->
+  UpdatePreset
+newUpdatePreset pName_ =
+  UpdatePreset'
+    { category = Prelude.Nothing,
+      description = Prelude.Nothing,
+      settings = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | The new category for the preset, if you are changing it.
+updatePreset_category :: Lens.Lens' UpdatePreset (Prelude.Maybe Prelude.Text)
+updatePreset_category = Lens.lens (\UpdatePreset' {category} -> category) (\s@UpdatePreset' {} a -> s {category = a} :: UpdatePreset)
+
+-- | The new description for the preset, if you are changing it.
+updatePreset_description :: Lens.Lens' UpdatePreset (Prelude.Maybe Prelude.Text)
+updatePreset_description = Lens.lens (\UpdatePreset' {description} -> description) (\s@UpdatePreset' {} a -> s {description = a} :: UpdatePreset)
+
+-- | Settings for preset
+updatePreset_settings :: Lens.Lens' UpdatePreset (Prelude.Maybe PresetSettings)
+updatePreset_settings = Lens.lens (\UpdatePreset' {settings} -> settings) (\s@UpdatePreset' {} a -> s {settings = a} :: UpdatePreset)
+
+-- | The name of the preset you are modifying.
+updatePreset_name :: Lens.Lens' UpdatePreset Prelude.Text
+updatePreset_name = Lens.lens (\UpdatePreset' {name} -> name) (\s@UpdatePreset' {} a -> s {name = a} :: UpdatePreset)
+
+instance Core.AWSRequest UpdatePreset where
+  type AWSResponse UpdatePreset = UpdatePresetResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdatePresetResponse'
+            Prelude.<$> (x Data..?> "preset")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdatePreset where
+  hashWithSalt _salt UpdatePreset' {..} =
+    _salt
+      `Prelude.hashWithSalt` category
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` settings
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData UpdatePreset where
+  rnf UpdatePreset' {..} =
+    Prelude.rnf category
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf settings
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders UpdatePreset where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdatePreset where
+  toJSON UpdatePreset' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("category" Data..=) Prelude.<$> category,
+            ("description" Data..=) Prelude.<$> description,
+            ("settings" Data..=) Prelude.<$> settings
+          ]
+      )
+
+instance Data.ToPath UpdatePreset where
+  toPath UpdatePreset' {..} =
+    Prelude.mconcat
+      ["/2017-08-29/presets/", Data.toBS name]
+
+instance Data.ToQuery UpdatePreset where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdatePresetResponse' smart constructor.
+data UpdatePresetResponse = UpdatePresetResponse'
+  { -- | A preset is a collection of preconfigured media conversion settings that
+    -- you want MediaConvert to apply to the output during the conversion
+    -- process.
+    preset :: Prelude.Maybe Preset,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePresetResponse' 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:
+--
+-- 'preset', 'updatePresetResponse_preset' - A preset is a collection of preconfigured media conversion settings that
+-- you want MediaConvert to apply to the output during the conversion
+-- process.
+--
+-- 'httpStatus', 'updatePresetResponse_httpStatus' - The response's http status code.
+newUpdatePresetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdatePresetResponse
+newUpdatePresetResponse pHttpStatus_ =
+  UpdatePresetResponse'
+    { preset = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A preset is a collection of preconfigured media conversion settings that
+-- you want MediaConvert to apply to the output during the conversion
+-- process.
+updatePresetResponse_preset :: Lens.Lens' UpdatePresetResponse (Prelude.Maybe Preset)
+updatePresetResponse_preset = Lens.lens (\UpdatePresetResponse' {preset} -> preset) (\s@UpdatePresetResponse' {} a -> s {preset = a} :: UpdatePresetResponse)
+
+-- | The response's http status code.
+updatePresetResponse_httpStatus :: Lens.Lens' UpdatePresetResponse Prelude.Int
+updatePresetResponse_httpStatus = Lens.lens (\UpdatePresetResponse' {httpStatus} -> httpStatus) (\s@UpdatePresetResponse' {} a -> s {httpStatus = a} :: UpdatePresetResponse)
+
+instance Prelude.NFData UpdatePresetResponse where
+  rnf UpdatePresetResponse' {..} =
+    Prelude.rnf preset
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/UpdateQueue.hs b/gen/Amazonka/MediaConvert/UpdateQueue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/UpdateQueue.hs
@@ -0,0 +1,243 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# 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.UpdateQueue
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modify one of your existing queues.
+module Amazonka.MediaConvert.UpdateQueue
+  ( -- * Creating a Request
+    UpdateQueue (..),
+    newUpdateQueue,
+
+    -- * Request Lenses
+    updateQueue_description,
+    updateQueue_reservationPlanSettings,
+    updateQueue_status,
+    updateQueue_name,
+
+    -- * Destructuring the Response
+    UpdateQueueResponse (..),
+    newUpdateQueueResponse,
+
+    -- * Response Lenses
+    updateQueueResponse_queue,
+    updateQueueResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateQueue' smart constructor.
+data UpdateQueue = UpdateQueue'
+  { -- | The new description for the queue, if you are changing it.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The new details of your pricing plan for your reserved queue. When you
+    -- set up a new pricing plan to replace an expired one, you enter into
+    -- another 12-month commitment. When you add capacity to your queue by
+    -- increasing the number of RTS, you extend the term of your commitment to
+    -- 12 months from when you add capacity. After you make these commitments,
+    -- you can\'t cancel them.
+    reservationPlanSettings :: Prelude.Maybe ReservationPlanSettings,
+    -- | Pause or activate a queue by changing its status between ACTIVE and
+    -- PAUSED. If you pause a queue, jobs in that queue won\'t begin. Jobs that
+    -- are running when you pause the queue continue to run until they finish
+    -- or result in an error.
+    status :: Prelude.Maybe QueueStatus,
+    -- | The name of the queue that you are modifying.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateQueue' 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:
+--
+-- 'description', 'updateQueue_description' - The new description for the queue, if you are changing it.
+--
+-- 'reservationPlanSettings', 'updateQueue_reservationPlanSettings' - The new details of your pricing plan for your reserved queue. When you
+-- set up a new pricing plan to replace an expired one, you enter into
+-- another 12-month commitment. When you add capacity to your queue by
+-- increasing the number of RTS, you extend the term of your commitment to
+-- 12 months from when you add capacity. After you make these commitments,
+-- you can\'t cancel them.
+--
+-- 'status', 'updateQueue_status' - Pause or activate a queue by changing its status between ACTIVE and
+-- PAUSED. If you pause a queue, jobs in that queue won\'t begin. Jobs that
+-- are running when you pause the queue continue to run until they finish
+-- or result in an error.
+--
+-- 'name', 'updateQueue_name' - The name of the queue that you are modifying.
+newUpdateQueue ::
+  -- | 'name'
+  Prelude.Text ->
+  UpdateQueue
+newUpdateQueue pName_ =
+  UpdateQueue'
+    { description = Prelude.Nothing,
+      reservationPlanSettings = Prelude.Nothing,
+      status = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | The new description for the queue, if you are changing it.
+updateQueue_description :: Lens.Lens' UpdateQueue (Prelude.Maybe Prelude.Text)
+updateQueue_description = Lens.lens (\UpdateQueue' {description} -> description) (\s@UpdateQueue' {} a -> s {description = a} :: UpdateQueue)
+
+-- | The new details of your pricing plan for your reserved queue. When you
+-- set up a new pricing plan to replace an expired one, you enter into
+-- another 12-month commitment. When you add capacity to your queue by
+-- increasing the number of RTS, you extend the term of your commitment to
+-- 12 months from when you add capacity. After you make these commitments,
+-- you can\'t cancel them.
+updateQueue_reservationPlanSettings :: Lens.Lens' UpdateQueue (Prelude.Maybe ReservationPlanSettings)
+updateQueue_reservationPlanSettings = Lens.lens (\UpdateQueue' {reservationPlanSettings} -> reservationPlanSettings) (\s@UpdateQueue' {} a -> s {reservationPlanSettings = a} :: UpdateQueue)
+
+-- | Pause or activate a queue by changing its status between ACTIVE and
+-- PAUSED. If you pause a queue, jobs in that queue won\'t begin. Jobs that
+-- are running when you pause the queue continue to run until they finish
+-- or result in an error.
+updateQueue_status :: Lens.Lens' UpdateQueue (Prelude.Maybe QueueStatus)
+updateQueue_status = Lens.lens (\UpdateQueue' {status} -> status) (\s@UpdateQueue' {} a -> s {status = a} :: UpdateQueue)
+
+-- | The name of the queue that you are modifying.
+updateQueue_name :: Lens.Lens' UpdateQueue Prelude.Text
+updateQueue_name = Lens.lens (\UpdateQueue' {name} -> name) (\s@UpdateQueue' {} a -> s {name = a} :: UpdateQueue)
+
+instance Core.AWSRequest UpdateQueue where
+  type AWSResponse UpdateQueue = UpdateQueueResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateQueueResponse'
+            Prelude.<$> (x Data..?> "queue")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateQueue where
+  hashWithSalt _salt UpdateQueue' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` reservationPlanSettings
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData UpdateQueue where
+  rnf UpdateQueue' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf reservationPlanSettings
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders UpdateQueue where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateQueue where
+  toJSON UpdateQueue' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("description" Data..=) Prelude.<$> description,
+            ("reservationPlanSettings" Data..=)
+              Prelude.<$> reservationPlanSettings,
+            ("status" Data..=) Prelude.<$> status
+          ]
+      )
+
+instance Data.ToPath UpdateQueue where
+  toPath UpdateQueue' {..} =
+    Prelude.mconcat
+      ["/2017-08-29/queues/", Data.toBS name]
+
+instance Data.ToQuery UpdateQueue where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateQueueResponse' smart constructor.
+data UpdateQueueResponse = UpdateQueueResponse'
+  { -- | You can use queues to manage the resources that are available to your
+    -- AWS account for running multiple transcoding jobs at the same time. If
+    -- you don\'t specify a queue, the service sends all jobs through the
+    -- default queue. For more information, see
+    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-queues.html.
+    queue :: Prelude.Maybe Queue,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateQueueResponse' 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:
+--
+-- 'queue', 'updateQueueResponse_queue' - You can use queues to manage the resources that are available to your
+-- AWS account for running multiple transcoding jobs at the same time. If
+-- you don\'t specify a queue, the service sends all jobs through the
+-- default queue. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-queues.html.
+--
+-- 'httpStatus', 'updateQueueResponse_httpStatus' - The response's http status code.
+newUpdateQueueResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateQueueResponse
+newUpdateQueueResponse pHttpStatus_ =
+  UpdateQueueResponse'
+    { queue = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | You can use queues to manage the resources that are available to your
+-- AWS account for running multiple transcoding jobs at the same time. If
+-- you don\'t specify a queue, the service sends all jobs through the
+-- default queue. For more information, see
+-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-queues.html.
+updateQueueResponse_queue :: Lens.Lens' UpdateQueueResponse (Prelude.Maybe Queue)
+updateQueueResponse_queue = Lens.lens (\UpdateQueueResponse' {queue} -> queue) (\s@UpdateQueueResponse' {} a -> s {queue = a} :: UpdateQueueResponse)
+
+-- | The response's http status code.
+updateQueueResponse_httpStatus :: Lens.Lens' UpdateQueueResponse Prelude.Int
+updateQueueResponse_httpStatus = Lens.lens (\UpdateQueueResponse' {httpStatus} -> httpStatus) (\s@UpdateQueueResponse' {} a -> s {httpStatus = a} :: UpdateQueueResponse)
+
+instance Prelude.NFData UpdateQueueResponse where
+  rnf UpdateQueueResponse' {..} =
+    Prelude.rnf queue
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaConvert/Waiters.hs b/gen/Amazonka/MediaConvert/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaConvert/Waiters.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaConvert.Waiters
+-- 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.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaConvert.Lens
+import Amazonka.MediaConvert.Types
+import qualified Amazonka.Prelude as Prelude
diff --git a/gen/Network/AWS/MediaConvert.hs b/gen/Network/AWS/MediaConvert.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert.hs
+++ /dev/null
@@ -1,1723 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert
--- Copyright   : (c) 2013-2018 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)
---
--- AWS Elemental MediaConvert
-module Network.AWS.MediaConvert
-    (
-    -- * Service Configuration
-      mediaConvert
-
-    -- * Errors
-    -- $errors
-
-    -- ** ConflictException
-    , _ConflictException
-
-    -- ** ForbiddenException
-    , _ForbiddenException
-
-    -- ** NotFoundException
-    , _NotFoundException
-
-    -- ** TooManyRequestsException
-    , _TooManyRequestsException
-
-    -- ** InternalServerErrorException
-    , _InternalServerErrorException
-
-    -- ** BadRequestException
-    , _BadRequestException
-
-    -- * Waiters
-    -- $waiters
-
-    -- * Operations
-    -- $operations
-
-    -- ** DeletePreset
-    , module Network.AWS.MediaConvert.DeletePreset
-
-    -- ** UpdatePreset
-    , module Network.AWS.MediaConvert.UpdatePreset
-
-    -- ** ListQueues
-    , module Network.AWS.MediaConvert.ListQueues
-
-    -- ** DeleteQueue
-    , module Network.AWS.MediaConvert.DeleteQueue
-
-    -- ** UpdateQueue
-    , module Network.AWS.MediaConvert.UpdateQueue
-
-    -- ** GetPreset
-    , module Network.AWS.MediaConvert.GetPreset
-
-    -- ** CreateJob
-    , module Network.AWS.MediaConvert.CreateJob
-
-    -- ** ListJobs
-    , module Network.AWS.MediaConvert.ListJobs
-
-    -- ** GetJob
-    , module Network.AWS.MediaConvert.GetJob
-
-    -- ** CreatePreset
-    , module Network.AWS.MediaConvert.CreatePreset
-
-    -- ** ListPresets
-    , module Network.AWS.MediaConvert.ListPresets
-
-    -- ** GetQueue
-    , module Network.AWS.MediaConvert.GetQueue
-
-    -- ** DescribeEndpoints
-    , module Network.AWS.MediaConvert.DescribeEndpoints
-
-    -- ** CreateQueue
-    , module Network.AWS.MediaConvert.CreateQueue
-
-    -- ** CreateJobTemplate
-    , module Network.AWS.MediaConvert.CreateJobTemplate
-
-    -- ** DeleteJobTemplate
-    , module Network.AWS.MediaConvert.DeleteJobTemplate
-
-    -- ** UpdateJobTemplate
-    , module Network.AWS.MediaConvert.UpdateJobTemplate
-
-    -- ** ListJobTemplates
-    , module Network.AWS.MediaConvert.ListJobTemplates
-
-    -- ** GetJobTemplate
-    , module Network.AWS.MediaConvert.GetJobTemplate
-
-    -- ** CancelJob
-    , module Network.AWS.MediaConvert.CancelJob
-
-    -- * Types
-
-    -- ** AacAudioDescriptionBroadcasterMix
-    , AacAudioDescriptionBroadcasterMix (..)
-
-    -- ** AacCodecProfile
-    , AacCodecProfile (..)
-
-    -- ** AacCodingMode
-    , AacCodingMode (..)
-
-    -- ** AacRateControlMode
-    , AacRateControlMode (..)
-
-    -- ** AacRawFormat
-    , AacRawFormat (..)
-
-    -- ** AacSpecification
-    , AacSpecification (..)
-
-    -- ** AacVbrQuality
-    , AacVbrQuality (..)
-
-    -- ** Ac3BitstreamMode
-    , Ac3BitstreamMode (..)
-
-    -- ** Ac3CodingMode
-    , Ac3CodingMode (..)
-
-    -- ** Ac3DynamicRangeCompressionProfile
-    , Ac3DynamicRangeCompressionProfile (..)
-
-    -- ** Ac3LfeFilter
-    , Ac3LfeFilter (..)
-
-    -- ** Ac3MetadataControl
-    , Ac3MetadataControl (..)
-
-    -- ** AfdSignaling
-    , AfdSignaling (..)
-
-    -- ** AntiAlias
-    , AntiAlias (..)
-
-    -- ** AudioCodec
-    , AudioCodec (..)
-
-    -- ** AudioDefaultSelection
-    , AudioDefaultSelection (..)
-
-    -- ** AudioLanguageCodeControl
-    , AudioLanguageCodeControl (..)
-
-    -- ** AudioNormalizationAlgorithm
-    , AudioNormalizationAlgorithm (..)
-
-    -- ** AudioNormalizationAlgorithmControl
-    , AudioNormalizationAlgorithmControl (..)
-
-    -- ** AudioNormalizationLoudnessLogging
-    , AudioNormalizationLoudnessLogging (..)
-
-    -- ** AudioNormalizationPeakCalculation
-    , AudioNormalizationPeakCalculation (..)
-
-    -- ** AudioSelectorType
-    , AudioSelectorType (..)
-
-    -- ** AudioTypeControl
-    , AudioTypeControl (..)
-
-    -- ** BurninSubtitleAlignment
-    , BurninSubtitleAlignment (..)
-
-    -- ** BurninSubtitleBackgroundColor
-    , BurninSubtitleBackgroundColor (..)
-
-    -- ** BurninSubtitleFontColor
-    , BurninSubtitleFontColor (..)
-
-    -- ** BurninSubtitleOutlineColor
-    , BurninSubtitleOutlineColor (..)
-
-    -- ** BurninSubtitleShadowColor
-    , BurninSubtitleShadowColor (..)
-
-    -- ** BurninSubtitleTeletextSpacing
-    , BurninSubtitleTeletextSpacing (..)
-
-    -- ** CaptionDestinationType
-    , CaptionDestinationType (..)
-
-    -- ** CaptionSourceType
-    , CaptionSourceType (..)
-
-    -- ** ColorMetadata
-    , ColorMetadata (..)
-
-    -- ** ColorSpace
-    , ColorSpace (..)
-
-    -- ** ColorSpaceConversion
-    , ColorSpaceConversion (..)
-
-    -- ** ColorSpaceUsage
-    , ColorSpaceUsage (..)
-
-    -- ** ContainerType
-    , ContainerType (..)
-
-    -- ** DashIsoHbbtvCompliance
-    , DashIsoHbbtvCompliance (..)
-
-    -- ** DashIsoSegmentControl
-    , DashIsoSegmentControl (..)
-
-    -- ** DeinterlaceAlgorithm
-    , DeinterlaceAlgorithm (..)
-
-    -- ** DeinterlacerControl
-    , DeinterlacerControl (..)
-
-    -- ** DeinterlacerMode
-    , DeinterlacerMode (..)
-
-    -- ** DropFrameTimecode
-    , DropFrameTimecode (..)
-
-    -- ** DvbSubtitleAlignment
-    , DvbSubtitleAlignment (..)
-
-    -- ** DvbSubtitleBackgroundColor
-    , DvbSubtitleBackgroundColor (..)
-
-    -- ** DvbSubtitleFontColor
-    , DvbSubtitleFontColor (..)
-
-    -- ** DvbSubtitleOutlineColor
-    , DvbSubtitleOutlineColor (..)
-
-    -- ** DvbSubtitleShadowColor
-    , DvbSubtitleShadowColor (..)
-
-    -- ** DvbSubtitleTeletextSpacing
-    , DvbSubtitleTeletextSpacing (..)
-
-    -- ** Eac3AttenuationControl
-    , Eac3AttenuationControl (..)
-
-    -- ** Eac3BitstreamMode
-    , Eac3BitstreamMode (..)
-
-    -- ** Eac3CodingMode
-    , Eac3CodingMode (..)
-
-    -- ** Eac3DcFilter
-    , Eac3DcFilter (..)
-
-    -- ** Eac3DynamicRangeCompressionLine
-    , Eac3DynamicRangeCompressionLine (..)
-
-    -- ** Eac3DynamicRangeCompressionRf
-    , Eac3DynamicRangeCompressionRf (..)
-
-    -- ** Eac3LfeControl
-    , Eac3LfeControl (..)
-
-    -- ** Eac3LfeFilter
-    , Eac3LfeFilter (..)
-
-    -- ** Eac3MetadataControl
-    , Eac3MetadataControl (..)
-
-    -- ** Eac3PassthroughControl
-    , Eac3PassthroughControl (..)
-
-    -- ** Eac3PhaseControl
-    , Eac3PhaseControl (..)
-
-    -- ** Eac3StereoDownmix
-    , Eac3StereoDownmix (..)
-
-    -- ** Eac3SurroundExMode
-    , Eac3SurroundExMode (..)
-
-    -- ** Eac3SurroundMode
-    , Eac3SurroundMode (..)
-
-    -- ** EmbeddedConvert608To708
-    , EmbeddedConvert608To708 (..)
-
-    -- ** F4vMoovPlacement
-    , F4vMoovPlacement (..)
-
-    -- ** FileSourceConvert608To708
-    , FileSourceConvert608To708 (..)
-
-    -- ** H264AdaptiveQuantization
-    , H264AdaptiveQuantization (..)
-
-    -- ** H264CodecLevel
-    , H264CodecLevel (..)
-
-    -- ** H264CodecProfile
-    , H264CodecProfile (..)
-
-    -- ** H264EntropyEncoding
-    , H264EntropyEncoding (..)
-
-    -- ** H264FieldEncoding
-    , H264FieldEncoding (..)
-
-    -- ** H264FlickerAdaptiveQuantization
-    , H264FlickerAdaptiveQuantization (..)
-
-    -- ** H264FramerateControl
-    , H264FramerateControl (..)
-
-    -- ** H264FramerateConversionAlgorithm
-    , H264FramerateConversionAlgorithm (..)
-
-    -- ** H264GopBReference
-    , H264GopBReference (..)
-
-    -- ** H264GopSizeUnits
-    , H264GopSizeUnits (..)
-
-    -- ** H264InterlaceMode
-    , H264InterlaceMode (..)
-
-    -- ** H264ParControl
-    , H264ParControl (..)
-
-    -- ** H264QualityTuningLevel
-    , H264QualityTuningLevel (..)
-
-    -- ** H264RateControlMode
-    , H264RateControlMode (..)
-
-    -- ** H264RepeatPps
-    , H264RepeatPps (..)
-
-    -- ** H264SceneChangeDetect
-    , H264SceneChangeDetect (..)
-
-    -- ** H264SlowPal
-    , H264SlowPal (..)
-
-    -- ** H264SpatialAdaptiveQuantization
-    , H264SpatialAdaptiveQuantization (..)
-
-    -- ** H264Syntax
-    , H264Syntax (..)
-
-    -- ** H264Telecine
-    , H264Telecine (..)
-
-    -- ** H264TemporalAdaptiveQuantization
-    , H264TemporalAdaptiveQuantization (..)
-
-    -- ** H264UnregisteredSeiTimecode
-    , H264UnregisteredSeiTimecode (..)
-
-    -- ** H265AdaptiveQuantization
-    , H265AdaptiveQuantization (..)
-
-    -- ** H265AlternateTransferFunctionSei
-    , H265AlternateTransferFunctionSei (..)
-
-    -- ** H265CodecLevel
-    , H265CodecLevel (..)
-
-    -- ** H265CodecProfile
-    , H265CodecProfile (..)
-
-    -- ** H265FlickerAdaptiveQuantization
-    , H265FlickerAdaptiveQuantization (..)
-
-    -- ** H265FramerateControl
-    , H265FramerateControl (..)
-
-    -- ** H265FramerateConversionAlgorithm
-    , H265FramerateConversionAlgorithm (..)
-
-    -- ** H265GopBReference
-    , H265GopBReference (..)
-
-    -- ** H265GopSizeUnits
-    , H265GopSizeUnits (..)
-
-    -- ** H265InterlaceMode
-    , H265InterlaceMode (..)
-
-    -- ** H265ParControl
-    , H265ParControl (..)
-
-    -- ** H265QualityTuningLevel
-    , H265QualityTuningLevel (..)
-
-    -- ** H265RateControlMode
-    , H265RateControlMode (..)
-
-    -- ** H265SampleAdaptiveOffsetFilterMode
-    , H265SampleAdaptiveOffsetFilterMode (..)
-
-    -- ** H265SceneChangeDetect
-    , H265SceneChangeDetect (..)
-
-    -- ** H265SlowPal
-    , H265SlowPal (..)
-
-    -- ** H265SpatialAdaptiveQuantization
-    , H265SpatialAdaptiveQuantization (..)
-
-    -- ** H265Telecine
-    , H265Telecine (..)
-
-    -- ** H265TemporalAdaptiveQuantization
-    , H265TemporalAdaptiveQuantization (..)
-
-    -- ** H265TemporalIds
-    , H265TemporalIds (..)
-
-    -- ** H265Tiles
-    , H265Tiles (..)
-
-    -- ** H265UnregisteredSeiTimecode
-    , H265UnregisteredSeiTimecode (..)
-
-    -- ** HlsAdMarkers
-    , HlsAdMarkers (..)
-
-    -- ** HlsAudioTrackType
-    , HlsAudioTrackType (..)
-
-    -- ** HlsCaptionLanguageSetting
-    , HlsCaptionLanguageSetting (..)
-
-    -- ** HlsClientCache
-    , HlsClientCache (..)
-
-    -- ** HlsCodecSpecification
-    , HlsCodecSpecification (..)
-
-    -- ** HlsDirectoryStructure
-    , HlsDirectoryStructure (..)
-
-    -- ** HlsEncryptionType
-    , HlsEncryptionType (..)
-
-    -- ** HlsIFrameOnlyManifest
-    , HlsIFrameOnlyManifest (..)
-
-    -- ** HlsInitializationVectorInManifest
-    , HlsInitializationVectorInManifest (..)
-
-    -- ** HlsKeyProviderType
-    , HlsKeyProviderType (..)
-
-    -- ** HlsManifestCompression
-    , HlsManifestCompression (..)
-
-    -- ** HlsManifestDurationFormat
-    , HlsManifestDurationFormat (..)
-
-    -- ** HlsOutputSelection
-    , HlsOutputSelection (..)
-
-    -- ** HlsProgramDateTime
-    , HlsProgramDateTime (..)
-
-    -- ** HlsSegmentControl
-    , HlsSegmentControl (..)
-
-    -- ** HlsStreamInfResolution
-    , HlsStreamInfResolution (..)
-
-    -- ** HlsTimedMetadataId3Frame
-    , HlsTimedMetadataId3Frame (..)
-
-    -- ** InputDeblockFilter
-    , InputDeblockFilter (..)
-
-    -- ** InputDenoiseFilter
-    , InputDenoiseFilter (..)
-
-    -- ** InputFilterEnable
-    , InputFilterEnable (..)
-
-    -- ** InputPsiControl
-    , InputPsiControl (..)
-
-    -- ** InputTimecodeSource
-    , InputTimecodeSource (..)
-
-    -- ** JobStatus
-    , JobStatus (..)
-
-    -- ** JobTemplateListBy
-    , JobTemplateListBy (..)
-
-    -- ** LanguageCode
-    , LanguageCode (..)
-
-    -- ** M2tsAudioBufferModel
-    , M2tsAudioBufferModel (..)
-
-    -- ** M2tsBufferModel
-    , M2tsBufferModel (..)
-
-    -- ** M2tsEbpAudioInterval
-    , M2tsEbpAudioInterval (..)
-
-    -- ** M2tsEbpPlacement
-    , M2tsEbpPlacement (..)
-
-    -- ** M2tsEsRateInPes
-    , M2tsEsRateInPes (..)
-
-    -- ** M2tsNielsenId3
-    , M2tsNielsenId3 (..)
-
-    -- ** M2tsPcrControl
-    , M2tsPcrControl (..)
-
-    -- ** M2tsRateMode
-    , M2tsRateMode (..)
-
-    -- ** M2tsScte35Source
-    , M2tsScte35Source (..)
-
-    -- ** M2tsSegmentationMarkers
-    , M2tsSegmentationMarkers (..)
-
-    -- ** M2tsSegmentationStyle
-    , M2tsSegmentationStyle (..)
-
-    -- ** M3u8NielsenId3
-    , M3u8NielsenId3 (..)
-
-    -- ** M3u8PcrControl
-    , M3u8PcrControl (..)
-
-    -- ** M3u8Scte35Source
-    , M3u8Scte35Source (..)
-
-    -- ** MovClapAtom
-    , MovClapAtom (..)
-
-    -- ** MovCslgAtom
-    , MovCslgAtom (..)
-
-    -- ** MovMpeg2FourCCControl
-    , MovMpeg2FourCCControl (..)
-
-    -- ** MovPaddingControl
-    , MovPaddingControl (..)
-
-    -- ** MovReference
-    , MovReference (..)
-
-    -- ** Mp4CslgAtom
-    , Mp4CslgAtom (..)
-
-    -- ** Mp4FreeSpaceBox
-    , Mp4FreeSpaceBox (..)
-
-    -- ** Mp4MoovPlacement
-    , Mp4MoovPlacement (..)
-
-    -- ** Mpeg2AdaptiveQuantization
-    , Mpeg2AdaptiveQuantization (..)
-
-    -- ** Mpeg2CodecLevel
-    , Mpeg2CodecLevel (..)
-
-    -- ** Mpeg2CodecProfile
-    , Mpeg2CodecProfile (..)
-
-    -- ** Mpeg2FramerateControl
-    , Mpeg2FramerateControl (..)
-
-    -- ** Mpeg2FramerateConversionAlgorithm
-    , Mpeg2FramerateConversionAlgorithm (..)
-
-    -- ** Mpeg2GopSizeUnits
-    , Mpeg2GopSizeUnits (..)
-
-    -- ** Mpeg2InterlaceMode
-    , Mpeg2InterlaceMode (..)
-
-    -- ** Mpeg2IntraDcPrecision
-    , Mpeg2IntraDcPrecision (..)
-
-    -- ** Mpeg2ParControl
-    , Mpeg2ParControl (..)
-
-    -- ** Mpeg2QualityTuningLevel
-    , Mpeg2QualityTuningLevel (..)
-
-    -- ** Mpeg2RateControlMode
-    , Mpeg2RateControlMode (..)
-
-    -- ** Mpeg2SceneChangeDetect
-    , Mpeg2SceneChangeDetect (..)
-
-    -- ** Mpeg2SlowPal
-    , Mpeg2SlowPal (..)
-
-    -- ** Mpeg2SpatialAdaptiveQuantization
-    , Mpeg2SpatialAdaptiveQuantization (..)
-
-    -- ** Mpeg2Syntax
-    , Mpeg2Syntax (..)
-
-    -- ** Mpeg2Telecine
-    , Mpeg2Telecine (..)
-
-    -- ** Mpeg2TemporalAdaptiveQuantization
-    , Mpeg2TemporalAdaptiveQuantization (..)
-
-    -- ** MsSmoothAudioDeduplication
-    , MsSmoothAudioDeduplication (..)
-
-    -- ** MsSmoothManifestEncoding
-    , MsSmoothManifestEncoding (..)
-
-    -- ** NoiseReducerFilter
-    , NoiseReducerFilter (..)
-
-    -- ** Order
-    , Order (..)
-
-    -- ** OutputGroupType
-    , OutputGroupType (..)
-
-    -- ** OutputSdt
-    , OutputSdt (..)
-
-    -- ** PresetListBy
-    , PresetListBy (..)
-
-    -- ** ProresCodecProfile
-    , ProresCodecProfile (..)
-
-    -- ** ProresFramerateControl
-    , ProresFramerateControl (..)
-
-    -- ** ProresFramerateConversionAlgorithm
-    , ProresFramerateConversionAlgorithm (..)
-
-    -- ** ProresInterlaceMode
-    , ProresInterlaceMode (..)
-
-    -- ** ProresParControl
-    , ProresParControl (..)
-
-    -- ** ProresSlowPal
-    , ProresSlowPal (..)
-
-    -- ** ProresTelecine
-    , ProresTelecine (..)
-
-    -- ** QueueListBy
-    , QueueListBy (..)
-
-    -- ** QueueStatus
-    , QueueStatus (..)
-
-    -- ** RespondToAfd
-    , RespondToAfd (..)
-
-    -- ** ScalingBehavior
-    , ScalingBehavior (..)
-
-    -- ** SccDestinationFramerate
-    , SccDestinationFramerate (..)
-
-    -- ** TimecodeBurninPosition
-    , TimecodeBurninPosition (..)
-
-    -- ** TimecodeSource
-    , TimecodeSource (..)
-
-    -- ** TimedMetadata
-    , TimedMetadata (..)
-
-    -- ** TtmlStylePassthrough
-    , TtmlStylePassthrough (..)
-
-    -- ** Type
-    , Type (..)
-
-    -- ** VideoCodec
-    , VideoCodec (..)
-
-    -- ** VideoTimecodeInsertion
-    , VideoTimecodeInsertion (..)
-
-    -- ** AacSettings
-    , AacSettings
-    , aacSettings
-    , assAudioDescriptionBroadcasterMix
-    , assRawFormat
-    , assCodingMode
-    , assRateControlMode
-    , assSampleRate
-    , assSpecification
-    , assCodecProfile
-    , assBitrate
-    , assVbrQuality
-
-    -- ** Ac3Settings
-    , Ac3Settings
-    , ac3Settings
-    , aLfeFilter
-    , aMetadataControl
-    , aBitstreamMode
-    , aCodingMode
-    , aSampleRate
-    , aDynamicRangeCompressionProfile
-    , aBitrate
-    , aDialnorm
-
-    -- ** AiffSettings
-    , AiffSettings
-    , aiffSettings
-    , asBitDepth
-    , asChannels
-    , asSampleRate
-
-    -- ** AncillarySourceSettings
-    , AncillarySourceSettings
-    , ancillarySourceSettings
-    , assSourceAncillaryChannelNumber
-
-    -- ** AudioCodecSettings
-    , AudioCodecSettings
-    , audioCodecSettings
-    , acsAiffSettings
-    , acsCodec
-    , acsAc3Settings
-    , acsMp2Settings
-    , acsWavSettings
-    , acsAacSettings
-    , acsEac3Settings
-
-    -- ** AudioDescription
-    , AudioDescription
-    , audioDescription
-    , adAudioSourceName
-    , adLanguageCode
-    , adAudioType
-    , adAudioNormalizationSettings
-    , adLanguageCodeControl
-    , adCodecSettings
-    , adStreamName
-    , adRemixSettings
-    , adAudioTypeControl
-
-    -- ** AudioNormalizationSettings
-    , AudioNormalizationSettings
-    , audioNormalizationSettings
-    , ansAlgorithmControl
-    , ansTargetLkfs
-    , ansPeakCalculation
-    , ansCorrectionGateLevel
-    , ansAlgorithm
-    , ansLoudnessLogging
-
-    -- ** AudioSelector
-    , AudioSelector
-    , audioSelector
-    , asTracks
-    , asProgramSelection
-    , asLanguageCode
-    , asOffset
-    , asDefaultSelection
-    , asPids
-    , asSelectorType
-    , asExternalAudioFileInput
-    , asRemixSettings
-
-    -- ** AudioSelectorGroup
-    , AudioSelectorGroup
-    , audioSelectorGroup
-    , asgAudioSelectorNames
-
-    -- ** AvailBlanking
-    , AvailBlanking
-    , availBlanking
-    , abAvailBlankingImage
-
-    -- ** BurninDestinationSettings
-    , BurninDestinationSettings
-    , burninDestinationSettings
-    , bdsBackgroundOpacity
-    , bdsFontOpacity
-    , bdsShadowYOffset
-    , bdsFontResolution
-    , bdsYPosition
-    , bdsBackgroundColor
-    , bdsShadowXOffset
-    , bdsFontSize
-    , bdsXPosition
-    , bdsTeletextSpacing
-    , bdsAlignment
-    , bdsShadowOpacity
-    , bdsOutlineColor
-    , bdsOutlineSize
-    , bdsShadowColor
-    , bdsFontColor
-
-    -- ** CaptionDescription
-    , CaptionDescription
-    , captionDescription
-    , cdCaptionSelectorName
-    , cdLanguageCode
-    , cdDestinationSettings
-    , cdLanguageDescription
-
-    -- ** CaptionDescriptionPreset
-    , CaptionDescriptionPreset
-    , captionDescriptionPreset
-    , cdpLanguageCode
-    , cdpDestinationSettings
-    , cdpLanguageDescription
-
-    -- ** CaptionDestinationSettings
-    , CaptionDestinationSettings
-    , captionDestinationSettings
-    , cdsTeletextDestinationSettings
-    , cdsDvbSubDestinationSettings
-    , cdsTtmlDestinationSettings
-    , cdsDestinationType
-    , cdsSccDestinationSettings
-    , cdsBurninDestinationSettings
-
-    -- ** CaptionSelector
-    , CaptionSelector
-    , captionSelector
-    , csLanguageCode
-    , csSourceSettings
-
-    -- ** CaptionSourceSettings
-    , CaptionSourceSettings
-    , captionSourceSettings
-    , cssTeletextSourceSettings
-    , cssSourceType
-    , cssFileSourceSettings
-    , cssDvbSubSourceSettings
-    , cssAncillarySourceSettings
-    , cssEmbeddedSourceSettings
-
-    -- ** ChannelMapping
-    , ChannelMapping
-    , channelMapping
-    , cmOutputChannels
-
-    -- ** ColorCorrector
-    , ColorCorrector
-    , colorCorrector
-    , ccSaturation
-    , ccHue
-    , ccColorSpaceConversion
-    , ccHdr10Metadata
-    , ccContrast
-    , ccBrightness
-
-    -- ** ContainerSettings
-    , ContainerSettings
-    , containerSettings
-    , csM2tsSettings
-    , csM3u8Settings
-    , csMovSettings
-    , csMp4Settings
-    , csContainer
-    , csF4vSettings
-
-    -- ** DashIsoEncryptionSettings
-    , DashIsoEncryptionSettings
-    , dashIsoEncryptionSettings
-    , diesSpekeKeyProvider
-
-    -- ** DashIsoGroupSettings
-    , DashIsoGroupSettings
-    , dashIsoGroupSettings
-    , digsFragmentLength
-    , digsSegmentControl
-    , digsDestination
-    , digsHbbtvCompliance
-    , digsMinBufferTime
-    , digsBaseURL
-    , digsEncryption
-    , digsSegmentLength
-
-    -- ** Deinterlacer
-    , Deinterlacer
-    , deinterlacer
-    , dControl
-    , dMode
-    , dAlgorithm
-
-    -- ** DvbNitSettings
-    , DvbNitSettings
-    , dvbNitSettings
-    , dnsNetworkId
-    , dnsNetworkName
-    , dnsNitInterval
-
-    -- ** DvbSdtSettings
-    , DvbSdtSettings
-    , dvbSdtSettings
-    , dssSdtInterval
-    , dssServiceProviderName
-    , dssOutputSdt
-    , dssServiceName
-
-    -- ** DvbSubDestinationSettings
-    , DvbSubDestinationSettings
-    , dvbSubDestinationSettings
-    , dsdsBackgroundOpacity
-    , dsdsFontOpacity
-    , dsdsShadowYOffset
-    , dsdsFontResolution
-    , dsdsYPosition
-    , dsdsBackgroundColor
-    , dsdsShadowXOffset
-    , dsdsFontSize
-    , dsdsXPosition
-    , dsdsTeletextSpacing
-    , dsdsAlignment
-    , dsdsShadowOpacity
-    , dsdsOutlineColor
-    , dsdsOutlineSize
-    , dsdsShadowColor
-    , dsdsFontColor
-
-    -- ** DvbSubSourceSettings
-    , DvbSubSourceSettings
-    , dvbSubSourceSettings
-    , dsssPid
-
-    -- ** DvbTdtSettings
-    , DvbTdtSettings
-    , dvbTdtSettings
-    , dtsTdtInterval
-
-    -- ** Eac3Settings
-    , Eac3Settings
-    , eac3Settings
-    , esStereoDownmix
-    , esLoRoCenterMixLevel
-    , esLtRtCenterMixLevel
-    , esLfeFilter
-    , esDynamicRangeCompressionLine
-    , esLtRtSurroundMixLevel
-    , esMetadataControl
-    , esLoRoSurroundMixLevel
-    , esSurroundMode
-    , esAttenuationControl
-    , esPassthroughControl
-    , esBitstreamMode
-    , esLfeControl
-    , esDynamicRangeCompressionRf
-    , esCodingMode
-    , esSampleRate
-    , esDcFilter
-    , esBitrate
-    , esPhaseControl
-    , esSurroundExMode
-    , esDialnorm
-
-    -- ** EmbeddedSourceSettings
-    , EmbeddedSourceSettings
-    , embeddedSourceSettings
-    , essConvert608To708
-    , essSource608TrackNumber
-    , essSource608ChannelNumber
-
-    -- ** Endpoint
-    , Endpoint
-    , endpoint
-    , eURL
-
-    -- ** F4vSettings
-    , F4vSettings
-    , f4vSettings
-    , fsMoovPlacement
-
-    -- ** FileGroupSettings
-    , FileGroupSettings
-    , fileGroupSettings
-    , fgsDestination
-
-    -- ** FileSourceSettings
-    , FileSourceSettings
-    , fileSourceSettings
-    , fssConvert608To708
-    , fssTimeDelta
-    , fssSourceFile
-
-    -- ** FrameCaptureSettings
-    , FrameCaptureSettings
-    , frameCaptureSettings
-    , fcsQuality
-    , fcsFramerateDenominator
-    , fcsMaxCaptures
-    , fcsFramerateNumerator
-
-    -- ** H264Settings
-    , H264Settings
-    , h264Settings
-    , hUnregisteredSeiTimecode
-    , hQualityTuningLevel
-    , hTemporalAdaptiveQuantization
-    , hSceneChangeDetect
-    , hHrdBufferInitialFillPercentage
-    , hSlowPal
-    , hParNumerator
-    , hGopSize
-    , hNumberBFramesBetweenReferenceFrames
-    , hGopSizeUnits
-    , hHrdBufferSize
-    , hSlices
-    , hRateControlMode
-    , hNumberReferenceFrames
-    , hTelecine
-    , hMinIInterval
-    , hInterlaceMode
-    , hParControl
-    , hRepeatPps
-    , hFlickerAdaptiveQuantization
-    , hSoftness
-    , hCodecProfile
-    , hBitrate
-    , hFramerateDenominator
-    , hFramerateConversionAlgorithm
-    , hCodecLevel
-    , hEntropyEncoding
-    , hFramerateControl
-    , hAdaptiveQuantization
-    , hFramerateNumerator
-    , hGopBReference
-    , hMaxBitrate
-    , hSyntax
-    , hFieldEncoding
-    , hGopClosedCadence
-    , hParDenominator
-    , hSpatialAdaptiveQuantization
-
-    -- ** H265Settings
-    , H265Settings
-    , h265Settings
-    , hsUnregisteredSeiTimecode
-    , hsQualityTuningLevel
-    , hsTemporalAdaptiveQuantization
-    , hsSceneChangeDetect
-    , hsHrdBufferInitialFillPercentage
-    , hsTiles
-    , hsSlowPal
-    , hsTemporalIds
-    , hsParNumerator
-    , hsGopSize
-    , hsNumberBFramesBetweenReferenceFrames
-    , hsGopSizeUnits
-    , hsHrdBufferSize
-    , hsSlices
-    , hsAlternateTransferFunctionSei
-    , hsRateControlMode
-    , hsNumberReferenceFrames
-    , hsTelecine
-    , hsMinIInterval
-    , hsInterlaceMode
-    , hsParControl
-    , hsFlickerAdaptiveQuantization
-    , hsSampleAdaptiveOffsetFilterMode
-    , hsCodecProfile
-    , hsBitrate
-    , hsFramerateDenominator
-    , hsFramerateConversionAlgorithm
-    , hsCodecLevel
-    , hsFramerateControl
-    , hsAdaptiveQuantization
-    , hsFramerateNumerator
-    , hsGopBReference
-    , hsMaxBitrate
-    , hsGopClosedCadence
-    , hsParDenominator
-    , hsSpatialAdaptiveQuantization
-
-    -- ** Hdr10Metadata
-    , Hdr10Metadata
-    , hdr10Metadata
-    , hmRedPrimaryX
-    , hmBluePrimaryX
-    , hmMaxFrameAverageLightLevel
-    , hmWhitePointY
-    , hmMaxContentLightLevel
-    , hmWhitePointX
-    , hmBluePrimaryY
-    , hmGreenPrimaryY
-    , hmGreenPrimaryX
-    , hmMinLuminance
-    , hmRedPrimaryY
-    , hmMaxLuminance
-
-    -- ** HlsCaptionLanguageMapping
-    , HlsCaptionLanguageMapping
-    , hlsCaptionLanguageMapping
-    , hclmLanguageCode
-    , hclmLanguageDescription
-    , hclmCaptionChannel
-
-    -- ** HlsEncryptionSettings
-    , HlsEncryptionSettings
-    , hlsEncryptionSettings
-    , hesEncryptionMethod
-    , hesConstantInitializationVector
-    , hesType
-    , hesStaticKeyProvider
-    , hesSpekeKeyProvider
-    , hesInitializationVectorInManifest
-
-    -- ** HlsGroupSettings
-    , HlsGroupSettings
-    , hlsGroupSettings
-    , hgsDirectoryStructure
-    , hgsSegmentControl
-    , hgsDestination
-    , hgsTimedMetadataId3Period
-    , hgsMinSegmentLength
-    , hgsProgramDateTime
-    , hgsProgramDateTimePeriod
-    , hgsCodecSpecification
-    , hgsCaptionLanguageMappings
-    , hgsBaseURL
-    , hgsAdMarkers
-    , hgsEncryption
-    , hgsSegmentLength
-    , hgsTimedMetadataId3Frame
-    , hgsOutputSelection
-    , hgsCaptionLanguageSetting
-    , hgsSegmentsPerSubdirectory
-    , hgsManifestDurationFormat
-    , hgsClientCache
-    , hgsTimestampDeltaMilliseconds
-    , hgsStreamInfResolution
-    , hgsManifestCompression
-
-    -- ** HlsSettings
-    , HlsSettings
-    , hlsSettings
-    , hsAudioRenditionSets
-    , hsIFrameOnlyManifest
-    , hsAudioGroupId
-    , hsSegmentModifier
-    , hsAudioTrackType
-
-    -- ** Id3Insertion
-    , Id3Insertion
-    , id3Insertion
-    , iiId3
-    , iiTimecode
-
-    -- ** ImageInserter
-    , ImageInserter
-    , imageInserter
-    , iiInsertableImages
-
-    -- ** Input
-    , Input
-    , input
-    , iVideoSelector
-    , iProgramNumber
-    , iAudioSelectorGroups
-    , iTimecodeSource
-    , iAudioSelectors
-    , iDeblockFilter
-    , iInputClippings
-    , iDenoiseFilter
-    , iFilterStrength
-    , iPsiControl
-    , iCaptionSelectors
-    , iFileInput
-    , iFilterEnable
-
-    -- ** InputClipping
-    , InputClipping
-    , inputClipping
-    , icEndTimecode
-    , icStartTimecode
-
-    -- ** InputTemplate
-    , InputTemplate
-    , inputTemplate
-    , itVideoSelector
-    , itProgramNumber
-    , itAudioSelectorGroups
-    , itTimecodeSource
-    , itAudioSelectors
-    , itDeblockFilter
-    , itInputClippings
-    , itDenoiseFilter
-    , itFilterStrength
-    , itPsiControl
-    , itCaptionSelectors
-    , itFilterEnable
-
-    -- ** InsertableImage
-    , InsertableImage
-    , insertableImage
-    , iiImageX
-    , iiHeight
-    , iiStartTime
-    , iiFadeOut
-    , iiWidth
-    , iiOpacity
-    , iiLayer
-    , iiDuration
-    , iiImageY
-    , iiImageInserterInput
-    , iiFadeIn
-
-    -- ** Job
-    , Job
-    , job
-    , jStatus
-    , jJobTemplate
-    , jSettings
-    , jARN
-    , jCreatedAt
-    , jQueue
-    , jUserMetadata
-    , jRole
-    , jOutputGroupDetails
-    , jErrorCode
-    , jId
-    , jTiming
-    , jErrorMessage
-
-    -- ** JobSettings
-    , JobSettings
-    , jobSettings
-    , jsInputs
-    , jsTimedMetadataInsertion
-    , jsNielsenConfiguration
-    , jsAvailBlanking
-    , jsTimecodeConfig
-    , jsOutputGroups
-    , jsAdAvailOffset
-
-    -- ** JobTemplate
-    , JobTemplate
-    , jobTemplate
-    , jtLastUpdated
-    , jtSettings
-    , jtARN
-    , jtCreatedAt
-    , jtCategory
-    , jtQueue
-    , jtName
-    , jtType
-    , jtDescription
-
-    -- ** JobTemplateSettings
-    , JobTemplateSettings
-    , jobTemplateSettings
-    , jtsInputs
-    , jtsTimedMetadataInsertion
-    , jtsNielsenConfiguration
-    , jtsAvailBlanking
-    , jtsTimecodeConfig
-    , jtsOutputGroups
-    , jtsAdAvailOffset
-
-    -- ** M2tsSettings
-    , M2tsSettings
-    , m2tsSettings
-    , mPmtPid
-    , mVideoPid
-    , mBufferModel
-    , mProgramNumber
-    , mScte35Pid
-    , mMinEbpInterval
-    , mTransportStreamId
-    , mMaxPcrInterval
-    , mFragmentTime
-    , mPrivateMetadataPid
-    , mPmtInterval
-    , mDvbSdtSettings
-    , mNullPacketBitrate
-    , mAudioBufferModel
-    , mTimedMetadataPid
-    , mAudioFramesPerPes
-    , mPcrPid
-    , mSegmentationMarkers
-    , mDvbSubPids
-    , mScte35Source
-    , mPatInterval
-    , mEsRateInPes
-    , mBitrate
-    , mAudioPids
-    , mDvbTeletextPid
-    , mNielsenId3
-    , mSegmentationTime
-    , mEbpAudioInterval
-    , mDvbNitSettings
-    , mPcrControl
-    , mEbpPlacement
-    , mRateMode
-    , mSegmentationStyle
-    , mDvbTdtSettings
-
-    -- ** M3u8Settings
-    , M3u8Settings
-    , m3u8Settings
-    , msPmtPid
-    , msVideoPid
-    , msProgramNumber
-    , msScte35Pid
-    , msTransportStreamId
-    , msPrivateMetadataPid
-    , msPmtInterval
-    , msTimedMetadataPid
-    , msAudioFramesPerPes
-    , msPcrPid
-    , msTimedMetadata
-    , msScte35Source
-    , msPatInterval
-    , msAudioPids
-    , msNielsenId3
-    , msPcrControl
-
-    -- ** MovSettings
-    , MovSettings
-    , movSettings
-    , msReference
-    , msCslgAtom
-    , msMpeg2FourCCControl
-    , msPaddingControl
-    , msClapAtom
-
-    -- ** Mp2Settings
-    , Mp2Settings
-    , mp2Settings
-    , mssChannels
-    , mssSampleRate
-    , mssBitrate
-
-    -- ** Mp4Settings
-    , Mp4Settings
-    , mp4Settings
-    , mMoovPlacement
-    , mFreeSpaceBox
-    , mMp4MajorBrand
-    , mCslgAtom
-
-    -- ** Mpeg2Settings
-    , Mpeg2Settings
-    , mpeg2Settings
-    , msQualityTuningLevel
-    , msTemporalAdaptiveQuantization
-    , msSceneChangeDetect
-    , msHrdBufferInitialFillPercentage
-    , msSlowPal
-    , msParNumerator
-    , msGopSize
-    , msNumberBFramesBetweenReferenceFrames
-    , msGopSizeUnits
-    , msHrdBufferSize
-    , msRateControlMode
-    , msTelecine
-    , msIntraDcPrecision
-    , msMinIInterval
-    , msInterlaceMode
-    , msParControl
-    , msSoftness
-    , msCodecProfile
-    , msBitrate
-    , msFramerateDenominator
-    , msFramerateConversionAlgorithm
-    , msCodecLevel
-    , msFramerateControl
-    , msAdaptiveQuantization
-    , msFramerateNumerator
-    , msMaxBitrate
-    , msSyntax
-    , msGopClosedCadence
-    , msParDenominator
-    , msSpatialAdaptiveQuantization
-
-    -- ** MsSmoothEncryptionSettings
-    , MsSmoothEncryptionSettings
-    , msSmoothEncryptionSettings
-    , msesSpekeKeyProvider
-
-    -- ** MsSmoothGroupSettings
-    , MsSmoothGroupSettings
-    , msSmoothGroupSettings
-    , msgsFragmentLength
-    , msgsManifestEncoding
-    , msgsDestination
-    , msgsAudioDeduplication
-    , msgsEncryption
-
-    -- ** NielsenConfiguration
-    , NielsenConfiguration
-    , nielsenConfiguration
-    , ncBreakoutCode
-    , ncDistributorId
-
-    -- ** NoiseReducer
-    , NoiseReducer
-    , noiseReducer
-    , nrSpatialFilterSettings
-    , nrFilterSettings
-    , nrFilter
-
-    -- ** NoiseReducerFilterSettings
-    , NoiseReducerFilterSettings
-    , noiseReducerFilterSettings
-    , nrfsStrength
-
-    -- ** NoiseReducerSpatialFilterSettings
-    , NoiseReducerSpatialFilterSettings
-    , noiseReducerSpatialFilterSettings
-    , nrsfsStrength
-    , nrsfsPostFilterSharpenStrength
-    , nrsfsSpeed
-
-    -- ** Output
-    , Output
-    , output
-    , oCaptionDescriptions
-    , oExtension
-    , oVideoDescription
-    , oContainerSettings
-    , oOutputSettings
-    , oPreset
-    , oNameModifier
-    , oAudioDescriptions
-
-    -- ** OutputChannelMapping
-    , OutputChannelMapping
-    , outputChannelMapping
-    , ocmInputChannels
-
-    -- ** OutputDetail
-    , OutputDetail
-    , outputDetail
-    , odVideoDetails
-    , odDurationInMs
-
-    -- ** OutputGroup
-    , OutputGroup
-    , outputGroup
-    , ogOutputGroupSettings
-    , ogOutputs
-    , ogCustomName
-    , ogName
-
-    -- ** OutputGroupDetail
-    , OutputGroupDetail
-    , outputGroupDetail
-    , ogdOutputDetails
-
-    -- ** OutputGroupSettings
-    , OutputGroupSettings
-    , outputGroupSettings
-    , ogsFileGroupSettings
-    , ogsMsSmoothGroupSettings
-    , ogsHlsGroupSettings
-    , ogsType
-    , ogsDashIsoGroupSettings
-
-    -- ** OutputSettings
-    , OutputSettings
-    , outputSettings
-    , osHlsSettings
-
-    -- ** Preset
-    , Preset
-    , preset
-    , pLastUpdated
-    , pSettings
-    , pARN
-    , pCreatedAt
-    , pCategory
-    , pName
-    , pType
-    , pDescription
-
-    -- ** PresetSettings
-    , PresetSettings
-    , presetSettings
-    , psCaptionDescriptions
-    , psVideoDescription
-    , psContainerSettings
-    , psAudioDescriptions
-
-    -- ** ProresSettings
-    , ProresSettings
-    , proresSettings
-    , psSlowPal
-    , psParNumerator
-    , psTelecine
-    , psInterlaceMode
-    , psParControl
-    , psCodecProfile
-    , psFramerateDenominator
-    , psFramerateConversionAlgorithm
-    , psFramerateControl
-    , psFramerateNumerator
-    , psParDenominator
-
-    -- ** Queue
-    , Queue
-    , queue
-    , qStatus
-    , qLastUpdated
-    , qARN
-    , qCreatedAt
-    , qName
-    , qType
-    , qDescription
-
-    -- ** Rectangle
-    , Rectangle
-    , rectangle
-    , rHeight
-    , rWidth
-    , rX
-    , rY
-
-    -- ** RemixSettings
-    , RemixSettings
-    , remixSettings
-    , rsChannelMapping
-    , rsChannelsIn
-    , rsChannelsOut
-
-    -- ** SccDestinationSettings
-    , SccDestinationSettings
-    , sccDestinationSettings
-    , sdsFramerate
-
-    -- ** SpekeKeyProvider
-    , SpekeKeyProvider
-    , spekeKeyProvider
-    , skpResourceId
-    , skpURL
-    , skpSystemIds
-
-    -- ** StaticKeyProvider
-    , StaticKeyProvider
-    , staticKeyProvider
-    , sStaticKeyValue
-    , sURL
-    , sKeyFormat
-    , sKeyFormatVersions
-
-    -- ** TeletextDestinationSettings
-    , TeletextDestinationSettings
-    , teletextDestinationSettings
-    , tdsPageNumber
-
-    -- ** TeletextSourceSettings
-    , TeletextSourceSettings
-    , teletextSourceSettings
-    , tssPageNumber
-
-    -- ** TimecodeBurnin
-    , TimecodeBurnin
-    , timecodeBurnin
-    , tbPrefix
-    , tbFontSize
-    , tbPosition
-
-    -- ** TimecodeConfig
-    , TimecodeConfig
-    , timecodeConfig
-    , tcStart
-    , tcTimestampOffset
-    , tcAnchor
-    , tcSource
-
-    -- ** TimedMetadataInsertion
-    , TimedMetadataInsertion
-    , timedMetadataInsertion
-    , tmiId3Insertions
-
-    -- ** Timing
-    , Timing
-    , timing
-    , tStartTime
-    , tFinishTime
-    , tSubmitTime
-
-    -- ** TtmlDestinationSettings
-    , TtmlDestinationSettings
-    , ttmlDestinationSettings
-    , tdsStylePassthrough
-
-    -- ** VideoCodecSettings
-    , VideoCodecSettings
-    , videoCodecSettings
-    , vcsFrameCaptureSettings
-    , vcsCodec
-    , vcsH265Settings
-    , vcsProresSettings
-    , vcsH264Settings
-    , vcsMpeg2Settings
-
-    -- ** VideoDescription
-    , VideoDescription
-    , videoDescription
-    , vdTimecodeInsertion
-    , vdHeight
-    , vdAfdSignaling
-    , vdSharpness
-    , vdCrop
-    , vdWidth
-    , vdScalingBehavior
-    , vdRespondToAfd
-    , vdDropFrameTimecode
-    , vdAntiAlias
-    , vdFixedAfd
-    , vdColorMetadata
-    , vdCodecSettings
-    , vdVideoPreprocessors
-    , vdPosition
-
-    -- ** VideoDetail
-    , VideoDetail
-    , videoDetail
-    , vdHeightInPx
-    , vdWidthInPx
-
-    -- ** VideoPreprocessor
-    , VideoPreprocessor
-    , videoPreprocessor
-    , vpTimecodeBurnin
-    , vpColorCorrector
-    , vpDeinterlacer
-    , vpNoiseReducer
-    , vpImageInserter
-
-    -- ** VideoSelector
-    , VideoSelector
-    , videoSelector
-    , vsProgramNumber
-    , vsColorSpaceUsage
-    , vsHdr10Metadata
-    , vsPid
-    , vsColorSpace
-
-    -- ** WavSettings
-    , WavSettings
-    , wavSettings
-    , wsBitDepth
-    , wsChannels
-    , wsSampleRate
-    ) where
-
-import Network.AWS.MediaConvert.CancelJob
-import Network.AWS.MediaConvert.CreateJob
-import Network.AWS.MediaConvert.CreateJobTemplate
-import Network.AWS.MediaConvert.CreatePreset
-import Network.AWS.MediaConvert.CreateQueue
-import Network.AWS.MediaConvert.DeleteJobTemplate
-import Network.AWS.MediaConvert.DeletePreset
-import Network.AWS.MediaConvert.DeleteQueue
-import Network.AWS.MediaConvert.DescribeEndpoints
-import Network.AWS.MediaConvert.GetJob
-import Network.AWS.MediaConvert.GetJobTemplate
-import Network.AWS.MediaConvert.GetPreset
-import Network.AWS.MediaConvert.GetQueue
-import Network.AWS.MediaConvert.ListJobs
-import Network.AWS.MediaConvert.ListJobTemplates
-import Network.AWS.MediaConvert.ListPresets
-import Network.AWS.MediaConvert.ListQueues
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.UpdateJobTemplate
-import Network.AWS.MediaConvert.UpdatePreset
-import Network.AWS.MediaConvert.UpdateQueue
-import Network.AWS.MediaConvert.Waiters
-
-{- $errors
-Error matchers are designed for use with the functions provided by
-<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
-This allows catching (and rethrowing) service specific errors returned
-by 'MediaConvert'.
--}
-
-{- $operations
-Some AWS operations return results that are incomplete and require subsequent
-requests in order to obtain the entire result set. The process of sending
-subsequent requests to continue where a previous request left off is called
-pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
-1000 objects at a time, and you must send subsequent requests with the
-appropriate Marker in order to retrieve the next page of results.
-
-Operations that have an 'AWSPager' instance can transparently perform subsequent
-requests, correctly setting Markers and other request facets to iterate through
-the entire result set of a truncated API operation. Operations which support
-this have an additional note in the documentation.
-
-Many operations have the ability to filter results on the server side. See the
-individual operation parameters for details.
--}
-
-{- $waiters
-Waiters poll by repeatedly sending a request until some remote success condition
-configured by the 'Wait' specification is fulfilled. The 'Wait' specification
-determines how many attempts should be made, in addition to delay and retry strategies.
--}
diff --git a/gen/Network/AWS/MediaConvert/CancelJob.hs b/gen/Network/AWS/MediaConvert/CancelJob.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/CancelJob.hs
+++ /dev/null
@@ -1,113 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.CancelJob
--- Copyright   : (c) 2013-2018 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)
---
--- Permanently remove a job from a queue. Once you have canceled a job, you can't start it again. You can't delete a running job.
-module Network.AWS.MediaConvert.CancelJob
-    (
-    -- * Creating a Request
-      cancelJob
-    , CancelJob
-    -- * Request Lenses
-    , cjId
-
-    -- * Destructuring the Response
-    , cancelJobResponse
-    , CancelJobResponse
-    -- * Response Lenses
-    , crsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'cancelJob' smart constructor.
-newtype CancelJob = CancelJob'
-  { _cjId :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CancelJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cjId' - The Job ID of the job to be cancelled.
-cancelJob
-    :: Text -- ^ 'cjId'
-    -> CancelJob
-cancelJob pId_ = CancelJob' {_cjId = pId_}
-
-
--- | The Job ID of the job to be cancelled.
-cjId :: Lens' CancelJob Text
-cjId = lens _cjId (\ s a -> s{_cjId = a})
-
-instance AWSRequest CancelJob where
-        type Rs CancelJob = CancelJobResponse
-        request = delete mediaConvert
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 CancelJobResponse' <$> (pure (fromEnum s)))
-
-instance Hashable CancelJob where
-
-instance NFData CancelJob where
-
-instance ToHeaders CancelJob where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath CancelJob where
-        toPath CancelJob'{..}
-          = mconcat ["/2017-08-29/jobs/", toBS _cjId]
-
-instance ToQuery CancelJob where
-        toQuery = const mempty
-
--- | /See:/ 'cancelJobResponse' smart constructor.
-newtype CancelJobResponse = CancelJobResponse'
-  { _crsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CancelJobResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'crsResponseStatus' - -- | The response status code.
-cancelJobResponse
-    :: Int -- ^ 'crsResponseStatus'
-    -> CancelJobResponse
-cancelJobResponse pResponseStatus_ =
-  CancelJobResponse' {_crsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-crsResponseStatus :: Lens' CancelJobResponse Int
-crsResponseStatus = lens _crsResponseStatus (\ s a -> s{_crsResponseStatus = a})
-
-instance NFData CancelJobResponse where
diff --git a/gen/Network/AWS/MediaConvert/CreateJob.hs b/gen/Network/AWS/MediaConvert/CreateJob.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/CreateJob.hs
+++ /dev/null
@@ -1,180 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.CreateJob
--- Copyright   : (c) 2013-2018 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)
---
--- Create a new transcoding job. For information about jobs and job settings, see the User Guide at http://docs.aws.amazon.com/mediaconvert/latest/ug/what-is.html
-module Network.AWS.MediaConvert.CreateJob
-    (
-    -- * Creating a Request
-      createJob
-    , CreateJob
-    -- * Request Lenses
-    , cjJobTemplate
-    , cjSettings
-    , cjQueue
-    , cjUserMetadata
-    , cjRole
-    , cjClientRequestToken
-
-    -- * Destructuring the Response
-    , createJobResponse
-    , CreateJobResponse
-    -- * Response Lenses
-    , cjrsJob
-    , cjrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'createJob' smart constructor.
-data CreateJob = CreateJob'
-  { _cjJobTemplate        :: !(Maybe Text)
-  , _cjSettings           :: !(Maybe JobSettings)
-  , _cjQueue              :: !(Maybe Text)
-  , _cjUserMetadata       :: !(Maybe (Map Text Text))
-  , _cjRole               :: !(Maybe Text)
-  , _cjClientRequestToken :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cjJobTemplate' - When you create a job, you can either specify a job template or specify the transcoding settings individually
---
--- * 'cjSettings' - Undocumented member.
---
--- * 'cjQueue' - Optional. When you create a job, you can specify a queue to send it to. If you don't specify, the job will go to the default queue. For more about queues, see the User Guide topic at http://docs.aws.amazon.com/mediaconvert/latest/ug/what-is.html.
---
--- * 'cjUserMetadata' - User-defined metadata that you want to associate with an MediaConvert job. You specify metadata in key/value pairs.
---
--- * 'cjRole' - Required. The IAM role you use for creating this job. For details about permissions, see the User Guide topic at the User Guide at http://docs.aws.amazon.com/mediaconvert/latest/ug/iam-role.html.
---
--- * 'cjClientRequestToken' - Idempotency token for CreateJob operation.
-createJob
-    :: CreateJob
-createJob =
-  CreateJob'
-    { _cjJobTemplate = Nothing
-    , _cjSettings = Nothing
-    , _cjQueue = Nothing
-    , _cjUserMetadata = Nothing
-    , _cjRole = Nothing
-    , _cjClientRequestToken = Nothing
-    }
-
-
--- | When you create a job, you can either specify a job template or specify the transcoding settings individually
-cjJobTemplate :: Lens' CreateJob (Maybe Text)
-cjJobTemplate = lens _cjJobTemplate (\ s a -> s{_cjJobTemplate = a})
-
--- | Undocumented member.
-cjSettings :: Lens' CreateJob (Maybe JobSettings)
-cjSettings = lens _cjSettings (\ s a -> s{_cjSettings = a})
-
--- | Optional. When you create a job, you can specify a queue to send it to. If you don't specify, the job will go to the default queue. For more about queues, see the User Guide topic at http://docs.aws.amazon.com/mediaconvert/latest/ug/what-is.html.
-cjQueue :: Lens' CreateJob (Maybe Text)
-cjQueue = lens _cjQueue (\ s a -> s{_cjQueue = a})
-
--- | User-defined metadata that you want to associate with an MediaConvert job. You specify metadata in key/value pairs.
-cjUserMetadata :: Lens' CreateJob (HashMap Text Text)
-cjUserMetadata = lens _cjUserMetadata (\ s a -> s{_cjUserMetadata = a}) . _Default . _Map
-
--- | Required. The IAM role you use for creating this job. For details about permissions, see the User Guide topic at the User Guide at http://docs.aws.amazon.com/mediaconvert/latest/ug/iam-role.html.
-cjRole :: Lens' CreateJob (Maybe Text)
-cjRole = lens _cjRole (\ s a -> s{_cjRole = a})
-
--- | Idempotency token for CreateJob operation.
-cjClientRequestToken :: Lens' CreateJob (Maybe Text)
-cjClientRequestToken = lens _cjClientRequestToken (\ s a -> s{_cjClientRequestToken = a})
-
-instance AWSRequest CreateJob where
-        type Rs CreateJob = CreateJobResponse
-        request = postJSON mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateJobResponse' <$>
-                   (x .?> "job") <*> (pure (fromEnum s)))
-
-instance Hashable CreateJob where
-
-instance NFData CreateJob where
-
-instance ToHeaders CreateJob where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateJob where
-        toJSON CreateJob'{..}
-          = object
-              (catMaybes
-                 [("jobTemplate" .=) <$> _cjJobTemplate,
-                  ("settings" .=) <$> _cjSettings,
-                  ("queue" .=) <$> _cjQueue,
-                  ("userMetadata" .=) <$> _cjUserMetadata,
-                  ("role" .=) <$> _cjRole,
-                  ("clientRequestToken" .=) <$> _cjClientRequestToken])
-
-instance ToPath CreateJob where
-        toPath = const "/2017-08-29/jobs"
-
-instance ToQuery CreateJob where
-        toQuery = const mempty
-
--- | /See:/ 'createJobResponse' smart constructor.
-data CreateJobResponse = CreateJobResponse'
-  { _cjrsJob            :: !(Maybe Job)
-  , _cjrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateJobResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cjrsJob' - Undocumented member.
---
--- * 'cjrsResponseStatus' - -- | The response status code.
-createJobResponse
-    :: Int -- ^ 'cjrsResponseStatus'
-    -> CreateJobResponse
-createJobResponse pResponseStatus_ =
-  CreateJobResponse'
-    {_cjrsJob = Nothing, _cjrsResponseStatus = pResponseStatus_}
-
-
--- | Undocumented member.
-cjrsJob :: Lens' CreateJobResponse (Maybe Job)
-cjrsJob = lens _cjrsJob (\ s a -> s{_cjrsJob = a})
-
--- | -- | The response status code.
-cjrsResponseStatus :: Lens' CreateJobResponse Int
-cjrsResponseStatus = lens _cjrsResponseStatus (\ s a -> s{_cjrsResponseStatus = a})
-
-instance NFData CreateJobResponse where
diff --git a/gen/Network/AWS/MediaConvert/CreateJobTemplate.hs b/gen/Network/AWS/MediaConvert/CreateJobTemplate.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/CreateJobTemplate.hs
+++ /dev/null
@@ -1,169 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.CreateJobTemplate
--- Copyright   : (c) 2013-2018 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)
---
--- Create a new job template. For information about job templates see the User Guide at http://docs.aws.amazon.com/mediaconvert/latest/ug/what-is.html
-module Network.AWS.MediaConvert.CreateJobTemplate
-    (
-    -- * Creating a Request
-      createJobTemplate
-    , CreateJobTemplate
-    -- * Request Lenses
-    , cjtSettings
-    , cjtCategory
-    , cjtQueue
-    , cjtName
-    , cjtDescription
-
-    -- * Destructuring the Response
-    , createJobTemplateResponse
-    , CreateJobTemplateResponse
-    -- * Response Lenses
-    , cjtrsJobTemplate
-    , cjtrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'createJobTemplate' smart constructor.
-data CreateJobTemplate = CreateJobTemplate'
-  { _cjtSettings    :: !(Maybe JobTemplateSettings)
-  , _cjtCategory    :: !(Maybe Text)
-  , _cjtQueue       :: !(Maybe Text)
-  , _cjtName        :: !(Maybe Text)
-  , _cjtDescription :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateJobTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cjtSettings' - Undocumented member.
---
--- * 'cjtCategory' - Optional. A category for the job template you are creating
---
--- * 'cjtQueue' - Optional. The queue that jobs created from this template are assigned to. If you don't specify this, jobs will go to the default queue.
---
--- * 'cjtName' - The name of the job template you are creating.
---
--- * 'cjtDescription' - Optional. A description of the job template you are creating.
-createJobTemplate
-    :: CreateJobTemplate
-createJobTemplate =
-  CreateJobTemplate'
-    { _cjtSettings = Nothing
-    , _cjtCategory = Nothing
-    , _cjtQueue = Nothing
-    , _cjtName = Nothing
-    , _cjtDescription = Nothing
-    }
-
-
--- | Undocumented member.
-cjtSettings :: Lens' CreateJobTemplate (Maybe JobTemplateSettings)
-cjtSettings = lens _cjtSettings (\ s a -> s{_cjtSettings = a})
-
--- | Optional. A category for the job template you are creating
-cjtCategory :: Lens' CreateJobTemplate (Maybe Text)
-cjtCategory = lens _cjtCategory (\ s a -> s{_cjtCategory = a})
-
--- | Optional. The queue that jobs created from this template are assigned to. If you don't specify this, jobs will go to the default queue.
-cjtQueue :: Lens' CreateJobTemplate (Maybe Text)
-cjtQueue = lens _cjtQueue (\ s a -> s{_cjtQueue = a})
-
--- | The name of the job template you are creating.
-cjtName :: Lens' CreateJobTemplate (Maybe Text)
-cjtName = lens _cjtName (\ s a -> s{_cjtName = a})
-
--- | Optional. A description of the job template you are creating.
-cjtDescription :: Lens' CreateJobTemplate (Maybe Text)
-cjtDescription = lens _cjtDescription (\ s a -> s{_cjtDescription = a})
-
-instance AWSRequest CreateJobTemplate where
-        type Rs CreateJobTemplate = CreateJobTemplateResponse
-        request = postJSON mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateJobTemplateResponse' <$>
-                   (x .?> "jobTemplate") <*> (pure (fromEnum s)))
-
-instance Hashable CreateJobTemplate where
-
-instance NFData CreateJobTemplate where
-
-instance ToHeaders CreateJobTemplate where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateJobTemplate where
-        toJSON CreateJobTemplate'{..}
-          = object
-              (catMaybes
-                 [("settings" .=) <$> _cjtSettings,
-                  ("category" .=) <$> _cjtCategory,
-                  ("queue" .=) <$> _cjtQueue, ("name" .=) <$> _cjtName,
-                  ("description" .=) <$> _cjtDescription])
-
-instance ToPath CreateJobTemplate where
-        toPath = const "/2017-08-29/jobTemplates"
-
-instance ToQuery CreateJobTemplate where
-        toQuery = const mempty
-
--- | /See:/ 'createJobTemplateResponse' smart constructor.
-data CreateJobTemplateResponse = CreateJobTemplateResponse'
-  { _cjtrsJobTemplate    :: !(Maybe JobTemplate)
-  , _cjtrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateJobTemplateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cjtrsJobTemplate' - Undocumented member.
---
--- * 'cjtrsResponseStatus' - -- | The response status code.
-createJobTemplateResponse
-    :: Int -- ^ 'cjtrsResponseStatus'
-    -> CreateJobTemplateResponse
-createJobTemplateResponse pResponseStatus_ =
-  CreateJobTemplateResponse'
-    {_cjtrsJobTemplate = Nothing, _cjtrsResponseStatus = pResponseStatus_}
-
-
--- | Undocumented member.
-cjtrsJobTemplate :: Lens' CreateJobTemplateResponse (Maybe JobTemplate)
-cjtrsJobTemplate = lens _cjtrsJobTemplate (\ s a -> s{_cjtrsJobTemplate = a})
-
--- | -- | The response status code.
-cjtrsResponseStatus :: Lens' CreateJobTemplateResponse Int
-cjtrsResponseStatus = lens _cjtrsResponseStatus (\ s a -> s{_cjtrsResponseStatus = a})
-
-instance NFData CreateJobTemplateResponse where
diff --git a/gen/Network/AWS/MediaConvert/CreatePreset.hs b/gen/Network/AWS/MediaConvert/CreatePreset.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/CreatePreset.hs
+++ /dev/null
@@ -1,160 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.CreatePreset
--- Copyright   : (c) 2013-2018 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)
---
--- Create a new preset. For information about job templates see the User Guide at http://docs.aws.amazon.com/mediaconvert/latest/ug/what-is.html
-module Network.AWS.MediaConvert.CreatePreset
-    (
-    -- * Creating a Request
-      createPreset
-    , CreatePreset
-    -- * Request Lenses
-    , cpSettings
-    , cpCategory
-    , cpName
-    , cpDescription
-
-    -- * Destructuring the Response
-    , createPresetResponse
-    , CreatePresetResponse
-    -- * Response Lenses
-    , cprsPreset
-    , cprsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'createPreset' smart constructor.
-data CreatePreset = CreatePreset'
-  { _cpSettings    :: !(Maybe PresetSettings)
-  , _cpCategory    :: !(Maybe Text)
-  , _cpName        :: !(Maybe Text)
-  , _cpDescription :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreatePreset' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cpSettings' - Undocumented member.
---
--- * 'cpCategory' - Optional. A category for the preset you are creating.
---
--- * 'cpName' - The name of the preset you are creating.
---
--- * 'cpDescription' - Optional. A description of the preset you are creating.
-createPreset
-    :: CreatePreset
-createPreset =
-  CreatePreset'
-    { _cpSettings = Nothing
-    , _cpCategory = Nothing
-    , _cpName = Nothing
-    , _cpDescription = Nothing
-    }
-
-
--- | Undocumented member.
-cpSettings :: Lens' CreatePreset (Maybe PresetSettings)
-cpSettings = lens _cpSettings (\ s a -> s{_cpSettings = a})
-
--- | Optional. A category for the preset you are creating.
-cpCategory :: Lens' CreatePreset (Maybe Text)
-cpCategory = lens _cpCategory (\ s a -> s{_cpCategory = a})
-
--- | The name of the preset you are creating.
-cpName :: Lens' CreatePreset (Maybe Text)
-cpName = lens _cpName (\ s a -> s{_cpName = a})
-
--- | Optional. A description of the preset you are creating.
-cpDescription :: Lens' CreatePreset (Maybe Text)
-cpDescription = lens _cpDescription (\ s a -> s{_cpDescription = a})
-
-instance AWSRequest CreatePreset where
-        type Rs CreatePreset = CreatePresetResponse
-        request = postJSON mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreatePresetResponse' <$>
-                   (x .?> "preset") <*> (pure (fromEnum s)))
-
-instance Hashable CreatePreset where
-
-instance NFData CreatePreset where
-
-instance ToHeaders CreatePreset where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreatePreset where
-        toJSON CreatePreset'{..}
-          = object
-              (catMaybes
-                 [("settings" .=) <$> _cpSettings,
-                  ("category" .=) <$> _cpCategory,
-                  ("name" .=) <$> _cpName,
-                  ("description" .=) <$> _cpDescription])
-
-instance ToPath CreatePreset where
-        toPath = const "/2017-08-29/presets"
-
-instance ToQuery CreatePreset where
-        toQuery = const mempty
-
--- | /See:/ 'createPresetResponse' smart constructor.
-data CreatePresetResponse = CreatePresetResponse'
-  { _cprsPreset         :: !(Maybe Preset)
-  , _cprsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreatePresetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cprsPreset' - Undocumented member.
---
--- * 'cprsResponseStatus' - -- | The response status code.
-createPresetResponse
-    :: Int -- ^ 'cprsResponseStatus'
-    -> CreatePresetResponse
-createPresetResponse pResponseStatus_ =
-  CreatePresetResponse'
-    {_cprsPreset = Nothing, _cprsResponseStatus = pResponseStatus_}
-
-
--- | Undocumented member.
-cprsPreset :: Lens' CreatePresetResponse (Maybe Preset)
-cprsPreset = lens _cprsPreset (\ s a -> s{_cprsPreset = a})
-
--- | -- | The response status code.
-cprsResponseStatus :: Lens' CreatePresetResponse Int
-cprsResponseStatus = lens _cprsResponseStatus (\ s a -> s{_cprsResponseStatus = a})
-
-instance NFData CreatePresetResponse where
diff --git a/gen/Network/AWS/MediaConvert/CreateQueue.hs b/gen/Network/AWS/MediaConvert/CreateQueue.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/CreateQueue.hs
+++ /dev/null
@@ -1,136 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.CreateQueue
--- Copyright   : (c) 2013-2018 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)
---
--- Create a new transcoding queue. For information about job templates see the User Guide at http://docs.aws.amazon.com/mediaconvert/latest/ug/what-is.html
-module Network.AWS.MediaConvert.CreateQueue
-    (
-    -- * Creating a Request
-      createQueue
-    , CreateQueue
-    -- * Request Lenses
-    , cqName
-    , cqDescription
-
-    -- * Destructuring the Response
-    , createQueueResponse
-    , CreateQueueResponse
-    -- * Response Lenses
-    , cqrsQueue
-    , cqrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'createQueue' smart constructor.
-data CreateQueue = CreateQueue'
-  { _cqName        :: !(Maybe Text)
-  , _cqDescription :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateQueue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cqName' - The name of the queue you are creating.
---
--- * 'cqDescription' - Optional. A description of the queue you are creating.
-createQueue
-    :: CreateQueue
-createQueue = CreateQueue' {_cqName = Nothing, _cqDescription = Nothing}
-
-
--- | The name of the queue you are creating.
-cqName :: Lens' CreateQueue (Maybe Text)
-cqName = lens _cqName (\ s a -> s{_cqName = a})
-
--- | Optional. A description of the queue you are creating.
-cqDescription :: Lens' CreateQueue (Maybe Text)
-cqDescription = lens _cqDescription (\ s a -> s{_cqDescription = a})
-
-instance AWSRequest CreateQueue where
-        type Rs CreateQueue = CreateQueueResponse
-        request = postJSON mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateQueueResponse' <$>
-                   (x .?> "queue") <*> (pure (fromEnum s)))
-
-instance Hashable CreateQueue where
-
-instance NFData CreateQueue where
-
-instance ToHeaders CreateQueue where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateQueue where
-        toJSON CreateQueue'{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _cqName,
-                  ("description" .=) <$> _cqDescription])
-
-instance ToPath CreateQueue where
-        toPath = const "/2017-08-29/queues"
-
-instance ToQuery CreateQueue where
-        toQuery = const mempty
-
--- | /See:/ 'createQueueResponse' smart constructor.
-data CreateQueueResponse = CreateQueueResponse'
-  { _cqrsQueue          :: !(Maybe Queue)
-  , _cqrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateQueueResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cqrsQueue' - Undocumented member.
---
--- * 'cqrsResponseStatus' - -- | The response status code.
-createQueueResponse
-    :: Int -- ^ 'cqrsResponseStatus'
-    -> CreateQueueResponse
-createQueueResponse pResponseStatus_ =
-  CreateQueueResponse'
-    {_cqrsQueue = Nothing, _cqrsResponseStatus = pResponseStatus_}
-
-
--- | Undocumented member.
-cqrsQueue :: Lens' CreateQueueResponse (Maybe Queue)
-cqrsQueue = lens _cqrsQueue (\ s a -> s{_cqrsQueue = a})
-
--- | -- | The response status code.
-cqrsResponseStatus :: Lens' CreateQueueResponse Int
-cqrsResponseStatus = lens _cqrsResponseStatus (\ s a -> s{_cqrsResponseStatus = a})
-
-instance NFData CreateQueueResponse where
diff --git a/gen/Network/AWS/MediaConvert/DeleteJobTemplate.hs b/gen/Network/AWS/MediaConvert/DeleteJobTemplate.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/DeleteJobTemplate.hs
+++ /dev/null
@@ -1,114 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.DeleteJobTemplate
--- Copyright   : (c) 2013-2018 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)
---
--- Permanently delete a job template you have created.
-module Network.AWS.MediaConvert.DeleteJobTemplate
-    (
-    -- * Creating a Request
-      deleteJobTemplate
-    , DeleteJobTemplate
-    -- * Request Lenses
-    , djtName
-
-    -- * Destructuring the Response
-    , deleteJobTemplateResponse
-    , DeleteJobTemplateResponse
-    -- * Response Lenses
-    , djtrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'deleteJobTemplate' smart constructor.
-newtype DeleteJobTemplate = DeleteJobTemplate'
-  { _djtName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteJobTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'djtName' - The name of the job template to be deleted.
-deleteJobTemplate
-    :: Text -- ^ 'djtName'
-    -> DeleteJobTemplate
-deleteJobTemplate pName_ = DeleteJobTemplate' {_djtName = pName_}
-
-
--- | The name of the job template to be deleted.
-djtName :: Lens' DeleteJobTemplate Text
-djtName = lens _djtName (\ s a -> s{_djtName = a})
-
-instance AWSRequest DeleteJobTemplate where
-        type Rs DeleteJobTemplate = DeleteJobTemplateResponse
-        request = delete mediaConvert
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteJobTemplateResponse' <$> (pure (fromEnum s)))
-
-instance Hashable DeleteJobTemplate where
-
-instance NFData DeleteJobTemplate where
-
-instance ToHeaders DeleteJobTemplate where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath DeleteJobTemplate where
-        toPath DeleteJobTemplate'{..}
-          = mconcat
-              ["/2017-08-29/jobTemplates/", toBS _djtName]
-
-instance ToQuery DeleteJobTemplate where
-        toQuery = const mempty
-
--- | /See:/ 'deleteJobTemplateResponse' smart constructor.
-newtype DeleteJobTemplateResponse = DeleteJobTemplateResponse'
-  { _djtrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteJobTemplateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'djtrsResponseStatus' - -- | The response status code.
-deleteJobTemplateResponse
-    :: Int -- ^ 'djtrsResponseStatus'
-    -> DeleteJobTemplateResponse
-deleteJobTemplateResponse pResponseStatus_ =
-  DeleteJobTemplateResponse' {_djtrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-djtrsResponseStatus :: Lens' DeleteJobTemplateResponse Int
-djtrsResponseStatus = lens _djtrsResponseStatus (\ s a -> s{_djtrsResponseStatus = a})
-
-instance NFData DeleteJobTemplateResponse where
diff --git a/gen/Network/AWS/MediaConvert/DeletePreset.hs b/gen/Network/AWS/MediaConvert/DeletePreset.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/DeletePreset.hs
+++ /dev/null
@@ -1,113 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.DeletePreset
--- Copyright   : (c) 2013-2018 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)
---
--- Permanently delete a preset you have created.
-module Network.AWS.MediaConvert.DeletePreset
-    (
-    -- * Creating a Request
-      deletePreset
-    , DeletePreset
-    -- * Request Lenses
-    , dpName
-
-    -- * Destructuring the Response
-    , deletePresetResponse
-    , DeletePresetResponse
-    -- * Response Lenses
-    , dprsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'deletePreset' smart constructor.
-newtype DeletePreset = DeletePreset'
-  { _dpName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeletePreset' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dpName' - The name of the preset to be deleted.
-deletePreset
-    :: Text -- ^ 'dpName'
-    -> DeletePreset
-deletePreset pName_ = DeletePreset' {_dpName = pName_}
-
-
--- | The name of the preset to be deleted.
-dpName :: Lens' DeletePreset Text
-dpName = lens _dpName (\ s a -> s{_dpName = a})
-
-instance AWSRequest DeletePreset where
-        type Rs DeletePreset = DeletePresetResponse
-        request = delete mediaConvert
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeletePresetResponse' <$> (pure (fromEnum s)))
-
-instance Hashable DeletePreset where
-
-instance NFData DeletePreset where
-
-instance ToHeaders DeletePreset where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath DeletePreset where
-        toPath DeletePreset'{..}
-          = mconcat ["/2017-08-29/presets/", toBS _dpName]
-
-instance ToQuery DeletePreset where
-        toQuery = const mempty
-
--- | /See:/ 'deletePresetResponse' smart constructor.
-newtype DeletePresetResponse = DeletePresetResponse'
-  { _dprsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeletePresetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dprsResponseStatus' - -- | The response status code.
-deletePresetResponse
-    :: Int -- ^ 'dprsResponseStatus'
-    -> DeletePresetResponse
-deletePresetResponse pResponseStatus_ =
-  DeletePresetResponse' {_dprsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dprsResponseStatus :: Lens' DeletePresetResponse Int
-dprsResponseStatus = lens _dprsResponseStatus (\ s a -> s{_dprsResponseStatus = a})
-
-instance NFData DeletePresetResponse where
diff --git a/gen/Network/AWS/MediaConvert/DeleteQueue.hs b/gen/Network/AWS/MediaConvert/DeleteQueue.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/DeleteQueue.hs
+++ /dev/null
@@ -1,113 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.DeleteQueue
--- Copyright   : (c) 2013-2018 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)
---
--- Permanently delete a queue you have created.
-module Network.AWS.MediaConvert.DeleteQueue
-    (
-    -- * Creating a Request
-      deleteQueue
-    , DeleteQueue
-    -- * Request Lenses
-    , dqName
-
-    -- * Destructuring the Response
-    , deleteQueueResponse
-    , DeleteQueueResponse
-    -- * Response Lenses
-    , dqrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'deleteQueue' smart constructor.
-newtype DeleteQueue = DeleteQueue'
-  { _dqName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteQueue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dqName' - The name of the queue to be deleted.
-deleteQueue
-    :: Text -- ^ 'dqName'
-    -> DeleteQueue
-deleteQueue pName_ = DeleteQueue' {_dqName = pName_}
-
-
--- | The name of the queue to be deleted.
-dqName :: Lens' DeleteQueue Text
-dqName = lens _dqName (\ s a -> s{_dqName = a})
-
-instance AWSRequest DeleteQueue where
-        type Rs DeleteQueue = DeleteQueueResponse
-        request = delete mediaConvert
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteQueueResponse' <$> (pure (fromEnum s)))
-
-instance Hashable DeleteQueue where
-
-instance NFData DeleteQueue where
-
-instance ToHeaders DeleteQueue where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath DeleteQueue where
-        toPath DeleteQueue'{..}
-          = mconcat ["/2017-08-29/queues/", toBS _dqName]
-
-instance ToQuery DeleteQueue where
-        toQuery = const mempty
-
--- | /See:/ 'deleteQueueResponse' smart constructor.
-newtype DeleteQueueResponse = DeleteQueueResponse'
-  { _dqrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteQueueResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dqrsResponseStatus' - -- | The response status code.
-deleteQueueResponse
-    :: Int -- ^ 'dqrsResponseStatus'
-    -> DeleteQueueResponse
-deleteQueueResponse pResponseStatus_ =
-  DeleteQueueResponse' {_dqrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dqrsResponseStatus :: Lens' DeleteQueueResponse Int
-dqrsResponseStatus = lens _dqrsResponseStatus (\ s a -> s{_dqrsResponseStatus = a})
-
-instance NFData DeleteQueueResponse where
diff --git a/gen/Network/AWS/MediaConvert/DescribeEndpoints.hs b/gen/Network/AWS/MediaConvert/DescribeEndpoints.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/DescribeEndpoints.hs
+++ /dev/null
@@ -1,152 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.DescribeEndpoints
--- Copyright   : (c) 2013-2018 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)
---
--- Send an request with an empty body to the regional API endpoint to get your account API endpoint.
-module Network.AWS.MediaConvert.DescribeEndpoints
-    (
-    -- * Creating a Request
-      describeEndpoints
-    , DescribeEndpoints
-    -- * Request Lenses
-    , deNextToken
-    , deMaxResults
-
-    -- * Destructuring the Response
-    , describeEndpointsResponse
-    , DescribeEndpointsResponse
-    -- * Response Lenses
-    , dersNextToken
-    , dersEndpoints
-    , dersResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | DescribeEndpointsRequest
---
--- /See:/ 'describeEndpoints' smart constructor.
-data DescribeEndpoints = DescribeEndpoints'
-  { _deNextToken  :: !(Maybe Text)
-  , _deMaxResults :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeEndpoints' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'deNextToken' - Use this string, provided with the response to a previous request, to request the next batch of endpoints.
---
--- * 'deMaxResults' - Optional. Max number of endpoints, up to twenty, that will be returned at one time.
-describeEndpoints
-    :: DescribeEndpoints
-describeEndpoints =
-  DescribeEndpoints' {_deNextToken = Nothing, _deMaxResults = Nothing}
-
-
--- | Use this string, provided with the response to a previous request, to request the next batch of endpoints.
-deNextToken :: Lens' DescribeEndpoints (Maybe Text)
-deNextToken = lens _deNextToken (\ s a -> s{_deNextToken = a})
-
--- | Optional. Max number of endpoints, up to twenty, that will be returned at one time.
-deMaxResults :: Lens' DescribeEndpoints (Maybe Int)
-deMaxResults = lens _deMaxResults (\ s a -> s{_deMaxResults = a})
-
-instance AWSRequest DescribeEndpoints where
-        type Rs DescribeEndpoints = DescribeEndpointsResponse
-        request = postJSON mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeEndpointsResponse' <$>
-                   (x .?> "nextToken") <*>
-                     (x .?> "endpoints" .!@ mempty)
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeEndpoints where
-
-instance NFData DescribeEndpoints where
-
-instance ToHeaders DescribeEndpoints where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeEndpoints where
-        toJSON DescribeEndpoints'{..}
-          = object
-              (catMaybes
-                 [("nextToken" .=) <$> _deNextToken,
-                  ("maxResults" .=) <$> _deMaxResults])
-
-instance ToPath DescribeEndpoints where
-        toPath = const "/2017-08-29/endpoints"
-
-instance ToQuery DescribeEndpoints where
-        toQuery = const mempty
-
--- | /See:/ 'describeEndpointsResponse' smart constructor.
-data DescribeEndpointsResponse = DescribeEndpointsResponse'
-  { _dersNextToken      :: !(Maybe Text)
-  , _dersEndpoints      :: !(Maybe [Endpoint])
-  , _dersResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeEndpointsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dersNextToken' - Use this string to request the next batch of endpoints.
---
--- * 'dersEndpoints' - List of endpoints
---
--- * 'dersResponseStatus' - -- | The response status code.
-describeEndpointsResponse
-    :: Int -- ^ 'dersResponseStatus'
-    -> DescribeEndpointsResponse
-describeEndpointsResponse pResponseStatus_ =
-  DescribeEndpointsResponse'
-    { _dersNextToken = Nothing
-    , _dersEndpoints = Nothing
-    , _dersResponseStatus = pResponseStatus_
-    }
-
-
--- | Use this string to request the next batch of endpoints.
-dersNextToken :: Lens' DescribeEndpointsResponse (Maybe Text)
-dersNextToken = lens _dersNextToken (\ s a -> s{_dersNextToken = a})
-
--- | List of endpoints
-dersEndpoints :: Lens' DescribeEndpointsResponse [Endpoint]
-dersEndpoints = lens _dersEndpoints (\ s a -> s{_dersEndpoints = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-dersResponseStatus :: Lens' DescribeEndpointsResponse Int
-dersResponseStatus = lens _dersResponseStatus (\ s a -> s{_dersResponseStatus = a})
-
-instance NFData DescribeEndpointsResponse where
diff --git a/gen/Network/AWS/MediaConvert/GetJob.hs b/gen/Network/AWS/MediaConvert/GetJob.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/GetJob.hs
+++ /dev/null
@@ -1,122 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.GetJob
--- Copyright   : (c) 2013-2018 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)
---
--- Retrieve the JSON for a specific completed transcoding job.
-module Network.AWS.MediaConvert.GetJob
-    (
-    -- * Creating a Request
-      getJob
-    , GetJob
-    -- * Request Lenses
-    , gjId
-
-    -- * Destructuring the Response
-    , getJobResponse
-    , GetJobResponse
-    -- * Response Lenses
-    , gjrsJob
-    , gjrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'getJob' smart constructor.
-newtype GetJob = GetJob'
-  { _gjId :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gjId' - the job ID of the job.
-getJob
-    :: Text -- ^ 'gjId'
-    -> GetJob
-getJob pId_ = GetJob' {_gjId = pId_}
-
-
--- | the job ID of the job.
-gjId :: Lens' GetJob Text
-gjId = lens _gjId (\ s a -> s{_gjId = a})
-
-instance AWSRequest GetJob where
-        type Rs GetJob = GetJobResponse
-        request = get mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetJobResponse' <$>
-                   (x .?> "job") <*> (pure (fromEnum s)))
-
-instance Hashable GetJob where
-
-instance NFData GetJob where
-
-instance ToHeaders GetJob where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath GetJob where
-        toPath GetJob'{..}
-          = mconcat ["/2017-08-29/jobs/", toBS _gjId]
-
-instance ToQuery GetJob where
-        toQuery = const mempty
-
--- | /See:/ 'getJobResponse' smart constructor.
-data GetJobResponse = GetJobResponse'
-  { _gjrsJob            :: !(Maybe Job)
-  , _gjrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetJobResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gjrsJob' - Undocumented member.
---
--- * 'gjrsResponseStatus' - -- | The response status code.
-getJobResponse
-    :: Int -- ^ 'gjrsResponseStatus'
-    -> GetJobResponse
-getJobResponse pResponseStatus_ =
-  GetJobResponse' {_gjrsJob = Nothing, _gjrsResponseStatus = pResponseStatus_}
-
-
--- | Undocumented member.
-gjrsJob :: Lens' GetJobResponse (Maybe Job)
-gjrsJob = lens _gjrsJob (\ s a -> s{_gjrsJob = a})
-
--- | -- | The response status code.
-gjrsResponseStatus :: Lens' GetJobResponse Int
-gjrsResponseStatus = lens _gjrsResponseStatus (\ s a -> s{_gjrsResponseStatus = a})
-
-instance NFData GetJobResponse where
diff --git a/gen/Network/AWS/MediaConvert/GetJobTemplate.hs b/gen/Network/AWS/MediaConvert/GetJobTemplate.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/GetJobTemplate.hs
+++ /dev/null
@@ -1,124 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.GetJobTemplate
--- Copyright   : (c) 2013-2018 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)
---
--- Retrieve the JSON for a specific job template.
-module Network.AWS.MediaConvert.GetJobTemplate
-    (
-    -- * Creating a Request
-      getJobTemplate
-    , GetJobTemplate
-    -- * Request Lenses
-    , gjtName
-
-    -- * Destructuring the Response
-    , getJobTemplateResponse
-    , GetJobTemplateResponse
-    -- * Response Lenses
-    , gjtrsJobTemplate
-    , gjtrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'getJobTemplate' smart constructor.
-newtype GetJobTemplate = GetJobTemplate'
-  { _gjtName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetJobTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gjtName' - The name of the job template.
-getJobTemplate
-    :: Text -- ^ 'gjtName'
-    -> GetJobTemplate
-getJobTemplate pName_ = GetJobTemplate' {_gjtName = pName_}
-
-
--- | The name of the job template.
-gjtName :: Lens' GetJobTemplate Text
-gjtName = lens _gjtName (\ s a -> s{_gjtName = a})
-
-instance AWSRequest GetJobTemplate where
-        type Rs GetJobTemplate = GetJobTemplateResponse
-        request = get mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetJobTemplateResponse' <$>
-                   (x .?> "jobTemplate") <*> (pure (fromEnum s)))
-
-instance Hashable GetJobTemplate where
-
-instance NFData GetJobTemplate where
-
-instance ToHeaders GetJobTemplate where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath GetJobTemplate where
-        toPath GetJobTemplate'{..}
-          = mconcat
-              ["/2017-08-29/jobTemplates/", toBS _gjtName]
-
-instance ToQuery GetJobTemplate where
-        toQuery = const mempty
-
--- | /See:/ 'getJobTemplateResponse' smart constructor.
-data GetJobTemplateResponse = GetJobTemplateResponse'
-  { _gjtrsJobTemplate    :: !(Maybe JobTemplate)
-  , _gjtrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetJobTemplateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gjtrsJobTemplate' - Undocumented member.
---
--- * 'gjtrsResponseStatus' - -- | The response status code.
-getJobTemplateResponse
-    :: Int -- ^ 'gjtrsResponseStatus'
-    -> GetJobTemplateResponse
-getJobTemplateResponse pResponseStatus_ =
-  GetJobTemplateResponse'
-    {_gjtrsJobTemplate = Nothing, _gjtrsResponseStatus = pResponseStatus_}
-
-
--- | Undocumented member.
-gjtrsJobTemplate :: Lens' GetJobTemplateResponse (Maybe JobTemplate)
-gjtrsJobTemplate = lens _gjtrsJobTemplate (\ s a -> s{_gjtrsJobTemplate = a})
-
--- | -- | The response status code.
-gjtrsResponseStatus :: Lens' GetJobTemplateResponse Int
-gjtrsResponseStatus = lens _gjtrsResponseStatus (\ s a -> s{_gjtrsResponseStatus = a})
-
-instance NFData GetJobTemplateResponse where
diff --git a/gen/Network/AWS/MediaConvert/GetPreset.hs b/gen/Network/AWS/MediaConvert/GetPreset.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/GetPreset.hs
+++ /dev/null
@@ -1,123 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.GetPreset
--- Copyright   : (c) 2013-2018 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)
---
--- Retrieve the JSON for a specific preset.
-module Network.AWS.MediaConvert.GetPreset
-    (
-    -- * Creating a Request
-      getPreset
-    , GetPreset
-    -- * Request Lenses
-    , gpName
-
-    -- * Destructuring the Response
-    , getPresetResponse
-    , GetPresetResponse
-    -- * Response Lenses
-    , gprsPreset
-    , gprsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'getPreset' smart constructor.
-newtype GetPreset = GetPreset'
-  { _gpName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetPreset' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gpName' - The name of the preset.
-getPreset
-    :: Text -- ^ 'gpName'
-    -> GetPreset
-getPreset pName_ = GetPreset' {_gpName = pName_}
-
-
--- | The name of the preset.
-gpName :: Lens' GetPreset Text
-gpName = lens _gpName (\ s a -> s{_gpName = a})
-
-instance AWSRequest GetPreset where
-        type Rs GetPreset = GetPresetResponse
-        request = get mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetPresetResponse' <$>
-                   (x .?> "preset") <*> (pure (fromEnum s)))
-
-instance Hashable GetPreset where
-
-instance NFData GetPreset where
-
-instance ToHeaders GetPreset where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath GetPreset where
-        toPath GetPreset'{..}
-          = mconcat ["/2017-08-29/presets/", toBS _gpName]
-
-instance ToQuery GetPreset where
-        toQuery = const mempty
-
--- | /See:/ 'getPresetResponse' smart constructor.
-data GetPresetResponse = GetPresetResponse'
-  { _gprsPreset         :: !(Maybe Preset)
-  , _gprsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetPresetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gprsPreset' - Undocumented member.
---
--- * 'gprsResponseStatus' - -- | The response status code.
-getPresetResponse
-    :: Int -- ^ 'gprsResponseStatus'
-    -> GetPresetResponse
-getPresetResponse pResponseStatus_ =
-  GetPresetResponse'
-    {_gprsPreset = Nothing, _gprsResponseStatus = pResponseStatus_}
-
-
--- | Undocumented member.
-gprsPreset :: Lens' GetPresetResponse (Maybe Preset)
-gprsPreset = lens _gprsPreset (\ s a -> s{_gprsPreset = a})
-
--- | -- | The response status code.
-gprsResponseStatus :: Lens' GetPresetResponse Int
-gprsResponseStatus = lens _gprsResponseStatus (\ s a -> s{_gprsResponseStatus = a})
-
-instance NFData GetPresetResponse where
diff --git a/gen/Network/AWS/MediaConvert/GetQueue.hs b/gen/Network/AWS/MediaConvert/GetQueue.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/GetQueue.hs
+++ /dev/null
@@ -1,123 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.GetQueue
--- Copyright   : (c) 2013-2018 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)
---
--- Retrieve the JSON for a specific queue.
-module Network.AWS.MediaConvert.GetQueue
-    (
-    -- * Creating a Request
-      getQueue
-    , GetQueue
-    -- * Request Lenses
-    , gqName
-
-    -- * Destructuring the Response
-    , getQueueResponse
-    , GetQueueResponse
-    -- * Response Lenses
-    , gqrsQueue
-    , gqrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'getQueue' smart constructor.
-newtype GetQueue = GetQueue'
-  { _gqName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetQueue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gqName' - The name of the queue.
-getQueue
-    :: Text -- ^ 'gqName'
-    -> GetQueue
-getQueue pName_ = GetQueue' {_gqName = pName_}
-
-
--- | The name of the queue.
-gqName :: Lens' GetQueue Text
-gqName = lens _gqName (\ s a -> s{_gqName = a})
-
-instance AWSRequest GetQueue where
-        type Rs GetQueue = GetQueueResponse
-        request = get mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetQueueResponse' <$>
-                   (x .?> "queue") <*> (pure (fromEnum s)))
-
-instance Hashable GetQueue where
-
-instance NFData GetQueue where
-
-instance ToHeaders GetQueue where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath GetQueue where
-        toPath GetQueue'{..}
-          = mconcat ["/2017-08-29/queues/", toBS _gqName]
-
-instance ToQuery GetQueue where
-        toQuery = const mempty
-
--- | /See:/ 'getQueueResponse' smart constructor.
-data GetQueueResponse = GetQueueResponse'
-  { _gqrsQueue          :: !(Maybe Queue)
-  , _gqrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetQueueResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gqrsQueue' - Undocumented member.
---
--- * 'gqrsResponseStatus' - -- | The response status code.
-getQueueResponse
-    :: Int -- ^ 'gqrsResponseStatus'
-    -> GetQueueResponse
-getQueueResponse pResponseStatus_ =
-  GetQueueResponse'
-    {_gqrsQueue = Nothing, _gqrsResponseStatus = pResponseStatus_}
-
-
--- | Undocumented member.
-gqrsQueue :: Lens' GetQueueResponse (Maybe Queue)
-gqrsQueue = lens _gqrsQueue (\ s a -> s{_gqrsQueue = a})
-
--- | -- | The response status code.
-gqrsResponseStatus :: Lens' GetQueueResponse Int
-gqrsResponseStatus = lens _gqrsResponseStatus (\ s a -> s{_gqrsResponseStatus = a})
-
-instance NFData GetQueueResponse where
diff --git a/gen/Network/AWS/MediaConvert/ListJobTemplates.hs b/gen/Network/AWS/MediaConvert/ListJobTemplates.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/ListJobTemplates.hs
+++ /dev/null
@@ -1,177 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.ListJobTemplates
--- Copyright   : (c) 2013-2018 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)
---
--- Retrieve a JSON array of up to twenty of your job templates. This will return the templates themselves, not just a list of them. To retrieve the next twenty templates, use the nextToken string returned with the array
-module Network.AWS.MediaConvert.ListJobTemplates
-    (
-    -- * Creating a Request
-      listJobTemplates
-    , ListJobTemplates
-    -- * Request Lenses
-    , ljtCategory
-    , ljtListBy
-    , ljtNextToken
-    , ljtOrder
-    , ljtMaxResults
-
-    -- * Destructuring the Response
-    , listJobTemplatesResponse
-    , ListJobTemplatesResponse
-    -- * Response Lenses
-    , ljtrsJobTemplates
-    , ljtrsNextToken
-    , ljtrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'listJobTemplates' smart constructor.
-data ListJobTemplates = ListJobTemplates'
-  { _ljtCategory   :: !(Maybe Text)
-  , _ljtListBy     :: !(Maybe JobTemplateListBy)
-  , _ljtNextToken  :: !(Maybe Text)
-  , _ljtOrder      :: !(Maybe Order)
-  , _ljtMaxResults :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListJobTemplates' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ljtCategory' - Optionally, specify a job template category to limit responses to only job templates from that category.
---
--- * 'ljtListBy' - Undocumented member.
---
--- * 'ljtNextToken' - Use this string, provided with the response to a previous request, to request the next batch of job templates.
---
--- * 'ljtOrder' - Undocumented member.
---
--- * 'ljtMaxResults' - Optional. Number of job templates, up to twenty, that will be returned at one time.
-listJobTemplates
-    :: ListJobTemplates
-listJobTemplates =
-  ListJobTemplates'
-    { _ljtCategory = Nothing
-    , _ljtListBy = Nothing
-    , _ljtNextToken = Nothing
-    , _ljtOrder = Nothing
-    , _ljtMaxResults = Nothing
-    }
-
-
--- | Optionally, specify a job template category to limit responses to only job templates from that category.
-ljtCategory :: Lens' ListJobTemplates (Maybe Text)
-ljtCategory = lens _ljtCategory (\ s a -> s{_ljtCategory = a})
-
--- | Undocumented member.
-ljtListBy :: Lens' ListJobTemplates (Maybe JobTemplateListBy)
-ljtListBy = lens _ljtListBy (\ s a -> s{_ljtListBy = a})
-
--- | Use this string, provided with the response to a previous request, to request the next batch of job templates.
-ljtNextToken :: Lens' ListJobTemplates (Maybe Text)
-ljtNextToken = lens _ljtNextToken (\ s a -> s{_ljtNextToken = a})
-
--- | Undocumented member.
-ljtOrder :: Lens' ListJobTemplates (Maybe Order)
-ljtOrder = lens _ljtOrder (\ s a -> s{_ljtOrder = a})
-
--- | Optional. Number of job templates, up to twenty, that will be returned at one time.
-ljtMaxResults :: Lens' ListJobTemplates (Maybe Int)
-ljtMaxResults = lens _ljtMaxResults (\ s a -> s{_ljtMaxResults = a})
-
-instance AWSRequest ListJobTemplates where
-        type Rs ListJobTemplates = ListJobTemplatesResponse
-        request = get mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListJobTemplatesResponse' <$>
-                   (x .?> "jobTemplates" .!@ mempty) <*>
-                     (x .?> "nextToken")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListJobTemplates where
-
-instance NFData ListJobTemplates where
-
-instance ToHeaders ListJobTemplates where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath ListJobTemplates where
-        toPath = const "/2017-08-29/jobTemplates"
-
-instance ToQuery ListJobTemplates where
-        toQuery ListJobTemplates'{..}
-          = mconcat
-              ["category" =: _ljtCategory, "listBy" =: _ljtListBy,
-               "nextToken" =: _ljtNextToken, "order" =: _ljtOrder,
-               "maxResults" =: _ljtMaxResults]
-
--- | /See:/ 'listJobTemplatesResponse' smart constructor.
-data ListJobTemplatesResponse = ListJobTemplatesResponse'
-  { _ljtrsJobTemplates   :: !(Maybe [JobTemplate])
-  , _ljtrsNextToken      :: !(Maybe Text)
-  , _ljtrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListJobTemplatesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ljtrsJobTemplates' - List of Job templates.
---
--- * 'ljtrsNextToken' - Use this string to request the next batch of job templates.
---
--- * 'ljtrsResponseStatus' - -- | The response status code.
-listJobTemplatesResponse
-    :: Int -- ^ 'ljtrsResponseStatus'
-    -> ListJobTemplatesResponse
-listJobTemplatesResponse pResponseStatus_ =
-  ListJobTemplatesResponse'
-    { _ljtrsJobTemplates = Nothing
-    , _ljtrsNextToken = Nothing
-    , _ljtrsResponseStatus = pResponseStatus_
-    }
-
-
--- | List of Job templates.
-ljtrsJobTemplates :: Lens' ListJobTemplatesResponse [JobTemplate]
-ljtrsJobTemplates = lens _ljtrsJobTemplates (\ s a -> s{_ljtrsJobTemplates = a}) . _Default . _Coerce
-
--- | Use this string to request the next batch of job templates.
-ljtrsNextToken :: Lens' ListJobTemplatesResponse (Maybe Text)
-ljtrsNextToken = lens _ljtrsNextToken (\ s a -> s{_ljtrsNextToken = a})
-
--- | -- | The response status code.
-ljtrsResponseStatus :: Lens' ListJobTemplatesResponse Int
-ljtrsResponseStatus = lens _ljtrsResponseStatus (\ s a -> s{_ljtrsResponseStatus = a})
-
-instance NFData ListJobTemplatesResponse where
diff --git a/gen/Network/AWS/MediaConvert/ListJobs.hs b/gen/Network/AWS/MediaConvert/ListJobs.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/ListJobs.hs
+++ /dev/null
@@ -1,176 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.ListJobs
--- Copyright   : (c) 2013-2018 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)
---
--- Retrieve a JSON array of up to twenty of your most recently created jobs. This array includes in-process, completed, and errored jobs. This will return the jobs themselves, not just a list of the jobs. To retrieve the twenty next most recent jobs, use the nextToken string returned with the array.
-module Network.AWS.MediaConvert.ListJobs
-    (
-    -- * Creating a Request
-      listJobs
-    , ListJobs
-    -- * Request Lenses
-    , ljStatus
-    , ljQueue
-    , ljNextToken
-    , ljOrder
-    , ljMaxResults
-
-    -- * Destructuring the Response
-    , listJobsResponse
-    , ListJobsResponse
-    -- * Response Lenses
-    , ljrsNextToken
-    , ljrsJobs
-    , ljrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'listJobs' smart constructor.
-data ListJobs = ListJobs'
-  { _ljStatus     :: !(Maybe JobStatus)
-  , _ljQueue      :: !(Maybe Text)
-  , _ljNextToken  :: !(Maybe Text)
-  , _ljOrder      :: !(Maybe Order)
-  , _ljMaxResults :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListJobs' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ljStatus' - Undocumented member.
---
--- * 'ljQueue' - Provide a queue name to get back only jobs from that queue.
---
--- * 'ljNextToken' - Use this string, provided with the response to a previous request, to request the next batch of jobs.
---
--- * 'ljOrder' - Undocumented member.
---
--- * 'ljMaxResults' - Optional. Number of jobs, up to twenty, that will be returned at one time.
-listJobs
-    :: ListJobs
-listJobs =
-  ListJobs'
-    { _ljStatus = Nothing
-    , _ljQueue = Nothing
-    , _ljNextToken = Nothing
-    , _ljOrder = Nothing
-    , _ljMaxResults = Nothing
-    }
-
-
--- | Undocumented member.
-ljStatus :: Lens' ListJobs (Maybe JobStatus)
-ljStatus = lens _ljStatus (\ s a -> s{_ljStatus = a})
-
--- | Provide a queue name to get back only jobs from that queue.
-ljQueue :: Lens' ListJobs (Maybe Text)
-ljQueue = lens _ljQueue (\ s a -> s{_ljQueue = a})
-
--- | Use this string, provided with the response to a previous request, to request the next batch of jobs.
-ljNextToken :: Lens' ListJobs (Maybe Text)
-ljNextToken = lens _ljNextToken (\ s a -> s{_ljNextToken = a})
-
--- | Undocumented member.
-ljOrder :: Lens' ListJobs (Maybe Order)
-ljOrder = lens _ljOrder (\ s a -> s{_ljOrder = a})
-
--- | Optional. Number of jobs, up to twenty, that will be returned at one time.
-ljMaxResults :: Lens' ListJobs (Maybe Int)
-ljMaxResults = lens _ljMaxResults (\ s a -> s{_ljMaxResults = a})
-
-instance AWSRequest ListJobs where
-        type Rs ListJobs = ListJobsResponse
-        request = get mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListJobsResponse' <$>
-                   (x .?> "nextToken") <*> (x .?> "jobs" .!@ mempty) <*>
-                     (pure (fromEnum s)))
-
-instance Hashable ListJobs where
-
-instance NFData ListJobs where
-
-instance ToHeaders ListJobs where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath ListJobs where
-        toPath = const "/2017-08-29/jobs"
-
-instance ToQuery ListJobs where
-        toQuery ListJobs'{..}
-          = mconcat
-              ["status" =: _ljStatus, "queue" =: _ljQueue,
-               "nextToken" =: _ljNextToken, "order" =: _ljOrder,
-               "maxResults" =: _ljMaxResults]
-
--- | /See:/ 'listJobsResponse' smart constructor.
-data ListJobsResponse = ListJobsResponse'
-  { _ljrsNextToken      :: !(Maybe Text)
-  , _ljrsJobs           :: !(Maybe [Job])
-  , _ljrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListJobsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ljrsNextToken' - Use this string to request the next batch of jobs.
---
--- * 'ljrsJobs' - List of jobs
---
--- * 'ljrsResponseStatus' - -- | The response status code.
-listJobsResponse
-    :: Int -- ^ 'ljrsResponseStatus'
-    -> ListJobsResponse
-listJobsResponse pResponseStatus_ =
-  ListJobsResponse'
-    { _ljrsNextToken = Nothing
-    , _ljrsJobs = Nothing
-    , _ljrsResponseStatus = pResponseStatus_
-    }
-
-
--- | Use this string to request the next batch of jobs.
-ljrsNextToken :: Lens' ListJobsResponse (Maybe Text)
-ljrsNextToken = lens _ljrsNextToken (\ s a -> s{_ljrsNextToken = a})
-
--- | List of jobs
-ljrsJobs :: Lens' ListJobsResponse [Job]
-ljrsJobs = lens _ljrsJobs (\ s a -> s{_ljrsJobs = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-ljrsResponseStatus :: Lens' ListJobsResponse Int
-ljrsResponseStatus = lens _ljrsResponseStatus (\ s a -> s{_ljrsResponseStatus = a})
-
-instance NFData ListJobsResponse where
diff --git a/gen/Network/AWS/MediaConvert/ListPresets.hs b/gen/Network/AWS/MediaConvert/ListPresets.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/ListPresets.hs
+++ /dev/null
@@ -1,176 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.ListPresets
--- Copyright   : (c) 2013-2018 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)
---
--- Retrieve a JSON array of up to twenty of your presets. This will return the presets themselves, not just a list of them. To retrieve the next twenty presets, use the nextToken string returned with the array.
-module Network.AWS.MediaConvert.ListPresets
-    (
-    -- * Creating a Request
-      listPresets
-    , ListPresets
-    -- * Request Lenses
-    , lpCategory
-    , lpListBy
-    , lpNextToken
-    , lpOrder
-    , lpMaxResults
-
-    -- * Destructuring the Response
-    , listPresetsResponse
-    , ListPresetsResponse
-    -- * Response Lenses
-    , lprsPresets
-    , lprsNextToken
-    , lprsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'listPresets' smart constructor.
-data ListPresets = ListPresets'
-  { _lpCategory   :: !(Maybe Text)
-  , _lpListBy     :: !(Maybe PresetListBy)
-  , _lpNextToken  :: !(Maybe Text)
-  , _lpOrder      :: !(Maybe Order)
-  , _lpMaxResults :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListPresets' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lpCategory' - Optionally, specify a preset category to limit responses to only presets from that category.
---
--- * 'lpListBy' - Undocumented member.
---
--- * 'lpNextToken' - Use this string, provided with the response to a previous request, to request the next batch of presets.
---
--- * 'lpOrder' - Undocumented member.
---
--- * 'lpMaxResults' - Optional. Number of presets, up to twenty, that will be returned at one time
-listPresets
-    :: ListPresets
-listPresets =
-  ListPresets'
-    { _lpCategory = Nothing
-    , _lpListBy = Nothing
-    , _lpNextToken = Nothing
-    , _lpOrder = Nothing
-    , _lpMaxResults = Nothing
-    }
-
-
--- | Optionally, specify a preset category to limit responses to only presets from that category.
-lpCategory :: Lens' ListPresets (Maybe Text)
-lpCategory = lens _lpCategory (\ s a -> s{_lpCategory = a})
-
--- | Undocumented member.
-lpListBy :: Lens' ListPresets (Maybe PresetListBy)
-lpListBy = lens _lpListBy (\ s a -> s{_lpListBy = a})
-
--- | Use this string, provided with the response to a previous request, to request the next batch of presets.
-lpNextToken :: Lens' ListPresets (Maybe Text)
-lpNextToken = lens _lpNextToken (\ s a -> s{_lpNextToken = a})
-
--- | Undocumented member.
-lpOrder :: Lens' ListPresets (Maybe Order)
-lpOrder = lens _lpOrder (\ s a -> s{_lpOrder = a})
-
--- | Optional. Number of presets, up to twenty, that will be returned at one time
-lpMaxResults :: Lens' ListPresets (Maybe Int)
-lpMaxResults = lens _lpMaxResults (\ s a -> s{_lpMaxResults = a})
-
-instance AWSRequest ListPresets where
-        type Rs ListPresets = ListPresetsResponse
-        request = get mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListPresetsResponse' <$>
-                   (x .?> "presets" .!@ mempty) <*> (x .?> "nextToken")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListPresets where
-
-instance NFData ListPresets where
-
-instance ToHeaders ListPresets where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath ListPresets where
-        toPath = const "/2017-08-29/presets"
-
-instance ToQuery ListPresets where
-        toQuery ListPresets'{..}
-          = mconcat
-              ["category" =: _lpCategory, "listBy" =: _lpListBy,
-               "nextToken" =: _lpNextToken, "order" =: _lpOrder,
-               "maxResults" =: _lpMaxResults]
-
--- | /See:/ 'listPresetsResponse' smart constructor.
-data ListPresetsResponse = ListPresetsResponse'
-  { _lprsPresets        :: !(Maybe [Preset])
-  , _lprsNextToken      :: !(Maybe Text)
-  , _lprsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListPresetsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lprsPresets' - List of presets
---
--- * 'lprsNextToken' - Use this string to request the next batch of presets.
---
--- * 'lprsResponseStatus' - -- | The response status code.
-listPresetsResponse
-    :: Int -- ^ 'lprsResponseStatus'
-    -> ListPresetsResponse
-listPresetsResponse pResponseStatus_ =
-  ListPresetsResponse'
-    { _lprsPresets = Nothing
-    , _lprsNextToken = Nothing
-    , _lprsResponseStatus = pResponseStatus_
-    }
-
-
--- | List of presets
-lprsPresets :: Lens' ListPresetsResponse [Preset]
-lprsPresets = lens _lprsPresets (\ s a -> s{_lprsPresets = a}) . _Default . _Coerce
-
--- | Use this string to request the next batch of presets.
-lprsNextToken :: Lens' ListPresetsResponse (Maybe Text)
-lprsNextToken = lens _lprsNextToken (\ s a -> s{_lprsNextToken = a})
-
--- | -- | The response status code.
-lprsResponseStatus :: Lens' ListPresetsResponse Int
-lprsResponseStatus = lens _lprsResponseStatus (\ s a -> s{_lprsResponseStatus = a})
-
-instance NFData ListPresetsResponse where
diff --git a/gen/Network/AWS/MediaConvert/ListQueues.hs b/gen/Network/AWS/MediaConvert/ListQueues.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/ListQueues.hs
+++ /dev/null
@@ -1,166 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.ListQueues
--- Copyright   : (c) 2013-2018 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)
---
--- Retrieve a JSON array of up to twenty of your queues. This will return the queues themselves, not just a list of them. To retrieve the next twenty queues, use the nextToken string returned with the array.
-module Network.AWS.MediaConvert.ListQueues
-    (
-    -- * Creating a Request
-      listQueues
-    , ListQueues
-    -- * Request Lenses
-    , lqListBy
-    , lqNextToken
-    , lqOrder
-    , lqMaxResults
-
-    -- * Destructuring the Response
-    , listQueuesResponse
-    , ListQueuesResponse
-    -- * Response Lenses
-    , lqrsQueues
-    , lqrsNextToken
-    , lqrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'listQueues' smart constructor.
-data ListQueues = ListQueues'
-  { _lqListBy     :: !(Maybe QueueListBy)
-  , _lqNextToken  :: !(Maybe Text)
-  , _lqOrder      :: !(Maybe Order)
-  , _lqMaxResults :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListQueues' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lqListBy' - Undocumented member.
---
--- * 'lqNextToken' - Use this string, provided with the response to a previous request, to request the next batch of queues.
---
--- * 'lqOrder' - Undocumented member.
---
--- * 'lqMaxResults' - Optional. Number of queues, up to twenty, that will be returned at one time.
-listQueues
-    :: ListQueues
-listQueues =
-  ListQueues'
-    { _lqListBy = Nothing
-    , _lqNextToken = Nothing
-    , _lqOrder = Nothing
-    , _lqMaxResults = Nothing
-    }
-
-
--- | Undocumented member.
-lqListBy :: Lens' ListQueues (Maybe QueueListBy)
-lqListBy = lens _lqListBy (\ s a -> s{_lqListBy = a})
-
--- | Use this string, provided with the response to a previous request, to request the next batch of queues.
-lqNextToken :: Lens' ListQueues (Maybe Text)
-lqNextToken = lens _lqNextToken (\ s a -> s{_lqNextToken = a})
-
--- | Undocumented member.
-lqOrder :: Lens' ListQueues (Maybe Order)
-lqOrder = lens _lqOrder (\ s a -> s{_lqOrder = a})
-
--- | Optional. Number of queues, up to twenty, that will be returned at one time.
-lqMaxResults :: Lens' ListQueues (Maybe Int)
-lqMaxResults = lens _lqMaxResults (\ s a -> s{_lqMaxResults = a})
-
-instance AWSRequest ListQueues where
-        type Rs ListQueues = ListQueuesResponse
-        request = get mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListQueuesResponse' <$>
-                   (x .?> "queues" .!@ mempty) <*> (x .?> "nextToken")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListQueues where
-
-instance NFData ListQueues where
-
-instance ToHeaders ListQueues where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath ListQueues where
-        toPath = const "/2017-08-29/queues"
-
-instance ToQuery ListQueues where
-        toQuery ListQueues'{..}
-          = mconcat
-              ["listBy" =: _lqListBy, "nextToken" =: _lqNextToken,
-               "order" =: _lqOrder, "maxResults" =: _lqMaxResults]
-
--- | /See:/ 'listQueuesResponse' smart constructor.
-data ListQueuesResponse = ListQueuesResponse'
-  { _lqrsQueues         :: !(Maybe [Queue])
-  , _lqrsNextToken      :: !(Maybe Text)
-  , _lqrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListQueuesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lqrsQueues' - List of queues
---
--- * 'lqrsNextToken' - Use this string to request the next batch of queues.
---
--- * 'lqrsResponseStatus' - -- | The response status code.
-listQueuesResponse
-    :: Int -- ^ 'lqrsResponseStatus'
-    -> ListQueuesResponse
-listQueuesResponse pResponseStatus_ =
-  ListQueuesResponse'
-    { _lqrsQueues = Nothing
-    , _lqrsNextToken = Nothing
-    , _lqrsResponseStatus = pResponseStatus_
-    }
-
-
--- | List of queues
-lqrsQueues :: Lens' ListQueuesResponse [Queue]
-lqrsQueues = lens _lqrsQueues (\ s a -> s{_lqrsQueues = a}) . _Default . _Coerce
-
--- | Use this string to request the next batch of queues.
-lqrsNextToken :: Lens' ListQueuesResponse (Maybe Text)
-lqrsNextToken = lens _lqrsNextToken (\ s a -> s{_lqrsNextToken = a})
-
--- | -- | The response status code.
-lqrsResponseStatus :: Lens' ListQueuesResponse Int
-lqrsResponseStatus = lens _lqrsResponseStatus (\ s a -> s{_lqrsResponseStatus = a})
-
-instance NFData ListQueuesResponse where
diff --git a/gen/Network/AWS/MediaConvert/Types.hs b/gen/Network/AWS/MediaConvert/Types.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/Types.hs
+++ /dev/null
@@ -1,1668 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.Types
--- Copyright   : (c) 2013-2018 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 Network.AWS.MediaConvert.Types
-    (
-    -- * Service Configuration
-      mediaConvert
-
-    -- * Errors
-    , _ConflictException
-    , _ForbiddenException
-    , _NotFoundException
-    , _TooManyRequestsException
-    , _InternalServerErrorException
-    , _BadRequestException
-
-    -- * AacAudioDescriptionBroadcasterMix
-    , AacAudioDescriptionBroadcasterMix (..)
-
-    -- * AacCodecProfile
-    , AacCodecProfile (..)
-
-    -- * AacCodingMode
-    , AacCodingMode (..)
-
-    -- * AacRateControlMode
-    , AacRateControlMode (..)
-
-    -- * AacRawFormat
-    , AacRawFormat (..)
-
-    -- * AacSpecification
-    , AacSpecification (..)
-
-    -- * AacVbrQuality
-    , AacVbrQuality (..)
-
-    -- * Ac3BitstreamMode
-    , Ac3BitstreamMode (..)
-
-    -- * Ac3CodingMode
-    , Ac3CodingMode (..)
-
-    -- * Ac3DynamicRangeCompressionProfile
-    , Ac3DynamicRangeCompressionProfile (..)
-
-    -- * Ac3LfeFilter
-    , Ac3LfeFilter (..)
-
-    -- * Ac3MetadataControl
-    , Ac3MetadataControl (..)
-
-    -- * AfdSignaling
-    , AfdSignaling (..)
-
-    -- * AntiAlias
-    , AntiAlias (..)
-
-    -- * AudioCodec
-    , AudioCodec (..)
-
-    -- * AudioDefaultSelection
-    , AudioDefaultSelection (..)
-
-    -- * AudioLanguageCodeControl
-    , AudioLanguageCodeControl (..)
-
-    -- * AudioNormalizationAlgorithm
-    , AudioNormalizationAlgorithm (..)
-
-    -- * AudioNormalizationAlgorithmControl
-    , AudioNormalizationAlgorithmControl (..)
-
-    -- * AudioNormalizationLoudnessLogging
-    , AudioNormalizationLoudnessLogging (..)
-
-    -- * AudioNormalizationPeakCalculation
-    , AudioNormalizationPeakCalculation (..)
-
-    -- * AudioSelectorType
-    , AudioSelectorType (..)
-
-    -- * AudioTypeControl
-    , AudioTypeControl (..)
-
-    -- * BurninSubtitleAlignment
-    , BurninSubtitleAlignment (..)
-
-    -- * BurninSubtitleBackgroundColor
-    , BurninSubtitleBackgroundColor (..)
-
-    -- * BurninSubtitleFontColor
-    , BurninSubtitleFontColor (..)
-
-    -- * BurninSubtitleOutlineColor
-    , BurninSubtitleOutlineColor (..)
-
-    -- * BurninSubtitleShadowColor
-    , BurninSubtitleShadowColor (..)
-
-    -- * BurninSubtitleTeletextSpacing
-    , BurninSubtitleTeletextSpacing (..)
-
-    -- * CaptionDestinationType
-    , CaptionDestinationType (..)
-
-    -- * CaptionSourceType
-    , CaptionSourceType (..)
-
-    -- * ColorMetadata
-    , ColorMetadata (..)
-
-    -- * ColorSpace
-    , ColorSpace (..)
-
-    -- * ColorSpaceConversion
-    , ColorSpaceConversion (..)
-
-    -- * ColorSpaceUsage
-    , ColorSpaceUsage (..)
-
-    -- * ContainerType
-    , ContainerType (..)
-
-    -- * DashIsoHbbtvCompliance
-    , DashIsoHbbtvCompliance (..)
-
-    -- * DashIsoSegmentControl
-    , DashIsoSegmentControl (..)
-
-    -- * DeinterlaceAlgorithm
-    , DeinterlaceAlgorithm (..)
-
-    -- * DeinterlacerControl
-    , DeinterlacerControl (..)
-
-    -- * DeinterlacerMode
-    , DeinterlacerMode (..)
-
-    -- * DropFrameTimecode
-    , DropFrameTimecode (..)
-
-    -- * DvbSubtitleAlignment
-    , DvbSubtitleAlignment (..)
-
-    -- * DvbSubtitleBackgroundColor
-    , DvbSubtitleBackgroundColor (..)
-
-    -- * DvbSubtitleFontColor
-    , DvbSubtitleFontColor (..)
-
-    -- * DvbSubtitleOutlineColor
-    , DvbSubtitleOutlineColor (..)
-
-    -- * DvbSubtitleShadowColor
-    , DvbSubtitleShadowColor (..)
-
-    -- * DvbSubtitleTeletextSpacing
-    , DvbSubtitleTeletextSpacing (..)
-
-    -- * Eac3AttenuationControl
-    , Eac3AttenuationControl (..)
-
-    -- * Eac3BitstreamMode
-    , Eac3BitstreamMode (..)
-
-    -- * Eac3CodingMode
-    , Eac3CodingMode (..)
-
-    -- * Eac3DcFilter
-    , Eac3DcFilter (..)
-
-    -- * Eac3DynamicRangeCompressionLine
-    , Eac3DynamicRangeCompressionLine (..)
-
-    -- * Eac3DynamicRangeCompressionRf
-    , Eac3DynamicRangeCompressionRf (..)
-
-    -- * Eac3LfeControl
-    , Eac3LfeControl (..)
-
-    -- * Eac3LfeFilter
-    , Eac3LfeFilter (..)
-
-    -- * Eac3MetadataControl
-    , Eac3MetadataControl (..)
-
-    -- * Eac3PassthroughControl
-    , Eac3PassthroughControl (..)
-
-    -- * Eac3PhaseControl
-    , Eac3PhaseControl (..)
-
-    -- * Eac3StereoDownmix
-    , Eac3StereoDownmix (..)
-
-    -- * Eac3SurroundExMode
-    , Eac3SurroundExMode (..)
-
-    -- * Eac3SurroundMode
-    , Eac3SurroundMode (..)
-
-    -- * EmbeddedConvert608To708
-    , EmbeddedConvert608To708 (..)
-
-    -- * F4vMoovPlacement
-    , F4vMoovPlacement (..)
-
-    -- * FileSourceConvert608To708
-    , FileSourceConvert608To708 (..)
-
-    -- * H264AdaptiveQuantization
-    , H264AdaptiveQuantization (..)
-
-    -- * H264CodecLevel
-    , H264CodecLevel (..)
-
-    -- * H264CodecProfile
-    , H264CodecProfile (..)
-
-    -- * H264EntropyEncoding
-    , H264EntropyEncoding (..)
-
-    -- * H264FieldEncoding
-    , H264FieldEncoding (..)
-
-    -- * H264FlickerAdaptiveQuantization
-    , H264FlickerAdaptiveQuantization (..)
-
-    -- * H264FramerateControl
-    , H264FramerateControl (..)
-
-    -- * H264FramerateConversionAlgorithm
-    , H264FramerateConversionAlgorithm (..)
-
-    -- * H264GopBReference
-    , H264GopBReference (..)
-
-    -- * H264GopSizeUnits
-    , H264GopSizeUnits (..)
-
-    -- * H264InterlaceMode
-    , H264InterlaceMode (..)
-
-    -- * H264ParControl
-    , H264ParControl (..)
-
-    -- * H264QualityTuningLevel
-    , H264QualityTuningLevel (..)
-
-    -- * H264RateControlMode
-    , H264RateControlMode (..)
-
-    -- * H264RepeatPps
-    , H264RepeatPps (..)
-
-    -- * H264SceneChangeDetect
-    , H264SceneChangeDetect (..)
-
-    -- * H264SlowPal
-    , H264SlowPal (..)
-
-    -- * H264SpatialAdaptiveQuantization
-    , H264SpatialAdaptiveQuantization (..)
-
-    -- * H264Syntax
-    , H264Syntax (..)
-
-    -- * H264Telecine
-    , H264Telecine (..)
-
-    -- * H264TemporalAdaptiveQuantization
-    , H264TemporalAdaptiveQuantization (..)
-
-    -- * H264UnregisteredSeiTimecode
-    , H264UnregisteredSeiTimecode (..)
-
-    -- * H265AdaptiveQuantization
-    , H265AdaptiveQuantization (..)
-
-    -- * H265AlternateTransferFunctionSei
-    , H265AlternateTransferFunctionSei (..)
-
-    -- * H265CodecLevel
-    , H265CodecLevel (..)
-
-    -- * H265CodecProfile
-    , H265CodecProfile (..)
-
-    -- * H265FlickerAdaptiveQuantization
-    , H265FlickerAdaptiveQuantization (..)
-
-    -- * H265FramerateControl
-    , H265FramerateControl (..)
-
-    -- * H265FramerateConversionAlgorithm
-    , H265FramerateConversionAlgorithm (..)
-
-    -- * H265GopBReference
-    , H265GopBReference (..)
-
-    -- * H265GopSizeUnits
-    , H265GopSizeUnits (..)
-
-    -- * H265InterlaceMode
-    , H265InterlaceMode (..)
-
-    -- * H265ParControl
-    , H265ParControl (..)
-
-    -- * H265QualityTuningLevel
-    , H265QualityTuningLevel (..)
-
-    -- * H265RateControlMode
-    , H265RateControlMode (..)
-
-    -- * H265SampleAdaptiveOffsetFilterMode
-    , H265SampleAdaptiveOffsetFilterMode (..)
-
-    -- * H265SceneChangeDetect
-    , H265SceneChangeDetect (..)
-
-    -- * H265SlowPal
-    , H265SlowPal (..)
-
-    -- * H265SpatialAdaptiveQuantization
-    , H265SpatialAdaptiveQuantization (..)
-
-    -- * H265Telecine
-    , H265Telecine (..)
-
-    -- * H265TemporalAdaptiveQuantization
-    , H265TemporalAdaptiveQuantization (..)
-
-    -- * H265TemporalIds
-    , H265TemporalIds (..)
-
-    -- * H265Tiles
-    , H265Tiles (..)
-
-    -- * H265UnregisteredSeiTimecode
-    , H265UnregisteredSeiTimecode (..)
-
-    -- * HlsAdMarkers
-    , HlsAdMarkers (..)
-
-    -- * HlsAudioTrackType
-    , HlsAudioTrackType (..)
-
-    -- * HlsCaptionLanguageSetting
-    , HlsCaptionLanguageSetting (..)
-
-    -- * HlsClientCache
-    , HlsClientCache (..)
-
-    -- * HlsCodecSpecification
-    , HlsCodecSpecification (..)
-
-    -- * HlsDirectoryStructure
-    , HlsDirectoryStructure (..)
-
-    -- * HlsEncryptionType
-    , HlsEncryptionType (..)
-
-    -- * HlsIFrameOnlyManifest
-    , HlsIFrameOnlyManifest (..)
-
-    -- * HlsInitializationVectorInManifest
-    , HlsInitializationVectorInManifest (..)
-
-    -- * HlsKeyProviderType
-    , HlsKeyProviderType (..)
-
-    -- * HlsManifestCompression
-    , HlsManifestCompression (..)
-
-    -- * HlsManifestDurationFormat
-    , HlsManifestDurationFormat (..)
-
-    -- * HlsOutputSelection
-    , HlsOutputSelection (..)
-
-    -- * HlsProgramDateTime
-    , HlsProgramDateTime (..)
-
-    -- * HlsSegmentControl
-    , HlsSegmentControl (..)
-
-    -- * HlsStreamInfResolution
-    , HlsStreamInfResolution (..)
-
-    -- * HlsTimedMetadataId3Frame
-    , HlsTimedMetadataId3Frame (..)
-
-    -- * InputDeblockFilter
-    , InputDeblockFilter (..)
-
-    -- * InputDenoiseFilter
-    , InputDenoiseFilter (..)
-
-    -- * InputFilterEnable
-    , InputFilterEnable (..)
-
-    -- * InputPsiControl
-    , InputPsiControl (..)
-
-    -- * InputTimecodeSource
-    , InputTimecodeSource (..)
-
-    -- * JobStatus
-    , JobStatus (..)
-
-    -- * JobTemplateListBy
-    , JobTemplateListBy (..)
-
-    -- * LanguageCode
-    , LanguageCode (..)
-
-    -- * M2tsAudioBufferModel
-    , M2tsAudioBufferModel (..)
-
-    -- * M2tsBufferModel
-    , M2tsBufferModel (..)
-
-    -- * M2tsEbpAudioInterval
-    , M2tsEbpAudioInterval (..)
-
-    -- * M2tsEbpPlacement
-    , M2tsEbpPlacement (..)
-
-    -- * M2tsEsRateInPes
-    , M2tsEsRateInPes (..)
-
-    -- * M2tsNielsenId3
-    , M2tsNielsenId3 (..)
-
-    -- * M2tsPcrControl
-    , M2tsPcrControl (..)
-
-    -- * M2tsRateMode
-    , M2tsRateMode (..)
-
-    -- * M2tsScte35Source
-    , M2tsScte35Source (..)
-
-    -- * M2tsSegmentationMarkers
-    , M2tsSegmentationMarkers (..)
-
-    -- * M2tsSegmentationStyle
-    , M2tsSegmentationStyle (..)
-
-    -- * M3u8NielsenId3
-    , M3u8NielsenId3 (..)
-
-    -- * M3u8PcrControl
-    , M3u8PcrControl (..)
-
-    -- * M3u8Scte35Source
-    , M3u8Scte35Source (..)
-
-    -- * MovClapAtom
-    , MovClapAtom (..)
-
-    -- * MovCslgAtom
-    , MovCslgAtom (..)
-
-    -- * MovMpeg2FourCCControl
-    , MovMpeg2FourCCControl (..)
-
-    -- * MovPaddingControl
-    , MovPaddingControl (..)
-
-    -- * MovReference
-    , MovReference (..)
-
-    -- * Mp4CslgAtom
-    , Mp4CslgAtom (..)
-
-    -- * Mp4FreeSpaceBox
-    , Mp4FreeSpaceBox (..)
-
-    -- * Mp4MoovPlacement
-    , Mp4MoovPlacement (..)
-
-    -- * Mpeg2AdaptiveQuantization
-    , Mpeg2AdaptiveQuantization (..)
-
-    -- * Mpeg2CodecLevel
-    , Mpeg2CodecLevel (..)
-
-    -- * Mpeg2CodecProfile
-    , Mpeg2CodecProfile (..)
-
-    -- * Mpeg2FramerateControl
-    , Mpeg2FramerateControl (..)
-
-    -- * Mpeg2FramerateConversionAlgorithm
-    , Mpeg2FramerateConversionAlgorithm (..)
-
-    -- * Mpeg2GopSizeUnits
-    , Mpeg2GopSizeUnits (..)
-
-    -- * Mpeg2InterlaceMode
-    , Mpeg2InterlaceMode (..)
-
-    -- * Mpeg2IntraDcPrecision
-    , Mpeg2IntraDcPrecision (..)
-
-    -- * Mpeg2ParControl
-    , Mpeg2ParControl (..)
-
-    -- * Mpeg2QualityTuningLevel
-    , Mpeg2QualityTuningLevel (..)
-
-    -- * Mpeg2RateControlMode
-    , Mpeg2RateControlMode (..)
-
-    -- * Mpeg2SceneChangeDetect
-    , Mpeg2SceneChangeDetect (..)
-
-    -- * Mpeg2SlowPal
-    , Mpeg2SlowPal (..)
-
-    -- * Mpeg2SpatialAdaptiveQuantization
-    , Mpeg2SpatialAdaptiveQuantization (..)
-
-    -- * Mpeg2Syntax
-    , Mpeg2Syntax (..)
-
-    -- * Mpeg2Telecine
-    , Mpeg2Telecine (..)
-
-    -- * Mpeg2TemporalAdaptiveQuantization
-    , Mpeg2TemporalAdaptiveQuantization (..)
-
-    -- * MsSmoothAudioDeduplication
-    , MsSmoothAudioDeduplication (..)
-
-    -- * MsSmoothManifestEncoding
-    , MsSmoothManifestEncoding (..)
-
-    -- * NoiseReducerFilter
-    , NoiseReducerFilter (..)
-
-    -- * Order
-    , Order (..)
-
-    -- * OutputGroupType
-    , OutputGroupType (..)
-
-    -- * OutputSdt
-    , OutputSdt (..)
-
-    -- * PresetListBy
-    , PresetListBy (..)
-
-    -- * ProresCodecProfile
-    , ProresCodecProfile (..)
-
-    -- * ProresFramerateControl
-    , ProresFramerateControl (..)
-
-    -- * ProresFramerateConversionAlgorithm
-    , ProresFramerateConversionAlgorithm (..)
-
-    -- * ProresInterlaceMode
-    , ProresInterlaceMode (..)
-
-    -- * ProresParControl
-    , ProresParControl (..)
-
-    -- * ProresSlowPal
-    , ProresSlowPal (..)
-
-    -- * ProresTelecine
-    , ProresTelecine (..)
-
-    -- * QueueListBy
-    , QueueListBy (..)
-
-    -- * QueueStatus
-    , QueueStatus (..)
-
-    -- * RespondToAfd
-    , RespondToAfd (..)
-
-    -- * ScalingBehavior
-    , ScalingBehavior (..)
-
-    -- * SccDestinationFramerate
-    , SccDestinationFramerate (..)
-
-    -- * TimecodeBurninPosition
-    , TimecodeBurninPosition (..)
-
-    -- * TimecodeSource
-    , TimecodeSource (..)
-
-    -- * TimedMetadata
-    , TimedMetadata (..)
-
-    -- * TtmlStylePassthrough
-    , TtmlStylePassthrough (..)
-
-    -- * Type
-    , Type (..)
-
-    -- * VideoCodec
-    , VideoCodec (..)
-
-    -- * VideoTimecodeInsertion
-    , VideoTimecodeInsertion (..)
-
-    -- * AacSettings
-    , AacSettings
-    , aacSettings
-    , assAudioDescriptionBroadcasterMix
-    , assRawFormat
-    , assCodingMode
-    , assRateControlMode
-    , assSampleRate
-    , assSpecification
-    , assCodecProfile
-    , assBitrate
-    , assVbrQuality
-
-    -- * Ac3Settings
-    , Ac3Settings
-    , ac3Settings
-    , aLfeFilter
-    , aMetadataControl
-    , aBitstreamMode
-    , aCodingMode
-    , aSampleRate
-    , aDynamicRangeCompressionProfile
-    , aBitrate
-    , aDialnorm
-
-    -- * AiffSettings
-    , AiffSettings
-    , aiffSettings
-    , asBitDepth
-    , asChannels
-    , asSampleRate
-
-    -- * AncillarySourceSettings
-    , AncillarySourceSettings
-    , ancillarySourceSettings
-    , assSourceAncillaryChannelNumber
-
-    -- * AudioCodecSettings
-    , AudioCodecSettings
-    , audioCodecSettings
-    , acsAiffSettings
-    , acsCodec
-    , acsAc3Settings
-    , acsMp2Settings
-    , acsWavSettings
-    , acsAacSettings
-    , acsEac3Settings
-
-    -- * AudioDescription
-    , AudioDescription
-    , audioDescription
-    , adAudioSourceName
-    , adLanguageCode
-    , adAudioType
-    , adAudioNormalizationSettings
-    , adLanguageCodeControl
-    , adCodecSettings
-    , adStreamName
-    , adRemixSettings
-    , adAudioTypeControl
-
-    -- * AudioNormalizationSettings
-    , AudioNormalizationSettings
-    , audioNormalizationSettings
-    , ansAlgorithmControl
-    , ansTargetLkfs
-    , ansPeakCalculation
-    , ansCorrectionGateLevel
-    , ansAlgorithm
-    , ansLoudnessLogging
-
-    -- * AudioSelector
-    , AudioSelector
-    , audioSelector
-    , asTracks
-    , asProgramSelection
-    , asLanguageCode
-    , asOffset
-    , asDefaultSelection
-    , asPids
-    , asSelectorType
-    , asExternalAudioFileInput
-    , asRemixSettings
-
-    -- * AudioSelectorGroup
-    , AudioSelectorGroup
-    , audioSelectorGroup
-    , asgAudioSelectorNames
-
-    -- * AvailBlanking
-    , AvailBlanking
-    , availBlanking
-    , abAvailBlankingImage
-
-    -- * BurninDestinationSettings
-    , BurninDestinationSettings
-    , burninDestinationSettings
-    , bdsBackgroundOpacity
-    , bdsFontOpacity
-    , bdsShadowYOffset
-    , bdsFontResolution
-    , bdsYPosition
-    , bdsBackgroundColor
-    , bdsShadowXOffset
-    , bdsFontSize
-    , bdsXPosition
-    , bdsTeletextSpacing
-    , bdsAlignment
-    , bdsShadowOpacity
-    , bdsOutlineColor
-    , bdsOutlineSize
-    , bdsShadowColor
-    , bdsFontColor
-
-    -- * CaptionDescription
-    , CaptionDescription
-    , captionDescription
-    , cdCaptionSelectorName
-    , cdLanguageCode
-    , cdDestinationSettings
-    , cdLanguageDescription
-
-    -- * CaptionDescriptionPreset
-    , CaptionDescriptionPreset
-    , captionDescriptionPreset
-    , cdpLanguageCode
-    , cdpDestinationSettings
-    , cdpLanguageDescription
-
-    -- * CaptionDestinationSettings
-    , CaptionDestinationSettings
-    , captionDestinationSettings
-    , cdsTeletextDestinationSettings
-    , cdsDvbSubDestinationSettings
-    , cdsTtmlDestinationSettings
-    , cdsDestinationType
-    , cdsSccDestinationSettings
-    , cdsBurninDestinationSettings
-
-    -- * CaptionSelector
-    , CaptionSelector
-    , captionSelector
-    , csLanguageCode
-    , csSourceSettings
-
-    -- * CaptionSourceSettings
-    , CaptionSourceSettings
-    , captionSourceSettings
-    , cssTeletextSourceSettings
-    , cssSourceType
-    , cssFileSourceSettings
-    , cssDvbSubSourceSettings
-    , cssAncillarySourceSettings
-    , cssEmbeddedSourceSettings
-
-    -- * ChannelMapping
-    , ChannelMapping
-    , channelMapping
-    , cmOutputChannels
-
-    -- * ColorCorrector
-    , ColorCorrector
-    , colorCorrector
-    , ccSaturation
-    , ccHue
-    , ccColorSpaceConversion
-    , ccHdr10Metadata
-    , ccContrast
-    , ccBrightness
-
-    -- * ContainerSettings
-    , ContainerSettings
-    , containerSettings
-    , csM2tsSettings
-    , csM3u8Settings
-    , csMovSettings
-    , csMp4Settings
-    , csContainer
-    , csF4vSettings
-
-    -- * DashIsoEncryptionSettings
-    , DashIsoEncryptionSettings
-    , dashIsoEncryptionSettings
-    , diesSpekeKeyProvider
-
-    -- * DashIsoGroupSettings
-    , DashIsoGroupSettings
-    , dashIsoGroupSettings
-    , digsFragmentLength
-    , digsSegmentControl
-    , digsDestination
-    , digsHbbtvCompliance
-    , digsMinBufferTime
-    , digsBaseURL
-    , digsEncryption
-    , digsSegmentLength
-
-    -- * Deinterlacer
-    , Deinterlacer
-    , deinterlacer
-    , dControl
-    , dMode
-    , dAlgorithm
-
-    -- * DvbNitSettings
-    , DvbNitSettings
-    , dvbNitSettings
-    , dnsNetworkId
-    , dnsNetworkName
-    , dnsNitInterval
-
-    -- * DvbSdtSettings
-    , DvbSdtSettings
-    , dvbSdtSettings
-    , dssSdtInterval
-    , dssServiceProviderName
-    , dssOutputSdt
-    , dssServiceName
-
-    -- * DvbSubDestinationSettings
-    , DvbSubDestinationSettings
-    , dvbSubDestinationSettings
-    , dsdsBackgroundOpacity
-    , dsdsFontOpacity
-    , dsdsShadowYOffset
-    , dsdsFontResolution
-    , dsdsYPosition
-    , dsdsBackgroundColor
-    , dsdsShadowXOffset
-    , dsdsFontSize
-    , dsdsXPosition
-    , dsdsTeletextSpacing
-    , dsdsAlignment
-    , dsdsShadowOpacity
-    , dsdsOutlineColor
-    , dsdsOutlineSize
-    , dsdsShadowColor
-    , dsdsFontColor
-
-    -- * DvbSubSourceSettings
-    , DvbSubSourceSettings
-    , dvbSubSourceSettings
-    , dsssPid
-
-    -- * DvbTdtSettings
-    , DvbTdtSettings
-    , dvbTdtSettings
-    , dtsTdtInterval
-
-    -- * Eac3Settings
-    , Eac3Settings
-    , eac3Settings
-    , esStereoDownmix
-    , esLoRoCenterMixLevel
-    , esLtRtCenterMixLevel
-    , esLfeFilter
-    , esDynamicRangeCompressionLine
-    , esLtRtSurroundMixLevel
-    , esMetadataControl
-    , esLoRoSurroundMixLevel
-    , esSurroundMode
-    , esAttenuationControl
-    , esPassthroughControl
-    , esBitstreamMode
-    , esLfeControl
-    , esDynamicRangeCompressionRf
-    , esCodingMode
-    , esSampleRate
-    , esDcFilter
-    , esBitrate
-    , esPhaseControl
-    , esSurroundExMode
-    , esDialnorm
-
-    -- * EmbeddedSourceSettings
-    , EmbeddedSourceSettings
-    , embeddedSourceSettings
-    , essConvert608To708
-    , essSource608TrackNumber
-    , essSource608ChannelNumber
-
-    -- * Endpoint
-    , Endpoint
-    , endpoint
-    , eURL
-
-    -- * F4vSettings
-    , F4vSettings
-    , f4vSettings
-    , fsMoovPlacement
-
-    -- * FileGroupSettings
-    , FileGroupSettings
-    , fileGroupSettings
-    , fgsDestination
-
-    -- * FileSourceSettings
-    , FileSourceSettings
-    , fileSourceSettings
-    , fssConvert608To708
-    , fssTimeDelta
-    , fssSourceFile
-
-    -- * FrameCaptureSettings
-    , FrameCaptureSettings
-    , frameCaptureSettings
-    , fcsQuality
-    , fcsFramerateDenominator
-    , fcsMaxCaptures
-    , fcsFramerateNumerator
-
-    -- * H264Settings
-    , H264Settings
-    , h264Settings
-    , hUnregisteredSeiTimecode
-    , hQualityTuningLevel
-    , hTemporalAdaptiveQuantization
-    , hSceneChangeDetect
-    , hHrdBufferInitialFillPercentage
-    , hSlowPal
-    , hParNumerator
-    , hGopSize
-    , hNumberBFramesBetweenReferenceFrames
-    , hGopSizeUnits
-    , hHrdBufferSize
-    , hSlices
-    , hRateControlMode
-    , hNumberReferenceFrames
-    , hTelecine
-    , hMinIInterval
-    , hInterlaceMode
-    , hParControl
-    , hRepeatPps
-    , hFlickerAdaptiveQuantization
-    , hSoftness
-    , hCodecProfile
-    , hBitrate
-    , hFramerateDenominator
-    , hFramerateConversionAlgorithm
-    , hCodecLevel
-    , hEntropyEncoding
-    , hFramerateControl
-    , hAdaptiveQuantization
-    , hFramerateNumerator
-    , hGopBReference
-    , hMaxBitrate
-    , hSyntax
-    , hFieldEncoding
-    , hGopClosedCadence
-    , hParDenominator
-    , hSpatialAdaptiveQuantization
-
-    -- * H265Settings
-    , H265Settings
-    , h265Settings
-    , hsUnregisteredSeiTimecode
-    , hsQualityTuningLevel
-    , hsTemporalAdaptiveQuantization
-    , hsSceneChangeDetect
-    , hsHrdBufferInitialFillPercentage
-    , hsTiles
-    , hsSlowPal
-    , hsTemporalIds
-    , hsParNumerator
-    , hsGopSize
-    , hsNumberBFramesBetweenReferenceFrames
-    , hsGopSizeUnits
-    , hsHrdBufferSize
-    , hsSlices
-    , hsAlternateTransferFunctionSei
-    , hsRateControlMode
-    , hsNumberReferenceFrames
-    , hsTelecine
-    , hsMinIInterval
-    , hsInterlaceMode
-    , hsParControl
-    , hsFlickerAdaptiveQuantization
-    , hsSampleAdaptiveOffsetFilterMode
-    , hsCodecProfile
-    , hsBitrate
-    , hsFramerateDenominator
-    , hsFramerateConversionAlgorithm
-    , hsCodecLevel
-    , hsFramerateControl
-    , hsAdaptiveQuantization
-    , hsFramerateNumerator
-    , hsGopBReference
-    , hsMaxBitrate
-    , hsGopClosedCadence
-    , hsParDenominator
-    , hsSpatialAdaptiveQuantization
-
-    -- * Hdr10Metadata
-    , Hdr10Metadata
-    , hdr10Metadata
-    , hmRedPrimaryX
-    , hmBluePrimaryX
-    , hmMaxFrameAverageLightLevel
-    , hmWhitePointY
-    , hmMaxContentLightLevel
-    , hmWhitePointX
-    , hmBluePrimaryY
-    , hmGreenPrimaryY
-    , hmGreenPrimaryX
-    , hmMinLuminance
-    , hmRedPrimaryY
-    , hmMaxLuminance
-
-    -- * HlsCaptionLanguageMapping
-    , HlsCaptionLanguageMapping
-    , hlsCaptionLanguageMapping
-    , hclmLanguageCode
-    , hclmLanguageDescription
-    , hclmCaptionChannel
-
-    -- * HlsEncryptionSettings
-    , HlsEncryptionSettings
-    , hlsEncryptionSettings
-    , hesEncryptionMethod
-    , hesConstantInitializationVector
-    , hesType
-    , hesStaticKeyProvider
-    , hesSpekeKeyProvider
-    , hesInitializationVectorInManifest
-
-    -- * HlsGroupSettings
-    , HlsGroupSettings
-    , hlsGroupSettings
-    , hgsDirectoryStructure
-    , hgsSegmentControl
-    , hgsDestination
-    , hgsTimedMetadataId3Period
-    , hgsMinSegmentLength
-    , hgsProgramDateTime
-    , hgsProgramDateTimePeriod
-    , hgsCodecSpecification
-    , hgsCaptionLanguageMappings
-    , hgsBaseURL
-    , hgsAdMarkers
-    , hgsEncryption
-    , hgsSegmentLength
-    , hgsTimedMetadataId3Frame
-    , hgsOutputSelection
-    , hgsCaptionLanguageSetting
-    , hgsSegmentsPerSubdirectory
-    , hgsManifestDurationFormat
-    , hgsClientCache
-    , hgsTimestampDeltaMilliseconds
-    , hgsStreamInfResolution
-    , hgsManifestCompression
-
-    -- * HlsSettings
-    , HlsSettings
-    , hlsSettings
-    , hsAudioRenditionSets
-    , hsIFrameOnlyManifest
-    , hsAudioGroupId
-    , hsSegmentModifier
-    , hsAudioTrackType
-
-    -- * Id3Insertion
-    , Id3Insertion
-    , id3Insertion
-    , iiId3
-    , iiTimecode
-
-    -- * ImageInserter
-    , ImageInserter
-    , imageInserter
-    , iiInsertableImages
-
-    -- * Input
-    , Input
-    , input
-    , iVideoSelector
-    , iProgramNumber
-    , iAudioSelectorGroups
-    , iTimecodeSource
-    , iAudioSelectors
-    , iDeblockFilter
-    , iInputClippings
-    , iDenoiseFilter
-    , iFilterStrength
-    , iPsiControl
-    , iCaptionSelectors
-    , iFileInput
-    , iFilterEnable
-
-    -- * InputClipping
-    , InputClipping
-    , inputClipping
-    , icEndTimecode
-    , icStartTimecode
-
-    -- * InputTemplate
-    , InputTemplate
-    , inputTemplate
-    , itVideoSelector
-    , itProgramNumber
-    , itAudioSelectorGroups
-    , itTimecodeSource
-    , itAudioSelectors
-    , itDeblockFilter
-    , itInputClippings
-    , itDenoiseFilter
-    , itFilterStrength
-    , itPsiControl
-    , itCaptionSelectors
-    , itFilterEnable
-
-    -- * InsertableImage
-    , InsertableImage
-    , insertableImage
-    , iiImageX
-    , iiHeight
-    , iiStartTime
-    , iiFadeOut
-    , iiWidth
-    , iiOpacity
-    , iiLayer
-    , iiDuration
-    , iiImageY
-    , iiImageInserterInput
-    , iiFadeIn
-
-    -- * Job
-    , Job
-    , job
-    , jStatus
-    , jJobTemplate
-    , jSettings
-    , jARN
-    , jCreatedAt
-    , jQueue
-    , jUserMetadata
-    , jRole
-    , jOutputGroupDetails
-    , jErrorCode
-    , jId
-    , jTiming
-    , jErrorMessage
-
-    -- * JobSettings
-    , JobSettings
-    , jobSettings
-    , jsInputs
-    , jsTimedMetadataInsertion
-    , jsNielsenConfiguration
-    , jsAvailBlanking
-    , jsTimecodeConfig
-    , jsOutputGroups
-    , jsAdAvailOffset
-
-    -- * JobTemplate
-    , JobTemplate
-    , jobTemplate
-    , jtLastUpdated
-    , jtSettings
-    , jtARN
-    , jtCreatedAt
-    , jtCategory
-    , jtQueue
-    , jtName
-    , jtType
-    , jtDescription
-
-    -- * JobTemplateSettings
-    , JobTemplateSettings
-    , jobTemplateSettings
-    , jtsInputs
-    , jtsTimedMetadataInsertion
-    , jtsNielsenConfiguration
-    , jtsAvailBlanking
-    , jtsTimecodeConfig
-    , jtsOutputGroups
-    , jtsAdAvailOffset
-
-    -- * M2tsSettings
-    , M2tsSettings
-    , m2tsSettings
-    , mPmtPid
-    , mVideoPid
-    , mBufferModel
-    , mProgramNumber
-    , mScte35Pid
-    , mMinEbpInterval
-    , mTransportStreamId
-    , mMaxPcrInterval
-    , mFragmentTime
-    , mPrivateMetadataPid
-    , mPmtInterval
-    , mDvbSdtSettings
-    , mNullPacketBitrate
-    , mAudioBufferModel
-    , mTimedMetadataPid
-    , mAudioFramesPerPes
-    , mPcrPid
-    , mSegmentationMarkers
-    , mDvbSubPids
-    , mScte35Source
-    , mPatInterval
-    , mEsRateInPes
-    , mBitrate
-    , mAudioPids
-    , mDvbTeletextPid
-    , mNielsenId3
-    , mSegmentationTime
-    , mEbpAudioInterval
-    , mDvbNitSettings
-    , mPcrControl
-    , mEbpPlacement
-    , mRateMode
-    , mSegmentationStyle
-    , mDvbTdtSettings
-
-    -- * M3u8Settings
-    , M3u8Settings
-    , m3u8Settings
-    , msPmtPid
-    , msVideoPid
-    , msProgramNumber
-    , msScte35Pid
-    , msTransportStreamId
-    , msPrivateMetadataPid
-    , msPmtInterval
-    , msTimedMetadataPid
-    , msAudioFramesPerPes
-    , msPcrPid
-    , msTimedMetadata
-    , msScte35Source
-    , msPatInterval
-    , msAudioPids
-    , msNielsenId3
-    , msPcrControl
-
-    -- * MovSettings
-    , MovSettings
-    , movSettings
-    , msReference
-    , msCslgAtom
-    , msMpeg2FourCCControl
-    , msPaddingControl
-    , msClapAtom
-
-    -- * Mp2Settings
-    , Mp2Settings
-    , mp2Settings
-    , mssChannels
-    , mssSampleRate
-    , mssBitrate
-
-    -- * Mp4Settings
-    , Mp4Settings
-    , mp4Settings
-    , mMoovPlacement
-    , mFreeSpaceBox
-    , mMp4MajorBrand
-    , mCslgAtom
-
-    -- * Mpeg2Settings
-    , Mpeg2Settings
-    , mpeg2Settings
-    , msQualityTuningLevel
-    , msTemporalAdaptiveQuantization
-    , msSceneChangeDetect
-    , msHrdBufferInitialFillPercentage
-    , msSlowPal
-    , msParNumerator
-    , msGopSize
-    , msNumberBFramesBetweenReferenceFrames
-    , msGopSizeUnits
-    , msHrdBufferSize
-    , msRateControlMode
-    , msTelecine
-    , msIntraDcPrecision
-    , msMinIInterval
-    , msInterlaceMode
-    , msParControl
-    , msSoftness
-    , msCodecProfile
-    , msBitrate
-    , msFramerateDenominator
-    , msFramerateConversionAlgorithm
-    , msCodecLevel
-    , msFramerateControl
-    , msAdaptiveQuantization
-    , msFramerateNumerator
-    , msMaxBitrate
-    , msSyntax
-    , msGopClosedCadence
-    , msParDenominator
-    , msSpatialAdaptiveQuantization
-
-    -- * MsSmoothEncryptionSettings
-    , MsSmoothEncryptionSettings
-    , msSmoothEncryptionSettings
-    , msesSpekeKeyProvider
-
-    -- * MsSmoothGroupSettings
-    , MsSmoothGroupSettings
-    , msSmoothGroupSettings
-    , msgsFragmentLength
-    , msgsManifestEncoding
-    , msgsDestination
-    , msgsAudioDeduplication
-    , msgsEncryption
-
-    -- * NielsenConfiguration
-    , NielsenConfiguration
-    , nielsenConfiguration
-    , ncBreakoutCode
-    , ncDistributorId
-
-    -- * NoiseReducer
-    , NoiseReducer
-    , noiseReducer
-    , nrSpatialFilterSettings
-    , nrFilterSettings
-    , nrFilter
-
-    -- * NoiseReducerFilterSettings
-    , NoiseReducerFilterSettings
-    , noiseReducerFilterSettings
-    , nrfsStrength
-
-    -- * NoiseReducerSpatialFilterSettings
-    , NoiseReducerSpatialFilterSettings
-    , noiseReducerSpatialFilterSettings
-    , nrsfsStrength
-    , nrsfsPostFilterSharpenStrength
-    , nrsfsSpeed
-
-    -- * Output
-    , Output
-    , output
-    , oCaptionDescriptions
-    , oExtension
-    , oVideoDescription
-    , oContainerSettings
-    , oOutputSettings
-    , oPreset
-    , oNameModifier
-    , oAudioDescriptions
-
-    -- * OutputChannelMapping
-    , OutputChannelMapping
-    , outputChannelMapping
-    , ocmInputChannels
-
-    -- * OutputDetail
-    , OutputDetail
-    , outputDetail
-    , odVideoDetails
-    , odDurationInMs
-
-    -- * OutputGroup
-    , OutputGroup
-    , outputGroup
-    , ogOutputGroupSettings
-    , ogOutputs
-    , ogCustomName
-    , ogName
-
-    -- * OutputGroupDetail
-    , OutputGroupDetail
-    , outputGroupDetail
-    , ogdOutputDetails
-
-    -- * OutputGroupSettings
-    , OutputGroupSettings
-    , outputGroupSettings
-    , ogsFileGroupSettings
-    , ogsMsSmoothGroupSettings
-    , ogsHlsGroupSettings
-    , ogsType
-    , ogsDashIsoGroupSettings
-
-    -- * OutputSettings
-    , OutputSettings
-    , outputSettings
-    , osHlsSettings
-
-    -- * Preset
-    , Preset
-    , preset
-    , pLastUpdated
-    , pSettings
-    , pARN
-    , pCreatedAt
-    , pCategory
-    , pName
-    , pType
-    , pDescription
-
-    -- * PresetSettings
-    , PresetSettings
-    , presetSettings
-    , psCaptionDescriptions
-    , psVideoDescription
-    , psContainerSettings
-    , psAudioDescriptions
-
-    -- * ProresSettings
-    , ProresSettings
-    , proresSettings
-    , psSlowPal
-    , psParNumerator
-    , psTelecine
-    , psInterlaceMode
-    , psParControl
-    , psCodecProfile
-    , psFramerateDenominator
-    , psFramerateConversionAlgorithm
-    , psFramerateControl
-    , psFramerateNumerator
-    , psParDenominator
-
-    -- * Queue
-    , Queue
-    , queue
-    , qStatus
-    , qLastUpdated
-    , qARN
-    , qCreatedAt
-    , qName
-    , qType
-    , qDescription
-
-    -- * Rectangle
-    , Rectangle
-    , rectangle
-    , rHeight
-    , rWidth
-    , rX
-    , rY
-
-    -- * RemixSettings
-    , RemixSettings
-    , remixSettings
-    , rsChannelMapping
-    , rsChannelsIn
-    , rsChannelsOut
-
-    -- * SccDestinationSettings
-    , SccDestinationSettings
-    , sccDestinationSettings
-    , sdsFramerate
-
-    -- * SpekeKeyProvider
-    , SpekeKeyProvider
-    , spekeKeyProvider
-    , skpResourceId
-    , skpURL
-    , skpSystemIds
-
-    -- * StaticKeyProvider
-    , StaticKeyProvider
-    , staticKeyProvider
-    , sStaticKeyValue
-    , sURL
-    , sKeyFormat
-    , sKeyFormatVersions
-
-    -- * TeletextDestinationSettings
-    , TeletextDestinationSettings
-    , teletextDestinationSettings
-    , tdsPageNumber
-
-    -- * TeletextSourceSettings
-    , TeletextSourceSettings
-    , teletextSourceSettings
-    , tssPageNumber
-
-    -- * TimecodeBurnin
-    , TimecodeBurnin
-    , timecodeBurnin
-    , tbPrefix
-    , tbFontSize
-    , tbPosition
-
-    -- * TimecodeConfig
-    , TimecodeConfig
-    , timecodeConfig
-    , tcStart
-    , tcTimestampOffset
-    , tcAnchor
-    , tcSource
-
-    -- * TimedMetadataInsertion
-    , TimedMetadataInsertion
-    , timedMetadataInsertion
-    , tmiId3Insertions
-
-    -- * Timing
-    , Timing
-    , timing
-    , tStartTime
-    , tFinishTime
-    , tSubmitTime
-
-    -- * TtmlDestinationSettings
-    , TtmlDestinationSettings
-    , ttmlDestinationSettings
-    , tdsStylePassthrough
-
-    -- * VideoCodecSettings
-    , VideoCodecSettings
-    , videoCodecSettings
-    , vcsFrameCaptureSettings
-    , vcsCodec
-    , vcsH265Settings
-    , vcsProresSettings
-    , vcsH264Settings
-    , vcsMpeg2Settings
-
-    -- * VideoDescription
-    , VideoDescription
-    , videoDescription
-    , vdTimecodeInsertion
-    , vdHeight
-    , vdAfdSignaling
-    , vdSharpness
-    , vdCrop
-    , vdWidth
-    , vdScalingBehavior
-    , vdRespondToAfd
-    , vdDropFrameTimecode
-    , vdAntiAlias
-    , vdFixedAfd
-    , vdColorMetadata
-    , vdCodecSettings
-    , vdVideoPreprocessors
-    , vdPosition
-
-    -- * VideoDetail
-    , VideoDetail
-    , videoDetail
-    , vdHeightInPx
-    , vdWidthInPx
-
-    -- * VideoPreprocessor
-    , VideoPreprocessor
-    , videoPreprocessor
-    , vpTimecodeBurnin
-    , vpColorCorrector
-    , vpDeinterlacer
-    , vpNoiseReducer
-    , vpImageInserter
-
-    -- * VideoSelector
-    , VideoSelector
-    , videoSelector
-    , vsProgramNumber
-    , vsColorSpaceUsage
-    , vsHdr10Metadata
-    , vsPid
-    , vsColorSpace
-
-    -- * WavSettings
-    , WavSettings
-    , wavSettings
-    , wsBitDepth
-    , wsChannels
-    , wsSampleRate
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.MediaConvert.Types.Sum
-import Network.AWS.Prelude
-import Network.AWS.Sign.V4
-
--- | API version @2017-08-29@ of the Amazon Elemental MediaConvert SDK configuration.
-mediaConvert :: Service
-mediaConvert =
-  Service
-    { _svcAbbrev = "MediaConvert"
-    , _svcSigner = v4
-    , _svcPrefix = "mediaconvert"
-    , _svcVersion = "2017-08-29"
-    , _svcEndpoint = defaultEndpoint mediaConvert
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "MediaConvert"
-    , _svcRetry = retry
-    }
-  where
-    retry =
-      Exponential
-        { _retryBase = 5.0e-2
-        , _retryGrowth = 2
-        , _retryAttempts = 5
-        , _retryCheck = check
-        }
-    check e
-      | has (hasCode "ThrottledException" . hasStatus 400) e =
-        Just "throttled_exception"
-      | has (hasStatus 429) e = Just "too_many_requests"
-      | has (hasCode "ThrottlingException" . hasStatus 400) e =
-        Just "throttling_exception"
-      | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
-      | has (hasStatus 504) e = Just "gateway_timeout"
-      | has (hasCode "RequestThrottledException" . hasStatus 400) e =
-        Just "request_throttled_exception"
-      | has (hasStatus 502) e = Just "bad_gateway"
-      | has (hasStatus 503) e = Just "service_unavailable"
-      | has (hasStatus 500) e = Just "general_server_error"
-      | has (hasStatus 509) e = Just "limit_exceeded"
-      | otherwise = Nothing
-
-
--- | The service could not complete your request because there is a conflict with the current state of the resource.
-_ConflictException :: AsError a => Getting (First ServiceError) a ServiceError
-_ConflictException =
-  _MatchServiceError mediaConvert "ConflictException" . hasStatus 409
-
-
--- | You don't have permissions for this action with the credentials you sent.
-_ForbiddenException :: AsError a => Getting (First ServiceError) a ServiceError
-_ForbiddenException =
-  _MatchServiceError mediaConvert "ForbiddenException" . hasStatus 403
-
-
--- | The resource you requested does not exist.
-_NotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
-_NotFoundException =
-  _MatchServiceError mediaConvert "NotFoundException" . hasStatus 404
-
-
--- | Too many requests have been sent in too short of a time. The service limits the rate at which it will accept requests.
-_TooManyRequestsException :: AsError a => Getting (First ServiceError) a ServiceError
-_TooManyRequestsException =
-  _MatchServiceError mediaConvert "TooManyRequestsException" . hasStatus 429
-
-
--- | The service encountered an unexpected condition and cannot fulfill your request.
-_InternalServerErrorException :: AsError a => Getting (First ServiceError) a ServiceError
-_InternalServerErrorException =
-  _MatchServiceError mediaConvert "InternalServerErrorException" . hasStatus 500
-
-
--- | The service can't process your request because of a problem in the request. Please check your request form and syntax.
-_BadRequestException :: AsError a => Getting (First ServiceError) a ServiceError
-_BadRequestException =
-  _MatchServiceError mediaConvert "BadRequestException" . hasStatus 400
-
diff --git a/gen/Network/AWS/MediaConvert/Types/Product.hs b/gen/Network/AWS/MediaConvert/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/Types/Product.hs
+++ /dev/null
@@ -1,8766 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.Types.Product
--- Copyright   : (c) 2013-2018 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 Network.AWS.MediaConvert.Types.Product where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types.Sum
-import Network.AWS.Prelude
-
--- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings) to the value AAC.
---
--- /See:/ 'aacSettings' smart constructor.
-data AacSettings = AacSettings'
-  { _assAudioDescriptionBroadcasterMix :: !(Maybe AacAudioDescriptionBroadcasterMix)
-  , _assRawFormat :: !(Maybe AacRawFormat)
-  , _assCodingMode :: !(Maybe AacCodingMode)
-  , _assRateControlMode :: !(Maybe AacRateControlMode)
-  , _assSampleRate :: !(Maybe Int)
-  , _assSpecification :: !(Maybe AacSpecification)
-  , _assCodecProfile :: !(Maybe AacCodecProfile)
-  , _assBitrate :: !(Maybe Int)
-  , _assVbrQuality :: !(Maybe AacVbrQuality)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AacSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'assAudioDescriptionBroadcasterMix' - Undocumented member.
---
--- * 'assRawFormat' - Undocumented member.
---
--- * 'assCodingMode' - Undocumented member.
---
--- * 'assRateControlMode' - Undocumented member.
---
--- * 'assSampleRate' - Sample rate in Hz. Valid values depend on rate control mode and profile.
---
--- * 'assSpecification' - Undocumented member.
---
--- * 'assCodecProfile' - Undocumented member.
---
--- * 'assBitrate' - Average bitrate in bits/second. Valid values depend on rate control mode and profile.
---
--- * 'assVbrQuality' - Undocumented member.
-aacSettings
-    :: AacSettings
-aacSettings =
-  AacSettings'
-    { _assAudioDescriptionBroadcasterMix = Nothing
-    , _assRawFormat = Nothing
-    , _assCodingMode = Nothing
-    , _assRateControlMode = Nothing
-    , _assSampleRate = Nothing
-    , _assSpecification = Nothing
-    , _assCodecProfile = Nothing
-    , _assBitrate = Nothing
-    , _assVbrQuality = Nothing
-    }
-
-
--- | Undocumented member.
-assAudioDescriptionBroadcasterMix :: Lens' AacSettings (Maybe AacAudioDescriptionBroadcasterMix)
-assAudioDescriptionBroadcasterMix = lens _assAudioDescriptionBroadcasterMix (\ s a -> s{_assAudioDescriptionBroadcasterMix = a})
-
--- | Undocumented member.
-assRawFormat :: Lens' AacSettings (Maybe AacRawFormat)
-assRawFormat = lens _assRawFormat (\ s a -> s{_assRawFormat = a})
-
--- | Undocumented member.
-assCodingMode :: Lens' AacSettings (Maybe AacCodingMode)
-assCodingMode = lens _assCodingMode (\ s a -> s{_assCodingMode = a})
-
--- | Undocumented member.
-assRateControlMode :: Lens' AacSettings (Maybe AacRateControlMode)
-assRateControlMode = lens _assRateControlMode (\ s a -> s{_assRateControlMode = a})
-
--- | Sample rate in Hz. Valid values depend on rate control mode and profile.
-assSampleRate :: Lens' AacSettings (Maybe Int)
-assSampleRate = lens _assSampleRate (\ s a -> s{_assSampleRate = a})
-
--- | Undocumented member.
-assSpecification :: Lens' AacSettings (Maybe AacSpecification)
-assSpecification = lens _assSpecification (\ s a -> s{_assSpecification = a})
-
--- | Undocumented member.
-assCodecProfile :: Lens' AacSettings (Maybe AacCodecProfile)
-assCodecProfile = lens _assCodecProfile (\ s a -> s{_assCodecProfile = a})
-
--- | Average bitrate in bits/second. Valid values depend on rate control mode and profile.
-assBitrate :: Lens' AacSettings (Maybe Int)
-assBitrate = lens _assBitrate (\ s a -> s{_assBitrate = a})
-
--- | Undocumented member.
-assVbrQuality :: Lens' AacSettings (Maybe AacVbrQuality)
-assVbrQuality = lens _assVbrQuality (\ s a -> s{_assVbrQuality = a})
-
-instance FromJSON AacSettings where
-        parseJSON
-          = withObject "AacSettings"
-              (\ x ->
-                 AacSettings' <$>
-                   (x .:? "audioDescriptionBroadcasterMix") <*>
-                     (x .:? "rawFormat")
-                     <*> (x .:? "codingMode")
-                     <*> (x .:? "rateControlMode")
-                     <*> (x .:? "sampleRate")
-                     <*> (x .:? "specification")
-                     <*> (x .:? "codecProfile")
-                     <*> (x .:? "bitrate")
-                     <*> (x .:? "vbrQuality"))
-
-instance Hashable AacSettings where
-
-instance NFData AacSettings where
-
-instance ToJSON AacSettings where
-        toJSON AacSettings'{..}
-          = object
-              (catMaybes
-                 [("audioDescriptionBroadcasterMix" .=) <$>
-                    _assAudioDescriptionBroadcasterMix,
-                  ("rawFormat" .=) <$> _assRawFormat,
-                  ("codingMode" .=) <$> _assCodingMode,
-                  ("rateControlMode" .=) <$> _assRateControlMode,
-                  ("sampleRate" .=) <$> _assSampleRate,
-                  ("specification" .=) <$> _assSpecification,
-                  ("codecProfile" .=) <$> _assCodecProfile,
-                  ("bitrate" .=) <$> _assBitrate,
-                  ("vbrQuality" .=) <$> _assVbrQuality])
-
--- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings) to the value AC3.
---
--- /See:/ 'ac3Settings' smart constructor.
-data Ac3Settings = Ac3Settings'
-  { _aLfeFilter :: !(Maybe Ac3LfeFilter)
-  , _aMetadataControl :: !(Maybe Ac3MetadataControl)
-  , _aBitstreamMode :: !(Maybe Ac3BitstreamMode)
-  , _aCodingMode :: !(Maybe Ac3CodingMode)
-  , _aSampleRate :: !(Maybe Int)
-  , _aDynamicRangeCompressionProfile :: !(Maybe Ac3DynamicRangeCompressionProfile)
-  , _aBitrate :: !(Maybe Int)
-  , _aDialnorm :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Ac3Settings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aLfeFilter' - Undocumented member.
---
--- * 'aMetadataControl' - Undocumented member.
---
--- * 'aBitstreamMode' - Undocumented member.
---
--- * 'aCodingMode' - Undocumented member.
---
--- * 'aSampleRate' - Sample rate in hz. Sample rate is always 48000.
---
--- * 'aDynamicRangeCompressionProfile' - Undocumented member.
---
--- * 'aBitrate' - Average bitrate in bits/second. Valid bitrates depend on the coding mode.
---
--- * 'aDialnorm' - Sets the dialnorm for the output. If blank and input audio is Dolby Digital, dialnorm will be passed through.
-ac3Settings
-    :: Ac3Settings
-ac3Settings =
-  Ac3Settings'
-    { _aLfeFilter = Nothing
-    , _aMetadataControl = Nothing
-    , _aBitstreamMode = Nothing
-    , _aCodingMode = Nothing
-    , _aSampleRate = Nothing
-    , _aDynamicRangeCompressionProfile = Nothing
-    , _aBitrate = Nothing
-    , _aDialnorm = Nothing
-    }
-
-
--- | Undocumented member.
-aLfeFilter :: Lens' Ac3Settings (Maybe Ac3LfeFilter)
-aLfeFilter = lens _aLfeFilter (\ s a -> s{_aLfeFilter = a})
-
--- | Undocumented member.
-aMetadataControl :: Lens' Ac3Settings (Maybe Ac3MetadataControl)
-aMetadataControl = lens _aMetadataControl (\ s a -> s{_aMetadataControl = a})
-
--- | Undocumented member.
-aBitstreamMode :: Lens' Ac3Settings (Maybe Ac3BitstreamMode)
-aBitstreamMode = lens _aBitstreamMode (\ s a -> s{_aBitstreamMode = a})
-
--- | Undocumented member.
-aCodingMode :: Lens' Ac3Settings (Maybe Ac3CodingMode)
-aCodingMode = lens _aCodingMode (\ s a -> s{_aCodingMode = a})
-
--- | Sample rate in hz. Sample rate is always 48000.
-aSampleRate :: Lens' Ac3Settings (Maybe Int)
-aSampleRate = lens _aSampleRate (\ s a -> s{_aSampleRate = a})
-
--- | Undocumented member.
-aDynamicRangeCompressionProfile :: Lens' Ac3Settings (Maybe Ac3DynamicRangeCompressionProfile)
-aDynamicRangeCompressionProfile = lens _aDynamicRangeCompressionProfile (\ s a -> s{_aDynamicRangeCompressionProfile = a})
-
--- | Average bitrate in bits/second. Valid bitrates depend on the coding mode.
-aBitrate :: Lens' Ac3Settings (Maybe Int)
-aBitrate = lens _aBitrate (\ s a -> s{_aBitrate = a})
-
--- | Sets the dialnorm for the output. If blank and input audio is Dolby Digital, dialnorm will be passed through.
-aDialnorm :: Lens' Ac3Settings (Maybe Int)
-aDialnorm = lens _aDialnorm (\ s a -> s{_aDialnorm = a})
-
-instance FromJSON Ac3Settings where
-        parseJSON
-          = withObject "Ac3Settings"
-              (\ x ->
-                 Ac3Settings' <$>
-                   (x .:? "lfeFilter") <*> (x .:? "metadataControl") <*>
-                     (x .:? "bitstreamMode")
-                     <*> (x .:? "codingMode")
-                     <*> (x .:? "sampleRate")
-                     <*> (x .:? "dynamicRangeCompressionProfile")
-                     <*> (x .:? "bitrate")
-                     <*> (x .:? "dialnorm"))
-
-instance Hashable Ac3Settings where
-
-instance NFData Ac3Settings where
-
-instance ToJSON Ac3Settings where
-        toJSON Ac3Settings'{..}
-          = object
-              (catMaybes
-                 [("lfeFilter" .=) <$> _aLfeFilter,
-                  ("metadataControl" .=) <$> _aMetadataControl,
-                  ("bitstreamMode" .=) <$> _aBitstreamMode,
-                  ("codingMode" .=) <$> _aCodingMode,
-                  ("sampleRate" .=) <$> _aSampleRate,
-                  ("dynamicRangeCompressionProfile" .=) <$>
-                    _aDynamicRangeCompressionProfile,
-                  ("bitrate" .=) <$> _aBitrate,
-                  ("dialnorm" .=) <$> _aDialnorm])
-
--- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings) to the value AIFF.
---
--- /See:/ 'aiffSettings' smart constructor.
-data AiffSettings = AiffSettings'
-  { _asBitDepth   :: !(Maybe Int)
-  , _asChannels   :: !(Maybe Int)
-  , _asSampleRate :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AiffSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asBitDepth' - Specify Bit depth (BitDepth), in bits per sample, to choose the encoding quality for this audio track.
---
--- * 'asChannels' - Set Channels to specify the number of channels in this output audio track. Choosing Mono in the console will give you 1 output channel; choosing Stereo will give you 2. In the API, valid values are 1 and 2.
---
--- * 'asSampleRate' - Sample rate in hz.
-aiffSettings
-    :: AiffSettings
-aiffSettings =
-  AiffSettings'
-    {_asBitDepth = Nothing, _asChannels = Nothing, _asSampleRate = Nothing}
-
-
--- | Specify Bit depth (BitDepth), in bits per sample, to choose the encoding quality for this audio track.
-asBitDepth :: Lens' AiffSettings (Maybe Int)
-asBitDepth = lens _asBitDepth (\ s a -> s{_asBitDepth = a})
-
--- | Set Channels to specify the number of channels in this output audio track. Choosing Mono in the console will give you 1 output channel; choosing Stereo will give you 2. In the API, valid values are 1 and 2.
-asChannels :: Lens' AiffSettings (Maybe Int)
-asChannels = lens _asChannels (\ s a -> s{_asChannels = a})
-
--- | Sample rate in hz.
-asSampleRate :: Lens' AiffSettings (Maybe Int)
-asSampleRate = lens _asSampleRate (\ s a -> s{_asSampleRate = a})
-
-instance FromJSON AiffSettings where
-        parseJSON
-          = withObject "AiffSettings"
-              (\ x ->
-                 AiffSettings' <$>
-                   (x .:? "bitDepth") <*> (x .:? "channels") <*>
-                     (x .:? "sampleRate"))
-
-instance Hashable AiffSettings where
-
-instance NFData AiffSettings where
-
-instance ToJSON AiffSettings where
-        toJSON AiffSettings'{..}
-          = object
-              (catMaybes
-                 [("bitDepth" .=) <$> _asBitDepth,
-                  ("channels" .=) <$> _asChannels,
-                  ("sampleRate" .=) <$> _asSampleRate])
-
--- | Settings for ancillary captions source.
---
--- /See:/ 'ancillarySourceSettings' smart constructor.
-newtype AncillarySourceSettings = AncillarySourceSettings'
-  { _assSourceAncillaryChannelNumber :: Maybe Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AncillarySourceSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'assSourceAncillaryChannelNumber' - Specifies the 608 channel number in the ancillary data track from which to extract captions. Unused for passthrough.
-ancillarySourceSettings
-    :: AncillarySourceSettings
-ancillarySourceSettings =
-  AncillarySourceSettings' {_assSourceAncillaryChannelNumber = Nothing}
-
-
--- | Specifies the 608 channel number in the ancillary data track from which to extract captions. Unused for passthrough.
-assSourceAncillaryChannelNumber :: Lens' AncillarySourceSettings (Maybe Int)
-assSourceAncillaryChannelNumber = lens _assSourceAncillaryChannelNumber (\ s a -> s{_assSourceAncillaryChannelNumber = a})
-
-instance FromJSON AncillarySourceSettings where
-        parseJSON
-          = withObject "AncillarySourceSettings"
-              (\ x ->
-                 AncillarySourceSettings' <$>
-                   (x .:? "sourceAncillaryChannelNumber"))
-
-instance Hashable AncillarySourceSettings where
-
-instance NFData AncillarySourceSettings where
-
-instance ToJSON AncillarySourceSettings where
-        toJSON AncillarySourceSettings'{..}
-          = object
-              (catMaybes
-                 [("sourceAncillaryChannelNumber" .=) <$>
-                    _assSourceAncillaryChannelNumber])
-
--- | Audio codec settings (CodecSettings) under (AudioDescriptions) contains the group of settings related to audio encoding. The settings in this group vary depending on the value you choose for Audio codec (Codec). For each codec enum you choose, define the corresponding settings object. The following lists the codec enum, settings object pairs. * AAC, AacSettings * MP2, Mp2Settings * WAV, WavSettings * AIFF, AiffSettings * AC3, Ac3Settings * EAC3, Eac3Settings
---
--- /See:/ 'audioCodecSettings' smart constructor.
-data AudioCodecSettings = AudioCodecSettings'
-  { _acsAiffSettings :: !(Maybe AiffSettings)
-  , _acsCodec        :: !(Maybe AudioCodec)
-  , _acsAc3Settings  :: !(Maybe Ac3Settings)
-  , _acsMp2Settings  :: !(Maybe Mp2Settings)
-  , _acsWavSettings  :: !(Maybe WavSettings)
-  , _acsAacSettings  :: !(Maybe AacSettings)
-  , _acsEac3Settings :: !(Maybe Eac3Settings)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AudioCodecSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acsAiffSettings' - Undocumented member.
---
--- * 'acsCodec' - Undocumented member.
---
--- * 'acsAc3Settings' - Undocumented member.
---
--- * 'acsMp2Settings' - Undocumented member.
---
--- * 'acsWavSettings' - Undocumented member.
---
--- * 'acsAacSettings' - Undocumented member.
---
--- * 'acsEac3Settings' - Undocumented member.
-audioCodecSettings
-    :: AudioCodecSettings
-audioCodecSettings =
-  AudioCodecSettings'
-    { _acsAiffSettings = Nothing
-    , _acsCodec = Nothing
-    , _acsAc3Settings = Nothing
-    , _acsMp2Settings = Nothing
-    , _acsWavSettings = Nothing
-    , _acsAacSettings = Nothing
-    , _acsEac3Settings = Nothing
-    }
-
-
--- | Undocumented member.
-acsAiffSettings :: Lens' AudioCodecSettings (Maybe AiffSettings)
-acsAiffSettings = lens _acsAiffSettings (\ s a -> s{_acsAiffSettings = a})
-
--- | Undocumented member.
-acsCodec :: Lens' AudioCodecSettings (Maybe AudioCodec)
-acsCodec = lens _acsCodec (\ s a -> s{_acsCodec = a})
-
--- | Undocumented member.
-acsAc3Settings :: Lens' AudioCodecSettings (Maybe Ac3Settings)
-acsAc3Settings = lens _acsAc3Settings (\ s a -> s{_acsAc3Settings = a})
-
--- | Undocumented member.
-acsMp2Settings :: Lens' AudioCodecSettings (Maybe Mp2Settings)
-acsMp2Settings = lens _acsMp2Settings (\ s a -> s{_acsMp2Settings = a})
-
--- | Undocumented member.
-acsWavSettings :: Lens' AudioCodecSettings (Maybe WavSettings)
-acsWavSettings = lens _acsWavSettings (\ s a -> s{_acsWavSettings = a})
-
--- | Undocumented member.
-acsAacSettings :: Lens' AudioCodecSettings (Maybe AacSettings)
-acsAacSettings = lens _acsAacSettings (\ s a -> s{_acsAacSettings = a})
-
--- | Undocumented member.
-acsEac3Settings :: Lens' AudioCodecSettings (Maybe Eac3Settings)
-acsEac3Settings = lens _acsEac3Settings (\ s a -> s{_acsEac3Settings = a})
-
-instance FromJSON AudioCodecSettings where
-        parseJSON
-          = withObject "AudioCodecSettings"
-              (\ x ->
-                 AudioCodecSettings' <$>
-                   (x .:? "aiffSettings") <*> (x .:? "codec") <*>
-                     (x .:? "ac3Settings")
-                     <*> (x .:? "mp2Settings")
-                     <*> (x .:? "wavSettings")
-                     <*> (x .:? "aacSettings")
-                     <*> (x .:? "eac3Settings"))
-
-instance Hashable AudioCodecSettings where
-
-instance NFData AudioCodecSettings where
-
-instance ToJSON AudioCodecSettings where
-        toJSON AudioCodecSettings'{..}
-          = object
-              (catMaybes
-                 [("aiffSettings" .=) <$> _acsAiffSettings,
-                  ("codec" .=) <$> _acsCodec,
-                  ("ac3Settings" .=) <$> _acsAc3Settings,
-                  ("mp2Settings" .=) <$> _acsMp2Settings,
-                  ("wavSettings" .=) <$> _acsWavSettings,
-                  ("aacSettings" .=) <$> _acsAacSettings,
-                  ("eac3Settings" .=) <$> _acsEac3Settings])
-
--- | Description of audio output
---
--- /See:/ 'audioDescription' smart constructor.
-data AudioDescription = AudioDescription'
-  { _adAudioSourceName            :: !(Maybe Text)
-  , _adLanguageCode               :: !(Maybe LanguageCode)
-  , _adAudioType                  :: !(Maybe Int)
-  , _adAudioNormalizationSettings :: !(Maybe AudioNormalizationSettings)
-  , _adLanguageCodeControl        :: !(Maybe AudioLanguageCodeControl)
-  , _adCodecSettings              :: !(Maybe AudioCodecSettings)
-  , _adStreamName                 :: !(Maybe Text)
-  , _adRemixSettings              :: !(Maybe RemixSettings)
-  , _adAudioTypeControl           :: !(Maybe AudioTypeControl)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AudioDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adAudioSourceName' - Specifies which audio data to use from each input. In the simplest case, specify an "Audio Selector":#inputs-audio_selector by name based on its order within each input. For example if you specify "Audio Selector 3", then the third audio selector will be used from each input. If an input does not have an "Audio Selector 3", then the audio selector marked as "default" in that input will be used. If there is no audio selector marked as "default", silence will be inserted for the duration of that input. Alternatively, an "Audio Selector Group":#inputs-audio_selector_group name may be specified, with similar default/silence behavior. If no audio_source_name is specified, then "Audio Selector 1" will be chosen automatically.
---
--- * 'adLanguageCode' - Indicates the language of the audio output track. The ISO 639 language specified in the 'Language Code' drop down will be used when 'Follow Input Language Code' is not selected or when 'Follow Input Language Code' is selected but there is no ISO 639 language code specified by the input.
---
--- * 'adAudioType' - Applies only if Follow Input Audio Type is unchecked (false). A number between 0 and 255. The following are defined in ISO-IEC 13818-1: 0 = Undefined, 1 = Clean Effects, 2 = Hearing Impaired, 3 = Visually Impaired Commentary, 4-255 = Reserved.
---
--- * 'adAudioNormalizationSettings' - Undocumented member.
---
--- * 'adLanguageCodeControl' - Undocumented member.
---
--- * 'adCodecSettings' - Undocumented member.
---
--- * 'adStreamName' - Used for MS Smooth and Apple HLS outputs. Indicates the name displayed by the player (eg. English, or Director Commentary). Alphanumeric characters, spaces, and underscore are legal.
---
--- * 'adRemixSettings' - Advanced audio remixing settings.
---
--- * 'adAudioTypeControl' - Undocumented member.
-audioDescription
-    :: AudioDescription
-audioDescription =
-  AudioDescription'
-    { _adAudioSourceName = Nothing
-    , _adLanguageCode = Nothing
-    , _adAudioType = Nothing
-    , _adAudioNormalizationSettings = Nothing
-    , _adLanguageCodeControl = Nothing
-    , _adCodecSettings = Nothing
-    , _adStreamName = Nothing
-    , _adRemixSettings = Nothing
-    , _adAudioTypeControl = Nothing
-    }
-
-
--- | Specifies which audio data to use from each input. In the simplest case, specify an "Audio Selector":#inputs-audio_selector by name based on its order within each input. For example if you specify "Audio Selector 3", then the third audio selector will be used from each input. If an input does not have an "Audio Selector 3", then the audio selector marked as "default" in that input will be used. If there is no audio selector marked as "default", silence will be inserted for the duration of that input. Alternatively, an "Audio Selector Group":#inputs-audio_selector_group name may be specified, with similar default/silence behavior. If no audio_source_name is specified, then "Audio Selector 1" will be chosen automatically.
-adAudioSourceName :: Lens' AudioDescription (Maybe Text)
-adAudioSourceName = lens _adAudioSourceName (\ s a -> s{_adAudioSourceName = a})
-
--- | Indicates the language of the audio output track. The ISO 639 language specified in the 'Language Code' drop down will be used when 'Follow Input Language Code' is not selected or when 'Follow Input Language Code' is selected but there is no ISO 639 language code specified by the input.
-adLanguageCode :: Lens' AudioDescription (Maybe LanguageCode)
-adLanguageCode = lens _adLanguageCode (\ s a -> s{_adLanguageCode = a})
-
--- | Applies only if Follow Input Audio Type is unchecked (false). A number between 0 and 255. The following are defined in ISO-IEC 13818-1: 0 = Undefined, 1 = Clean Effects, 2 = Hearing Impaired, 3 = Visually Impaired Commentary, 4-255 = Reserved.
-adAudioType :: Lens' AudioDescription (Maybe Int)
-adAudioType = lens _adAudioType (\ s a -> s{_adAudioType = a})
-
--- | Undocumented member.
-adAudioNormalizationSettings :: Lens' AudioDescription (Maybe AudioNormalizationSettings)
-adAudioNormalizationSettings = lens _adAudioNormalizationSettings (\ s a -> s{_adAudioNormalizationSettings = a})
-
--- | Undocumented member.
-adLanguageCodeControl :: Lens' AudioDescription (Maybe AudioLanguageCodeControl)
-adLanguageCodeControl = lens _adLanguageCodeControl (\ s a -> s{_adLanguageCodeControl = a})
-
--- | Undocumented member.
-adCodecSettings :: Lens' AudioDescription (Maybe AudioCodecSettings)
-adCodecSettings = lens _adCodecSettings (\ s a -> s{_adCodecSettings = a})
-
--- | Used for MS Smooth and Apple HLS outputs. Indicates the name displayed by the player (eg. English, or Director Commentary). Alphanumeric characters, spaces, and underscore are legal.
-adStreamName :: Lens' AudioDescription (Maybe Text)
-adStreamName = lens _adStreamName (\ s a -> s{_adStreamName = a})
-
--- | Advanced audio remixing settings.
-adRemixSettings :: Lens' AudioDescription (Maybe RemixSettings)
-adRemixSettings = lens _adRemixSettings (\ s a -> s{_adRemixSettings = a})
-
--- | Undocumented member.
-adAudioTypeControl :: Lens' AudioDescription (Maybe AudioTypeControl)
-adAudioTypeControl = lens _adAudioTypeControl (\ s a -> s{_adAudioTypeControl = a})
-
-instance FromJSON AudioDescription where
-        parseJSON
-          = withObject "AudioDescription"
-              (\ x ->
-                 AudioDescription' <$>
-                   (x .:? "audioSourceName") <*> (x .:? "languageCode")
-                     <*> (x .:? "audioType")
-                     <*> (x .:? "audioNormalizationSettings")
-                     <*> (x .:? "languageCodeControl")
-                     <*> (x .:? "codecSettings")
-                     <*> (x .:? "streamName")
-                     <*> (x .:? "remixSettings")
-                     <*> (x .:? "audioTypeControl"))
-
-instance Hashable AudioDescription where
-
-instance NFData AudioDescription where
-
-instance ToJSON AudioDescription where
-        toJSON AudioDescription'{..}
-          = object
-              (catMaybes
-                 [("audioSourceName" .=) <$> _adAudioSourceName,
-                  ("languageCode" .=) <$> _adLanguageCode,
-                  ("audioType" .=) <$> _adAudioType,
-                  ("audioNormalizationSettings" .=) <$>
-                    _adAudioNormalizationSettings,
-                  ("languageCodeControl" .=) <$>
-                    _adLanguageCodeControl,
-                  ("codecSettings" .=) <$> _adCodecSettings,
-                  ("streamName" .=) <$> _adStreamName,
-                  ("remixSettings" .=) <$> _adRemixSettings,
-                  ("audioTypeControl" .=) <$> _adAudioTypeControl])
-
--- | Advanced audio normalization settings.
---
--- /See:/ 'audioNormalizationSettings' smart constructor.
-data AudioNormalizationSettings = AudioNormalizationSettings'
-  { _ansAlgorithmControl    :: !(Maybe AudioNormalizationAlgorithmControl)
-  , _ansTargetLkfs          :: !(Maybe Double)
-  , _ansPeakCalculation     :: !(Maybe AudioNormalizationPeakCalculation)
-  , _ansCorrectionGateLevel :: !(Maybe Int)
-  , _ansAlgorithm           :: !(Maybe AudioNormalizationAlgorithm)
-  , _ansLoudnessLogging     :: !(Maybe AudioNormalizationLoudnessLogging)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AudioNormalizationSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ansAlgorithmControl' - Undocumented member.
---
--- * 'ansTargetLkfs' - Target LKFS(loudness) to adjust volume to. If no value is entered, a default value will be used according to the chosen algorithm. The CALM Act (1770-1) recommends a target of -24 LKFS. The EBU R-128 specification (1770-2) recommends a target of -23 LKFS.
---
--- * 'ansPeakCalculation' - Undocumented member.
---
--- * 'ansCorrectionGateLevel' - Content measuring above this level will be corrected to the target level. Content measuring below this level will not be corrected. Gating only applies when not using real_time_correction.
---
--- * 'ansAlgorithm' - Undocumented member.
---
--- * 'ansLoudnessLogging' - Undocumented member.
-audioNormalizationSettings
-    :: AudioNormalizationSettings
-audioNormalizationSettings =
-  AudioNormalizationSettings'
-    { _ansAlgorithmControl = Nothing
-    , _ansTargetLkfs = Nothing
-    , _ansPeakCalculation = Nothing
-    , _ansCorrectionGateLevel = Nothing
-    , _ansAlgorithm = Nothing
-    , _ansLoudnessLogging = Nothing
-    }
-
-
--- | Undocumented member.
-ansAlgorithmControl :: Lens' AudioNormalizationSettings (Maybe AudioNormalizationAlgorithmControl)
-ansAlgorithmControl = lens _ansAlgorithmControl (\ s a -> s{_ansAlgorithmControl = a})
-
--- | Target LKFS(loudness) to adjust volume to. If no value is entered, a default value will be used according to the chosen algorithm. The CALM Act (1770-1) recommends a target of -24 LKFS. The EBU R-128 specification (1770-2) recommends a target of -23 LKFS.
-ansTargetLkfs :: Lens' AudioNormalizationSettings (Maybe Double)
-ansTargetLkfs = lens _ansTargetLkfs (\ s a -> s{_ansTargetLkfs = a})
-
--- | Undocumented member.
-ansPeakCalculation :: Lens' AudioNormalizationSettings (Maybe AudioNormalizationPeakCalculation)
-ansPeakCalculation = lens _ansPeakCalculation (\ s a -> s{_ansPeakCalculation = a})
-
--- | Content measuring above this level will be corrected to the target level. Content measuring below this level will not be corrected. Gating only applies when not using real_time_correction.
-ansCorrectionGateLevel :: Lens' AudioNormalizationSettings (Maybe Int)
-ansCorrectionGateLevel = lens _ansCorrectionGateLevel (\ s a -> s{_ansCorrectionGateLevel = a})
-
--- | Undocumented member.
-ansAlgorithm :: Lens' AudioNormalizationSettings (Maybe AudioNormalizationAlgorithm)
-ansAlgorithm = lens _ansAlgorithm (\ s a -> s{_ansAlgorithm = a})
-
--- | Undocumented member.
-ansLoudnessLogging :: Lens' AudioNormalizationSettings (Maybe AudioNormalizationLoudnessLogging)
-ansLoudnessLogging = lens _ansLoudnessLogging (\ s a -> s{_ansLoudnessLogging = a})
-
-instance FromJSON AudioNormalizationSettings where
-        parseJSON
-          = withObject "AudioNormalizationSettings"
-              (\ x ->
-                 AudioNormalizationSettings' <$>
-                   (x .:? "algorithmControl") <*> (x .:? "targetLkfs")
-                     <*> (x .:? "peakCalculation")
-                     <*> (x .:? "correctionGateLevel")
-                     <*> (x .:? "algorithm")
-                     <*> (x .:? "loudnessLogging"))
-
-instance Hashable AudioNormalizationSettings where
-
-instance NFData AudioNormalizationSettings where
-
-instance ToJSON AudioNormalizationSettings where
-        toJSON AudioNormalizationSettings'{..}
-          = object
-              (catMaybes
-                 [("algorithmControl" .=) <$> _ansAlgorithmControl,
-                  ("targetLkfs" .=) <$> _ansTargetLkfs,
-                  ("peakCalculation" .=) <$> _ansPeakCalculation,
-                  ("correctionGateLevel" .=) <$>
-                    _ansCorrectionGateLevel,
-                  ("algorithm" .=) <$> _ansAlgorithm,
-                  ("loudnessLogging" .=) <$> _ansLoudnessLogging])
-
--- | Selector for Audio
---
--- /See:/ 'audioSelector' smart constructor.
-data AudioSelector = AudioSelector'
-  { _asTracks                 :: !(Maybe [Int])
-  , _asProgramSelection       :: !(Maybe Int)
-  , _asLanguageCode           :: !(Maybe LanguageCode)
-  , _asOffset                 :: !(Maybe Int)
-  , _asDefaultSelection       :: !(Maybe AudioDefaultSelection)
-  , _asPids                   :: !(Maybe [Int])
-  , _asSelectorType           :: !(Maybe AudioSelectorType)
-  , _asExternalAudioFileInput :: !(Maybe Text)
-  , _asRemixSettings          :: !(Maybe RemixSettings)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AudioSelector' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asTracks' - Identify the channel to include in this selector by entering the 1-based track index.  To combine several tracks, enter a comma-separated list, e.g. "1,2,3" for tracks 1-3.
---
--- * 'asProgramSelection' - Applies only when input streams contain Dolby E. Enter the program ID (according to the metadata in the audio) of the Dolby E program to extract from the specified track. One program extracted per audio selector. To select multiple programs, create multiple selectors with the same Track and different Program numbers. "All channels" means to ignore the program IDs and include all the channels in this selector; useful if metadata is known to be incorrect.
---
--- * 'asLanguageCode' - Selects a specific language code from within an audio source.
---
--- * 'asOffset' - Specifies a time delta in milliseconds to offset the audio from the input video.
---
--- * 'asDefaultSelection' - Undocumented member.
---
--- * 'asPids' - Selects a specific PID from within an audio source (e.g. 257 selects PID 0x101).
---
--- * 'asSelectorType' - Undocumented member.
---
--- * 'asExternalAudioFileInput' - Specifies audio data from an external file source.
---
--- * 'asRemixSettings' - Advanced audio remixing settings.
-audioSelector
-    :: AudioSelector
-audioSelector =
-  AudioSelector'
-    { _asTracks = Nothing
-    , _asProgramSelection = Nothing
-    , _asLanguageCode = Nothing
-    , _asOffset = Nothing
-    , _asDefaultSelection = Nothing
-    , _asPids = Nothing
-    , _asSelectorType = Nothing
-    , _asExternalAudioFileInput = Nothing
-    , _asRemixSettings = Nothing
-    }
-
-
--- | Identify the channel to include in this selector by entering the 1-based track index.  To combine several tracks, enter a comma-separated list, e.g. "1,2,3" for tracks 1-3.
-asTracks :: Lens' AudioSelector [Int]
-asTracks = lens _asTracks (\ s a -> s{_asTracks = a}) . _Default . _Coerce
-
--- | Applies only when input streams contain Dolby E. Enter the program ID (according to the metadata in the audio) of the Dolby E program to extract from the specified track. One program extracted per audio selector. To select multiple programs, create multiple selectors with the same Track and different Program numbers. "All channels" means to ignore the program IDs and include all the channels in this selector; useful if metadata is known to be incorrect.
-asProgramSelection :: Lens' AudioSelector (Maybe Int)
-asProgramSelection = lens _asProgramSelection (\ s a -> s{_asProgramSelection = a})
-
--- | Selects a specific language code from within an audio source.
-asLanguageCode :: Lens' AudioSelector (Maybe LanguageCode)
-asLanguageCode = lens _asLanguageCode (\ s a -> s{_asLanguageCode = a})
-
--- | Specifies a time delta in milliseconds to offset the audio from the input video.
-asOffset :: Lens' AudioSelector (Maybe Int)
-asOffset = lens _asOffset (\ s a -> s{_asOffset = a})
-
--- | Undocumented member.
-asDefaultSelection :: Lens' AudioSelector (Maybe AudioDefaultSelection)
-asDefaultSelection = lens _asDefaultSelection (\ s a -> s{_asDefaultSelection = a})
-
--- | Selects a specific PID from within an audio source (e.g. 257 selects PID 0x101).
-asPids :: Lens' AudioSelector [Int]
-asPids = lens _asPids (\ s a -> s{_asPids = a}) . _Default . _Coerce
-
--- | Undocumented member.
-asSelectorType :: Lens' AudioSelector (Maybe AudioSelectorType)
-asSelectorType = lens _asSelectorType (\ s a -> s{_asSelectorType = a})
-
--- | Specifies audio data from an external file source.
-asExternalAudioFileInput :: Lens' AudioSelector (Maybe Text)
-asExternalAudioFileInput = lens _asExternalAudioFileInput (\ s a -> s{_asExternalAudioFileInput = a})
-
--- | Advanced audio remixing settings.
-asRemixSettings :: Lens' AudioSelector (Maybe RemixSettings)
-asRemixSettings = lens _asRemixSettings (\ s a -> s{_asRemixSettings = a})
-
-instance FromJSON AudioSelector where
-        parseJSON
-          = withObject "AudioSelector"
-              (\ x ->
-                 AudioSelector' <$>
-                   (x .:? "tracks" .!= mempty) <*>
-                     (x .:? "programSelection")
-                     <*> (x .:? "languageCode")
-                     <*> (x .:? "offset")
-                     <*> (x .:? "defaultSelection")
-                     <*> (x .:? "pids" .!= mempty)
-                     <*> (x .:? "selectorType")
-                     <*> (x .:? "externalAudioFileInput")
-                     <*> (x .:? "remixSettings"))
-
-instance Hashable AudioSelector where
-
-instance NFData AudioSelector where
-
-instance ToJSON AudioSelector where
-        toJSON AudioSelector'{..}
-          = object
-              (catMaybes
-                 [("tracks" .=) <$> _asTracks,
-                  ("programSelection" .=) <$> _asProgramSelection,
-                  ("languageCode" .=) <$> _asLanguageCode,
-                  ("offset" .=) <$> _asOffset,
-                  ("defaultSelection" .=) <$> _asDefaultSelection,
-                  ("pids" .=) <$> _asPids,
-                  ("selectorType" .=) <$> _asSelectorType,
-                  ("externalAudioFileInput" .=) <$>
-                    _asExternalAudioFileInput,
-                  ("remixSettings" .=) <$> _asRemixSettings])
-
--- | Group of Audio Selectors
---
--- /See:/ 'audioSelectorGroup' smart constructor.
-newtype AudioSelectorGroup = AudioSelectorGroup'
-  { _asgAudioSelectorNames :: Maybe [Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AudioSelectorGroup' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asgAudioSelectorNames' - Name of an "Audio Selector":#inputs-audio_selector within the same input to include in the group.  Audio selector names are standardized, based on their order within the input (e.g. "Audio Selector 1").  The audio_selector_name parameter can be repeated to add any number of audio selectors to the group.
-audioSelectorGroup
-    :: AudioSelectorGroup
-audioSelectorGroup = AudioSelectorGroup' {_asgAudioSelectorNames = Nothing}
-
-
--- | Name of an "Audio Selector":#inputs-audio_selector within the same input to include in the group.  Audio selector names are standardized, based on their order within the input (e.g. "Audio Selector 1").  The audio_selector_name parameter can be repeated to add any number of audio selectors to the group.
-asgAudioSelectorNames :: Lens' AudioSelectorGroup [Text]
-asgAudioSelectorNames = lens _asgAudioSelectorNames (\ s a -> s{_asgAudioSelectorNames = a}) . _Default . _Coerce
-
-instance FromJSON AudioSelectorGroup where
-        parseJSON
-          = withObject "AudioSelectorGroup"
-              (\ x ->
-                 AudioSelectorGroup' <$>
-                   (x .:? "audioSelectorNames" .!= mempty))
-
-instance Hashable AudioSelectorGroup where
-
-instance NFData AudioSelectorGroup where
-
-instance ToJSON AudioSelectorGroup where
-        toJSON AudioSelectorGroup'{..}
-          = object
-              (catMaybes
-                 [("audioSelectorNames" .=) <$>
-                    _asgAudioSelectorNames])
-
--- | Settings for Avail Blanking
---
--- /See:/ 'availBlanking' smart constructor.
-newtype AvailBlanking = AvailBlanking'
-  { _abAvailBlankingImage :: Maybe Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AvailBlanking' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'abAvailBlankingImage' - Blanking image to be used. Leave empty for solid black. Only bmp and png images are supported.
-availBlanking
-    :: AvailBlanking
-availBlanking = AvailBlanking' {_abAvailBlankingImage = Nothing}
-
-
--- | Blanking image to be used. Leave empty for solid black. Only bmp and png images are supported.
-abAvailBlankingImage :: Lens' AvailBlanking (Maybe Text)
-abAvailBlankingImage = lens _abAvailBlankingImage (\ s a -> s{_abAvailBlankingImage = a})
-
-instance FromJSON AvailBlanking where
-        parseJSON
-          = withObject "AvailBlanking"
-              (\ x ->
-                 AvailBlanking' <$> (x .:? "availBlankingImage"))
-
-instance Hashable AvailBlanking where
-
-instance NFData AvailBlanking where
-
-instance ToJSON AvailBlanking where
-        toJSON AvailBlanking'{..}
-          = object
-              (catMaybes
-                 [("availBlankingImage" .=) <$>
-                    _abAvailBlankingImage])
-
--- | Burn-In Destination Settings.
---
--- /See:/ 'burninDestinationSettings' smart constructor.
-data BurninDestinationSettings = BurninDestinationSettings'
-  { _bdsBackgroundOpacity :: !(Maybe Int)
-  , _bdsFontOpacity       :: !(Maybe Int)
-  , _bdsShadowYOffset     :: !(Maybe Int)
-  , _bdsFontResolution    :: !(Maybe Int)
-  , _bdsYPosition         :: !(Maybe Int)
-  , _bdsBackgroundColor   :: !(Maybe BurninSubtitleBackgroundColor)
-  , _bdsShadowXOffset     :: !(Maybe Int)
-  , _bdsFontSize          :: !(Maybe Int)
-  , _bdsXPosition         :: !(Maybe Int)
-  , _bdsTeletextSpacing   :: !(Maybe BurninSubtitleTeletextSpacing)
-  , _bdsAlignment         :: !(Maybe BurninSubtitleAlignment)
-  , _bdsShadowOpacity     :: !(Maybe Int)
-  , _bdsOutlineColor      :: !(Maybe BurninSubtitleOutlineColor)
-  , _bdsOutlineSize       :: !(Maybe Int)
-  , _bdsShadowColor       :: !(Maybe BurninSubtitleShadowColor)
-  , _bdsFontColor         :: !(Maybe BurninSubtitleFontColor)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BurninDestinationSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bdsBackgroundOpacity' - Specifies the opacity of the background rectangle. 255 is opaque; 0 is transparent. Leaving this parameter blank is equivalent to setting it to 0 (transparent). All burn-in and DVB-Sub font settings must match.
---
--- * 'bdsFontOpacity' - Specifies the opacity of the burned-in captions. 255 is opaque; 0 is transparent. All burn-in and DVB-Sub font settings must match.
---
--- * 'bdsShadowYOffset' - Specifies the vertical offset of the shadow relative to the captions in pixels. A value of -2 would result in a shadow offset 2 pixels above the text. All burn-in and DVB-Sub font settings must match.
---
--- * 'bdsFontResolution' - Font resolution in DPI (dots per inch); default is 96 dpi. All burn-in and DVB-Sub font settings must match.
---
--- * 'bdsYPosition' - Specifies the vertical position of the caption relative to the top of the output in pixels. A value of 10 would result in the captions starting 10 pixels from the top of the output. If no explicit y_position is provided, the caption will be positioned towards the bottom of the output. This option is not valid for source captions that are STL, 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
---
--- * 'bdsBackgroundColor' - Undocumented member.
---
--- * 'bdsShadowXOffset' - Specifies the horizontal offset of the shadow relative to the captions in pixels. A value of -2 would result in a shadow offset 2 pixels to the left. All burn-in and DVB-Sub font settings must match.
---
--- * 'bdsFontSize' - A positive integer indicates the exact font size in points. Set to 0 for automatic font size selection. All burn-in and DVB-Sub font settings must match.
---
--- * 'bdsXPosition' - Specifies the horizontal position of the caption relative to the left side of the output in pixels. A value of 10 would result in the captions starting 10 pixels from the left of the output. If no explicit x_position is provided, the horizontal caption position will be determined by the alignment parameter. This option is not valid for source captions that are STL, 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
---
--- * 'bdsTeletextSpacing' - Undocumented member.
---
--- * 'bdsAlignment' - Undocumented member.
---
--- * 'bdsShadowOpacity' - Specifies the opacity of the shadow. 255 is opaque; 0 is transparent. Leaving this parameter blank is equivalent to setting it to 0 (transparent). All burn-in and DVB-Sub font settings must match.
---
--- * 'bdsOutlineColor' - Undocumented member.
---
--- * 'bdsOutlineSize' - Specifies font outline size in pixels. This option is not valid for source captions that are either 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
---
--- * 'bdsShadowColor' - Undocumented member.
---
--- * 'bdsFontColor' - Undocumented member.
-burninDestinationSettings
-    :: BurninDestinationSettings
-burninDestinationSettings =
-  BurninDestinationSettings'
-    { _bdsBackgroundOpacity = Nothing
-    , _bdsFontOpacity = Nothing
-    , _bdsShadowYOffset = Nothing
-    , _bdsFontResolution = Nothing
-    , _bdsYPosition = Nothing
-    , _bdsBackgroundColor = Nothing
-    , _bdsShadowXOffset = Nothing
-    , _bdsFontSize = Nothing
-    , _bdsXPosition = Nothing
-    , _bdsTeletextSpacing = Nothing
-    , _bdsAlignment = Nothing
-    , _bdsShadowOpacity = Nothing
-    , _bdsOutlineColor = Nothing
-    , _bdsOutlineSize = Nothing
-    , _bdsShadowColor = Nothing
-    , _bdsFontColor = Nothing
-    }
-
-
--- | Specifies the opacity of the background rectangle. 255 is opaque; 0 is transparent. Leaving this parameter blank is equivalent to setting it to 0 (transparent). All burn-in and DVB-Sub font settings must match.
-bdsBackgroundOpacity :: Lens' BurninDestinationSettings (Maybe Int)
-bdsBackgroundOpacity = lens _bdsBackgroundOpacity (\ s a -> s{_bdsBackgroundOpacity = a})
-
--- | Specifies the opacity of the burned-in captions. 255 is opaque; 0 is transparent. All burn-in and DVB-Sub font settings must match.
-bdsFontOpacity :: Lens' BurninDestinationSettings (Maybe Int)
-bdsFontOpacity = lens _bdsFontOpacity (\ s a -> s{_bdsFontOpacity = a})
-
--- | Specifies the vertical offset of the shadow relative to the captions in pixels. A value of -2 would result in a shadow offset 2 pixels above the text. All burn-in and DVB-Sub font settings must match.
-bdsShadowYOffset :: Lens' BurninDestinationSettings (Maybe Int)
-bdsShadowYOffset = lens _bdsShadowYOffset (\ s a -> s{_bdsShadowYOffset = a})
-
--- | Font resolution in DPI (dots per inch); default is 96 dpi. All burn-in and DVB-Sub font settings must match.
-bdsFontResolution :: Lens' BurninDestinationSettings (Maybe Int)
-bdsFontResolution = lens _bdsFontResolution (\ s a -> s{_bdsFontResolution = a})
-
--- | Specifies the vertical position of the caption relative to the top of the output in pixels. A value of 10 would result in the captions starting 10 pixels from the top of the output. If no explicit y_position is provided, the caption will be positioned towards the bottom of the output. This option is not valid for source captions that are STL, 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
-bdsYPosition :: Lens' BurninDestinationSettings (Maybe Int)
-bdsYPosition = lens _bdsYPosition (\ s a -> s{_bdsYPosition = a})
-
--- | Undocumented member.
-bdsBackgroundColor :: Lens' BurninDestinationSettings (Maybe BurninSubtitleBackgroundColor)
-bdsBackgroundColor = lens _bdsBackgroundColor (\ s a -> s{_bdsBackgroundColor = a})
-
--- | Specifies the horizontal offset of the shadow relative to the captions in pixels. A value of -2 would result in a shadow offset 2 pixels to the left. All burn-in and DVB-Sub font settings must match.
-bdsShadowXOffset :: Lens' BurninDestinationSettings (Maybe Int)
-bdsShadowXOffset = lens _bdsShadowXOffset (\ s a -> s{_bdsShadowXOffset = a})
-
--- | A positive integer indicates the exact font size in points. Set to 0 for automatic font size selection. All burn-in and DVB-Sub font settings must match.
-bdsFontSize :: Lens' BurninDestinationSettings (Maybe Int)
-bdsFontSize = lens _bdsFontSize (\ s a -> s{_bdsFontSize = a})
-
--- | Specifies the horizontal position of the caption relative to the left side of the output in pixels. A value of 10 would result in the captions starting 10 pixels from the left of the output. If no explicit x_position is provided, the horizontal caption position will be determined by the alignment parameter. This option is not valid for source captions that are STL, 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
-bdsXPosition :: Lens' BurninDestinationSettings (Maybe Int)
-bdsXPosition = lens _bdsXPosition (\ s a -> s{_bdsXPosition = a})
-
--- | Undocumented member.
-bdsTeletextSpacing :: Lens' BurninDestinationSettings (Maybe BurninSubtitleTeletextSpacing)
-bdsTeletextSpacing = lens _bdsTeletextSpacing (\ s a -> s{_bdsTeletextSpacing = a})
-
--- | Undocumented member.
-bdsAlignment :: Lens' BurninDestinationSettings (Maybe BurninSubtitleAlignment)
-bdsAlignment = lens _bdsAlignment (\ s a -> s{_bdsAlignment = a})
-
--- | Specifies the opacity of the shadow. 255 is opaque; 0 is transparent. Leaving this parameter blank is equivalent to setting it to 0 (transparent). All burn-in and DVB-Sub font settings must match.
-bdsShadowOpacity :: Lens' BurninDestinationSettings (Maybe Int)
-bdsShadowOpacity = lens _bdsShadowOpacity (\ s a -> s{_bdsShadowOpacity = a})
-
--- | Undocumented member.
-bdsOutlineColor :: Lens' BurninDestinationSettings (Maybe BurninSubtitleOutlineColor)
-bdsOutlineColor = lens _bdsOutlineColor (\ s a -> s{_bdsOutlineColor = a})
-
--- | Specifies font outline size in pixels. This option is not valid for source captions that are either 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
-bdsOutlineSize :: Lens' BurninDestinationSettings (Maybe Int)
-bdsOutlineSize = lens _bdsOutlineSize (\ s a -> s{_bdsOutlineSize = a})
-
--- | Undocumented member.
-bdsShadowColor :: Lens' BurninDestinationSettings (Maybe BurninSubtitleShadowColor)
-bdsShadowColor = lens _bdsShadowColor (\ s a -> s{_bdsShadowColor = a})
-
--- | Undocumented member.
-bdsFontColor :: Lens' BurninDestinationSettings (Maybe BurninSubtitleFontColor)
-bdsFontColor = lens _bdsFontColor (\ s a -> s{_bdsFontColor = a})
-
-instance FromJSON BurninDestinationSettings where
-        parseJSON
-          = withObject "BurninDestinationSettings"
-              (\ x ->
-                 BurninDestinationSettings' <$>
-                   (x .:? "backgroundOpacity") <*> (x .:? "fontOpacity")
-                     <*> (x .:? "shadowYOffset")
-                     <*> (x .:? "fontResolution")
-                     <*> (x .:? "yPosition")
-                     <*> (x .:? "backgroundColor")
-                     <*> (x .:? "shadowXOffset")
-                     <*> (x .:? "fontSize")
-                     <*> (x .:? "xPosition")
-                     <*> (x .:? "teletextSpacing")
-                     <*> (x .:? "alignment")
-                     <*> (x .:? "shadowOpacity")
-                     <*> (x .:? "outlineColor")
-                     <*> (x .:? "outlineSize")
-                     <*> (x .:? "shadowColor")
-                     <*> (x .:? "fontColor"))
-
-instance Hashable BurninDestinationSettings where
-
-instance NFData BurninDestinationSettings where
-
-instance ToJSON BurninDestinationSettings where
-        toJSON BurninDestinationSettings'{..}
-          = object
-              (catMaybes
-                 [("backgroundOpacity" .=) <$> _bdsBackgroundOpacity,
-                  ("fontOpacity" .=) <$> _bdsFontOpacity,
-                  ("shadowYOffset" .=) <$> _bdsShadowYOffset,
-                  ("fontResolution" .=) <$> _bdsFontResolution,
-                  ("yPosition" .=) <$> _bdsYPosition,
-                  ("backgroundColor" .=) <$> _bdsBackgroundColor,
-                  ("shadowXOffset" .=) <$> _bdsShadowXOffset,
-                  ("fontSize" .=) <$> _bdsFontSize,
-                  ("xPosition" .=) <$> _bdsXPosition,
-                  ("teletextSpacing" .=) <$> _bdsTeletextSpacing,
-                  ("alignment" .=) <$> _bdsAlignment,
-                  ("shadowOpacity" .=) <$> _bdsShadowOpacity,
-                  ("outlineColor" .=) <$> _bdsOutlineColor,
-                  ("outlineSize" .=) <$> _bdsOutlineSize,
-                  ("shadowColor" .=) <$> _bdsShadowColor,
-                  ("fontColor" .=) <$> _bdsFontColor])
-
--- | Description of Caption output
---
--- /See:/ 'captionDescription' smart constructor.
-data CaptionDescription = CaptionDescription'
-  { _cdCaptionSelectorName :: !(Maybe Text)
-  , _cdLanguageCode        :: !(Maybe LanguageCode)
-  , _cdDestinationSettings :: !(Maybe CaptionDestinationSettings)
-  , _cdLanguageDescription :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CaptionDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cdCaptionSelectorName' - <N>", which denotes that the Nth Caption Selector will be used from each input.
---
--- * 'cdLanguageCode' - Indicates the language of the caption output track.
---
--- * 'cdDestinationSettings' - Undocumented member.
---
--- * 'cdLanguageDescription' - Human readable information to indicate captions available for players (eg. English, or Spanish). Alphanumeric characters, spaces, and underscore are legal.
-captionDescription
-    :: CaptionDescription
-captionDescription =
-  CaptionDescription'
-    { _cdCaptionSelectorName = Nothing
-    , _cdLanguageCode = Nothing
-    , _cdDestinationSettings = Nothing
-    , _cdLanguageDescription = Nothing
-    }
-
-
--- | <N>", which denotes that the Nth Caption Selector will be used from each input.
-cdCaptionSelectorName :: Lens' CaptionDescription (Maybe Text)
-cdCaptionSelectorName = lens _cdCaptionSelectorName (\ s a -> s{_cdCaptionSelectorName = a})
-
--- | Indicates the language of the caption output track.
-cdLanguageCode :: Lens' CaptionDescription (Maybe LanguageCode)
-cdLanguageCode = lens _cdLanguageCode (\ s a -> s{_cdLanguageCode = a})
-
--- | Undocumented member.
-cdDestinationSettings :: Lens' CaptionDescription (Maybe CaptionDestinationSettings)
-cdDestinationSettings = lens _cdDestinationSettings (\ s a -> s{_cdDestinationSettings = a})
-
--- | Human readable information to indicate captions available for players (eg. English, or Spanish). Alphanumeric characters, spaces, and underscore are legal.
-cdLanguageDescription :: Lens' CaptionDescription (Maybe Text)
-cdLanguageDescription = lens _cdLanguageDescription (\ s a -> s{_cdLanguageDescription = a})
-
-instance FromJSON CaptionDescription where
-        parseJSON
-          = withObject "CaptionDescription"
-              (\ x ->
-                 CaptionDescription' <$>
-                   (x .:? "captionSelectorName") <*>
-                     (x .:? "languageCode")
-                     <*> (x .:? "destinationSettings")
-                     <*> (x .:? "languageDescription"))
-
-instance Hashable CaptionDescription where
-
-instance NFData CaptionDescription where
-
-instance ToJSON CaptionDescription where
-        toJSON CaptionDescription'{..}
-          = object
-              (catMaybes
-                 [("captionSelectorName" .=) <$>
-                    _cdCaptionSelectorName,
-                  ("languageCode" .=) <$> _cdLanguageCode,
-                  ("destinationSettings" .=) <$>
-                    _cdDestinationSettings,
-                  ("languageDescription" .=) <$>
-                    _cdLanguageDescription])
-
--- | Caption Description for preset
---
--- /See:/ 'captionDescriptionPreset' smart constructor.
-data CaptionDescriptionPreset = CaptionDescriptionPreset'
-  { _cdpLanguageCode        :: !(Maybe LanguageCode)
-  , _cdpDestinationSettings :: !(Maybe CaptionDestinationSettings)
-  , _cdpLanguageDescription :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CaptionDescriptionPreset' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cdpLanguageCode' - Indicates the language of the caption output track.
---
--- * 'cdpDestinationSettings' - Undocumented member.
---
--- * 'cdpLanguageDescription' - Human readable information to indicate captions available for players (eg. English, or Spanish). Alphanumeric characters, spaces, and underscore are legal.
-captionDescriptionPreset
-    :: CaptionDescriptionPreset
-captionDescriptionPreset =
-  CaptionDescriptionPreset'
-    { _cdpLanguageCode = Nothing
-    , _cdpDestinationSettings = Nothing
-    , _cdpLanguageDescription = Nothing
-    }
-
-
--- | Indicates the language of the caption output track.
-cdpLanguageCode :: Lens' CaptionDescriptionPreset (Maybe LanguageCode)
-cdpLanguageCode = lens _cdpLanguageCode (\ s a -> s{_cdpLanguageCode = a})
-
--- | Undocumented member.
-cdpDestinationSettings :: Lens' CaptionDescriptionPreset (Maybe CaptionDestinationSettings)
-cdpDestinationSettings = lens _cdpDestinationSettings (\ s a -> s{_cdpDestinationSettings = a})
-
--- | Human readable information to indicate captions available for players (eg. English, or Spanish). Alphanumeric characters, spaces, and underscore are legal.
-cdpLanguageDescription :: Lens' CaptionDescriptionPreset (Maybe Text)
-cdpLanguageDescription = lens _cdpLanguageDescription (\ s a -> s{_cdpLanguageDescription = a})
-
-instance FromJSON CaptionDescriptionPreset where
-        parseJSON
-          = withObject "CaptionDescriptionPreset"
-              (\ x ->
-                 CaptionDescriptionPreset' <$>
-                   (x .:? "languageCode") <*>
-                     (x .:? "destinationSettings")
-                     <*> (x .:? "languageDescription"))
-
-instance Hashable CaptionDescriptionPreset where
-
-instance NFData CaptionDescriptionPreset where
-
-instance ToJSON CaptionDescriptionPreset where
-        toJSON CaptionDescriptionPreset'{..}
-          = object
-              (catMaybes
-                 [("languageCode" .=) <$> _cdpLanguageCode,
-                  ("destinationSettings" .=) <$>
-                    _cdpDestinationSettings,
-                  ("languageDescription" .=) <$>
-                    _cdpLanguageDescription])
-
--- | Specific settings required by destination type. Note that burnin_destination_settings are not available if the source of the caption data is Embedded or Teletext.
---
--- /See:/ 'captionDestinationSettings' smart constructor.
-data CaptionDestinationSettings = CaptionDestinationSettings'
-  { _cdsTeletextDestinationSettings :: !(Maybe TeletextDestinationSettings)
-  , _cdsDvbSubDestinationSettings   :: !(Maybe DvbSubDestinationSettings)
-  , _cdsTtmlDestinationSettings     :: !(Maybe TtmlDestinationSettings)
-  , _cdsDestinationType             :: !(Maybe CaptionDestinationType)
-  , _cdsSccDestinationSettings      :: !(Maybe SccDestinationSettings)
-  , _cdsBurninDestinationSettings   :: !(Maybe BurninDestinationSettings)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CaptionDestinationSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cdsTeletextDestinationSettings' - Undocumented member.
---
--- * 'cdsDvbSubDestinationSettings' - Undocumented member.
---
--- * 'cdsTtmlDestinationSettings' - Undocumented member.
---
--- * 'cdsDestinationType' - Undocumented member.
---
--- * 'cdsSccDestinationSettings' - Undocumented member.
---
--- * 'cdsBurninDestinationSettings' - Undocumented member.
-captionDestinationSettings
-    :: CaptionDestinationSettings
-captionDestinationSettings =
-  CaptionDestinationSettings'
-    { _cdsTeletextDestinationSettings = Nothing
-    , _cdsDvbSubDestinationSettings = Nothing
-    , _cdsTtmlDestinationSettings = Nothing
-    , _cdsDestinationType = Nothing
-    , _cdsSccDestinationSettings = Nothing
-    , _cdsBurninDestinationSettings = Nothing
-    }
-
-
--- | Undocumented member.
-cdsTeletextDestinationSettings :: Lens' CaptionDestinationSettings (Maybe TeletextDestinationSettings)
-cdsTeletextDestinationSettings = lens _cdsTeletextDestinationSettings (\ s a -> s{_cdsTeletextDestinationSettings = a})
-
--- | Undocumented member.
-cdsDvbSubDestinationSettings :: Lens' CaptionDestinationSettings (Maybe DvbSubDestinationSettings)
-cdsDvbSubDestinationSettings = lens _cdsDvbSubDestinationSettings (\ s a -> s{_cdsDvbSubDestinationSettings = a})
-
--- | Undocumented member.
-cdsTtmlDestinationSettings :: Lens' CaptionDestinationSettings (Maybe TtmlDestinationSettings)
-cdsTtmlDestinationSettings = lens _cdsTtmlDestinationSettings (\ s a -> s{_cdsTtmlDestinationSettings = a})
-
--- | Undocumented member.
-cdsDestinationType :: Lens' CaptionDestinationSettings (Maybe CaptionDestinationType)
-cdsDestinationType = lens _cdsDestinationType (\ s a -> s{_cdsDestinationType = a})
-
--- | Undocumented member.
-cdsSccDestinationSettings :: Lens' CaptionDestinationSettings (Maybe SccDestinationSettings)
-cdsSccDestinationSettings = lens _cdsSccDestinationSettings (\ s a -> s{_cdsSccDestinationSettings = a})
-
--- | Undocumented member.
-cdsBurninDestinationSettings :: Lens' CaptionDestinationSettings (Maybe BurninDestinationSettings)
-cdsBurninDestinationSettings = lens _cdsBurninDestinationSettings (\ s a -> s{_cdsBurninDestinationSettings = a})
-
-instance FromJSON CaptionDestinationSettings where
-        parseJSON
-          = withObject "CaptionDestinationSettings"
-              (\ x ->
-                 CaptionDestinationSettings' <$>
-                   (x .:? "teletextDestinationSettings") <*>
-                     (x .:? "dvbSubDestinationSettings")
-                     <*> (x .:? "ttmlDestinationSettings")
-                     <*> (x .:? "destinationType")
-                     <*> (x .:? "sccDestinationSettings")
-                     <*> (x .:? "burninDestinationSettings"))
-
-instance Hashable CaptionDestinationSettings where
-
-instance NFData CaptionDestinationSettings where
-
-instance ToJSON CaptionDestinationSettings where
-        toJSON CaptionDestinationSettings'{..}
-          = object
-              (catMaybes
-                 [("teletextDestinationSettings" .=) <$>
-                    _cdsTeletextDestinationSettings,
-                  ("dvbSubDestinationSettings" .=) <$>
-                    _cdsDvbSubDestinationSettings,
-                  ("ttmlDestinationSettings" .=) <$>
-                    _cdsTtmlDestinationSettings,
-                  ("destinationType" .=) <$> _cdsDestinationType,
-                  ("sccDestinationSettings" .=) <$>
-                    _cdsSccDestinationSettings,
-                  ("burninDestinationSettings" .=) <$>
-                    _cdsBurninDestinationSettings])
-
--- | Caption inputs to be mapped to caption outputs.
---
--- /See:/ 'captionSelector' smart constructor.
-data CaptionSelector = CaptionSelector'
-  { _csLanguageCode   :: !(Maybe LanguageCode)
-  , _csSourceSettings :: !(Maybe CaptionSourceSettings)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CaptionSelector' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csLanguageCode' - The specific language to extract from source. If input is SCTE-27, complete this field and/or PID to select the caption language to extract. If input is DVB-Sub and output is Burn-in or SMPTE-TT, complete this field and/or PID to select the caption language to extract. If input is DVB-Sub that is being passed through, omit this field (and PID field); there is no way to extract a specific language with pass-through captions.
---
--- * 'csSourceSettings' - Undocumented member.
-captionSelector
-    :: CaptionSelector
-captionSelector =
-  CaptionSelector' {_csLanguageCode = Nothing, _csSourceSettings = Nothing}
-
-
--- | The specific language to extract from source. If input is SCTE-27, complete this field and/or PID to select the caption language to extract. If input is DVB-Sub and output is Burn-in or SMPTE-TT, complete this field and/or PID to select the caption language to extract. If input is DVB-Sub that is being passed through, omit this field (and PID field); there is no way to extract a specific language with pass-through captions.
-csLanguageCode :: Lens' CaptionSelector (Maybe LanguageCode)
-csLanguageCode = lens _csLanguageCode (\ s a -> s{_csLanguageCode = a})
-
--- | Undocumented member.
-csSourceSettings :: Lens' CaptionSelector (Maybe CaptionSourceSettings)
-csSourceSettings = lens _csSourceSettings (\ s a -> s{_csSourceSettings = a})
-
-instance FromJSON CaptionSelector where
-        parseJSON
-          = withObject "CaptionSelector"
-              (\ x ->
-                 CaptionSelector' <$>
-                   (x .:? "languageCode") <*> (x .:? "sourceSettings"))
-
-instance Hashable CaptionSelector where
-
-instance NFData CaptionSelector where
-
-instance ToJSON CaptionSelector where
-        toJSON CaptionSelector'{..}
-          = object
-              (catMaybes
-                 [("languageCode" .=) <$> _csLanguageCode,
-                  ("sourceSettings" .=) <$> _csSourceSettings])
-
--- | Source settings (SourceSettings) contains the group of settings for captions in the input.
---
--- /See:/ 'captionSourceSettings' smart constructor.
-data CaptionSourceSettings = CaptionSourceSettings'
-  { _cssTeletextSourceSettings  :: !(Maybe TeletextSourceSettings)
-  , _cssSourceType              :: !(Maybe CaptionSourceType)
-  , _cssFileSourceSettings      :: !(Maybe FileSourceSettings)
-  , _cssDvbSubSourceSettings    :: !(Maybe DvbSubSourceSettings)
-  , _cssAncillarySourceSettings :: !(Maybe AncillarySourceSettings)
-  , _cssEmbeddedSourceSettings  :: !(Maybe EmbeddedSourceSettings)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CaptionSourceSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cssTeletextSourceSettings' - Undocumented member.
---
--- * 'cssSourceType' - Undocumented member.
---
--- * 'cssFileSourceSettings' - Undocumented member.
---
--- * 'cssDvbSubSourceSettings' - Undocumented member.
---
--- * 'cssAncillarySourceSettings' - Undocumented member.
---
--- * 'cssEmbeddedSourceSettings' - Undocumented member.
-captionSourceSettings
-    :: CaptionSourceSettings
-captionSourceSettings =
-  CaptionSourceSettings'
-    { _cssTeletextSourceSettings = Nothing
-    , _cssSourceType = Nothing
-    , _cssFileSourceSettings = Nothing
-    , _cssDvbSubSourceSettings = Nothing
-    , _cssAncillarySourceSettings = Nothing
-    , _cssEmbeddedSourceSettings = Nothing
-    }
-
-
--- | Undocumented member.
-cssTeletextSourceSettings :: Lens' CaptionSourceSettings (Maybe TeletextSourceSettings)
-cssTeletextSourceSettings = lens _cssTeletextSourceSettings (\ s a -> s{_cssTeletextSourceSettings = a})
-
--- | Undocumented member.
-cssSourceType :: Lens' CaptionSourceSettings (Maybe CaptionSourceType)
-cssSourceType = lens _cssSourceType (\ s a -> s{_cssSourceType = a})
-
--- | Undocumented member.
-cssFileSourceSettings :: Lens' CaptionSourceSettings (Maybe FileSourceSettings)
-cssFileSourceSettings = lens _cssFileSourceSettings (\ s a -> s{_cssFileSourceSettings = a})
-
--- | Undocumented member.
-cssDvbSubSourceSettings :: Lens' CaptionSourceSettings (Maybe DvbSubSourceSettings)
-cssDvbSubSourceSettings = lens _cssDvbSubSourceSettings (\ s a -> s{_cssDvbSubSourceSettings = a})
-
--- | Undocumented member.
-cssAncillarySourceSettings :: Lens' CaptionSourceSettings (Maybe AncillarySourceSettings)
-cssAncillarySourceSettings = lens _cssAncillarySourceSettings (\ s a -> s{_cssAncillarySourceSettings = a})
-
--- | Undocumented member.
-cssEmbeddedSourceSettings :: Lens' CaptionSourceSettings (Maybe EmbeddedSourceSettings)
-cssEmbeddedSourceSettings = lens _cssEmbeddedSourceSettings (\ s a -> s{_cssEmbeddedSourceSettings = a})
-
-instance FromJSON CaptionSourceSettings where
-        parseJSON
-          = withObject "CaptionSourceSettings"
-              (\ x ->
-                 CaptionSourceSettings' <$>
-                   (x .:? "teletextSourceSettings") <*>
-                     (x .:? "sourceType")
-                     <*> (x .:? "fileSourceSettings")
-                     <*> (x .:? "dvbSubSourceSettings")
-                     <*> (x .:? "ancillarySourceSettings")
-                     <*> (x .:? "embeddedSourceSettings"))
-
-instance Hashable CaptionSourceSettings where
-
-instance NFData CaptionSourceSettings where
-
-instance ToJSON CaptionSourceSettings where
-        toJSON CaptionSourceSettings'{..}
-          = object
-              (catMaybes
-                 [("teletextSourceSettings" .=) <$>
-                    _cssTeletextSourceSettings,
-                  ("sourceType" .=) <$> _cssSourceType,
-                  ("fileSourceSettings" .=) <$> _cssFileSourceSettings,
-                  ("dvbSubSourceSettings" .=) <$>
-                    _cssDvbSubSourceSettings,
-                  ("ancillarySourceSettings" .=) <$>
-                    _cssAncillarySourceSettings,
-                  ("embeddedSourceSettings" .=) <$>
-                    _cssEmbeddedSourceSettings])
-
--- | Channel mapping (ChannelMapping) contains the group of fields that hold the remixing value for each channel. Units are in dB. Acceptable values are within the range from -60 (mute) through 6. A setting of 0 passes the input channel unchanged to the output channel (no attenuation or amplification).
---
--- /See:/ 'channelMapping' smart constructor.
-newtype ChannelMapping = ChannelMapping'
-  { _cmOutputChannels :: Maybe [OutputChannelMapping]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ChannelMapping' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cmOutputChannels' - List of output channels
-channelMapping
-    :: ChannelMapping
-channelMapping = ChannelMapping' {_cmOutputChannels = Nothing}
-
-
--- | List of output channels
-cmOutputChannels :: Lens' ChannelMapping [OutputChannelMapping]
-cmOutputChannels = lens _cmOutputChannels (\ s a -> s{_cmOutputChannels = a}) . _Default . _Coerce
-
-instance FromJSON ChannelMapping where
-        parseJSON
-          = withObject "ChannelMapping"
-              (\ x ->
-                 ChannelMapping' <$>
-                   (x .:? "outputChannels" .!= mempty))
-
-instance Hashable ChannelMapping where
-
-instance NFData ChannelMapping where
-
-instance ToJSON ChannelMapping where
-        toJSON ChannelMapping'{..}
-          = object
-              (catMaybes
-                 [("outputChannels" .=) <$> _cmOutputChannels])
-
--- | Settings for color correction.
---
--- /See:/ 'colorCorrector' smart constructor.
-data ColorCorrector = ColorCorrector'
-  { _ccSaturation           :: !(Maybe Int)
-  , _ccHue                  :: !(Maybe Int)
-  , _ccColorSpaceConversion :: !(Maybe ColorSpaceConversion)
-  , _ccHdr10Metadata        :: !(Maybe Hdr10Metadata)
-  , _ccContrast             :: !(Maybe Int)
-  , _ccBrightness           :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ColorCorrector' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccSaturation' - Saturation level.
---
--- * 'ccHue' - Hue in degrees.
---
--- * 'ccColorSpaceConversion' - Undocumented member.
---
--- * 'ccHdr10Metadata' - Undocumented member.
---
--- * 'ccContrast' - Contrast level.
---
--- * 'ccBrightness' - Brightness level.
-colorCorrector
-    :: ColorCorrector
-colorCorrector =
-  ColorCorrector'
-    { _ccSaturation = Nothing
-    , _ccHue = Nothing
-    , _ccColorSpaceConversion = Nothing
-    , _ccHdr10Metadata = Nothing
-    , _ccContrast = Nothing
-    , _ccBrightness = Nothing
-    }
-
-
--- | Saturation level.
-ccSaturation :: Lens' ColorCorrector (Maybe Int)
-ccSaturation = lens _ccSaturation (\ s a -> s{_ccSaturation = a})
-
--- | Hue in degrees.
-ccHue :: Lens' ColorCorrector (Maybe Int)
-ccHue = lens _ccHue (\ s a -> s{_ccHue = a})
-
--- | Undocumented member.
-ccColorSpaceConversion :: Lens' ColorCorrector (Maybe ColorSpaceConversion)
-ccColorSpaceConversion = lens _ccColorSpaceConversion (\ s a -> s{_ccColorSpaceConversion = a})
-
--- | Undocumented member.
-ccHdr10Metadata :: Lens' ColorCorrector (Maybe Hdr10Metadata)
-ccHdr10Metadata = lens _ccHdr10Metadata (\ s a -> s{_ccHdr10Metadata = a})
-
--- | Contrast level.
-ccContrast :: Lens' ColorCorrector (Maybe Int)
-ccContrast = lens _ccContrast (\ s a -> s{_ccContrast = a})
-
--- | Brightness level.
-ccBrightness :: Lens' ColorCorrector (Maybe Int)
-ccBrightness = lens _ccBrightness (\ s a -> s{_ccBrightness = a})
-
-instance FromJSON ColorCorrector where
-        parseJSON
-          = withObject "ColorCorrector"
-              (\ x ->
-                 ColorCorrector' <$>
-                   (x .:? "saturation") <*> (x .:? "hue") <*>
-                     (x .:? "colorSpaceConversion")
-                     <*> (x .:? "hdr10Metadata")
-                     <*> (x .:? "contrast")
-                     <*> (x .:? "brightness"))
-
-instance Hashable ColorCorrector where
-
-instance NFData ColorCorrector where
-
-instance ToJSON ColorCorrector where
-        toJSON ColorCorrector'{..}
-          = object
-              (catMaybes
-                 [("saturation" .=) <$> _ccSaturation,
-                  ("hue" .=) <$> _ccHue,
-                  ("colorSpaceConversion" .=) <$>
-                    _ccColorSpaceConversion,
-                  ("hdr10Metadata" .=) <$> _ccHdr10Metadata,
-                  ("contrast" .=) <$> _ccContrast,
-                  ("brightness" .=) <$> _ccBrightness])
-
--- | Container specific settings.
---
--- /See:/ 'containerSettings' smart constructor.
-data ContainerSettings = ContainerSettings'
-  { _csM2tsSettings :: !(Maybe M2tsSettings)
-  , _csM3u8Settings :: !(Maybe M3u8Settings)
-  , _csMovSettings  :: !(Maybe MovSettings)
-  , _csMp4Settings  :: !(Maybe Mp4Settings)
-  , _csContainer    :: !(Maybe ContainerType)
-  , _csF4vSettings  :: !(Maybe F4vSettings)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ContainerSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csM2tsSettings' - Undocumented member.
---
--- * 'csM3u8Settings' - Undocumented member.
---
--- * 'csMovSettings' - Undocumented member.
---
--- * 'csMp4Settings' - Undocumented member.
---
--- * 'csContainer' - Undocumented member.
---
--- * 'csF4vSettings' - Undocumented member.
-containerSettings
-    :: ContainerSettings
-containerSettings =
-  ContainerSettings'
-    { _csM2tsSettings = Nothing
-    , _csM3u8Settings = Nothing
-    , _csMovSettings = Nothing
-    , _csMp4Settings = Nothing
-    , _csContainer = Nothing
-    , _csF4vSettings = Nothing
-    }
-
-
--- | Undocumented member.
-csM2tsSettings :: Lens' ContainerSettings (Maybe M2tsSettings)
-csM2tsSettings = lens _csM2tsSettings (\ s a -> s{_csM2tsSettings = a})
-
--- | Undocumented member.
-csM3u8Settings :: Lens' ContainerSettings (Maybe M3u8Settings)
-csM3u8Settings = lens _csM3u8Settings (\ s a -> s{_csM3u8Settings = a})
-
--- | Undocumented member.
-csMovSettings :: Lens' ContainerSettings (Maybe MovSettings)
-csMovSettings = lens _csMovSettings (\ s a -> s{_csMovSettings = a})
-
--- | Undocumented member.
-csMp4Settings :: Lens' ContainerSettings (Maybe Mp4Settings)
-csMp4Settings = lens _csMp4Settings (\ s a -> s{_csMp4Settings = a})
-
--- | Undocumented member.
-csContainer :: Lens' ContainerSettings (Maybe ContainerType)
-csContainer = lens _csContainer (\ s a -> s{_csContainer = a})
-
--- | Undocumented member.
-csF4vSettings :: Lens' ContainerSettings (Maybe F4vSettings)
-csF4vSettings = lens _csF4vSettings (\ s a -> s{_csF4vSettings = a})
-
-instance FromJSON ContainerSettings where
-        parseJSON
-          = withObject "ContainerSettings"
-              (\ x ->
-                 ContainerSettings' <$>
-                   (x .:? "m2tsSettings") <*> (x .:? "m3u8Settings") <*>
-                     (x .:? "movSettings")
-                     <*> (x .:? "mp4Settings")
-                     <*> (x .:? "container")
-                     <*> (x .:? "f4vSettings"))
-
-instance Hashable ContainerSettings where
-
-instance NFData ContainerSettings where
-
-instance ToJSON ContainerSettings where
-        toJSON ContainerSettings'{..}
-          = object
-              (catMaybes
-                 [("m2tsSettings" .=) <$> _csM2tsSettings,
-                  ("m3u8Settings" .=) <$> _csM3u8Settings,
-                  ("movSettings" .=) <$> _csMovSettings,
-                  ("mp4Settings" .=) <$> _csMp4Settings,
-                  ("container" .=) <$> _csContainer,
-                  ("f4vSettings" .=) <$> _csF4vSettings])
-
--- | Specifies DRM settings for DASH outputs.
---
--- /See:/ 'dashIsoEncryptionSettings' smart constructor.
-newtype DashIsoEncryptionSettings = DashIsoEncryptionSettings'
-  { _diesSpekeKeyProvider :: Maybe SpekeKeyProvider
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DashIsoEncryptionSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'diesSpekeKeyProvider' - Undocumented member.
-dashIsoEncryptionSettings
-    :: DashIsoEncryptionSettings
-dashIsoEncryptionSettings =
-  DashIsoEncryptionSettings' {_diesSpekeKeyProvider = Nothing}
-
-
--- | Undocumented member.
-diesSpekeKeyProvider :: Lens' DashIsoEncryptionSettings (Maybe SpekeKeyProvider)
-diesSpekeKeyProvider = lens _diesSpekeKeyProvider (\ s a -> s{_diesSpekeKeyProvider = a})
-
-instance FromJSON DashIsoEncryptionSettings where
-        parseJSON
-          = withObject "DashIsoEncryptionSettings"
-              (\ x ->
-                 DashIsoEncryptionSettings' <$>
-                   (x .:? "spekeKeyProvider"))
-
-instance Hashable DashIsoEncryptionSettings where
-
-instance NFData DashIsoEncryptionSettings where
-
-instance ToJSON DashIsoEncryptionSettings where
-        toJSON DashIsoEncryptionSettings'{..}
-          = object
-              (catMaybes
-                 [("spekeKeyProvider" .=) <$> _diesSpekeKeyProvider])
-
--- | Required when you set (Type) under (OutputGroups)>(OutputGroupSettings) to DASH_ISO_GROUP_SETTINGS.
---
--- /See:/ 'dashIsoGroupSettings' smart constructor.
-data DashIsoGroupSettings = DashIsoGroupSettings'
-  { _digsFragmentLength  :: !(Maybe Int)
-  , _digsSegmentControl  :: !(Maybe DashIsoSegmentControl)
-  , _digsDestination     :: !(Maybe Text)
-  , _digsHbbtvCompliance :: !(Maybe DashIsoHbbtvCompliance)
-  , _digsMinBufferTime   :: !(Maybe Int)
-  , _digsBaseURL         :: !(Maybe Text)
-  , _digsEncryption      :: !(Maybe DashIsoEncryptionSettings)
-  , _digsSegmentLength   :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DashIsoGroupSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'digsFragmentLength' - Length of fragments to generate (in seconds). Fragment length must be compatible with GOP size and Framerate. Note that fragments will end on the next keyframe after this number of seconds, so actual fragment length may be longer. When Emit Single File is checked, the fragmentation is internal to a single output file and it does not cause the creation of many output files as in other output types.
---
--- * 'digsSegmentControl' - Undocumented member.
---
--- * 'digsDestination' - Use Destination (Destination) to specify the S3 output location and the output filename base. Destination accepts format identifiers. If you do not specify the base filename in the URI, the service will use the filename of the input file. If your job has multiple inputs, the service uses the filename of the first input file.
---
--- * 'digsHbbtvCompliance' - Undocumented member.
---
--- * 'digsMinBufferTime' - Minimum time of initially buffered media that is needed to ensure smooth playout.
---
--- * 'digsBaseURL' - A partial URI prefix that will be put in the manifest (.mpd) file at the top level BaseURL element. Can be used if streams are delivered from a different URL than the manifest file.
---
--- * 'digsEncryption' - DRM settings.
---
--- * 'digsSegmentLength' - Length of mpd segments to create (in seconds). Note that segments will end on the next keyframe after this number of seconds, so actual segment length may be longer. When Emit Single File is checked, the segmentation is internal to a single output file and it does not cause the creation of many output files as in other output types.
-dashIsoGroupSettings
-    :: DashIsoGroupSettings
-dashIsoGroupSettings =
-  DashIsoGroupSettings'
-    { _digsFragmentLength = Nothing
-    , _digsSegmentControl = Nothing
-    , _digsDestination = Nothing
-    , _digsHbbtvCompliance = Nothing
-    , _digsMinBufferTime = Nothing
-    , _digsBaseURL = Nothing
-    , _digsEncryption = Nothing
-    , _digsSegmentLength = Nothing
-    }
-
-
--- | Length of fragments to generate (in seconds). Fragment length must be compatible with GOP size and Framerate. Note that fragments will end on the next keyframe after this number of seconds, so actual fragment length may be longer. When Emit Single File is checked, the fragmentation is internal to a single output file and it does not cause the creation of many output files as in other output types.
-digsFragmentLength :: Lens' DashIsoGroupSettings (Maybe Int)
-digsFragmentLength = lens _digsFragmentLength (\ s a -> s{_digsFragmentLength = a})
-
--- | Undocumented member.
-digsSegmentControl :: Lens' DashIsoGroupSettings (Maybe DashIsoSegmentControl)
-digsSegmentControl = lens _digsSegmentControl (\ s a -> s{_digsSegmentControl = a})
-
--- | Use Destination (Destination) to specify the S3 output location and the output filename base. Destination accepts format identifiers. If you do not specify the base filename in the URI, the service will use the filename of the input file. If your job has multiple inputs, the service uses the filename of the first input file.
-digsDestination :: Lens' DashIsoGroupSettings (Maybe Text)
-digsDestination = lens _digsDestination (\ s a -> s{_digsDestination = a})
-
--- | Undocumented member.
-digsHbbtvCompliance :: Lens' DashIsoGroupSettings (Maybe DashIsoHbbtvCompliance)
-digsHbbtvCompliance = lens _digsHbbtvCompliance (\ s a -> s{_digsHbbtvCompliance = a})
-
--- | Minimum time of initially buffered media that is needed to ensure smooth playout.
-digsMinBufferTime :: Lens' DashIsoGroupSettings (Maybe Int)
-digsMinBufferTime = lens _digsMinBufferTime (\ s a -> s{_digsMinBufferTime = a})
-
--- | A partial URI prefix that will be put in the manifest (.mpd) file at the top level BaseURL element. Can be used if streams are delivered from a different URL than the manifest file.
-digsBaseURL :: Lens' DashIsoGroupSettings (Maybe Text)
-digsBaseURL = lens _digsBaseURL (\ s a -> s{_digsBaseURL = a})
-
--- | DRM settings.
-digsEncryption :: Lens' DashIsoGroupSettings (Maybe DashIsoEncryptionSettings)
-digsEncryption = lens _digsEncryption (\ s a -> s{_digsEncryption = a})
-
--- | Length of mpd segments to create (in seconds). Note that segments will end on the next keyframe after this number of seconds, so actual segment length may be longer. When Emit Single File is checked, the segmentation is internal to a single output file and it does not cause the creation of many output files as in other output types.
-digsSegmentLength :: Lens' DashIsoGroupSettings (Maybe Int)
-digsSegmentLength = lens _digsSegmentLength (\ s a -> s{_digsSegmentLength = a})
-
-instance FromJSON DashIsoGroupSettings where
-        parseJSON
-          = withObject "DashIsoGroupSettings"
-              (\ x ->
-                 DashIsoGroupSettings' <$>
-                   (x .:? "fragmentLength") <*> (x .:? "segmentControl")
-                     <*> (x .:? "destination")
-                     <*> (x .:? "hbbtvCompliance")
-                     <*> (x .:? "minBufferTime")
-                     <*> (x .:? "baseUrl")
-                     <*> (x .:? "encryption")
-                     <*> (x .:? "segmentLength"))
-
-instance Hashable DashIsoGroupSettings where
-
-instance NFData DashIsoGroupSettings where
-
-instance ToJSON DashIsoGroupSettings where
-        toJSON DashIsoGroupSettings'{..}
-          = object
-              (catMaybes
-                 [("fragmentLength" .=) <$> _digsFragmentLength,
-                  ("segmentControl" .=) <$> _digsSegmentControl,
-                  ("destination" .=) <$> _digsDestination,
-                  ("hbbtvCompliance" .=) <$> _digsHbbtvCompliance,
-                  ("minBufferTime" .=) <$> _digsMinBufferTime,
-                  ("baseUrl" .=) <$> _digsBaseURL,
-                  ("encryption" .=) <$> _digsEncryption,
-                  ("segmentLength" .=) <$> _digsSegmentLength])
-
--- | Settings for deinterlacer
---
--- /See:/ 'deinterlacer' smart constructor.
-data Deinterlacer = Deinterlacer'
-  { _dControl   :: !(Maybe DeinterlacerControl)
-  , _dMode      :: !(Maybe DeinterlacerMode)
-  , _dAlgorithm :: !(Maybe DeinterlaceAlgorithm)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Deinterlacer' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dControl' - Undocumented member.
---
--- * 'dMode' - Undocumented member.
---
--- * 'dAlgorithm' - Undocumented member.
-deinterlacer
-    :: Deinterlacer
-deinterlacer =
-  Deinterlacer' {_dControl = Nothing, _dMode = Nothing, _dAlgorithm = Nothing}
-
-
--- | Undocumented member.
-dControl :: Lens' Deinterlacer (Maybe DeinterlacerControl)
-dControl = lens _dControl (\ s a -> s{_dControl = a})
-
--- | Undocumented member.
-dMode :: Lens' Deinterlacer (Maybe DeinterlacerMode)
-dMode = lens _dMode (\ s a -> s{_dMode = a})
-
--- | Undocumented member.
-dAlgorithm :: Lens' Deinterlacer (Maybe DeinterlaceAlgorithm)
-dAlgorithm = lens _dAlgorithm (\ s a -> s{_dAlgorithm = a})
-
-instance FromJSON Deinterlacer where
-        parseJSON
-          = withObject "Deinterlacer"
-              (\ x ->
-                 Deinterlacer' <$>
-                   (x .:? "control") <*> (x .:? "mode") <*>
-                     (x .:? "algorithm"))
-
-instance Hashable Deinterlacer where
-
-instance NFData Deinterlacer where
-
-instance ToJSON Deinterlacer where
-        toJSON Deinterlacer'{..}
-          = object
-              (catMaybes
-                 [("control" .=) <$> _dControl,
-                  ("mode" .=) <$> _dMode,
-                  ("algorithm" .=) <$> _dAlgorithm])
-
--- | Inserts DVB Network Information Table (NIT) at the specified table repetition interval.
---
--- /See:/ 'dvbNitSettings' smart constructor.
-data DvbNitSettings = DvbNitSettings'
-  { _dnsNetworkId   :: !(Maybe Int)
-  , _dnsNetworkName :: !(Maybe Text)
-  , _dnsNitInterval :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DvbNitSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dnsNetworkId' - The numeric value placed in the Network Information Table (NIT).
---
--- * 'dnsNetworkName' - The network name text placed in the network_name_descriptor inside the Network Information Table. Maximum length is 256 characters.
---
--- * 'dnsNitInterval' - The number of milliseconds between instances of this table in the output transport stream.
-dvbNitSettings
-    :: DvbNitSettings
-dvbNitSettings =
-  DvbNitSettings'
-    { _dnsNetworkId = Nothing
-    , _dnsNetworkName = Nothing
-    , _dnsNitInterval = Nothing
-    }
-
-
--- | The numeric value placed in the Network Information Table (NIT).
-dnsNetworkId :: Lens' DvbNitSettings (Maybe Int)
-dnsNetworkId = lens _dnsNetworkId (\ s a -> s{_dnsNetworkId = a})
-
--- | The network name text placed in the network_name_descriptor inside the Network Information Table. Maximum length is 256 characters.
-dnsNetworkName :: Lens' DvbNitSettings (Maybe Text)
-dnsNetworkName = lens _dnsNetworkName (\ s a -> s{_dnsNetworkName = a})
-
--- | The number of milliseconds between instances of this table in the output transport stream.
-dnsNitInterval :: Lens' DvbNitSettings (Maybe Int)
-dnsNitInterval = lens _dnsNitInterval (\ s a -> s{_dnsNitInterval = a})
-
-instance FromJSON DvbNitSettings where
-        parseJSON
-          = withObject "DvbNitSettings"
-              (\ x ->
-                 DvbNitSettings' <$>
-                   (x .:? "networkId") <*> (x .:? "networkName") <*>
-                     (x .:? "nitInterval"))
-
-instance Hashable DvbNitSettings where
-
-instance NFData DvbNitSettings where
-
-instance ToJSON DvbNitSettings where
-        toJSON DvbNitSettings'{..}
-          = object
-              (catMaybes
-                 [("networkId" .=) <$> _dnsNetworkId,
-                  ("networkName" .=) <$> _dnsNetworkName,
-                  ("nitInterval" .=) <$> _dnsNitInterval])
-
--- | Inserts DVB Service Description Table (NIT) at the specified table repetition interval.
---
--- /See:/ 'dvbSdtSettings' smart constructor.
-data DvbSdtSettings = DvbSdtSettings'
-  { _dssSdtInterval         :: !(Maybe Int)
-  , _dssServiceProviderName :: !(Maybe Text)
-  , _dssOutputSdt           :: !(Maybe OutputSdt)
-  , _dssServiceName         :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DvbSdtSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dssSdtInterval' - The number of milliseconds between instances of this table in the output transport stream.
---
--- * 'dssServiceProviderName' - The service provider name placed in the service_descriptor in the Service Description Table. Maximum length is 256 characters.
---
--- * 'dssOutputSdt' - Undocumented member.
---
--- * 'dssServiceName' - The service name placed in the service_descriptor in the Service Description Table. Maximum length is 256 characters.
-dvbSdtSettings
-    :: DvbSdtSettings
-dvbSdtSettings =
-  DvbSdtSettings'
-    { _dssSdtInterval = Nothing
-    , _dssServiceProviderName = Nothing
-    , _dssOutputSdt = Nothing
-    , _dssServiceName = Nothing
-    }
-
-
--- | The number of milliseconds between instances of this table in the output transport stream.
-dssSdtInterval :: Lens' DvbSdtSettings (Maybe Int)
-dssSdtInterval = lens _dssSdtInterval (\ s a -> s{_dssSdtInterval = a})
-
--- | The service provider name placed in the service_descriptor in the Service Description Table. Maximum length is 256 characters.
-dssServiceProviderName :: Lens' DvbSdtSettings (Maybe Text)
-dssServiceProviderName = lens _dssServiceProviderName (\ s a -> s{_dssServiceProviderName = a})
-
--- | Undocumented member.
-dssOutputSdt :: Lens' DvbSdtSettings (Maybe OutputSdt)
-dssOutputSdt = lens _dssOutputSdt (\ s a -> s{_dssOutputSdt = a})
-
--- | The service name placed in the service_descriptor in the Service Description Table. Maximum length is 256 characters.
-dssServiceName :: Lens' DvbSdtSettings (Maybe Text)
-dssServiceName = lens _dssServiceName (\ s a -> s{_dssServiceName = a})
-
-instance FromJSON DvbSdtSettings where
-        parseJSON
-          = withObject "DvbSdtSettings"
-              (\ x ->
-                 DvbSdtSettings' <$>
-                   (x .:? "sdtInterval") <*>
-                     (x .:? "serviceProviderName")
-                     <*> (x .:? "outputSdt")
-                     <*> (x .:? "serviceName"))
-
-instance Hashable DvbSdtSettings where
-
-instance NFData DvbSdtSettings where
-
-instance ToJSON DvbSdtSettings where
-        toJSON DvbSdtSettings'{..}
-          = object
-              (catMaybes
-                 [("sdtInterval" .=) <$> _dssSdtInterval,
-                  ("serviceProviderName" .=) <$>
-                    _dssServiceProviderName,
-                  ("outputSdt" .=) <$> _dssOutputSdt,
-                  ("serviceName" .=) <$> _dssServiceName])
-
--- | DVB-Sub Destination Settings
---
--- /See:/ 'dvbSubDestinationSettings' smart constructor.
-data DvbSubDestinationSettings = DvbSubDestinationSettings'
-  { _dsdsBackgroundOpacity :: !(Maybe Int)
-  , _dsdsFontOpacity       :: !(Maybe Int)
-  , _dsdsShadowYOffset     :: !(Maybe Int)
-  , _dsdsFontResolution    :: !(Maybe Int)
-  , _dsdsYPosition         :: !(Maybe Int)
-  , _dsdsBackgroundColor   :: !(Maybe DvbSubtitleBackgroundColor)
-  , _dsdsShadowXOffset     :: !(Maybe Int)
-  , _dsdsFontSize          :: !(Maybe Int)
-  , _dsdsXPosition         :: !(Maybe Int)
-  , _dsdsTeletextSpacing   :: !(Maybe DvbSubtitleTeletextSpacing)
-  , _dsdsAlignment         :: !(Maybe DvbSubtitleAlignment)
-  , _dsdsShadowOpacity     :: !(Maybe Int)
-  , _dsdsOutlineColor      :: !(Maybe DvbSubtitleOutlineColor)
-  , _dsdsOutlineSize       :: !(Maybe Int)
-  , _dsdsShadowColor       :: !(Maybe DvbSubtitleShadowColor)
-  , _dsdsFontColor         :: !(Maybe DvbSubtitleFontColor)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DvbSubDestinationSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dsdsBackgroundOpacity' - Specifies the opacity of the background rectangle. 255 is opaque; 0 is transparent. Leaving this parameter blank is equivalent to setting it to 0 (transparent). All burn-in and DVB-Sub font settings must match.
---
--- * 'dsdsFontOpacity' - Specifies the opacity of the burned-in captions. 255 is opaque; 0 is transparent. All burn-in and DVB-Sub font settings must match.
---
--- * 'dsdsShadowYOffset' - Specifies the vertical offset of the shadow relative to the captions in pixels. A value of -2 would result in a shadow offset 2 pixels above the text. All burn-in and DVB-Sub font settings must match.
---
--- * 'dsdsFontResolution' - Font resolution in DPI (dots per inch); default is 96 dpi. All burn-in and DVB-Sub font settings must match.
---
--- * 'dsdsYPosition' - Specifies the vertical position of the caption relative to the top of the output in pixels. A value of 10 would result in the captions starting 10 pixels from the top of the output. If no explicit y_position is provided, the caption will be positioned towards the bottom of the output. This option is not valid for source captions that are STL, 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
---
--- * 'dsdsBackgroundColor' - Undocumented member.
---
--- * 'dsdsShadowXOffset' - Specifies the horizontal offset of the shadow relative to the captions in pixels. A value of -2 would result in a shadow offset 2 pixels to the left. All burn-in and DVB-Sub font settings must match.
---
--- * 'dsdsFontSize' - A positive integer indicates the exact font size in points. Set to 0 for automatic font size selection. All burn-in and DVB-Sub font settings must match.
---
--- * 'dsdsXPosition' - Specifies the horizontal position of the caption relative to the left side of the output in pixels. A value of 10 would result in the captions starting 10 pixels from the left of the output. If no explicit x_position is provided, the horizontal caption position will be determined by the alignment parameter. This option is not valid for source captions that are STL, 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
---
--- * 'dsdsTeletextSpacing' - Undocumented member.
---
--- * 'dsdsAlignment' - Undocumented member.
---
--- * 'dsdsShadowOpacity' - Specifies the opacity of the shadow. 255 is opaque; 0 is transparent. Leaving this parameter blank is equivalent to setting it to 0 (transparent). All burn-in and DVB-Sub font settings must match.
---
--- * 'dsdsOutlineColor' - Undocumented member.
---
--- * 'dsdsOutlineSize' - Specifies font outline size in pixels. This option is not valid for source captions that are either 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
---
--- * 'dsdsShadowColor' - Undocumented member.
---
--- * 'dsdsFontColor' - Undocumented member.
-dvbSubDestinationSettings
-    :: DvbSubDestinationSettings
-dvbSubDestinationSettings =
-  DvbSubDestinationSettings'
-    { _dsdsBackgroundOpacity = Nothing
-    , _dsdsFontOpacity = Nothing
-    , _dsdsShadowYOffset = Nothing
-    , _dsdsFontResolution = Nothing
-    , _dsdsYPosition = Nothing
-    , _dsdsBackgroundColor = Nothing
-    , _dsdsShadowXOffset = Nothing
-    , _dsdsFontSize = Nothing
-    , _dsdsXPosition = Nothing
-    , _dsdsTeletextSpacing = Nothing
-    , _dsdsAlignment = Nothing
-    , _dsdsShadowOpacity = Nothing
-    , _dsdsOutlineColor = Nothing
-    , _dsdsOutlineSize = Nothing
-    , _dsdsShadowColor = Nothing
-    , _dsdsFontColor = Nothing
-    }
-
-
--- | Specifies the opacity of the background rectangle. 255 is opaque; 0 is transparent. Leaving this parameter blank is equivalent to setting it to 0 (transparent). All burn-in and DVB-Sub font settings must match.
-dsdsBackgroundOpacity :: Lens' DvbSubDestinationSettings (Maybe Int)
-dsdsBackgroundOpacity = lens _dsdsBackgroundOpacity (\ s a -> s{_dsdsBackgroundOpacity = a})
-
--- | Specifies the opacity of the burned-in captions. 255 is opaque; 0 is transparent. All burn-in and DVB-Sub font settings must match.
-dsdsFontOpacity :: Lens' DvbSubDestinationSettings (Maybe Int)
-dsdsFontOpacity = lens _dsdsFontOpacity (\ s a -> s{_dsdsFontOpacity = a})
-
--- | Specifies the vertical offset of the shadow relative to the captions in pixels. A value of -2 would result in a shadow offset 2 pixels above the text. All burn-in and DVB-Sub font settings must match.
-dsdsShadowYOffset :: Lens' DvbSubDestinationSettings (Maybe Int)
-dsdsShadowYOffset = lens _dsdsShadowYOffset (\ s a -> s{_dsdsShadowYOffset = a})
-
--- | Font resolution in DPI (dots per inch); default is 96 dpi. All burn-in and DVB-Sub font settings must match.
-dsdsFontResolution :: Lens' DvbSubDestinationSettings (Maybe Int)
-dsdsFontResolution = lens _dsdsFontResolution (\ s a -> s{_dsdsFontResolution = a})
-
--- | Specifies the vertical position of the caption relative to the top of the output in pixels. A value of 10 would result in the captions starting 10 pixels from the top of the output. If no explicit y_position is provided, the caption will be positioned towards the bottom of the output. This option is not valid for source captions that are STL, 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
-dsdsYPosition :: Lens' DvbSubDestinationSettings (Maybe Int)
-dsdsYPosition = lens _dsdsYPosition (\ s a -> s{_dsdsYPosition = a})
-
--- | Undocumented member.
-dsdsBackgroundColor :: Lens' DvbSubDestinationSettings (Maybe DvbSubtitleBackgroundColor)
-dsdsBackgroundColor = lens _dsdsBackgroundColor (\ s a -> s{_dsdsBackgroundColor = a})
-
--- | Specifies the horizontal offset of the shadow relative to the captions in pixels. A value of -2 would result in a shadow offset 2 pixels to the left. All burn-in and DVB-Sub font settings must match.
-dsdsShadowXOffset :: Lens' DvbSubDestinationSettings (Maybe Int)
-dsdsShadowXOffset = lens _dsdsShadowXOffset (\ s a -> s{_dsdsShadowXOffset = a})
-
--- | A positive integer indicates the exact font size in points. Set to 0 for automatic font size selection. All burn-in and DVB-Sub font settings must match.
-dsdsFontSize :: Lens' DvbSubDestinationSettings (Maybe Int)
-dsdsFontSize = lens _dsdsFontSize (\ s a -> s{_dsdsFontSize = a})
-
--- | Specifies the horizontal position of the caption relative to the left side of the output in pixels. A value of 10 would result in the captions starting 10 pixels from the left of the output. If no explicit x_position is provided, the horizontal caption position will be determined by the alignment parameter. This option is not valid for source captions that are STL, 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
-dsdsXPosition :: Lens' DvbSubDestinationSettings (Maybe Int)
-dsdsXPosition = lens _dsdsXPosition (\ s a -> s{_dsdsXPosition = a})
-
--- | Undocumented member.
-dsdsTeletextSpacing :: Lens' DvbSubDestinationSettings (Maybe DvbSubtitleTeletextSpacing)
-dsdsTeletextSpacing = lens _dsdsTeletextSpacing (\ s a -> s{_dsdsTeletextSpacing = a})
-
--- | Undocumented member.
-dsdsAlignment :: Lens' DvbSubDestinationSettings (Maybe DvbSubtitleAlignment)
-dsdsAlignment = lens _dsdsAlignment (\ s a -> s{_dsdsAlignment = a})
-
--- | Specifies the opacity of the shadow. 255 is opaque; 0 is transparent. Leaving this parameter blank is equivalent to setting it to 0 (transparent). All burn-in and DVB-Sub font settings must match.
-dsdsShadowOpacity :: Lens' DvbSubDestinationSettings (Maybe Int)
-dsdsShadowOpacity = lens _dsdsShadowOpacity (\ s a -> s{_dsdsShadowOpacity = a})
-
--- | Undocumented member.
-dsdsOutlineColor :: Lens' DvbSubDestinationSettings (Maybe DvbSubtitleOutlineColor)
-dsdsOutlineColor = lens _dsdsOutlineColor (\ s a -> s{_dsdsOutlineColor = a})
-
--- | Specifies font outline size in pixels. This option is not valid for source captions that are either 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
-dsdsOutlineSize :: Lens' DvbSubDestinationSettings (Maybe Int)
-dsdsOutlineSize = lens _dsdsOutlineSize (\ s a -> s{_dsdsOutlineSize = a})
-
--- | Undocumented member.
-dsdsShadowColor :: Lens' DvbSubDestinationSettings (Maybe DvbSubtitleShadowColor)
-dsdsShadowColor = lens _dsdsShadowColor (\ s a -> s{_dsdsShadowColor = a})
-
--- | Undocumented member.
-dsdsFontColor :: Lens' DvbSubDestinationSettings (Maybe DvbSubtitleFontColor)
-dsdsFontColor = lens _dsdsFontColor (\ s a -> s{_dsdsFontColor = a})
-
-instance FromJSON DvbSubDestinationSettings where
-        parseJSON
-          = withObject "DvbSubDestinationSettings"
-              (\ x ->
-                 DvbSubDestinationSettings' <$>
-                   (x .:? "backgroundOpacity") <*> (x .:? "fontOpacity")
-                     <*> (x .:? "shadowYOffset")
-                     <*> (x .:? "fontResolution")
-                     <*> (x .:? "yPosition")
-                     <*> (x .:? "backgroundColor")
-                     <*> (x .:? "shadowXOffset")
-                     <*> (x .:? "fontSize")
-                     <*> (x .:? "xPosition")
-                     <*> (x .:? "teletextSpacing")
-                     <*> (x .:? "alignment")
-                     <*> (x .:? "shadowOpacity")
-                     <*> (x .:? "outlineColor")
-                     <*> (x .:? "outlineSize")
-                     <*> (x .:? "shadowColor")
-                     <*> (x .:? "fontColor"))
-
-instance Hashable DvbSubDestinationSettings where
-
-instance NFData DvbSubDestinationSettings where
-
-instance ToJSON DvbSubDestinationSettings where
-        toJSON DvbSubDestinationSettings'{..}
-          = object
-              (catMaybes
-                 [("backgroundOpacity" .=) <$> _dsdsBackgroundOpacity,
-                  ("fontOpacity" .=) <$> _dsdsFontOpacity,
-                  ("shadowYOffset" .=) <$> _dsdsShadowYOffset,
-                  ("fontResolution" .=) <$> _dsdsFontResolution,
-                  ("yPosition" .=) <$> _dsdsYPosition,
-                  ("backgroundColor" .=) <$> _dsdsBackgroundColor,
-                  ("shadowXOffset" .=) <$> _dsdsShadowXOffset,
-                  ("fontSize" .=) <$> _dsdsFontSize,
-                  ("xPosition" .=) <$> _dsdsXPosition,
-                  ("teletextSpacing" .=) <$> _dsdsTeletextSpacing,
-                  ("alignment" .=) <$> _dsdsAlignment,
-                  ("shadowOpacity" .=) <$> _dsdsShadowOpacity,
-                  ("outlineColor" .=) <$> _dsdsOutlineColor,
-                  ("outlineSize" .=) <$> _dsdsOutlineSize,
-                  ("shadowColor" .=) <$> _dsdsShadowColor,
-                  ("fontColor" .=) <$> _dsdsFontColor])
-
--- | DVB Sub Source Settings
---
--- /See:/ 'dvbSubSourceSettings' smart constructor.
-newtype DvbSubSourceSettings = DvbSubSourceSettings'
-  { _dsssPid :: Maybe Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DvbSubSourceSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dsssPid' - When using DVB-Sub with Burn-In or SMPTE-TT, use this PID for the source content. Unused for DVB-Sub passthrough. All DVB-Sub content is passed through, regardless of selectors.
-dvbSubSourceSettings
-    :: DvbSubSourceSettings
-dvbSubSourceSettings = DvbSubSourceSettings' {_dsssPid = Nothing}
-
-
--- | When using DVB-Sub with Burn-In or SMPTE-TT, use this PID for the source content. Unused for DVB-Sub passthrough. All DVB-Sub content is passed through, regardless of selectors.
-dsssPid :: Lens' DvbSubSourceSettings (Maybe Int)
-dsssPid = lens _dsssPid (\ s a -> s{_dsssPid = a})
-
-instance FromJSON DvbSubSourceSettings where
-        parseJSON
-          = withObject "DvbSubSourceSettings"
-              (\ x -> DvbSubSourceSettings' <$> (x .:? "pid"))
-
-instance Hashable DvbSubSourceSettings where
-
-instance NFData DvbSubSourceSettings where
-
-instance ToJSON DvbSubSourceSettings where
-        toJSON DvbSubSourceSettings'{..}
-          = object (catMaybes [("pid" .=) <$> _dsssPid])
-
--- | Inserts DVB Time and Date Table (TDT) at the specified table repetition interval.
---
--- /See:/ 'dvbTdtSettings' smart constructor.
-newtype DvbTdtSettings = DvbTdtSettings'
-  { _dtsTdtInterval :: Maybe Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DvbTdtSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtsTdtInterval' - The number of milliseconds between instances of this table in the output transport stream.
-dvbTdtSettings
-    :: DvbTdtSettings
-dvbTdtSettings = DvbTdtSettings' {_dtsTdtInterval = Nothing}
-
-
--- | The number of milliseconds between instances of this table in the output transport stream.
-dtsTdtInterval :: Lens' DvbTdtSettings (Maybe Int)
-dtsTdtInterval = lens _dtsTdtInterval (\ s a -> s{_dtsTdtInterval = a})
-
-instance FromJSON DvbTdtSettings where
-        parseJSON
-          = withObject "DvbTdtSettings"
-              (\ x -> DvbTdtSettings' <$> (x .:? "tdtInterval"))
-
-instance Hashable DvbTdtSettings where
-
-instance NFData DvbTdtSettings where
-
-instance ToJSON DvbTdtSettings where
-        toJSON DvbTdtSettings'{..}
-          = object
-              (catMaybes [("tdtInterval" .=) <$> _dtsTdtInterval])
-
--- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings) to the value EAC3.
---
--- /See:/ 'eac3Settings' smart constructor.
-data Eac3Settings = Eac3Settings'
-  { _esStereoDownmix               :: !(Maybe Eac3StereoDownmix)
-  , _esLoRoCenterMixLevel          :: !(Maybe Double)
-  , _esLtRtCenterMixLevel          :: !(Maybe Double)
-  , _esLfeFilter                   :: !(Maybe Eac3LfeFilter)
-  , _esDynamicRangeCompressionLine :: !(Maybe Eac3DynamicRangeCompressionLine)
-  , _esLtRtSurroundMixLevel        :: !(Maybe Double)
-  , _esMetadataControl             :: !(Maybe Eac3MetadataControl)
-  , _esLoRoSurroundMixLevel        :: !(Maybe Double)
-  , _esSurroundMode                :: !(Maybe Eac3SurroundMode)
-  , _esAttenuationControl          :: !(Maybe Eac3AttenuationControl)
-  , _esPassthroughControl          :: !(Maybe Eac3PassthroughControl)
-  , _esBitstreamMode               :: !(Maybe Eac3BitstreamMode)
-  , _esLfeControl                  :: !(Maybe Eac3LfeControl)
-  , _esDynamicRangeCompressionRf   :: !(Maybe Eac3DynamicRangeCompressionRf)
-  , _esCodingMode                  :: !(Maybe Eac3CodingMode)
-  , _esSampleRate                  :: !(Maybe Int)
-  , _esDcFilter                    :: !(Maybe Eac3DcFilter)
-  , _esBitrate                     :: !(Maybe Int)
-  , _esPhaseControl                :: !(Maybe Eac3PhaseControl)
-  , _esSurroundExMode              :: !(Maybe Eac3SurroundExMode)
-  , _esDialnorm                    :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Eac3Settings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'esStereoDownmix' - Undocumented member.
---
--- * 'esLoRoCenterMixLevel' - Left only/Right only center mix level. Only used for 3/2 coding mode. Valid values: 3.0, 1.5, 0.0, -1.5 -3.0 -4.5 -6.0 -60
---
--- * 'esLtRtCenterMixLevel' - Left total/Right total center mix level. Only used for 3/2 coding mode. Valid values: 3.0, 1.5, 0.0, -1.5 -3.0 -4.5 -6.0 -60
---
--- * 'esLfeFilter' - Undocumented member.
---
--- * 'esDynamicRangeCompressionLine' - Undocumented member.
---
--- * 'esLtRtSurroundMixLevel' - Left total/Right total surround mix level. Only used for 3/2 coding mode. Valid values: -1.5 -3.0 -4.5 -6.0 -60
---
--- * 'esMetadataControl' - Undocumented member.
---
--- * 'esLoRoSurroundMixLevel' - Left only/Right only surround mix level. Only used for 3/2 coding mode. Valid values: -1.5 -3.0 -4.5 -6.0 -60
---
--- * 'esSurroundMode' - Undocumented member.
---
--- * 'esAttenuationControl' - Undocumented member.
---
--- * 'esPassthroughControl' - Undocumented member.
---
--- * 'esBitstreamMode' - Undocumented member.
---
--- * 'esLfeControl' - Undocumented member.
---
--- * 'esDynamicRangeCompressionRf' - Undocumented member.
---
--- * 'esCodingMode' - Undocumented member.
---
--- * 'esSampleRate' - Sample rate in hz. Sample rate is always 48000.
---
--- * 'esDcFilter' - Undocumented member.
---
--- * 'esBitrate' - Average bitrate in bits/second. Valid bitrates depend on the coding mode.
---
--- * 'esPhaseControl' - Undocumented member.
---
--- * 'esSurroundExMode' - Undocumented member.
---
--- * 'esDialnorm' - Sets the dialnorm for the output. If blank and input audio is Dolby Digital Plus, dialnorm will be passed through.
-eac3Settings
-    :: Eac3Settings
-eac3Settings =
-  Eac3Settings'
-    { _esStereoDownmix = Nothing
-    , _esLoRoCenterMixLevel = Nothing
-    , _esLtRtCenterMixLevel = Nothing
-    , _esLfeFilter = Nothing
-    , _esDynamicRangeCompressionLine = Nothing
-    , _esLtRtSurroundMixLevel = Nothing
-    , _esMetadataControl = Nothing
-    , _esLoRoSurroundMixLevel = Nothing
-    , _esSurroundMode = Nothing
-    , _esAttenuationControl = Nothing
-    , _esPassthroughControl = Nothing
-    , _esBitstreamMode = Nothing
-    , _esLfeControl = Nothing
-    , _esDynamicRangeCompressionRf = Nothing
-    , _esCodingMode = Nothing
-    , _esSampleRate = Nothing
-    , _esDcFilter = Nothing
-    , _esBitrate = Nothing
-    , _esPhaseControl = Nothing
-    , _esSurroundExMode = Nothing
-    , _esDialnorm = Nothing
-    }
-
-
--- | Undocumented member.
-esStereoDownmix :: Lens' Eac3Settings (Maybe Eac3StereoDownmix)
-esStereoDownmix = lens _esStereoDownmix (\ s a -> s{_esStereoDownmix = a})
-
--- | Left only/Right only center mix level. Only used for 3/2 coding mode. Valid values: 3.0, 1.5, 0.0, -1.5 -3.0 -4.5 -6.0 -60
-esLoRoCenterMixLevel :: Lens' Eac3Settings (Maybe Double)
-esLoRoCenterMixLevel = lens _esLoRoCenterMixLevel (\ s a -> s{_esLoRoCenterMixLevel = a})
-
--- | Left total/Right total center mix level. Only used for 3/2 coding mode. Valid values: 3.0, 1.5, 0.0, -1.5 -3.0 -4.5 -6.0 -60
-esLtRtCenterMixLevel :: Lens' Eac3Settings (Maybe Double)
-esLtRtCenterMixLevel = lens _esLtRtCenterMixLevel (\ s a -> s{_esLtRtCenterMixLevel = a})
-
--- | Undocumented member.
-esLfeFilter :: Lens' Eac3Settings (Maybe Eac3LfeFilter)
-esLfeFilter = lens _esLfeFilter (\ s a -> s{_esLfeFilter = a})
-
--- | Undocumented member.
-esDynamicRangeCompressionLine :: Lens' Eac3Settings (Maybe Eac3DynamicRangeCompressionLine)
-esDynamicRangeCompressionLine = lens _esDynamicRangeCompressionLine (\ s a -> s{_esDynamicRangeCompressionLine = a})
-
--- | Left total/Right total surround mix level. Only used for 3/2 coding mode. Valid values: -1.5 -3.0 -4.5 -6.0 -60
-esLtRtSurroundMixLevel :: Lens' Eac3Settings (Maybe Double)
-esLtRtSurroundMixLevel = lens _esLtRtSurroundMixLevel (\ s a -> s{_esLtRtSurroundMixLevel = a})
-
--- | Undocumented member.
-esMetadataControl :: Lens' Eac3Settings (Maybe Eac3MetadataControl)
-esMetadataControl = lens _esMetadataControl (\ s a -> s{_esMetadataControl = a})
-
--- | Left only/Right only surround mix level. Only used for 3/2 coding mode. Valid values: -1.5 -3.0 -4.5 -6.0 -60
-esLoRoSurroundMixLevel :: Lens' Eac3Settings (Maybe Double)
-esLoRoSurroundMixLevel = lens _esLoRoSurroundMixLevel (\ s a -> s{_esLoRoSurroundMixLevel = a})
-
--- | Undocumented member.
-esSurroundMode :: Lens' Eac3Settings (Maybe Eac3SurroundMode)
-esSurroundMode = lens _esSurroundMode (\ s a -> s{_esSurroundMode = a})
-
--- | Undocumented member.
-esAttenuationControl :: Lens' Eac3Settings (Maybe Eac3AttenuationControl)
-esAttenuationControl = lens _esAttenuationControl (\ s a -> s{_esAttenuationControl = a})
-
--- | Undocumented member.
-esPassthroughControl :: Lens' Eac3Settings (Maybe Eac3PassthroughControl)
-esPassthroughControl = lens _esPassthroughControl (\ s a -> s{_esPassthroughControl = a})
-
--- | Undocumented member.
-esBitstreamMode :: Lens' Eac3Settings (Maybe Eac3BitstreamMode)
-esBitstreamMode = lens _esBitstreamMode (\ s a -> s{_esBitstreamMode = a})
-
--- | Undocumented member.
-esLfeControl :: Lens' Eac3Settings (Maybe Eac3LfeControl)
-esLfeControl = lens _esLfeControl (\ s a -> s{_esLfeControl = a})
-
--- | Undocumented member.
-esDynamicRangeCompressionRf :: Lens' Eac3Settings (Maybe Eac3DynamicRangeCompressionRf)
-esDynamicRangeCompressionRf = lens _esDynamicRangeCompressionRf (\ s a -> s{_esDynamicRangeCompressionRf = a})
-
--- | Undocumented member.
-esCodingMode :: Lens' Eac3Settings (Maybe Eac3CodingMode)
-esCodingMode = lens _esCodingMode (\ s a -> s{_esCodingMode = a})
-
--- | Sample rate in hz. Sample rate is always 48000.
-esSampleRate :: Lens' Eac3Settings (Maybe Int)
-esSampleRate = lens _esSampleRate (\ s a -> s{_esSampleRate = a})
-
--- | Undocumented member.
-esDcFilter :: Lens' Eac3Settings (Maybe Eac3DcFilter)
-esDcFilter = lens _esDcFilter (\ s a -> s{_esDcFilter = a})
-
--- | Average bitrate in bits/second. Valid bitrates depend on the coding mode.
-esBitrate :: Lens' Eac3Settings (Maybe Int)
-esBitrate = lens _esBitrate (\ s a -> s{_esBitrate = a})
-
--- | Undocumented member.
-esPhaseControl :: Lens' Eac3Settings (Maybe Eac3PhaseControl)
-esPhaseControl = lens _esPhaseControl (\ s a -> s{_esPhaseControl = a})
-
--- | Undocumented member.
-esSurroundExMode :: Lens' Eac3Settings (Maybe Eac3SurroundExMode)
-esSurroundExMode = lens _esSurroundExMode (\ s a -> s{_esSurroundExMode = a})
-
--- | Sets the dialnorm for the output. If blank and input audio is Dolby Digital Plus, dialnorm will be passed through.
-esDialnorm :: Lens' Eac3Settings (Maybe Int)
-esDialnorm = lens _esDialnorm (\ s a -> s{_esDialnorm = a})
-
-instance FromJSON Eac3Settings where
-        parseJSON
-          = withObject "Eac3Settings"
-              (\ x ->
-                 Eac3Settings' <$>
-                   (x .:? "stereoDownmix") <*>
-                     (x .:? "loRoCenterMixLevel")
-                     <*> (x .:? "ltRtCenterMixLevel")
-                     <*> (x .:? "lfeFilter")
-                     <*> (x .:? "dynamicRangeCompressionLine")
-                     <*> (x .:? "ltRtSurroundMixLevel")
-                     <*> (x .:? "metadataControl")
-                     <*> (x .:? "loRoSurroundMixLevel")
-                     <*> (x .:? "surroundMode")
-                     <*> (x .:? "attenuationControl")
-                     <*> (x .:? "passthroughControl")
-                     <*> (x .:? "bitstreamMode")
-                     <*> (x .:? "lfeControl")
-                     <*> (x .:? "dynamicRangeCompressionRf")
-                     <*> (x .:? "codingMode")
-                     <*> (x .:? "sampleRate")
-                     <*> (x .:? "dcFilter")
-                     <*> (x .:? "bitrate")
-                     <*> (x .:? "phaseControl")
-                     <*> (x .:? "surroundExMode")
-                     <*> (x .:? "dialnorm"))
-
-instance Hashable Eac3Settings where
-
-instance NFData Eac3Settings where
-
-instance ToJSON Eac3Settings where
-        toJSON Eac3Settings'{..}
-          = object
-              (catMaybes
-                 [("stereoDownmix" .=) <$> _esStereoDownmix,
-                  ("loRoCenterMixLevel" .=) <$> _esLoRoCenterMixLevel,
-                  ("ltRtCenterMixLevel" .=) <$> _esLtRtCenterMixLevel,
-                  ("lfeFilter" .=) <$> _esLfeFilter,
-                  ("dynamicRangeCompressionLine" .=) <$>
-                    _esDynamicRangeCompressionLine,
-                  ("ltRtSurroundMixLevel" .=) <$>
-                    _esLtRtSurroundMixLevel,
-                  ("metadataControl" .=) <$> _esMetadataControl,
-                  ("loRoSurroundMixLevel" .=) <$>
-                    _esLoRoSurroundMixLevel,
-                  ("surroundMode" .=) <$> _esSurroundMode,
-                  ("attenuationControl" .=) <$> _esAttenuationControl,
-                  ("passthroughControl" .=) <$> _esPassthroughControl,
-                  ("bitstreamMode" .=) <$> _esBitstreamMode,
-                  ("lfeControl" .=) <$> _esLfeControl,
-                  ("dynamicRangeCompressionRf" .=) <$>
-                    _esDynamicRangeCompressionRf,
-                  ("codingMode" .=) <$> _esCodingMode,
-                  ("sampleRate" .=) <$> _esSampleRate,
-                  ("dcFilter" .=) <$> _esDcFilter,
-                  ("bitrate" .=) <$> _esBitrate,
-                  ("phaseControl" .=) <$> _esPhaseControl,
-                  ("surroundExMode" .=) <$> _esSurroundExMode,
-                  ("dialnorm" .=) <$> _esDialnorm])
-
--- | Settings for embedded captions Source
---
--- /See:/ 'embeddedSourceSettings' smart constructor.
-data EmbeddedSourceSettings = EmbeddedSourceSettings'
-  { _essConvert608To708        :: !(Maybe EmbeddedConvert608To708)
-  , _essSource608TrackNumber   :: !(Maybe Int)
-  , _essSource608ChannelNumber :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EmbeddedSourceSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'essConvert608To708' - Undocumented member.
---
--- * 'essSource608TrackNumber' - Specifies the video track index used for extracting captions. The system only supports one input video track, so this should always be set to '1'.
---
--- * 'essSource608ChannelNumber' - Specifies the 608/708 channel number within the video track from which to extract captions. Unused for passthrough.
-embeddedSourceSettings
-    :: EmbeddedSourceSettings
-embeddedSourceSettings =
-  EmbeddedSourceSettings'
-    { _essConvert608To708 = Nothing
-    , _essSource608TrackNumber = Nothing
-    , _essSource608ChannelNumber = Nothing
-    }
-
-
--- | Undocumented member.
-essConvert608To708 :: Lens' EmbeddedSourceSettings (Maybe EmbeddedConvert608To708)
-essConvert608To708 = lens _essConvert608To708 (\ s a -> s{_essConvert608To708 = a})
-
--- | Specifies the video track index used for extracting captions. The system only supports one input video track, so this should always be set to '1'.
-essSource608TrackNumber :: Lens' EmbeddedSourceSettings (Maybe Int)
-essSource608TrackNumber = lens _essSource608TrackNumber (\ s a -> s{_essSource608TrackNumber = a})
-
--- | Specifies the 608/708 channel number within the video track from which to extract captions. Unused for passthrough.
-essSource608ChannelNumber :: Lens' EmbeddedSourceSettings (Maybe Int)
-essSource608ChannelNumber = lens _essSource608ChannelNumber (\ s a -> s{_essSource608ChannelNumber = a})
-
-instance FromJSON EmbeddedSourceSettings where
-        parseJSON
-          = withObject "EmbeddedSourceSettings"
-              (\ x ->
-                 EmbeddedSourceSettings' <$>
-                   (x .:? "convert608To708") <*>
-                     (x .:? "source608TrackNumber")
-                     <*> (x .:? "source608ChannelNumber"))
-
-instance Hashable EmbeddedSourceSettings where
-
-instance NFData EmbeddedSourceSettings where
-
-instance ToJSON EmbeddedSourceSettings where
-        toJSON EmbeddedSourceSettings'{..}
-          = object
-              (catMaybes
-                 [("convert608To708" .=) <$> _essConvert608To708,
-                  ("source608TrackNumber" .=) <$>
-                    _essSource608TrackNumber,
-                  ("source608ChannelNumber" .=) <$>
-                    _essSource608ChannelNumber])
-
--- | Describes account specific API endpoint
---
--- /See:/ 'endpoint' smart constructor.
-newtype Endpoint = Endpoint'
-  { _eURL :: Maybe Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Endpoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eURL' - URL of endpoint
-endpoint
-    :: Endpoint
-endpoint = Endpoint' {_eURL = Nothing}
-
-
--- | URL of endpoint
-eURL :: Lens' Endpoint (Maybe Text)
-eURL = lens _eURL (\ s a -> s{_eURL = a})
-
-instance FromJSON Endpoint where
-        parseJSON
-          = withObject "Endpoint"
-              (\ x -> Endpoint' <$> (x .:? "url"))
-
-instance Hashable Endpoint where
-
-instance NFData Endpoint where
-
--- | Settings for F4v container
---
--- /See:/ 'f4vSettings' smart constructor.
-newtype F4vSettings = F4vSettings'
-  { _fsMoovPlacement :: Maybe F4vMoovPlacement
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'F4vSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fsMoovPlacement' - Undocumented member.
-f4vSettings
-    :: F4vSettings
-f4vSettings = F4vSettings' {_fsMoovPlacement = Nothing}
-
-
--- | Undocumented member.
-fsMoovPlacement :: Lens' F4vSettings (Maybe F4vMoovPlacement)
-fsMoovPlacement = lens _fsMoovPlacement (\ s a -> s{_fsMoovPlacement = a})
-
-instance FromJSON F4vSettings where
-        parseJSON
-          = withObject "F4vSettings"
-              (\ x -> F4vSettings' <$> (x .:? "moovPlacement"))
-
-instance Hashable F4vSettings where
-
-instance NFData F4vSettings where
-
-instance ToJSON F4vSettings where
-        toJSON F4vSettings'{..}
-          = object
-              (catMaybes
-                 [("moovPlacement" .=) <$> _fsMoovPlacement])
-
--- | Required when you set (Type) under (OutputGroups)>(OutputGroupSettings) to FILE_GROUP_SETTINGS.
---
--- /See:/ 'fileGroupSettings' smart constructor.
-newtype FileGroupSettings = FileGroupSettings'
-  { _fgsDestination :: Maybe Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'FileGroupSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fgsDestination' - Use Destination (Destination) to specify the S3 output location and the output filename base. Destination accepts format identifiers. If you do not specify the base filename in the URI, the service will use the filename of the input file. If your job has multiple inputs, the service uses the filename of the first input file.
-fileGroupSettings
-    :: FileGroupSettings
-fileGroupSettings = FileGroupSettings' {_fgsDestination = Nothing}
-
-
--- | Use Destination (Destination) to specify the S3 output location and the output filename base. Destination accepts format identifiers. If you do not specify the base filename in the URI, the service will use the filename of the input file. If your job has multiple inputs, the service uses the filename of the first input file.
-fgsDestination :: Lens' FileGroupSettings (Maybe Text)
-fgsDestination = lens _fgsDestination (\ s a -> s{_fgsDestination = a})
-
-instance FromJSON FileGroupSettings where
-        parseJSON
-          = withObject "FileGroupSettings"
-              (\ x -> FileGroupSettings' <$> (x .:? "destination"))
-
-instance Hashable FileGroupSettings where
-
-instance NFData FileGroupSettings where
-
-instance ToJSON FileGroupSettings where
-        toJSON FileGroupSettings'{..}
-          = object
-              (catMaybes [("destination" .=) <$> _fgsDestination])
-
--- | Settings for File-based Captions in Source
---
--- /See:/ 'fileSourceSettings' smart constructor.
-data FileSourceSettings = FileSourceSettings'
-  { _fssConvert608To708 :: !(Maybe FileSourceConvert608To708)
-  , _fssTimeDelta       :: !(Maybe Int)
-  , _fssSourceFile      :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'FileSourceSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fssConvert608To708' - Undocumented member.
---
--- * 'fssTimeDelta' - Specifies a time delta in seconds to offset the captions from the source file.
---
--- * 'fssSourceFile' - External caption file used for loading captions. Accepted file extensions are 'scc', 'ttml', 'dfxp', 'stl', 'srt', and 'smi'.
-fileSourceSettings
-    :: FileSourceSettings
-fileSourceSettings =
-  FileSourceSettings'
-    { _fssConvert608To708 = Nothing
-    , _fssTimeDelta = Nothing
-    , _fssSourceFile = Nothing
-    }
-
-
--- | Undocumented member.
-fssConvert608To708 :: Lens' FileSourceSettings (Maybe FileSourceConvert608To708)
-fssConvert608To708 = lens _fssConvert608To708 (\ s a -> s{_fssConvert608To708 = a})
-
--- | Specifies a time delta in seconds to offset the captions from the source file.
-fssTimeDelta :: Lens' FileSourceSettings (Maybe Int)
-fssTimeDelta = lens _fssTimeDelta (\ s a -> s{_fssTimeDelta = a})
-
--- | External caption file used for loading captions. Accepted file extensions are 'scc', 'ttml', 'dfxp', 'stl', 'srt', and 'smi'.
-fssSourceFile :: Lens' FileSourceSettings (Maybe Text)
-fssSourceFile = lens _fssSourceFile (\ s a -> s{_fssSourceFile = a})
-
-instance FromJSON FileSourceSettings where
-        parseJSON
-          = withObject "FileSourceSettings"
-              (\ x ->
-                 FileSourceSettings' <$>
-                   (x .:? "convert608To708") <*> (x .:? "timeDelta") <*>
-                     (x .:? "sourceFile"))
-
-instance Hashable FileSourceSettings where
-
-instance NFData FileSourceSettings where
-
-instance ToJSON FileSourceSettings where
-        toJSON FileSourceSettings'{..}
-          = object
-              (catMaybes
-                 [("convert608To708" .=) <$> _fssConvert608To708,
-                  ("timeDelta" .=) <$> _fssTimeDelta,
-                  ("sourceFile" .=) <$> _fssSourceFile])
-
--- | Required when you set (Codec) under (VideoDescription)>(CodecSettings) to the value FRAME_CAPTURE.
---
--- /See:/ 'frameCaptureSettings' smart constructor.
-data FrameCaptureSettings = FrameCaptureSettings'
-  { _fcsQuality              :: !(Maybe Int)
-  , _fcsFramerateDenominator :: !(Maybe Int)
-  , _fcsMaxCaptures          :: !(Maybe Int)
-  , _fcsFramerateNumerator   :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'FrameCaptureSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fcsQuality' - JPEG Quality - a higher value equals higher quality.
---
--- * 'fcsFramerateDenominator' - Frame capture will encode the first frame of the output stream, then one frame every framerateDenominator/framerateNumerator seconds. For example, settings of framerateNumerator = 1 and framerateDenominator = 3 (a rate of 1/3 frame per second) will capture the first frame, then 1 frame every 3s. Files will be named as filename.n.jpg where n is the 0-based sequence number of each Capture.
---
--- * 'fcsMaxCaptures' - Maximum number of captures (encoded jpg output files).
---
--- * 'fcsFramerateNumerator' - Frame capture will encode the first frame of the output stream, then one frame every framerateDenominator/framerateNumerator seconds. For example, settings of framerateNumerator = 1 and framerateDenominator = 3 (a rate of 1/3 frame per second) will capture the first frame, then 1 frame every 3s. Files will be named as filename.NNNNNNN.jpg where N is the 0-based frame sequence number zero padded to 7 decimal places.
-frameCaptureSettings
-    :: FrameCaptureSettings
-frameCaptureSettings =
-  FrameCaptureSettings'
-    { _fcsQuality = Nothing
-    , _fcsFramerateDenominator = Nothing
-    , _fcsMaxCaptures = Nothing
-    , _fcsFramerateNumerator = Nothing
-    }
-
-
--- | JPEG Quality - a higher value equals higher quality.
-fcsQuality :: Lens' FrameCaptureSettings (Maybe Int)
-fcsQuality = lens _fcsQuality (\ s a -> s{_fcsQuality = a})
-
--- | Frame capture will encode the first frame of the output stream, then one frame every framerateDenominator/framerateNumerator seconds. For example, settings of framerateNumerator = 1 and framerateDenominator = 3 (a rate of 1/3 frame per second) will capture the first frame, then 1 frame every 3s. Files will be named as filename.n.jpg where n is the 0-based sequence number of each Capture.
-fcsFramerateDenominator :: Lens' FrameCaptureSettings (Maybe Int)
-fcsFramerateDenominator = lens _fcsFramerateDenominator (\ s a -> s{_fcsFramerateDenominator = a})
-
--- | Maximum number of captures (encoded jpg output files).
-fcsMaxCaptures :: Lens' FrameCaptureSettings (Maybe Int)
-fcsMaxCaptures = lens _fcsMaxCaptures (\ s a -> s{_fcsMaxCaptures = a})
-
--- | Frame capture will encode the first frame of the output stream, then one frame every framerateDenominator/framerateNumerator seconds. For example, settings of framerateNumerator = 1 and framerateDenominator = 3 (a rate of 1/3 frame per second) will capture the first frame, then 1 frame every 3s. Files will be named as filename.NNNNNNN.jpg where N is the 0-based frame sequence number zero padded to 7 decimal places.
-fcsFramerateNumerator :: Lens' FrameCaptureSettings (Maybe Int)
-fcsFramerateNumerator = lens _fcsFramerateNumerator (\ s a -> s{_fcsFramerateNumerator = a})
-
-instance FromJSON FrameCaptureSettings where
-        parseJSON
-          = withObject "FrameCaptureSettings"
-              (\ x ->
-                 FrameCaptureSettings' <$>
-                   (x .:? "quality") <*> (x .:? "framerateDenominator")
-                     <*> (x .:? "maxCaptures")
-                     <*> (x .:? "framerateNumerator"))
-
-instance Hashable FrameCaptureSettings where
-
-instance NFData FrameCaptureSettings where
-
-instance ToJSON FrameCaptureSettings where
-        toJSON FrameCaptureSettings'{..}
-          = object
-              (catMaybes
-                 [("quality" .=) <$> _fcsQuality,
-                  ("framerateDenominator" .=) <$>
-                    _fcsFramerateDenominator,
-                  ("maxCaptures" .=) <$> _fcsMaxCaptures,
-                  ("framerateNumerator" .=) <$>
-                    _fcsFramerateNumerator])
-
--- | Required when you set (Codec) under (VideoDescription)>(CodecSettings) to the value H_264.
---
--- /See:/ 'h264Settings' smart constructor.
-data H264Settings = H264Settings'
-  { _hUnregisteredSeiTimecode :: !(Maybe H264UnregisteredSeiTimecode)
-  , _hQualityTuningLevel :: !(Maybe H264QualityTuningLevel)
-  , _hTemporalAdaptiveQuantization :: !(Maybe H264TemporalAdaptiveQuantization)
-  , _hSceneChangeDetect :: !(Maybe H264SceneChangeDetect)
-  , _hHrdBufferInitialFillPercentage :: !(Maybe Int)
-  , _hSlowPal :: !(Maybe H264SlowPal)
-  , _hParNumerator :: !(Maybe Int)
-  , _hGopSize :: !(Maybe Double)
-  , _hNumberBFramesBetweenReferenceFrames :: !(Maybe Int)
-  , _hGopSizeUnits :: !(Maybe H264GopSizeUnits)
-  , _hHrdBufferSize :: !(Maybe Int)
-  , _hSlices :: !(Maybe Int)
-  , _hRateControlMode :: !(Maybe H264RateControlMode)
-  , _hNumberReferenceFrames :: !(Maybe Int)
-  , _hTelecine :: !(Maybe H264Telecine)
-  , _hMinIInterval :: !(Maybe Int)
-  , _hInterlaceMode :: !(Maybe H264InterlaceMode)
-  , _hParControl :: !(Maybe H264ParControl)
-  , _hRepeatPps :: !(Maybe H264RepeatPps)
-  , _hFlickerAdaptiveQuantization :: !(Maybe H264FlickerAdaptiveQuantization)
-  , _hSoftness :: !(Maybe Int)
-  , _hCodecProfile :: !(Maybe H264CodecProfile)
-  , _hBitrate :: !(Maybe Int)
-  , _hFramerateDenominator :: !(Maybe Int)
-  , _hFramerateConversionAlgorithm :: !(Maybe H264FramerateConversionAlgorithm)
-  , _hCodecLevel :: !(Maybe H264CodecLevel)
-  , _hEntropyEncoding :: !(Maybe H264EntropyEncoding)
-  , _hFramerateControl :: !(Maybe H264FramerateControl)
-  , _hAdaptiveQuantization :: !(Maybe H264AdaptiveQuantization)
-  , _hFramerateNumerator :: !(Maybe Int)
-  , _hGopBReference :: !(Maybe H264GopBReference)
-  , _hMaxBitrate :: !(Maybe Int)
-  , _hSyntax :: !(Maybe H264Syntax)
-  , _hFieldEncoding :: !(Maybe H264FieldEncoding)
-  , _hGopClosedCadence :: !(Maybe Int)
-  , _hParDenominator :: !(Maybe Int)
-  , _hSpatialAdaptiveQuantization :: !(Maybe H264SpatialAdaptiveQuantization)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'H264Settings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hUnregisteredSeiTimecode' - Undocumented member.
---
--- * 'hQualityTuningLevel' - Undocumented member.
---
--- * 'hTemporalAdaptiveQuantization' - Undocumented member.
---
--- * 'hSceneChangeDetect' - Undocumented member.
---
--- * 'hHrdBufferInitialFillPercentage' - Percentage of the buffer that should initially be filled (HRD buffer model).
---
--- * 'hSlowPal' - Undocumented member.
---
--- * 'hParNumerator' - Pixel Aspect Ratio numerator.
---
--- * 'hGopSize' - GOP Length (keyframe interval) in frames or seconds. Must be greater than zero.
---
--- * 'hNumberBFramesBetweenReferenceFrames' - Number of B-frames between reference frames.
---
--- * 'hGopSizeUnits' - Undocumented member.
---
--- * 'hHrdBufferSize' - Size of buffer (HRD buffer model). Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m.
---
--- * 'hSlices' - Number of slices per picture. Must be less than or equal to the number of macroblock rows for progressive pictures, and less than or equal to half the number of macroblock rows for interlaced pictures.
---
--- * 'hRateControlMode' - Undocumented member.
---
--- * 'hNumberReferenceFrames' - Number of reference frames to use. The encoder may use more than requested if using B-frames and/or interlaced encoding.
---
--- * 'hTelecine' - Undocumented member.
---
--- * 'hMinIInterval' - Enforces separation between repeated (cadence) I-frames and I-frames inserted by Scene Change Detection. If a scene change I-frame is within I-interval frames of a cadence I-frame, the GOP is shrunk and/or stretched to the scene change I-frame. GOP stretch requires enabling lookahead as well as setting I-interval. The normal cadence resumes for the next GOP. This setting is only used when Scene Change Detect is enabled. Note: Maximum GOP stretch = GOP size + Min-I-interval - 1
---
--- * 'hInterlaceMode' - Undocumented member.
---
--- * 'hParControl' - Undocumented member.
---
--- * 'hRepeatPps' - Undocumented member.
---
--- * 'hFlickerAdaptiveQuantization' - Undocumented member.
---
--- * 'hSoftness' - Softness. Selects quantizer matrix, larger values reduce high-frequency content in the encoded image.
---
--- * 'hCodecProfile' - Undocumented member.
---
--- * 'hBitrate' - Average bitrate in bits/second. Required for VBR, CBR, and ABR. Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m. For MS Smooth outputs, bitrates must be unique when rounded down to the nearest multiple of 1000.
---
--- * 'hFramerateDenominator' - When you use the API for transcode jobs that use framerate conversion, specify the framerate as a fraction. For example,  24000 / 1001 = 23.976 fps. Use FramerateDenominator to specify the denominator of this fraction. In this example, use 1001 for the value of FramerateDenominator. When you use the console for transcode jobs that use framerate conversion, provide the value as a decimal number for Framerate. In this example, specify 23.976.
---
--- * 'hFramerateConversionAlgorithm' - Undocumented member.
---
--- * 'hCodecLevel' - Undocumented member.
---
--- * 'hEntropyEncoding' - Undocumented member.
---
--- * 'hFramerateControl' - Undocumented member.
---
--- * 'hAdaptiveQuantization' - Undocumented member.
---
--- * 'hFramerateNumerator' - Framerate numerator - framerate is a fraction, e.g. 24000 / 1001 = 23.976 fps.
---
--- * 'hGopBReference' - Undocumented member.
---
--- * 'hMaxBitrate' - Maximum bitrate in bits/second (for VBR mode only). Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m.
---
--- * 'hSyntax' - Undocumented member.
---
--- * 'hFieldEncoding' - Undocumented member.
---
--- * 'hGopClosedCadence' - Frequency of closed GOPs. In streaming applications, it is recommended that this be set to 1 so a decoder joining mid-stream will receive an IDR frame as quickly as possible. Setting this value to 0 will break output segmenting.
---
--- * 'hParDenominator' - Pixel Aspect Ratio denominator.
---
--- * 'hSpatialAdaptiveQuantization' - Undocumented member.
-h264Settings
-    :: H264Settings
-h264Settings =
-  H264Settings'
-    { _hUnregisteredSeiTimecode = Nothing
-    , _hQualityTuningLevel = Nothing
-    , _hTemporalAdaptiveQuantization = Nothing
-    , _hSceneChangeDetect = Nothing
-    , _hHrdBufferInitialFillPercentage = Nothing
-    , _hSlowPal = Nothing
-    , _hParNumerator = Nothing
-    , _hGopSize = Nothing
-    , _hNumberBFramesBetweenReferenceFrames = Nothing
-    , _hGopSizeUnits = Nothing
-    , _hHrdBufferSize = Nothing
-    , _hSlices = Nothing
-    , _hRateControlMode = Nothing
-    , _hNumberReferenceFrames = Nothing
-    , _hTelecine = Nothing
-    , _hMinIInterval = Nothing
-    , _hInterlaceMode = Nothing
-    , _hParControl = Nothing
-    , _hRepeatPps = Nothing
-    , _hFlickerAdaptiveQuantization = Nothing
-    , _hSoftness = Nothing
-    , _hCodecProfile = Nothing
-    , _hBitrate = Nothing
-    , _hFramerateDenominator = Nothing
-    , _hFramerateConversionAlgorithm = Nothing
-    , _hCodecLevel = Nothing
-    , _hEntropyEncoding = Nothing
-    , _hFramerateControl = Nothing
-    , _hAdaptiveQuantization = Nothing
-    , _hFramerateNumerator = Nothing
-    , _hGopBReference = Nothing
-    , _hMaxBitrate = Nothing
-    , _hSyntax = Nothing
-    , _hFieldEncoding = Nothing
-    , _hGopClosedCadence = Nothing
-    , _hParDenominator = Nothing
-    , _hSpatialAdaptiveQuantization = Nothing
-    }
-
-
--- | Undocumented member.
-hUnregisteredSeiTimecode :: Lens' H264Settings (Maybe H264UnregisteredSeiTimecode)
-hUnregisteredSeiTimecode = lens _hUnregisteredSeiTimecode (\ s a -> s{_hUnregisteredSeiTimecode = a})
-
--- | Undocumented member.
-hQualityTuningLevel :: Lens' H264Settings (Maybe H264QualityTuningLevel)
-hQualityTuningLevel = lens _hQualityTuningLevel (\ s a -> s{_hQualityTuningLevel = a})
-
--- | Undocumented member.
-hTemporalAdaptiveQuantization :: Lens' H264Settings (Maybe H264TemporalAdaptiveQuantization)
-hTemporalAdaptiveQuantization = lens _hTemporalAdaptiveQuantization (\ s a -> s{_hTemporalAdaptiveQuantization = a})
-
--- | Undocumented member.
-hSceneChangeDetect :: Lens' H264Settings (Maybe H264SceneChangeDetect)
-hSceneChangeDetect = lens _hSceneChangeDetect (\ s a -> s{_hSceneChangeDetect = a})
-
--- | Percentage of the buffer that should initially be filled (HRD buffer model).
-hHrdBufferInitialFillPercentage :: Lens' H264Settings (Maybe Int)
-hHrdBufferInitialFillPercentage = lens _hHrdBufferInitialFillPercentage (\ s a -> s{_hHrdBufferInitialFillPercentage = a})
-
--- | Undocumented member.
-hSlowPal :: Lens' H264Settings (Maybe H264SlowPal)
-hSlowPal = lens _hSlowPal (\ s a -> s{_hSlowPal = a})
-
--- | Pixel Aspect Ratio numerator.
-hParNumerator :: Lens' H264Settings (Maybe Int)
-hParNumerator = lens _hParNumerator (\ s a -> s{_hParNumerator = a})
-
--- | GOP Length (keyframe interval) in frames or seconds. Must be greater than zero.
-hGopSize :: Lens' H264Settings (Maybe Double)
-hGopSize = lens _hGopSize (\ s a -> s{_hGopSize = a})
-
--- | Number of B-frames between reference frames.
-hNumberBFramesBetweenReferenceFrames :: Lens' H264Settings (Maybe Int)
-hNumberBFramesBetweenReferenceFrames = lens _hNumberBFramesBetweenReferenceFrames (\ s a -> s{_hNumberBFramesBetweenReferenceFrames = a})
-
--- | Undocumented member.
-hGopSizeUnits :: Lens' H264Settings (Maybe H264GopSizeUnits)
-hGopSizeUnits = lens _hGopSizeUnits (\ s a -> s{_hGopSizeUnits = a})
-
--- | Size of buffer (HRD buffer model). Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m.
-hHrdBufferSize :: Lens' H264Settings (Maybe Int)
-hHrdBufferSize = lens _hHrdBufferSize (\ s a -> s{_hHrdBufferSize = a})
-
--- | Number of slices per picture. Must be less than or equal to the number of macroblock rows for progressive pictures, and less than or equal to half the number of macroblock rows for interlaced pictures.
-hSlices :: Lens' H264Settings (Maybe Int)
-hSlices = lens _hSlices (\ s a -> s{_hSlices = a})
-
--- | Undocumented member.
-hRateControlMode :: Lens' H264Settings (Maybe H264RateControlMode)
-hRateControlMode = lens _hRateControlMode (\ s a -> s{_hRateControlMode = a})
-
--- | Number of reference frames to use. The encoder may use more than requested if using B-frames and/or interlaced encoding.
-hNumberReferenceFrames :: Lens' H264Settings (Maybe Int)
-hNumberReferenceFrames = lens _hNumberReferenceFrames (\ s a -> s{_hNumberReferenceFrames = a})
-
--- | Undocumented member.
-hTelecine :: Lens' H264Settings (Maybe H264Telecine)
-hTelecine = lens _hTelecine (\ s a -> s{_hTelecine = a})
-
--- | Enforces separation between repeated (cadence) I-frames and I-frames inserted by Scene Change Detection. If a scene change I-frame is within I-interval frames of a cadence I-frame, the GOP is shrunk and/or stretched to the scene change I-frame. GOP stretch requires enabling lookahead as well as setting I-interval. The normal cadence resumes for the next GOP. This setting is only used when Scene Change Detect is enabled. Note: Maximum GOP stretch = GOP size + Min-I-interval - 1
-hMinIInterval :: Lens' H264Settings (Maybe Int)
-hMinIInterval = lens _hMinIInterval (\ s a -> s{_hMinIInterval = a})
-
--- | Undocumented member.
-hInterlaceMode :: Lens' H264Settings (Maybe H264InterlaceMode)
-hInterlaceMode = lens _hInterlaceMode (\ s a -> s{_hInterlaceMode = a})
-
--- | Undocumented member.
-hParControl :: Lens' H264Settings (Maybe H264ParControl)
-hParControl = lens _hParControl (\ s a -> s{_hParControl = a})
-
--- | Undocumented member.
-hRepeatPps :: Lens' H264Settings (Maybe H264RepeatPps)
-hRepeatPps = lens _hRepeatPps (\ s a -> s{_hRepeatPps = a})
-
--- | Undocumented member.
-hFlickerAdaptiveQuantization :: Lens' H264Settings (Maybe H264FlickerAdaptiveQuantization)
-hFlickerAdaptiveQuantization = lens _hFlickerAdaptiveQuantization (\ s a -> s{_hFlickerAdaptiveQuantization = a})
-
--- | Softness. Selects quantizer matrix, larger values reduce high-frequency content in the encoded image.
-hSoftness :: Lens' H264Settings (Maybe Int)
-hSoftness = lens _hSoftness (\ s a -> s{_hSoftness = a})
-
--- | Undocumented member.
-hCodecProfile :: Lens' H264Settings (Maybe H264CodecProfile)
-hCodecProfile = lens _hCodecProfile (\ s a -> s{_hCodecProfile = a})
-
--- | Average bitrate in bits/second. Required for VBR, CBR, and ABR. Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m. For MS Smooth outputs, bitrates must be unique when rounded down to the nearest multiple of 1000.
-hBitrate :: Lens' H264Settings (Maybe Int)
-hBitrate = lens _hBitrate (\ s a -> s{_hBitrate = a})
-
--- | When you use the API for transcode jobs that use framerate conversion, specify the framerate as a fraction. For example,  24000 / 1001 = 23.976 fps. Use FramerateDenominator to specify the denominator of this fraction. In this example, use 1001 for the value of FramerateDenominator. When you use the console for transcode jobs that use framerate conversion, provide the value as a decimal number for Framerate. In this example, specify 23.976.
-hFramerateDenominator :: Lens' H264Settings (Maybe Int)
-hFramerateDenominator = lens _hFramerateDenominator (\ s a -> s{_hFramerateDenominator = a})
-
--- | Undocumented member.
-hFramerateConversionAlgorithm :: Lens' H264Settings (Maybe H264FramerateConversionAlgorithm)
-hFramerateConversionAlgorithm = lens _hFramerateConversionAlgorithm (\ s a -> s{_hFramerateConversionAlgorithm = a})
-
--- | Undocumented member.
-hCodecLevel :: Lens' H264Settings (Maybe H264CodecLevel)
-hCodecLevel = lens _hCodecLevel (\ s a -> s{_hCodecLevel = a})
-
--- | Undocumented member.
-hEntropyEncoding :: Lens' H264Settings (Maybe H264EntropyEncoding)
-hEntropyEncoding = lens _hEntropyEncoding (\ s a -> s{_hEntropyEncoding = a})
-
--- | Undocumented member.
-hFramerateControl :: Lens' H264Settings (Maybe H264FramerateControl)
-hFramerateControl = lens _hFramerateControl (\ s a -> s{_hFramerateControl = a})
-
--- | Undocumented member.
-hAdaptiveQuantization :: Lens' H264Settings (Maybe H264AdaptiveQuantization)
-hAdaptiveQuantization = lens _hAdaptiveQuantization (\ s a -> s{_hAdaptiveQuantization = a})
-
--- | Framerate numerator - framerate is a fraction, e.g. 24000 / 1001 = 23.976 fps.
-hFramerateNumerator :: Lens' H264Settings (Maybe Int)
-hFramerateNumerator = lens _hFramerateNumerator (\ s a -> s{_hFramerateNumerator = a})
-
--- | Undocumented member.
-hGopBReference :: Lens' H264Settings (Maybe H264GopBReference)
-hGopBReference = lens _hGopBReference (\ s a -> s{_hGopBReference = a})
-
--- | Maximum bitrate in bits/second (for VBR mode only). Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m.
-hMaxBitrate :: Lens' H264Settings (Maybe Int)
-hMaxBitrate = lens _hMaxBitrate (\ s a -> s{_hMaxBitrate = a})
-
--- | Undocumented member.
-hSyntax :: Lens' H264Settings (Maybe H264Syntax)
-hSyntax = lens _hSyntax (\ s a -> s{_hSyntax = a})
-
--- | Undocumented member.
-hFieldEncoding :: Lens' H264Settings (Maybe H264FieldEncoding)
-hFieldEncoding = lens _hFieldEncoding (\ s a -> s{_hFieldEncoding = a})
-
--- | Frequency of closed GOPs. In streaming applications, it is recommended that this be set to 1 so a decoder joining mid-stream will receive an IDR frame as quickly as possible. Setting this value to 0 will break output segmenting.
-hGopClosedCadence :: Lens' H264Settings (Maybe Int)
-hGopClosedCadence = lens _hGopClosedCadence (\ s a -> s{_hGopClosedCadence = a})
-
--- | Pixel Aspect Ratio denominator.
-hParDenominator :: Lens' H264Settings (Maybe Int)
-hParDenominator = lens _hParDenominator (\ s a -> s{_hParDenominator = a})
-
--- | Undocumented member.
-hSpatialAdaptiveQuantization :: Lens' H264Settings (Maybe H264SpatialAdaptiveQuantization)
-hSpatialAdaptiveQuantization = lens _hSpatialAdaptiveQuantization (\ s a -> s{_hSpatialAdaptiveQuantization = a})
-
-instance FromJSON H264Settings where
-        parseJSON
-          = withObject "H264Settings"
-              (\ x ->
-                 H264Settings' <$>
-                   (x .:? "unregisteredSeiTimecode") <*>
-                     (x .:? "qualityTuningLevel")
-                     <*> (x .:? "temporalAdaptiveQuantization")
-                     <*> (x .:? "sceneChangeDetect")
-                     <*> (x .:? "hrdBufferInitialFillPercentage")
-                     <*> (x .:? "slowPal")
-                     <*> (x .:? "parNumerator")
-                     <*> (x .:? "gopSize")
-                     <*> (x .:? "numberBFramesBetweenReferenceFrames")
-                     <*> (x .:? "gopSizeUnits")
-                     <*> (x .:? "hrdBufferSize")
-                     <*> (x .:? "slices")
-                     <*> (x .:? "rateControlMode")
-                     <*> (x .:? "numberReferenceFrames")
-                     <*> (x .:? "telecine")
-                     <*> (x .:? "minIInterval")
-                     <*> (x .:? "interlaceMode")
-                     <*> (x .:? "parControl")
-                     <*> (x .:? "repeatPps")
-                     <*> (x .:? "flickerAdaptiveQuantization")
-                     <*> (x .:? "softness")
-                     <*> (x .:? "codecProfile")
-                     <*> (x .:? "bitrate")
-                     <*> (x .:? "framerateDenominator")
-                     <*> (x .:? "framerateConversionAlgorithm")
-                     <*> (x .:? "codecLevel")
-                     <*> (x .:? "entropyEncoding")
-                     <*> (x .:? "framerateControl")
-                     <*> (x .:? "adaptiveQuantization")
-                     <*> (x .:? "framerateNumerator")
-                     <*> (x .:? "gopBReference")
-                     <*> (x .:? "maxBitrate")
-                     <*> (x .:? "syntax")
-                     <*> (x .:? "fieldEncoding")
-                     <*> (x .:? "gopClosedCadence")
-                     <*> (x .:? "parDenominator")
-                     <*> (x .:? "spatialAdaptiveQuantization"))
-
-instance Hashable H264Settings where
-
-instance NFData H264Settings where
-
-instance ToJSON H264Settings where
-        toJSON H264Settings'{..}
-          = object
-              (catMaybes
-                 [("unregisteredSeiTimecode" .=) <$>
-                    _hUnregisteredSeiTimecode,
-                  ("qualityTuningLevel" .=) <$> _hQualityTuningLevel,
-                  ("temporalAdaptiveQuantization" .=) <$>
-                    _hTemporalAdaptiveQuantization,
-                  ("sceneChangeDetect" .=) <$> _hSceneChangeDetect,
-                  ("hrdBufferInitialFillPercentage" .=) <$>
-                    _hHrdBufferInitialFillPercentage,
-                  ("slowPal" .=) <$> _hSlowPal,
-                  ("parNumerator" .=) <$> _hParNumerator,
-                  ("gopSize" .=) <$> _hGopSize,
-                  ("numberBFramesBetweenReferenceFrames" .=) <$>
-                    _hNumberBFramesBetweenReferenceFrames,
-                  ("gopSizeUnits" .=) <$> _hGopSizeUnits,
-                  ("hrdBufferSize" .=) <$> _hHrdBufferSize,
-                  ("slices" .=) <$> _hSlices,
-                  ("rateControlMode" .=) <$> _hRateControlMode,
-                  ("numberReferenceFrames" .=) <$>
-                    _hNumberReferenceFrames,
-                  ("telecine" .=) <$> _hTelecine,
-                  ("minIInterval" .=) <$> _hMinIInterval,
-                  ("interlaceMode" .=) <$> _hInterlaceMode,
-                  ("parControl" .=) <$> _hParControl,
-                  ("repeatPps" .=) <$> _hRepeatPps,
-                  ("flickerAdaptiveQuantization" .=) <$>
-                    _hFlickerAdaptiveQuantization,
-                  ("softness" .=) <$> _hSoftness,
-                  ("codecProfile" .=) <$> _hCodecProfile,
-                  ("bitrate" .=) <$> _hBitrate,
-                  ("framerateDenominator" .=) <$>
-                    _hFramerateDenominator,
-                  ("framerateConversionAlgorithm" .=) <$>
-                    _hFramerateConversionAlgorithm,
-                  ("codecLevel" .=) <$> _hCodecLevel,
-                  ("entropyEncoding" .=) <$> _hEntropyEncoding,
-                  ("framerateControl" .=) <$> _hFramerateControl,
-                  ("adaptiveQuantization" .=) <$>
-                    _hAdaptiveQuantization,
-                  ("framerateNumerator" .=) <$> _hFramerateNumerator,
-                  ("gopBReference" .=) <$> _hGopBReference,
-                  ("maxBitrate" .=) <$> _hMaxBitrate,
-                  ("syntax" .=) <$> _hSyntax,
-                  ("fieldEncoding" .=) <$> _hFieldEncoding,
-                  ("gopClosedCadence" .=) <$> _hGopClosedCadence,
-                  ("parDenominator" .=) <$> _hParDenominator,
-                  ("spatialAdaptiveQuantization" .=) <$>
-                    _hSpatialAdaptiveQuantization])
-
--- | Settings for H265 codec
---
--- /See:/ 'h265Settings' smart constructor.
-data H265Settings = H265Settings'
-  { _hsUnregisteredSeiTimecode :: !(Maybe H265UnregisteredSeiTimecode)
-  , _hsQualityTuningLevel :: !(Maybe H265QualityTuningLevel)
-  , _hsTemporalAdaptiveQuantization :: !(Maybe H265TemporalAdaptiveQuantization)
-  , _hsSceneChangeDetect :: !(Maybe H265SceneChangeDetect)
-  , _hsHrdBufferInitialFillPercentage :: !(Maybe Int)
-  , _hsTiles :: !(Maybe H265Tiles)
-  , _hsSlowPal :: !(Maybe H265SlowPal)
-  , _hsTemporalIds :: !(Maybe H265TemporalIds)
-  , _hsParNumerator :: !(Maybe Int)
-  , _hsGopSize :: !(Maybe Double)
-  , _hsNumberBFramesBetweenReferenceFrames :: !(Maybe Int)
-  , _hsGopSizeUnits :: !(Maybe H265GopSizeUnits)
-  , _hsHrdBufferSize :: !(Maybe Int)
-  , _hsSlices :: !(Maybe Int)
-  , _hsAlternateTransferFunctionSei :: !(Maybe H265AlternateTransferFunctionSei)
-  , _hsRateControlMode :: !(Maybe H265RateControlMode)
-  , _hsNumberReferenceFrames :: !(Maybe Int)
-  , _hsTelecine :: !(Maybe H265Telecine)
-  , _hsMinIInterval :: !(Maybe Int)
-  , _hsInterlaceMode :: !(Maybe H265InterlaceMode)
-  , _hsParControl :: !(Maybe H265ParControl)
-  , _hsFlickerAdaptiveQuantization :: !(Maybe H265FlickerAdaptiveQuantization)
-  , _hsSampleAdaptiveOffsetFilterMode :: !(Maybe H265SampleAdaptiveOffsetFilterMode)
-  , _hsCodecProfile :: !(Maybe H265CodecProfile)
-  , _hsBitrate :: !(Maybe Int)
-  , _hsFramerateDenominator :: !(Maybe Int)
-  , _hsFramerateConversionAlgorithm :: !(Maybe H265FramerateConversionAlgorithm)
-  , _hsCodecLevel :: !(Maybe H265CodecLevel)
-  , _hsFramerateControl :: !(Maybe H265FramerateControl)
-  , _hsAdaptiveQuantization :: !(Maybe H265AdaptiveQuantization)
-  , _hsFramerateNumerator :: !(Maybe Int)
-  , _hsGopBReference :: !(Maybe H265GopBReference)
-  , _hsMaxBitrate :: !(Maybe Int)
-  , _hsGopClosedCadence :: !(Maybe Int)
-  , _hsParDenominator :: !(Maybe Int)
-  , _hsSpatialAdaptiveQuantization :: !(Maybe H265SpatialAdaptiveQuantization)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'H265Settings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hsUnregisteredSeiTimecode' - Undocumented member.
---
--- * 'hsQualityTuningLevel' - Undocumented member.
---
--- * 'hsTemporalAdaptiveQuantization' - Undocumented member.
---
--- * 'hsSceneChangeDetect' - Undocumented member.
---
--- * 'hsHrdBufferInitialFillPercentage' - Percentage of the buffer that should initially be filled (HRD buffer model).
---
--- * 'hsTiles' - Undocumented member.
---
--- * 'hsSlowPal' - Undocumented member.
---
--- * 'hsTemporalIds' - Undocumented member.
---
--- * 'hsParNumerator' - Pixel Aspect Ratio numerator.
---
--- * 'hsGopSize' - GOP Length (keyframe interval) in frames or seconds. Must be greater than zero.
---
--- * 'hsNumberBFramesBetweenReferenceFrames' - Number of B-frames between reference frames.
---
--- * 'hsGopSizeUnits' - Undocumented member.
---
--- * 'hsHrdBufferSize' - Size of buffer (HRD buffer model). Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m.
---
--- * 'hsSlices' - Number of slices per picture. Must be less than or equal to the number of macroblock rows for progressive pictures, and less than or equal to half the number of macroblock rows for interlaced pictures.
---
--- * 'hsAlternateTransferFunctionSei' - Undocumented member.
---
--- * 'hsRateControlMode' - Undocumented member.
---
--- * 'hsNumberReferenceFrames' - Number of reference frames to use. The encoder may use more than requested if using B-frames and/or interlaced encoding.
---
--- * 'hsTelecine' - Undocumented member.
---
--- * 'hsMinIInterval' - Enforces separation between repeated (cadence) I-frames and I-frames inserted by Scene Change Detection. If a scene change I-frame is within I-interval frames of a cadence I-frame, the GOP is shrunk and/or stretched to the scene change I-frame. GOP stretch requires enabling lookahead as well as setting I-interval. The normal cadence resumes for the next GOP. This setting is only used when Scene Change Detect is enabled. Note: Maximum GOP stretch = GOP size + Min-I-interval - 1
---
--- * 'hsInterlaceMode' - Undocumented member.
---
--- * 'hsParControl' - Undocumented member.
---
--- * 'hsFlickerAdaptiveQuantization' - Undocumented member.
---
--- * 'hsSampleAdaptiveOffsetFilterMode' - Undocumented member.
---
--- * 'hsCodecProfile' - Undocumented member.
---
--- * 'hsBitrate' - Average bitrate in bits/second. Required for VBR, CBR, and ABR. Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m. For MS Smooth outputs, bitrates must be unique when rounded down to the nearest multiple of 1000.
---
--- * 'hsFramerateDenominator' - Framerate denominator.
---
--- * 'hsFramerateConversionAlgorithm' - Undocumented member.
---
--- * 'hsCodecLevel' - Undocumented member.
---
--- * 'hsFramerateControl' - Undocumented member.
---
--- * 'hsAdaptiveQuantization' - Undocumented member.
---
--- * 'hsFramerateNumerator' - Framerate numerator - framerate is a fraction, e.g. 24000 / 1001 = 23.976 fps.
---
--- * 'hsGopBReference' - Undocumented member.
---
--- * 'hsMaxBitrate' - Maximum bitrate in bits/second (for VBR mode only). Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m.
---
--- * 'hsGopClosedCadence' - Frequency of closed GOPs. In streaming applications, it is recommended that this be set to 1 so a decoder joining mid-stream will receive an IDR frame as quickly as possible. Setting this value to 0 will break output segmenting.
---
--- * 'hsParDenominator' - Pixel Aspect Ratio denominator.
---
--- * 'hsSpatialAdaptiveQuantization' - Undocumented member.
-h265Settings
-    :: H265Settings
-h265Settings =
-  H265Settings'
-    { _hsUnregisteredSeiTimecode = Nothing
-    , _hsQualityTuningLevel = Nothing
-    , _hsTemporalAdaptiveQuantization = Nothing
-    , _hsSceneChangeDetect = Nothing
-    , _hsHrdBufferInitialFillPercentage = Nothing
-    , _hsTiles = Nothing
-    , _hsSlowPal = Nothing
-    , _hsTemporalIds = Nothing
-    , _hsParNumerator = Nothing
-    , _hsGopSize = Nothing
-    , _hsNumberBFramesBetweenReferenceFrames = Nothing
-    , _hsGopSizeUnits = Nothing
-    , _hsHrdBufferSize = Nothing
-    , _hsSlices = Nothing
-    , _hsAlternateTransferFunctionSei = Nothing
-    , _hsRateControlMode = Nothing
-    , _hsNumberReferenceFrames = Nothing
-    , _hsTelecine = Nothing
-    , _hsMinIInterval = Nothing
-    , _hsInterlaceMode = Nothing
-    , _hsParControl = Nothing
-    , _hsFlickerAdaptiveQuantization = Nothing
-    , _hsSampleAdaptiveOffsetFilterMode = Nothing
-    , _hsCodecProfile = Nothing
-    , _hsBitrate = Nothing
-    , _hsFramerateDenominator = Nothing
-    , _hsFramerateConversionAlgorithm = Nothing
-    , _hsCodecLevel = Nothing
-    , _hsFramerateControl = Nothing
-    , _hsAdaptiveQuantization = Nothing
-    , _hsFramerateNumerator = Nothing
-    , _hsGopBReference = Nothing
-    , _hsMaxBitrate = Nothing
-    , _hsGopClosedCadence = Nothing
-    , _hsParDenominator = Nothing
-    , _hsSpatialAdaptiveQuantization = Nothing
-    }
-
-
--- | Undocumented member.
-hsUnregisteredSeiTimecode :: Lens' H265Settings (Maybe H265UnregisteredSeiTimecode)
-hsUnregisteredSeiTimecode = lens _hsUnregisteredSeiTimecode (\ s a -> s{_hsUnregisteredSeiTimecode = a})
-
--- | Undocumented member.
-hsQualityTuningLevel :: Lens' H265Settings (Maybe H265QualityTuningLevel)
-hsQualityTuningLevel = lens _hsQualityTuningLevel (\ s a -> s{_hsQualityTuningLevel = a})
-
--- | Undocumented member.
-hsTemporalAdaptiveQuantization :: Lens' H265Settings (Maybe H265TemporalAdaptiveQuantization)
-hsTemporalAdaptiveQuantization = lens _hsTemporalAdaptiveQuantization (\ s a -> s{_hsTemporalAdaptiveQuantization = a})
-
--- | Undocumented member.
-hsSceneChangeDetect :: Lens' H265Settings (Maybe H265SceneChangeDetect)
-hsSceneChangeDetect = lens _hsSceneChangeDetect (\ s a -> s{_hsSceneChangeDetect = a})
-
--- | Percentage of the buffer that should initially be filled (HRD buffer model).
-hsHrdBufferInitialFillPercentage :: Lens' H265Settings (Maybe Int)
-hsHrdBufferInitialFillPercentage = lens _hsHrdBufferInitialFillPercentage (\ s a -> s{_hsHrdBufferInitialFillPercentage = a})
-
--- | Undocumented member.
-hsTiles :: Lens' H265Settings (Maybe H265Tiles)
-hsTiles = lens _hsTiles (\ s a -> s{_hsTiles = a})
-
--- | Undocumented member.
-hsSlowPal :: Lens' H265Settings (Maybe H265SlowPal)
-hsSlowPal = lens _hsSlowPal (\ s a -> s{_hsSlowPal = a})
-
--- | Undocumented member.
-hsTemporalIds :: Lens' H265Settings (Maybe H265TemporalIds)
-hsTemporalIds = lens _hsTemporalIds (\ s a -> s{_hsTemporalIds = a})
-
--- | Pixel Aspect Ratio numerator.
-hsParNumerator :: Lens' H265Settings (Maybe Int)
-hsParNumerator = lens _hsParNumerator (\ s a -> s{_hsParNumerator = a})
-
--- | GOP Length (keyframe interval) in frames or seconds. Must be greater than zero.
-hsGopSize :: Lens' H265Settings (Maybe Double)
-hsGopSize = lens _hsGopSize (\ s a -> s{_hsGopSize = a})
-
--- | Number of B-frames between reference frames.
-hsNumberBFramesBetweenReferenceFrames :: Lens' H265Settings (Maybe Int)
-hsNumberBFramesBetweenReferenceFrames = lens _hsNumberBFramesBetweenReferenceFrames (\ s a -> s{_hsNumberBFramesBetweenReferenceFrames = a})
-
--- | Undocumented member.
-hsGopSizeUnits :: Lens' H265Settings (Maybe H265GopSizeUnits)
-hsGopSizeUnits = lens _hsGopSizeUnits (\ s a -> s{_hsGopSizeUnits = a})
-
--- | Size of buffer (HRD buffer model). Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m.
-hsHrdBufferSize :: Lens' H265Settings (Maybe Int)
-hsHrdBufferSize = lens _hsHrdBufferSize (\ s a -> s{_hsHrdBufferSize = a})
-
--- | Number of slices per picture. Must be less than or equal to the number of macroblock rows for progressive pictures, and less than or equal to half the number of macroblock rows for interlaced pictures.
-hsSlices :: Lens' H265Settings (Maybe Int)
-hsSlices = lens _hsSlices (\ s a -> s{_hsSlices = a})
-
--- | Undocumented member.
-hsAlternateTransferFunctionSei :: Lens' H265Settings (Maybe H265AlternateTransferFunctionSei)
-hsAlternateTransferFunctionSei = lens _hsAlternateTransferFunctionSei (\ s a -> s{_hsAlternateTransferFunctionSei = a})
-
--- | Undocumented member.
-hsRateControlMode :: Lens' H265Settings (Maybe H265RateControlMode)
-hsRateControlMode = lens _hsRateControlMode (\ s a -> s{_hsRateControlMode = a})
-
--- | Number of reference frames to use. The encoder may use more than requested if using B-frames and/or interlaced encoding.
-hsNumberReferenceFrames :: Lens' H265Settings (Maybe Int)
-hsNumberReferenceFrames = lens _hsNumberReferenceFrames (\ s a -> s{_hsNumberReferenceFrames = a})
-
--- | Undocumented member.
-hsTelecine :: Lens' H265Settings (Maybe H265Telecine)
-hsTelecine = lens _hsTelecine (\ s a -> s{_hsTelecine = a})
-
--- | Enforces separation between repeated (cadence) I-frames and I-frames inserted by Scene Change Detection. If a scene change I-frame is within I-interval frames of a cadence I-frame, the GOP is shrunk and/or stretched to the scene change I-frame. GOP stretch requires enabling lookahead as well as setting I-interval. The normal cadence resumes for the next GOP. This setting is only used when Scene Change Detect is enabled. Note: Maximum GOP stretch = GOP size + Min-I-interval - 1
-hsMinIInterval :: Lens' H265Settings (Maybe Int)
-hsMinIInterval = lens _hsMinIInterval (\ s a -> s{_hsMinIInterval = a})
-
--- | Undocumented member.
-hsInterlaceMode :: Lens' H265Settings (Maybe H265InterlaceMode)
-hsInterlaceMode = lens _hsInterlaceMode (\ s a -> s{_hsInterlaceMode = a})
-
--- | Undocumented member.
-hsParControl :: Lens' H265Settings (Maybe H265ParControl)
-hsParControl = lens _hsParControl (\ s a -> s{_hsParControl = a})
-
--- | Undocumented member.
-hsFlickerAdaptiveQuantization :: Lens' H265Settings (Maybe H265FlickerAdaptiveQuantization)
-hsFlickerAdaptiveQuantization = lens _hsFlickerAdaptiveQuantization (\ s a -> s{_hsFlickerAdaptiveQuantization = a})
-
--- | Undocumented member.
-hsSampleAdaptiveOffsetFilterMode :: Lens' H265Settings (Maybe H265SampleAdaptiveOffsetFilterMode)
-hsSampleAdaptiveOffsetFilterMode = lens _hsSampleAdaptiveOffsetFilterMode (\ s a -> s{_hsSampleAdaptiveOffsetFilterMode = a})
-
--- | Undocumented member.
-hsCodecProfile :: Lens' H265Settings (Maybe H265CodecProfile)
-hsCodecProfile = lens _hsCodecProfile (\ s a -> s{_hsCodecProfile = a})
-
--- | Average bitrate in bits/second. Required for VBR, CBR, and ABR. Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m. For MS Smooth outputs, bitrates must be unique when rounded down to the nearest multiple of 1000.
-hsBitrate :: Lens' H265Settings (Maybe Int)
-hsBitrate = lens _hsBitrate (\ s a -> s{_hsBitrate = a})
-
--- | Framerate denominator.
-hsFramerateDenominator :: Lens' H265Settings (Maybe Int)
-hsFramerateDenominator = lens _hsFramerateDenominator (\ s a -> s{_hsFramerateDenominator = a})
-
--- | Undocumented member.
-hsFramerateConversionAlgorithm :: Lens' H265Settings (Maybe H265FramerateConversionAlgorithm)
-hsFramerateConversionAlgorithm = lens _hsFramerateConversionAlgorithm (\ s a -> s{_hsFramerateConversionAlgorithm = a})
-
--- | Undocumented member.
-hsCodecLevel :: Lens' H265Settings (Maybe H265CodecLevel)
-hsCodecLevel = lens _hsCodecLevel (\ s a -> s{_hsCodecLevel = a})
-
--- | Undocumented member.
-hsFramerateControl :: Lens' H265Settings (Maybe H265FramerateControl)
-hsFramerateControl = lens _hsFramerateControl (\ s a -> s{_hsFramerateControl = a})
-
--- | Undocumented member.
-hsAdaptiveQuantization :: Lens' H265Settings (Maybe H265AdaptiveQuantization)
-hsAdaptiveQuantization = lens _hsAdaptiveQuantization (\ s a -> s{_hsAdaptiveQuantization = a})
-
--- | Framerate numerator - framerate is a fraction, e.g. 24000 / 1001 = 23.976 fps.
-hsFramerateNumerator :: Lens' H265Settings (Maybe Int)
-hsFramerateNumerator = lens _hsFramerateNumerator (\ s a -> s{_hsFramerateNumerator = a})
-
--- | Undocumented member.
-hsGopBReference :: Lens' H265Settings (Maybe H265GopBReference)
-hsGopBReference = lens _hsGopBReference (\ s a -> s{_hsGopBReference = a})
-
--- | Maximum bitrate in bits/second (for VBR mode only). Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m.
-hsMaxBitrate :: Lens' H265Settings (Maybe Int)
-hsMaxBitrate = lens _hsMaxBitrate (\ s a -> s{_hsMaxBitrate = a})
-
--- | Frequency of closed GOPs. In streaming applications, it is recommended that this be set to 1 so a decoder joining mid-stream will receive an IDR frame as quickly as possible. Setting this value to 0 will break output segmenting.
-hsGopClosedCadence :: Lens' H265Settings (Maybe Int)
-hsGopClosedCadence = lens _hsGopClosedCadence (\ s a -> s{_hsGopClosedCadence = a})
-
--- | Pixel Aspect Ratio denominator.
-hsParDenominator :: Lens' H265Settings (Maybe Int)
-hsParDenominator = lens _hsParDenominator (\ s a -> s{_hsParDenominator = a})
-
--- | Undocumented member.
-hsSpatialAdaptiveQuantization :: Lens' H265Settings (Maybe H265SpatialAdaptiveQuantization)
-hsSpatialAdaptiveQuantization = lens _hsSpatialAdaptiveQuantization (\ s a -> s{_hsSpatialAdaptiveQuantization = a})
-
-instance FromJSON H265Settings where
-        parseJSON
-          = withObject "H265Settings"
-              (\ x ->
-                 H265Settings' <$>
-                   (x .:? "unregisteredSeiTimecode") <*>
-                     (x .:? "qualityTuningLevel")
-                     <*> (x .:? "temporalAdaptiveQuantization")
-                     <*> (x .:? "sceneChangeDetect")
-                     <*> (x .:? "hrdBufferInitialFillPercentage")
-                     <*> (x .:? "tiles")
-                     <*> (x .:? "slowPal")
-                     <*> (x .:? "temporalIds")
-                     <*> (x .:? "parNumerator")
-                     <*> (x .:? "gopSize")
-                     <*> (x .:? "numberBFramesBetweenReferenceFrames")
-                     <*> (x .:? "gopSizeUnits")
-                     <*> (x .:? "hrdBufferSize")
-                     <*> (x .:? "slices")
-                     <*> (x .:? "alternateTransferFunctionSei")
-                     <*> (x .:? "rateControlMode")
-                     <*> (x .:? "numberReferenceFrames")
-                     <*> (x .:? "telecine")
-                     <*> (x .:? "minIInterval")
-                     <*> (x .:? "interlaceMode")
-                     <*> (x .:? "parControl")
-                     <*> (x .:? "flickerAdaptiveQuantization")
-                     <*> (x .:? "sampleAdaptiveOffsetFilterMode")
-                     <*> (x .:? "codecProfile")
-                     <*> (x .:? "bitrate")
-                     <*> (x .:? "framerateDenominator")
-                     <*> (x .:? "framerateConversionAlgorithm")
-                     <*> (x .:? "codecLevel")
-                     <*> (x .:? "framerateControl")
-                     <*> (x .:? "adaptiveQuantization")
-                     <*> (x .:? "framerateNumerator")
-                     <*> (x .:? "gopBReference")
-                     <*> (x .:? "maxBitrate")
-                     <*> (x .:? "gopClosedCadence")
-                     <*> (x .:? "parDenominator")
-                     <*> (x .:? "spatialAdaptiveQuantization"))
-
-instance Hashable H265Settings where
-
-instance NFData H265Settings where
-
-instance ToJSON H265Settings where
-        toJSON H265Settings'{..}
-          = object
-              (catMaybes
-                 [("unregisteredSeiTimecode" .=) <$>
-                    _hsUnregisteredSeiTimecode,
-                  ("qualityTuningLevel" .=) <$> _hsQualityTuningLevel,
-                  ("temporalAdaptiveQuantization" .=) <$>
-                    _hsTemporalAdaptiveQuantization,
-                  ("sceneChangeDetect" .=) <$> _hsSceneChangeDetect,
-                  ("hrdBufferInitialFillPercentage" .=) <$>
-                    _hsHrdBufferInitialFillPercentage,
-                  ("tiles" .=) <$> _hsTiles,
-                  ("slowPal" .=) <$> _hsSlowPal,
-                  ("temporalIds" .=) <$> _hsTemporalIds,
-                  ("parNumerator" .=) <$> _hsParNumerator,
-                  ("gopSize" .=) <$> _hsGopSize,
-                  ("numberBFramesBetweenReferenceFrames" .=) <$>
-                    _hsNumberBFramesBetweenReferenceFrames,
-                  ("gopSizeUnits" .=) <$> _hsGopSizeUnits,
-                  ("hrdBufferSize" .=) <$> _hsHrdBufferSize,
-                  ("slices" .=) <$> _hsSlices,
-                  ("alternateTransferFunctionSei" .=) <$>
-                    _hsAlternateTransferFunctionSei,
-                  ("rateControlMode" .=) <$> _hsRateControlMode,
-                  ("numberReferenceFrames" .=) <$>
-                    _hsNumberReferenceFrames,
-                  ("telecine" .=) <$> _hsTelecine,
-                  ("minIInterval" .=) <$> _hsMinIInterval,
-                  ("interlaceMode" .=) <$> _hsInterlaceMode,
-                  ("parControl" .=) <$> _hsParControl,
-                  ("flickerAdaptiveQuantization" .=) <$>
-                    _hsFlickerAdaptiveQuantization,
-                  ("sampleAdaptiveOffsetFilterMode" .=) <$>
-                    _hsSampleAdaptiveOffsetFilterMode,
-                  ("codecProfile" .=) <$> _hsCodecProfile,
-                  ("bitrate" .=) <$> _hsBitrate,
-                  ("framerateDenominator" .=) <$>
-                    _hsFramerateDenominator,
-                  ("framerateConversionAlgorithm" .=) <$>
-                    _hsFramerateConversionAlgorithm,
-                  ("codecLevel" .=) <$> _hsCodecLevel,
-                  ("framerateControl" .=) <$> _hsFramerateControl,
-                  ("adaptiveQuantization" .=) <$>
-                    _hsAdaptiveQuantization,
-                  ("framerateNumerator" .=) <$> _hsFramerateNumerator,
-                  ("gopBReference" .=) <$> _hsGopBReference,
-                  ("maxBitrate" .=) <$> _hsMaxBitrate,
-                  ("gopClosedCadence" .=) <$> _hsGopClosedCadence,
-                  ("parDenominator" .=) <$> _hsParDenominator,
-                  ("spatialAdaptiveQuantization" .=) <$>
-                    _hsSpatialAdaptiveQuantization])
-
--- | Use the HDR master display (Hdr10Metadata) settings to provide values for HDR color. These values vary depending on the input video and must be provided by a color grader. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
---
--- /See:/ 'hdr10Metadata' smart constructor.
-data Hdr10Metadata = Hdr10Metadata'
-  { _hmRedPrimaryX               :: !(Maybe Int)
-  , _hmBluePrimaryX              :: !(Maybe Int)
-  , _hmMaxFrameAverageLightLevel :: !(Maybe Int)
-  , _hmWhitePointY               :: !(Maybe Int)
-  , _hmMaxContentLightLevel      :: !(Maybe Int)
-  , _hmWhitePointX               :: !(Maybe Int)
-  , _hmBluePrimaryY              :: !(Maybe Int)
-  , _hmGreenPrimaryY             :: !(Maybe Int)
-  , _hmGreenPrimaryX             :: !(Maybe Int)
-  , _hmMinLuminance              :: !(Maybe Int)
-  , _hmRedPrimaryY               :: !(Maybe Int)
-  , _hmMaxLuminance              :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Hdr10Metadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hmRedPrimaryX' - HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
---
--- * 'hmBluePrimaryX' - HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
---
--- * 'hmMaxFrameAverageLightLevel' - Maximum average light level of any frame in the coded video sequence, in units of candelas per square meter.
---
--- * 'hmWhitePointY' - HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
---
--- * 'hmMaxContentLightLevel' - Maximum light level among all samples in the coded video sequence, in units of candelas per square meter.
---
--- * 'hmWhitePointX' - HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
---
--- * 'hmBluePrimaryY' - HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
---
--- * 'hmGreenPrimaryY' - HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
---
--- * 'hmGreenPrimaryX' - HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
---
--- * 'hmMinLuminance' - Nominal minimum mastering display luminance in units of of 0.0001 candelas per square meter
---
--- * 'hmRedPrimaryY' - HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
---
--- * 'hmMaxLuminance' - Nominal maximum mastering display luminance in units of of 0.0001 candelas per square meter.
-hdr10Metadata
-    :: Hdr10Metadata
-hdr10Metadata =
-  Hdr10Metadata'
-    { _hmRedPrimaryX = Nothing
-    , _hmBluePrimaryX = Nothing
-    , _hmMaxFrameAverageLightLevel = Nothing
-    , _hmWhitePointY = Nothing
-    , _hmMaxContentLightLevel = Nothing
-    , _hmWhitePointX = Nothing
-    , _hmBluePrimaryY = Nothing
-    , _hmGreenPrimaryY = Nothing
-    , _hmGreenPrimaryX = Nothing
-    , _hmMinLuminance = Nothing
-    , _hmRedPrimaryY = Nothing
-    , _hmMaxLuminance = Nothing
-    }
-
-
--- | HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
-hmRedPrimaryX :: Lens' Hdr10Metadata (Maybe Int)
-hmRedPrimaryX = lens _hmRedPrimaryX (\ s a -> s{_hmRedPrimaryX = a})
-
--- | HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
-hmBluePrimaryX :: Lens' Hdr10Metadata (Maybe Int)
-hmBluePrimaryX = lens _hmBluePrimaryX (\ s a -> s{_hmBluePrimaryX = a})
-
--- | Maximum average light level of any frame in the coded video sequence, in units of candelas per square meter.
-hmMaxFrameAverageLightLevel :: Lens' Hdr10Metadata (Maybe Int)
-hmMaxFrameAverageLightLevel = lens _hmMaxFrameAverageLightLevel (\ s a -> s{_hmMaxFrameAverageLightLevel = a})
-
--- | HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
-hmWhitePointY :: Lens' Hdr10Metadata (Maybe Int)
-hmWhitePointY = lens _hmWhitePointY (\ s a -> s{_hmWhitePointY = a})
-
--- | Maximum light level among all samples in the coded video sequence, in units of candelas per square meter.
-hmMaxContentLightLevel :: Lens' Hdr10Metadata (Maybe Int)
-hmMaxContentLightLevel = lens _hmMaxContentLightLevel (\ s a -> s{_hmMaxContentLightLevel = a})
-
--- | HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
-hmWhitePointX :: Lens' Hdr10Metadata (Maybe Int)
-hmWhitePointX = lens _hmWhitePointX (\ s a -> s{_hmWhitePointX = a})
-
--- | HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
-hmBluePrimaryY :: Lens' Hdr10Metadata (Maybe Int)
-hmBluePrimaryY = lens _hmBluePrimaryY (\ s a -> s{_hmBluePrimaryY = a})
-
--- | HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
-hmGreenPrimaryY :: Lens' Hdr10Metadata (Maybe Int)
-hmGreenPrimaryY = lens _hmGreenPrimaryY (\ s a -> s{_hmGreenPrimaryY = a})
-
--- | HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
-hmGreenPrimaryX :: Lens' Hdr10Metadata (Maybe Int)
-hmGreenPrimaryX = lens _hmGreenPrimaryX (\ s a -> s{_hmGreenPrimaryX = a})
-
--- | Nominal minimum mastering display luminance in units of of 0.0001 candelas per square meter
-hmMinLuminance :: Lens' Hdr10Metadata (Maybe Int)
-hmMinLuminance = lens _hmMinLuminance (\ s a -> s{_hmMinLuminance = a})
-
--- | HDR Master Display Information comes from the color grader and the color grading tools. Range is 0 to 50,000, each increment represents 0.00002 in CIE1931 color coordinate.
-hmRedPrimaryY :: Lens' Hdr10Metadata (Maybe Int)
-hmRedPrimaryY = lens _hmRedPrimaryY (\ s a -> s{_hmRedPrimaryY = a})
-
--- | Nominal maximum mastering display luminance in units of of 0.0001 candelas per square meter.
-hmMaxLuminance :: Lens' Hdr10Metadata (Maybe Int)
-hmMaxLuminance = lens _hmMaxLuminance (\ s a -> s{_hmMaxLuminance = a})
-
-instance FromJSON Hdr10Metadata where
-        parseJSON
-          = withObject "Hdr10Metadata"
-              (\ x ->
-                 Hdr10Metadata' <$>
-                   (x .:? "redPrimaryX") <*> (x .:? "bluePrimaryX") <*>
-                     (x .:? "maxFrameAverageLightLevel")
-                     <*> (x .:? "whitePointY")
-                     <*> (x .:? "maxContentLightLevel")
-                     <*> (x .:? "whitePointX")
-                     <*> (x .:? "bluePrimaryY")
-                     <*> (x .:? "greenPrimaryY")
-                     <*> (x .:? "greenPrimaryX")
-                     <*> (x .:? "minLuminance")
-                     <*> (x .:? "redPrimaryY")
-                     <*> (x .:? "maxLuminance"))
-
-instance Hashable Hdr10Metadata where
-
-instance NFData Hdr10Metadata where
-
-instance ToJSON Hdr10Metadata where
-        toJSON Hdr10Metadata'{..}
-          = object
-              (catMaybes
-                 [("redPrimaryX" .=) <$> _hmRedPrimaryX,
-                  ("bluePrimaryX" .=) <$> _hmBluePrimaryX,
-                  ("maxFrameAverageLightLevel" .=) <$>
-                    _hmMaxFrameAverageLightLevel,
-                  ("whitePointY" .=) <$> _hmWhitePointY,
-                  ("maxContentLightLevel" .=) <$>
-                    _hmMaxContentLightLevel,
-                  ("whitePointX" .=) <$> _hmWhitePointX,
-                  ("bluePrimaryY" .=) <$> _hmBluePrimaryY,
-                  ("greenPrimaryY" .=) <$> _hmGreenPrimaryY,
-                  ("greenPrimaryX" .=) <$> _hmGreenPrimaryX,
-                  ("minLuminance" .=) <$> _hmMinLuminance,
-                  ("redPrimaryY" .=) <$> _hmRedPrimaryY,
-                  ("maxLuminance" .=) <$> _hmMaxLuminance])
-
--- | Caption Language Mapping
---
--- /See:/ 'hlsCaptionLanguageMapping' smart constructor.
-data HlsCaptionLanguageMapping = HlsCaptionLanguageMapping'
-  { _hclmLanguageCode        :: !(Maybe LanguageCode)
-  , _hclmLanguageDescription :: !(Maybe Text)
-  , _hclmCaptionChannel      :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'HlsCaptionLanguageMapping' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hclmLanguageCode' - Undocumented member.
---
--- * 'hclmLanguageDescription' - Caption language description.
---
--- * 'hclmCaptionChannel' - Caption channel.
-hlsCaptionLanguageMapping
-    :: HlsCaptionLanguageMapping
-hlsCaptionLanguageMapping =
-  HlsCaptionLanguageMapping'
-    { _hclmLanguageCode = Nothing
-    , _hclmLanguageDescription = Nothing
-    , _hclmCaptionChannel = Nothing
-    }
-
-
--- | Undocumented member.
-hclmLanguageCode :: Lens' HlsCaptionLanguageMapping (Maybe LanguageCode)
-hclmLanguageCode = lens _hclmLanguageCode (\ s a -> s{_hclmLanguageCode = a})
-
--- | Caption language description.
-hclmLanguageDescription :: Lens' HlsCaptionLanguageMapping (Maybe Text)
-hclmLanguageDescription = lens _hclmLanguageDescription (\ s a -> s{_hclmLanguageDescription = a})
-
--- | Caption channel.
-hclmCaptionChannel :: Lens' HlsCaptionLanguageMapping (Maybe Int)
-hclmCaptionChannel = lens _hclmCaptionChannel (\ s a -> s{_hclmCaptionChannel = a})
-
-instance FromJSON HlsCaptionLanguageMapping where
-        parseJSON
-          = withObject "HlsCaptionLanguageMapping"
-              (\ x ->
-                 HlsCaptionLanguageMapping' <$>
-                   (x .:? "languageCode") <*>
-                     (x .:? "languageDescription")
-                     <*> (x .:? "captionChannel"))
-
-instance Hashable HlsCaptionLanguageMapping where
-
-instance NFData HlsCaptionLanguageMapping where
-
-instance ToJSON HlsCaptionLanguageMapping where
-        toJSON HlsCaptionLanguageMapping'{..}
-          = object
-              (catMaybes
-                 [("languageCode" .=) <$> _hclmLanguageCode,
-                  ("languageDescription" .=) <$>
-                    _hclmLanguageDescription,
-                  ("captionChannel" .=) <$> _hclmCaptionChannel])
-
--- | Settings for HLS encryption
---
--- /See:/ 'hlsEncryptionSettings' smart constructor.
-data HlsEncryptionSettings = HlsEncryptionSettings'
-  { _hesEncryptionMethod :: !(Maybe HlsEncryptionType)
-  , _hesConstantInitializationVector :: !(Maybe Text)
-  , _hesType :: !(Maybe HlsKeyProviderType)
-  , _hesStaticKeyProvider :: !(Maybe StaticKeyProvider)
-  , _hesSpekeKeyProvider :: !(Maybe SpekeKeyProvider)
-  , _hesInitializationVectorInManifest :: !(Maybe HlsInitializationVectorInManifest)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'HlsEncryptionSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hesEncryptionMethod' - Undocumented member.
---
--- * 'hesConstantInitializationVector' - This is a 128-bit, 16-byte hex value represented by a 32-character text string. If this parameter is not set then the Initialization Vector will follow the segment number by default.
---
--- * 'hesType' - Undocumented member.
---
--- * 'hesStaticKeyProvider' - Undocumented member.
---
--- * 'hesSpekeKeyProvider' - Undocumented member.
---
--- * 'hesInitializationVectorInManifest' - Undocumented member.
-hlsEncryptionSettings
-    :: HlsEncryptionSettings
-hlsEncryptionSettings =
-  HlsEncryptionSettings'
-    { _hesEncryptionMethod = Nothing
-    , _hesConstantInitializationVector = Nothing
-    , _hesType = Nothing
-    , _hesStaticKeyProvider = Nothing
-    , _hesSpekeKeyProvider = Nothing
-    , _hesInitializationVectorInManifest = Nothing
-    }
-
-
--- | Undocumented member.
-hesEncryptionMethod :: Lens' HlsEncryptionSettings (Maybe HlsEncryptionType)
-hesEncryptionMethod = lens _hesEncryptionMethod (\ s a -> s{_hesEncryptionMethod = a})
-
--- | This is a 128-bit, 16-byte hex value represented by a 32-character text string. If this parameter is not set then the Initialization Vector will follow the segment number by default.
-hesConstantInitializationVector :: Lens' HlsEncryptionSettings (Maybe Text)
-hesConstantInitializationVector = lens _hesConstantInitializationVector (\ s a -> s{_hesConstantInitializationVector = a})
-
--- | Undocumented member.
-hesType :: Lens' HlsEncryptionSettings (Maybe HlsKeyProviderType)
-hesType = lens _hesType (\ s a -> s{_hesType = a})
-
--- | Undocumented member.
-hesStaticKeyProvider :: Lens' HlsEncryptionSettings (Maybe StaticKeyProvider)
-hesStaticKeyProvider = lens _hesStaticKeyProvider (\ s a -> s{_hesStaticKeyProvider = a})
-
--- | Undocumented member.
-hesSpekeKeyProvider :: Lens' HlsEncryptionSettings (Maybe SpekeKeyProvider)
-hesSpekeKeyProvider = lens _hesSpekeKeyProvider (\ s a -> s{_hesSpekeKeyProvider = a})
-
--- | Undocumented member.
-hesInitializationVectorInManifest :: Lens' HlsEncryptionSettings (Maybe HlsInitializationVectorInManifest)
-hesInitializationVectorInManifest = lens _hesInitializationVectorInManifest (\ s a -> s{_hesInitializationVectorInManifest = a})
-
-instance FromJSON HlsEncryptionSettings where
-        parseJSON
-          = withObject "HlsEncryptionSettings"
-              (\ x ->
-                 HlsEncryptionSettings' <$>
-                   (x .:? "encryptionMethod") <*>
-                     (x .:? "constantInitializationVector")
-                     <*> (x .:? "type")
-                     <*> (x .:? "staticKeyProvider")
-                     <*> (x .:? "spekeKeyProvider")
-                     <*> (x .:? "initializationVectorInManifest"))
-
-instance Hashable HlsEncryptionSettings where
-
-instance NFData HlsEncryptionSettings where
-
-instance ToJSON HlsEncryptionSettings where
-        toJSON HlsEncryptionSettings'{..}
-          = object
-              (catMaybes
-                 [("encryptionMethod" .=) <$> _hesEncryptionMethod,
-                  ("constantInitializationVector" .=) <$>
-                    _hesConstantInitializationVector,
-                  ("type" .=) <$> _hesType,
-                  ("staticKeyProvider" .=) <$> _hesStaticKeyProvider,
-                  ("spekeKeyProvider" .=) <$> _hesSpekeKeyProvider,
-                  ("initializationVectorInManifest" .=) <$>
-                    _hesInitializationVectorInManifest])
-
--- | Required when you set (Type) under (OutputGroups)>(OutputGroupSettings) to HLS_GROUP_SETTINGS.
---
--- /See:/ 'hlsGroupSettings' smart constructor.
-data HlsGroupSettings = HlsGroupSettings'
-  { _hgsDirectoryStructure         :: !(Maybe HlsDirectoryStructure)
-  , _hgsSegmentControl             :: !(Maybe HlsSegmentControl)
-  , _hgsDestination                :: !(Maybe Text)
-  , _hgsTimedMetadataId3Period     :: !(Maybe Int)
-  , _hgsMinSegmentLength           :: !(Maybe Int)
-  , _hgsProgramDateTime            :: !(Maybe HlsProgramDateTime)
-  , _hgsProgramDateTimePeriod      :: !(Maybe Int)
-  , _hgsCodecSpecification         :: !(Maybe HlsCodecSpecification)
-  , _hgsCaptionLanguageMappings    :: !(Maybe [HlsCaptionLanguageMapping])
-  , _hgsBaseURL                    :: !(Maybe Text)
-  , _hgsAdMarkers                  :: !(Maybe [HlsAdMarkers])
-  , _hgsEncryption                 :: !(Maybe HlsEncryptionSettings)
-  , _hgsSegmentLength              :: !(Maybe Int)
-  , _hgsTimedMetadataId3Frame      :: !(Maybe HlsTimedMetadataId3Frame)
-  , _hgsOutputSelection            :: !(Maybe HlsOutputSelection)
-  , _hgsCaptionLanguageSetting     :: !(Maybe HlsCaptionLanguageSetting)
-  , _hgsSegmentsPerSubdirectory    :: !(Maybe Int)
-  , _hgsManifestDurationFormat     :: !(Maybe HlsManifestDurationFormat)
-  , _hgsClientCache                :: !(Maybe HlsClientCache)
-  , _hgsTimestampDeltaMilliseconds :: !(Maybe Int)
-  , _hgsStreamInfResolution        :: !(Maybe HlsStreamInfResolution)
-  , _hgsManifestCompression        :: !(Maybe HlsManifestCompression)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'HlsGroupSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hgsDirectoryStructure' - Undocumented member.
---
--- * 'hgsSegmentControl' - Undocumented member.
---
--- * 'hgsDestination' - Use Destination (Destination) to specify the S3 output location and the output filename base. Destination accepts format identifiers. If you do not specify the base filename in the URI, the service will use the filename of the input file. If your job has multiple inputs, the service uses the filename of the first input file.
---
--- * 'hgsTimedMetadataId3Period' - Timed Metadata interval in seconds.
---
--- * 'hgsMinSegmentLength' - When set, Minimum Segment Size is enforced by looking ahead and back within the specified range for a nearby avail and extending the segment size if needed.
---
--- * 'hgsProgramDateTime' - Undocumented member.
---
--- * 'hgsProgramDateTimePeriod' - Period of insertion of EXT-X-PROGRAM-DATE-TIME entry, in seconds.
---
--- * 'hgsCodecSpecification' - Undocumented member.
---
--- * 'hgsCaptionLanguageMappings' - Language to be used on Caption outputs
---
--- * 'hgsBaseURL' - A partial URI prefix that will be prepended to each output in the media .m3u8 file. Can be used if base manifest is delivered from a different URL than the main .m3u8 file.
---
--- * 'hgsAdMarkers' - Choose one or more ad marker types to pass SCTE35 signals through to this group of Apple HLS outputs.
---
--- * 'hgsEncryption' - DRM settings.
---
--- * 'hgsSegmentLength' - Length of MPEG-2 Transport Stream segments to create (in seconds). Note that segments will end on the next keyframe after this number of seconds, so actual segment length may be longer.
---
--- * 'hgsTimedMetadataId3Frame' - Undocumented member.
---
--- * 'hgsOutputSelection' - Undocumented member.
---
--- * 'hgsCaptionLanguageSetting' - Undocumented member.
---
--- * 'hgsSegmentsPerSubdirectory' - Number of segments to write to a subdirectory before starting a new one. directoryStructure must be SINGLE_DIRECTORY for this setting to have an effect.
---
--- * 'hgsManifestDurationFormat' - Undocumented member.
---
--- * 'hgsClientCache' - Undocumented member.
---
--- * 'hgsTimestampDeltaMilliseconds' - Provides an extra millisecond delta offset to fine tune the timestamps.
---
--- * 'hgsStreamInfResolution' - Undocumented member.
---
--- * 'hgsManifestCompression' - Undocumented member.
-hlsGroupSettings
-    :: HlsGroupSettings
-hlsGroupSettings =
-  HlsGroupSettings'
-    { _hgsDirectoryStructure = Nothing
-    , _hgsSegmentControl = Nothing
-    , _hgsDestination = Nothing
-    , _hgsTimedMetadataId3Period = Nothing
-    , _hgsMinSegmentLength = Nothing
-    , _hgsProgramDateTime = Nothing
-    , _hgsProgramDateTimePeriod = Nothing
-    , _hgsCodecSpecification = Nothing
-    , _hgsCaptionLanguageMappings = Nothing
-    , _hgsBaseURL = Nothing
-    , _hgsAdMarkers = Nothing
-    , _hgsEncryption = Nothing
-    , _hgsSegmentLength = Nothing
-    , _hgsTimedMetadataId3Frame = Nothing
-    , _hgsOutputSelection = Nothing
-    , _hgsCaptionLanguageSetting = Nothing
-    , _hgsSegmentsPerSubdirectory = Nothing
-    , _hgsManifestDurationFormat = Nothing
-    , _hgsClientCache = Nothing
-    , _hgsTimestampDeltaMilliseconds = Nothing
-    , _hgsStreamInfResolution = Nothing
-    , _hgsManifestCompression = Nothing
-    }
-
-
--- | Undocumented member.
-hgsDirectoryStructure :: Lens' HlsGroupSettings (Maybe HlsDirectoryStructure)
-hgsDirectoryStructure = lens _hgsDirectoryStructure (\ s a -> s{_hgsDirectoryStructure = a})
-
--- | Undocumented member.
-hgsSegmentControl :: Lens' HlsGroupSettings (Maybe HlsSegmentControl)
-hgsSegmentControl = lens _hgsSegmentControl (\ s a -> s{_hgsSegmentControl = a})
-
--- | Use Destination (Destination) to specify the S3 output location and the output filename base. Destination accepts format identifiers. If you do not specify the base filename in the URI, the service will use the filename of the input file. If your job has multiple inputs, the service uses the filename of the first input file.
-hgsDestination :: Lens' HlsGroupSettings (Maybe Text)
-hgsDestination = lens _hgsDestination (\ s a -> s{_hgsDestination = a})
-
--- | Timed Metadata interval in seconds.
-hgsTimedMetadataId3Period :: Lens' HlsGroupSettings (Maybe Int)
-hgsTimedMetadataId3Period = lens _hgsTimedMetadataId3Period (\ s a -> s{_hgsTimedMetadataId3Period = a})
-
--- | When set, Minimum Segment Size is enforced by looking ahead and back within the specified range for a nearby avail and extending the segment size if needed.
-hgsMinSegmentLength :: Lens' HlsGroupSettings (Maybe Int)
-hgsMinSegmentLength = lens _hgsMinSegmentLength (\ s a -> s{_hgsMinSegmentLength = a})
-
--- | Undocumented member.
-hgsProgramDateTime :: Lens' HlsGroupSettings (Maybe HlsProgramDateTime)
-hgsProgramDateTime = lens _hgsProgramDateTime (\ s a -> s{_hgsProgramDateTime = a})
-
--- | Period of insertion of EXT-X-PROGRAM-DATE-TIME entry, in seconds.
-hgsProgramDateTimePeriod :: Lens' HlsGroupSettings (Maybe Int)
-hgsProgramDateTimePeriod = lens _hgsProgramDateTimePeriod (\ s a -> s{_hgsProgramDateTimePeriod = a})
-
--- | Undocumented member.
-hgsCodecSpecification :: Lens' HlsGroupSettings (Maybe HlsCodecSpecification)
-hgsCodecSpecification = lens _hgsCodecSpecification (\ s a -> s{_hgsCodecSpecification = a})
-
--- | Language to be used on Caption outputs
-hgsCaptionLanguageMappings :: Lens' HlsGroupSettings [HlsCaptionLanguageMapping]
-hgsCaptionLanguageMappings = lens _hgsCaptionLanguageMappings (\ s a -> s{_hgsCaptionLanguageMappings = a}) . _Default . _Coerce
-
--- | A partial URI prefix that will be prepended to each output in the media .m3u8 file. Can be used if base manifest is delivered from a different URL than the main .m3u8 file.
-hgsBaseURL :: Lens' HlsGroupSettings (Maybe Text)
-hgsBaseURL = lens _hgsBaseURL (\ s a -> s{_hgsBaseURL = a})
-
--- | Choose one or more ad marker types to pass SCTE35 signals through to this group of Apple HLS outputs.
-hgsAdMarkers :: Lens' HlsGroupSettings [HlsAdMarkers]
-hgsAdMarkers = lens _hgsAdMarkers (\ s a -> s{_hgsAdMarkers = a}) . _Default . _Coerce
-
--- | DRM settings.
-hgsEncryption :: Lens' HlsGroupSettings (Maybe HlsEncryptionSettings)
-hgsEncryption = lens _hgsEncryption (\ s a -> s{_hgsEncryption = a})
-
--- | Length of MPEG-2 Transport Stream segments to create (in seconds). Note that segments will end on the next keyframe after this number of seconds, so actual segment length may be longer.
-hgsSegmentLength :: Lens' HlsGroupSettings (Maybe Int)
-hgsSegmentLength = lens _hgsSegmentLength (\ s a -> s{_hgsSegmentLength = a})
-
--- | Undocumented member.
-hgsTimedMetadataId3Frame :: Lens' HlsGroupSettings (Maybe HlsTimedMetadataId3Frame)
-hgsTimedMetadataId3Frame = lens _hgsTimedMetadataId3Frame (\ s a -> s{_hgsTimedMetadataId3Frame = a})
-
--- | Undocumented member.
-hgsOutputSelection :: Lens' HlsGroupSettings (Maybe HlsOutputSelection)
-hgsOutputSelection = lens _hgsOutputSelection (\ s a -> s{_hgsOutputSelection = a})
-
--- | Undocumented member.
-hgsCaptionLanguageSetting :: Lens' HlsGroupSettings (Maybe HlsCaptionLanguageSetting)
-hgsCaptionLanguageSetting = lens _hgsCaptionLanguageSetting (\ s a -> s{_hgsCaptionLanguageSetting = a})
-
--- | Number of segments to write to a subdirectory before starting a new one. directoryStructure must be SINGLE_DIRECTORY for this setting to have an effect.
-hgsSegmentsPerSubdirectory :: Lens' HlsGroupSettings (Maybe Int)
-hgsSegmentsPerSubdirectory = lens _hgsSegmentsPerSubdirectory (\ s a -> s{_hgsSegmentsPerSubdirectory = a})
-
--- | Undocumented member.
-hgsManifestDurationFormat :: Lens' HlsGroupSettings (Maybe HlsManifestDurationFormat)
-hgsManifestDurationFormat = lens _hgsManifestDurationFormat (\ s a -> s{_hgsManifestDurationFormat = a})
-
--- | Undocumented member.
-hgsClientCache :: Lens' HlsGroupSettings (Maybe HlsClientCache)
-hgsClientCache = lens _hgsClientCache (\ s a -> s{_hgsClientCache = a})
-
--- | Provides an extra millisecond delta offset to fine tune the timestamps.
-hgsTimestampDeltaMilliseconds :: Lens' HlsGroupSettings (Maybe Int)
-hgsTimestampDeltaMilliseconds = lens _hgsTimestampDeltaMilliseconds (\ s a -> s{_hgsTimestampDeltaMilliseconds = a})
-
--- | Undocumented member.
-hgsStreamInfResolution :: Lens' HlsGroupSettings (Maybe HlsStreamInfResolution)
-hgsStreamInfResolution = lens _hgsStreamInfResolution (\ s a -> s{_hgsStreamInfResolution = a})
-
--- | Undocumented member.
-hgsManifestCompression :: Lens' HlsGroupSettings (Maybe HlsManifestCompression)
-hgsManifestCompression = lens _hgsManifestCompression (\ s a -> s{_hgsManifestCompression = a})
-
-instance FromJSON HlsGroupSettings where
-        parseJSON
-          = withObject "HlsGroupSettings"
-              (\ x ->
-                 HlsGroupSettings' <$>
-                   (x .:? "directoryStructure") <*>
-                     (x .:? "segmentControl")
-                     <*> (x .:? "destination")
-                     <*> (x .:? "timedMetadataId3Period")
-                     <*> (x .:? "minSegmentLength")
-                     <*> (x .:? "programDateTime")
-                     <*> (x .:? "programDateTimePeriod")
-                     <*> (x .:? "codecSpecification")
-                     <*> (x .:? "captionLanguageMappings" .!= mempty)
-                     <*> (x .:? "baseUrl")
-                     <*> (x .:? "adMarkers" .!= mempty)
-                     <*> (x .:? "encryption")
-                     <*> (x .:? "segmentLength")
-                     <*> (x .:? "timedMetadataId3Frame")
-                     <*> (x .:? "outputSelection")
-                     <*> (x .:? "captionLanguageSetting")
-                     <*> (x .:? "segmentsPerSubdirectory")
-                     <*> (x .:? "manifestDurationFormat")
-                     <*> (x .:? "clientCache")
-                     <*> (x .:? "timestampDeltaMilliseconds")
-                     <*> (x .:? "streamInfResolution")
-                     <*> (x .:? "manifestCompression"))
-
-instance Hashable HlsGroupSettings where
-
-instance NFData HlsGroupSettings where
-
-instance ToJSON HlsGroupSettings where
-        toJSON HlsGroupSettings'{..}
-          = object
-              (catMaybes
-                 [("directoryStructure" .=) <$>
-                    _hgsDirectoryStructure,
-                  ("segmentControl" .=) <$> _hgsSegmentControl,
-                  ("destination" .=) <$> _hgsDestination,
-                  ("timedMetadataId3Period" .=) <$>
-                    _hgsTimedMetadataId3Period,
-                  ("minSegmentLength" .=) <$> _hgsMinSegmentLength,
-                  ("programDateTime" .=) <$> _hgsProgramDateTime,
-                  ("programDateTimePeriod" .=) <$>
-                    _hgsProgramDateTimePeriod,
-                  ("codecSpecification" .=) <$> _hgsCodecSpecification,
-                  ("captionLanguageMappings" .=) <$>
-                    _hgsCaptionLanguageMappings,
-                  ("baseUrl" .=) <$> _hgsBaseURL,
-                  ("adMarkers" .=) <$> _hgsAdMarkers,
-                  ("encryption" .=) <$> _hgsEncryption,
-                  ("segmentLength" .=) <$> _hgsSegmentLength,
-                  ("timedMetadataId3Frame" .=) <$>
-                    _hgsTimedMetadataId3Frame,
-                  ("outputSelection" .=) <$> _hgsOutputSelection,
-                  ("captionLanguageSetting" .=) <$>
-                    _hgsCaptionLanguageSetting,
-                  ("segmentsPerSubdirectory" .=) <$>
-                    _hgsSegmentsPerSubdirectory,
-                  ("manifestDurationFormat" .=) <$>
-                    _hgsManifestDurationFormat,
-                  ("clientCache" .=) <$> _hgsClientCache,
-                  ("timestampDeltaMilliseconds" .=) <$>
-                    _hgsTimestampDeltaMilliseconds,
-                  ("streamInfResolution" .=) <$>
-                    _hgsStreamInfResolution,
-                  ("manifestCompression" .=) <$>
-                    _hgsManifestCompression])
-
--- | Settings for HLS output groups
---
--- /See:/ 'hlsSettings' smart constructor.
-data HlsSettings = HlsSettings'
-  { _hsAudioRenditionSets :: !(Maybe Text)
-  , _hsIFrameOnlyManifest :: !(Maybe HlsIFrameOnlyManifest)
-  , _hsAudioGroupId       :: !(Maybe Text)
-  , _hsSegmentModifier    :: !(Maybe Text)
-  , _hsAudioTrackType     :: !(Maybe HlsAudioTrackType)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'HlsSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hsAudioRenditionSets' - List all the audio groups that are used with the video output stream. Input all the audio GROUP-IDs that are associated to the video, separate by ','.
---
--- * 'hsIFrameOnlyManifest' - Undocumented member.
---
--- * 'hsAudioGroupId' - Specifies the group to which the audio Rendition belongs.
---
--- * 'hsSegmentModifier' - String concatenated to end of segment filenames. Accepts "Format Identifiers":#format_identifier_parameters.
---
--- * 'hsAudioTrackType' - Undocumented member.
-hlsSettings
-    :: HlsSettings
-hlsSettings =
-  HlsSettings'
-    { _hsAudioRenditionSets = Nothing
-    , _hsIFrameOnlyManifest = Nothing
-    , _hsAudioGroupId = Nothing
-    , _hsSegmentModifier = Nothing
-    , _hsAudioTrackType = Nothing
-    }
-
-
--- | List all the audio groups that are used with the video output stream. Input all the audio GROUP-IDs that are associated to the video, separate by ','.
-hsAudioRenditionSets :: Lens' HlsSettings (Maybe Text)
-hsAudioRenditionSets = lens _hsAudioRenditionSets (\ s a -> s{_hsAudioRenditionSets = a})
-
--- | Undocumented member.
-hsIFrameOnlyManifest :: Lens' HlsSettings (Maybe HlsIFrameOnlyManifest)
-hsIFrameOnlyManifest = lens _hsIFrameOnlyManifest (\ s a -> s{_hsIFrameOnlyManifest = a})
-
--- | Specifies the group to which the audio Rendition belongs.
-hsAudioGroupId :: Lens' HlsSettings (Maybe Text)
-hsAudioGroupId = lens _hsAudioGroupId (\ s a -> s{_hsAudioGroupId = a})
-
--- | String concatenated to end of segment filenames. Accepts "Format Identifiers":#format_identifier_parameters.
-hsSegmentModifier :: Lens' HlsSettings (Maybe Text)
-hsSegmentModifier = lens _hsSegmentModifier (\ s a -> s{_hsSegmentModifier = a})
-
--- | Undocumented member.
-hsAudioTrackType :: Lens' HlsSettings (Maybe HlsAudioTrackType)
-hsAudioTrackType = lens _hsAudioTrackType (\ s a -> s{_hsAudioTrackType = a})
-
-instance FromJSON HlsSettings where
-        parseJSON
-          = withObject "HlsSettings"
-              (\ x ->
-                 HlsSettings' <$>
-                   (x .:? "audioRenditionSets") <*>
-                     (x .:? "iFrameOnlyManifest")
-                     <*> (x .:? "audioGroupId")
-                     <*> (x .:? "segmentModifier")
-                     <*> (x .:? "audioTrackType"))
-
-instance Hashable HlsSettings where
-
-instance NFData HlsSettings where
-
-instance ToJSON HlsSettings where
-        toJSON HlsSettings'{..}
-          = object
-              (catMaybes
-                 [("audioRenditionSets" .=) <$> _hsAudioRenditionSets,
-                  ("iFrameOnlyManifest" .=) <$> _hsIFrameOnlyManifest,
-                  ("audioGroupId" .=) <$> _hsAudioGroupId,
-                  ("segmentModifier" .=) <$> _hsSegmentModifier,
-                  ("audioTrackType" .=) <$> _hsAudioTrackType])
-
--- | To insert ID3 tags in your output, specify two values. Use ID3 tag (Id3) to specify the base 64 encoded string and use Timecode (TimeCode) to specify the time when the tag should be inserted. To insert multiple ID3 tags in your output, create mulitple instances of ID3 insertion (Id3Insertion).
---
--- /See:/ 'id3Insertion' smart constructor.
-data Id3Insertion = Id3Insertion'
-  { _iiId3      :: !(Maybe Text)
-  , _iiTimecode :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Id3Insertion' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iiId3' - Use ID3 tag (Id3) to provide a tag value in base64-encode format.
---
--- * 'iiTimecode' - Provide a Timecode (TimeCode) in HH:MM:SS:FF or HH:MM:SS;FF format.
-id3Insertion
-    :: Id3Insertion
-id3Insertion = Id3Insertion' {_iiId3 = Nothing, _iiTimecode = Nothing}
-
-
--- | Use ID3 tag (Id3) to provide a tag value in base64-encode format.
-iiId3 :: Lens' Id3Insertion (Maybe Text)
-iiId3 = lens _iiId3 (\ s a -> s{_iiId3 = a})
-
--- | Provide a Timecode (TimeCode) in HH:MM:SS:FF or HH:MM:SS;FF format.
-iiTimecode :: Lens' Id3Insertion (Maybe Text)
-iiTimecode = lens _iiTimecode (\ s a -> s{_iiTimecode = a})
-
-instance FromJSON Id3Insertion where
-        parseJSON
-          = withObject "Id3Insertion"
-              (\ x ->
-                 Id3Insertion' <$>
-                   (x .:? "id3") <*> (x .:? "timecode"))
-
-instance Hashable Id3Insertion where
-
-instance NFData Id3Insertion where
-
-instance ToJSON Id3Insertion where
-        toJSON Id3Insertion'{..}
-          = object
-              (catMaybes
-                 [("id3" .=) <$> _iiId3,
-                  ("timecode" .=) <$> _iiTimecode])
-
--- | Enable the Image inserter (ImageInserter) feature to include a graphic overlay on your video. Enable or disable this feature for each output individually. This setting is disabled by default.
---
--- /See:/ 'imageInserter' smart constructor.
-newtype ImageInserter = ImageInserter'
-  { _iiInsertableImages :: Maybe [InsertableImage]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ImageInserter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iiInsertableImages' - Image to insert. Must be 32 bit windows BMP, PNG, or TGA file. Must not be  larger than the output frames.
-imageInserter
-    :: ImageInserter
-imageInserter = ImageInserter' {_iiInsertableImages = Nothing}
-
-
--- | Image to insert. Must be 32 bit windows BMP, PNG, or TGA file. Must not be  larger than the output frames.
-iiInsertableImages :: Lens' ImageInserter [InsertableImage]
-iiInsertableImages = lens _iiInsertableImages (\ s a -> s{_iiInsertableImages = a}) . _Default . _Coerce
-
-instance FromJSON ImageInserter where
-        parseJSON
-          = withObject "ImageInserter"
-              (\ x ->
-                 ImageInserter' <$>
-                   (x .:? "insertableImages" .!= mempty))
-
-instance Hashable ImageInserter where
-
-instance NFData ImageInserter where
-
-instance ToJSON ImageInserter where
-        toJSON ImageInserter'{..}
-          = object
-              (catMaybes
-                 [("insertableImages" .=) <$> _iiInsertableImages])
-
--- | Specifies media input
---
--- /See:/ 'input' smart constructor.
-data Input = Input'
-  { _iVideoSelector       :: !(Maybe VideoSelector)
-  , _iProgramNumber       :: !(Maybe Int)
-  , _iAudioSelectorGroups :: !(Maybe (Map Text AudioSelectorGroup))
-  , _iTimecodeSource      :: !(Maybe InputTimecodeSource)
-  , _iAudioSelectors      :: !(Maybe (Map Text AudioSelector))
-  , _iDeblockFilter       :: !(Maybe InputDeblockFilter)
-  , _iInputClippings      :: !(Maybe [InputClipping])
-  , _iDenoiseFilter       :: !(Maybe InputDenoiseFilter)
-  , _iFilterStrength      :: !(Maybe Int)
-  , _iPsiControl          :: !(Maybe InputPsiControl)
-  , _iCaptionSelectors    :: !(Maybe (Map Text CaptionSelector))
-  , _iFileInput           :: !(Maybe Text)
-  , _iFilterEnable        :: !(Maybe InputFilterEnable)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Input' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iVideoSelector' - Undocumented member.
---
--- * 'iProgramNumber' - Use Program (programNumber) to select a specific program from within a multi-program transport stream. Note that Quad 4K is not currently supported. Default is the first program within the transport stream. If the program you specify doesn't exist, the transcoding service will use this default.
---
--- * 'iAudioSelectorGroups' - Specifies set of audio selectors within an input to combine. An input may have multiple audio selector groups. See "Audio Selector Group":#inputs-audio_selector_group for more information.
---
--- * 'iTimecodeSource' - Undocumented member.
---
--- * 'iAudioSelectors' - Use Audio selectors (AudioSelectors) to specify a track or set of tracks from the input that you will use in your outputs. You can use mutiple Audio selectors per input.
---
--- * 'iDeblockFilter' - Undocumented member.
---
--- * 'iInputClippings' - (InputClippings) contains sets of start and end times that together specify a portion of the input to be used in the outputs. If you provide only a start time, the clip will be the entire input from that point to the end. If you provide only an end time, it will be the entire input up to that point. When you specify more than one input clip, the transcoding service creates the job outputs by stringing the clips together in the order you specify them.
---
--- * 'iDenoiseFilter' - Undocumented member.
---
--- * 'iFilterStrength' - Use Filter strength (FilterStrength) to adjust the magnitude the input filter settings (Deblock and Denoise). The range is -5 to 5. Default is 0.
---
--- * 'iPsiControl' - Undocumented member.
---
--- * 'iCaptionSelectors' - Use Captions selectors (CaptionSelectors) to specify the captions data from the input that you will use in your outputs. You can use mutiple captions selectors per input.
---
--- * 'iFileInput' - Use Input (fileInput) to define the source file used in the transcode job. There can be multiple inputs in a job. These inputs are concantenated, in the order they are specified in the job, to create the output.
---
--- * 'iFilterEnable' - Undocumented member.
-input
-    :: Input
-input =
-  Input'
-    { _iVideoSelector = Nothing
-    , _iProgramNumber = Nothing
-    , _iAudioSelectorGroups = Nothing
-    , _iTimecodeSource = Nothing
-    , _iAudioSelectors = Nothing
-    , _iDeblockFilter = Nothing
-    , _iInputClippings = Nothing
-    , _iDenoiseFilter = Nothing
-    , _iFilterStrength = Nothing
-    , _iPsiControl = Nothing
-    , _iCaptionSelectors = Nothing
-    , _iFileInput = Nothing
-    , _iFilterEnable = Nothing
-    }
-
-
--- | Undocumented member.
-iVideoSelector :: Lens' Input (Maybe VideoSelector)
-iVideoSelector = lens _iVideoSelector (\ s a -> s{_iVideoSelector = a})
-
--- | Use Program (programNumber) to select a specific program from within a multi-program transport stream. Note that Quad 4K is not currently supported. Default is the first program within the transport stream. If the program you specify doesn't exist, the transcoding service will use this default.
-iProgramNumber :: Lens' Input (Maybe Int)
-iProgramNumber = lens _iProgramNumber (\ s a -> s{_iProgramNumber = a})
-
--- | Specifies set of audio selectors within an input to combine. An input may have multiple audio selector groups. See "Audio Selector Group":#inputs-audio_selector_group for more information.
-iAudioSelectorGroups :: Lens' Input (HashMap Text AudioSelectorGroup)
-iAudioSelectorGroups = lens _iAudioSelectorGroups (\ s a -> s{_iAudioSelectorGroups = a}) . _Default . _Map
-
--- | Undocumented member.
-iTimecodeSource :: Lens' Input (Maybe InputTimecodeSource)
-iTimecodeSource = lens _iTimecodeSource (\ s a -> s{_iTimecodeSource = a})
-
--- | Use Audio selectors (AudioSelectors) to specify a track or set of tracks from the input that you will use in your outputs. You can use mutiple Audio selectors per input.
-iAudioSelectors :: Lens' Input (HashMap Text AudioSelector)
-iAudioSelectors = lens _iAudioSelectors (\ s a -> s{_iAudioSelectors = a}) . _Default . _Map
-
--- | Undocumented member.
-iDeblockFilter :: Lens' Input (Maybe InputDeblockFilter)
-iDeblockFilter = lens _iDeblockFilter (\ s a -> s{_iDeblockFilter = a})
-
--- | (InputClippings) contains sets of start and end times that together specify a portion of the input to be used in the outputs. If you provide only a start time, the clip will be the entire input from that point to the end. If you provide only an end time, it will be the entire input up to that point. When you specify more than one input clip, the transcoding service creates the job outputs by stringing the clips together in the order you specify them.
-iInputClippings :: Lens' Input [InputClipping]
-iInputClippings = lens _iInputClippings (\ s a -> s{_iInputClippings = a}) . _Default . _Coerce
-
--- | Undocumented member.
-iDenoiseFilter :: Lens' Input (Maybe InputDenoiseFilter)
-iDenoiseFilter = lens _iDenoiseFilter (\ s a -> s{_iDenoiseFilter = a})
-
--- | Use Filter strength (FilterStrength) to adjust the magnitude the input filter settings (Deblock and Denoise). The range is -5 to 5. Default is 0.
-iFilterStrength :: Lens' Input (Maybe Int)
-iFilterStrength = lens _iFilterStrength (\ s a -> s{_iFilterStrength = a})
-
--- | Undocumented member.
-iPsiControl :: Lens' Input (Maybe InputPsiControl)
-iPsiControl = lens _iPsiControl (\ s a -> s{_iPsiControl = a})
-
--- | Use Captions selectors (CaptionSelectors) to specify the captions data from the input that you will use in your outputs. You can use mutiple captions selectors per input.
-iCaptionSelectors :: Lens' Input (HashMap Text CaptionSelector)
-iCaptionSelectors = lens _iCaptionSelectors (\ s a -> s{_iCaptionSelectors = a}) . _Default . _Map
-
--- | Use Input (fileInput) to define the source file used in the transcode job. There can be multiple inputs in a job. These inputs are concantenated, in the order they are specified in the job, to create the output.
-iFileInput :: Lens' Input (Maybe Text)
-iFileInput = lens _iFileInput (\ s a -> s{_iFileInput = a})
-
--- | Undocumented member.
-iFilterEnable :: Lens' Input (Maybe InputFilterEnable)
-iFilterEnable = lens _iFilterEnable (\ s a -> s{_iFilterEnable = a})
-
-instance FromJSON Input where
-        parseJSON
-          = withObject "Input"
-              (\ x ->
-                 Input' <$>
-                   (x .:? "videoSelector") <*> (x .:? "programNumber")
-                     <*> (x .:? "audioSelectorGroups" .!= mempty)
-                     <*> (x .:? "timecodeSource")
-                     <*> (x .:? "audioSelectors" .!= mempty)
-                     <*> (x .:? "deblockFilter")
-                     <*> (x .:? "inputClippings" .!= mempty)
-                     <*> (x .:? "denoiseFilter")
-                     <*> (x .:? "filterStrength")
-                     <*> (x .:? "psiControl")
-                     <*> (x .:? "captionSelectors" .!= mempty)
-                     <*> (x .:? "fileInput")
-                     <*> (x .:? "filterEnable"))
-
-instance Hashable Input where
-
-instance NFData Input where
-
-instance ToJSON Input where
-        toJSON Input'{..}
-          = object
-              (catMaybes
-                 [("videoSelector" .=) <$> _iVideoSelector,
-                  ("programNumber" .=) <$> _iProgramNumber,
-                  ("audioSelectorGroups" .=) <$> _iAudioSelectorGroups,
-                  ("timecodeSource" .=) <$> _iTimecodeSource,
-                  ("audioSelectors" .=) <$> _iAudioSelectors,
-                  ("deblockFilter" .=) <$> _iDeblockFilter,
-                  ("inputClippings" .=) <$> _iInputClippings,
-                  ("denoiseFilter" .=) <$> _iDenoiseFilter,
-                  ("filterStrength" .=) <$> _iFilterStrength,
-                  ("psiControl" .=) <$> _iPsiControl,
-                  ("captionSelectors" .=) <$> _iCaptionSelectors,
-                  ("fileInput" .=) <$> _iFileInput,
-                  ("filterEnable" .=) <$> _iFilterEnable])
-
--- | Include one instance of (InputClipping) for each input clip.
---
--- /See:/ 'inputClipping' smart constructor.
-data InputClipping = InputClipping'
-  { _icEndTimecode   :: !(Maybe Text)
-  , _icStartTimecode :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputClipping' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'icEndTimecode' - Set End timecode (EndTimecode) to the end of the portion of the input you are clipping. The frame corresponding to the End timecode value is included in the clip. Start timecode or End timecode may be left blank, but not both. When choosing this value, take into account your setting for Input timecode source. For example, if you have embedded timecodes that start at 01:00:00:00 and you want your clip to begin five minutes into the video, use 01:00:05:00.
---
--- * 'icStartTimecode' - Set Start timecode (StartTimecode) to the beginning of the portion of the input you are clipping. The frame corresponding to the Start timecode value is included in the clip. Start timecode or End timecode may be left blank, but not both. When choosing this value, take into account your setting for Input timecode source. For example, if you have embedded timecodes that start at 01:00:00:00 and you want your clip to begin five minutes into the video, use 01:00:05:00.
-inputClipping
-    :: InputClipping
-inputClipping =
-  InputClipping' {_icEndTimecode = Nothing, _icStartTimecode = Nothing}
-
-
--- | Set End timecode (EndTimecode) to the end of the portion of the input you are clipping. The frame corresponding to the End timecode value is included in the clip. Start timecode or End timecode may be left blank, but not both. When choosing this value, take into account your setting for Input timecode source. For example, if you have embedded timecodes that start at 01:00:00:00 and you want your clip to begin five minutes into the video, use 01:00:05:00.
-icEndTimecode :: Lens' InputClipping (Maybe Text)
-icEndTimecode = lens _icEndTimecode (\ s a -> s{_icEndTimecode = a})
-
--- | Set Start timecode (StartTimecode) to the beginning of the portion of the input you are clipping. The frame corresponding to the Start timecode value is included in the clip. Start timecode or End timecode may be left blank, but not both. When choosing this value, take into account your setting for Input timecode source. For example, if you have embedded timecodes that start at 01:00:00:00 and you want your clip to begin five minutes into the video, use 01:00:05:00.
-icStartTimecode :: Lens' InputClipping (Maybe Text)
-icStartTimecode = lens _icStartTimecode (\ s a -> s{_icStartTimecode = a})
-
-instance FromJSON InputClipping where
-        parseJSON
-          = withObject "InputClipping"
-              (\ x ->
-                 InputClipping' <$>
-                   (x .:? "endTimecode") <*> (x .:? "startTimecode"))
-
-instance Hashable InputClipping where
-
-instance NFData InputClipping where
-
-instance ToJSON InputClipping where
-        toJSON InputClipping'{..}
-          = object
-              (catMaybes
-                 [("endTimecode" .=) <$> _icEndTimecode,
-                  ("startTimecode" .=) <$> _icStartTimecode])
-
--- | Specified video input in a template.
---
--- /See:/ 'inputTemplate' smart constructor.
-data InputTemplate = InputTemplate'
-  { _itVideoSelector       :: !(Maybe VideoSelector)
-  , _itProgramNumber       :: !(Maybe Int)
-  , _itAudioSelectorGroups :: !(Maybe (Map Text AudioSelectorGroup))
-  , _itTimecodeSource      :: !(Maybe InputTimecodeSource)
-  , _itAudioSelectors      :: !(Maybe (Map Text AudioSelector))
-  , _itDeblockFilter       :: !(Maybe InputDeblockFilter)
-  , _itInputClippings      :: !(Maybe [InputClipping])
-  , _itDenoiseFilter       :: !(Maybe InputDenoiseFilter)
-  , _itFilterStrength      :: !(Maybe Int)
-  , _itPsiControl          :: !(Maybe InputPsiControl)
-  , _itCaptionSelectors    :: !(Maybe (Map Text CaptionSelector))
-  , _itFilterEnable        :: !(Maybe InputFilterEnable)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InputTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'itVideoSelector' - Undocumented member.
---
--- * 'itProgramNumber' - Use Program (programNumber) to select a specific program from within a multi-program transport stream. Note that Quad 4K is not currently supported. Default is the first program within the transport stream. If the program you specify doesn't exist, the transcoding service will use this default.
---
--- * 'itAudioSelectorGroups' - Specifies set of audio selectors within an input to combine. An input may have multiple audio selector groups. See "Audio Selector Group":#inputs-audio_selector_group for more information.
---
--- * 'itTimecodeSource' - Undocumented member.
---
--- * 'itAudioSelectors' - Use Audio selectors (AudioSelectors) to specify a track or set of tracks from the input that you will use in your outputs. You can use mutiple Audio selectors per input.
---
--- * 'itDeblockFilter' - Undocumented member.
---
--- * 'itInputClippings' - (InputClippings) contains sets of start and end times that together specify a portion of the input to be used in the outputs. If you provide only a start time, the clip will be the entire input from that point to the end. If you provide only an end time, it will be the entire input up to that point. When you specify more than one input clip, the transcoding service creates the job outputs by stringing the clips together in the order you specify them.
---
--- * 'itDenoiseFilter' - Undocumented member.
---
--- * 'itFilterStrength' - Use Filter strength (FilterStrength) to adjust the magnitude the input filter settings (Deblock and Denoise). The range is -5 to 5. Default is 0.
---
--- * 'itPsiControl' - Undocumented member.
---
--- * 'itCaptionSelectors' - Use Captions selectors (CaptionSelectors) to specify the captions data from the input that you will use in your outputs. You can use mutiple captions selectors per input.
---
--- * 'itFilterEnable' - Undocumented member.
-inputTemplate
-    :: InputTemplate
-inputTemplate =
-  InputTemplate'
-    { _itVideoSelector = Nothing
-    , _itProgramNumber = Nothing
-    , _itAudioSelectorGroups = Nothing
-    , _itTimecodeSource = Nothing
-    , _itAudioSelectors = Nothing
-    , _itDeblockFilter = Nothing
-    , _itInputClippings = Nothing
-    , _itDenoiseFilter = Nothing
-    , _itFilterStrength = Nothing
-    , _itPsiControl = Nothing
-    , _itCaptionSelectors = Nothing
-    , _itFilterEnable = Nothing
-    }
-
-
--- | Undocumented member.
-itVideoSelector :: Lens' InputTemplate (Maybe VideoSelector)
-itVideoSelector = lens _itVideoSelector (\ s a -> s{_itVideoSelector = a})
-
--- | Use Program (programNumber) to select a specific program from within a multi-program transport stream. Note that Quad 4K is not currently supported. Default is the first program within the transport stream. If the program you specify doesn't exist, the transcoding service will use this default.
-itProgramNumber :: Lens' InputTemplate (Maybe Int)
-itProgramNumber = lens _itProgramNumber (\ s a -> s{_itProgramNumber = a})
-
--- | Specifies set of audio selectors within an input to combine. An input may have multiple audio selector groups. See "Audio Selector Group":#inputs-audio_selector_group for more information.
-itAudioSelectorGroups :: Lens' InputTemplate (HashMap Text AudioSelectorGroup)
-itAudioSelectorGroups = lens _itAudioSelectorGroups (\ s a -> s{_itAudioSelectorGroups = a}) . _Default . _Map
-
--- | Undocumented member.
-itTimecodeSource :: Lens' InputTemplate (Maybe InputTimecodeSource)
-itTimecodeSource = lens _itTimecodeSource (\ s a -> s{_itTimecodeSource = a})
-
--- | Use Audio selectors (AudioSelectors) to specify a track or set of tracks from the input that you will use in your outputs. You can use mutiple Audio selectors per input.
-itAudioSelectors :: Lens' InputTemplate (HashMap Text AudioSelector)
-itAudioSelectors = lens _itAudioSelectors (\ s a -> s{_itAudioSelectors = a}) . _Default . _Map
-
--- | Undocumented member.
-itDeblockFilter :: Lens' InputTemplate (Maybe InputDeblockFilter)
-itDeblockFilter = lens _itDeblockFilter (\ s a -> s{_itDeblockFilter = a})
-
--- | (InputClippings) contains sets of start and end times that together specify a portion of the input to be used in the outputs. If you provide only a start time, the clip will be the entire input from that point to the end. If you provide only an end time, it will be the entire input up to that point. When you specify more than one input clip, the transcoding service creates the job outputs by stringing the clips together in the order you specify them.
-itInputClippings :: Lens' InputTemplate [InputClipping]
-itInputClippings = lens _itInputClippings (\ s a -> s{_itInputClippings = a}) . _Default . _Coerce
-
--- | Undocumented member.
-itDenoiseFilter :: Lens' InputTemplate (Maybe InputDenoiseFilter)
-itDenoiseFilter = lens _itDenoiseFilter (\ s a -> s{_itDenoiseFilter = a})
-
--- | Use Filter strength (FilterStrength) to adjust the magnitude the input filter settings (Deblock and Denoise). The range is -5 to 5. Default is 0.
-itFilterStrength :: Lens' InputTemplate (Maybe Int)
-itFilterStrength = lens _itFilterStrength (\ s a -> s{_itFilterStrength = a})
-
--- | Undocumented member.
-itPsiControl :: Lens' InputTemplate (Maybe InputPsiControl)
-itPsiControl = lens _itPsiControl (\ s a -> s{_itPsiControl = a})
-
--- | Use Captions selectors (CaptionSelectors) to specify the captions data from the input that you will use in your outputs. You can use mutiple captions selectors per input.
-itCaptionSelectors :: Lens' InputTemplate (HashMap Text CaptionSelector)
-itCaptionSelectors = lens _itCaptionSelectors (\ s a -> s{_itCaptionSelectors = a}) . _Default . _Map
-
--- | Undocumented member.
-itFilterEnable :: Lens' InputTemplate (Maybe InputFilterEnable)
-itFilterEnable = lens _itFilterEnable (\ s a -> s{_itFilterEnable = a})
-
-instance FromJSON InputTemplate where
-        parseJSON
-          = withObject "InputTemplate"
-              (\ x ->
-                 InputTemplate' <$>
-                   (x .:? "videoSelector") <*> (x .:? "programNumber")
-                     <*> (x .:? "audioSelectorGroups" .!= mempty)
-                     <*> (x .:? "timecodeSource")
-                     <*> (x .:? "audioSelectors" .!= mempty)
-                     <*> (x .:? "deblockFilter")
-                     <*> (x .:? "inputClippings" .!= mempty)
-                     <*> (x .:? "denoiseFilter")
-                     <*> (x .:? "filterStrength")
-                     <*> (x .:? "psiControl")
-                     <*> (x .:? "captionSelectors" .!= mempty)
-                     <*> (x .:? "filterEnable"))
-
-instance Hashable InputTemplate where
-
-instance NFData InputTemplate where
-
-instance ToJSON InputTemplate where
-        toJSON InputTemplate'{..}
-          = object
-              (catMaybes
-                 [("videoSelector" .=) <$> _itVideoSelector,
-                  ("programNumber" .=) <$> _itProgramNumber,
-                  ("audioSelectorGroups" .=) <$>
-                    _itAudioSelectorGroups,
-                  ("timecodeSource" .=) <$> _itTimecodeSource,
-                  ("audioSelectors" .=) <$> _itAudioSelectors,
-                  ("deblockFilter" .=) <$> _itDeblockFilter,
-                  ("inputClippings" .=) <$> _itInputClippings,
-                  ("denoiseFilter" .=) <$> _itDenoiseFilter,
-                  ("filterStrength" .=) <$> _itFilterStrength,
-                  ("psiControl" .=) <$> _itPsiControl,
-                  ("captionSelectors" .=) <$> _itCaptionSelectors,
-                  ("filterEnable" .=) <$> _itFilterEnable])
-
--- | Settings for Insertable Image
---
--- /See:/ 'insertableImage' smart constructor.
-data InsertableImage = InsertableImage'
-  { _iiImageX             :: !(Maybe Int)
-  , _iiHeight             :: !(Maybe Int)
-  , _iiStartTime          :: !(Maybe Text)
-  , _iiFadeOut            :: !(Maybe Int)
-  , _iiWidth              :: !(Maybe Int)
-  , _iiOpacity            :: !(Maybe Int)
-  , _iiLayer              :: !(Maybe Int)
-  , _iiDuration           :: !(Maybe Int)
-  , _iiImageY             :: !(Maybe Int)
-  , _iiImageInserterInput :: !(Maybe Text)
-  , _iiFadeIn             :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InsertableImage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iiImageX' - Use Left (ImageX) to set the distance, in pixels, between the inserted image and the left edge of the frame. Required for BMP, PNG and TGA input.
---
--- * 'iiHeight' - Specify the Height (Height) of the inserted image. Use a value that is less than or equal to the video resolution height. Leave this setting blank to use the native height of the image.
---
--- * 'iiStartTime' - Use Start time (StartTime) to specify the video timecode when the image is inserted in the output. This must be in timecode format (HH:MM:SS:FF)
---
--- * 'iiFadeOut' - Use Fade out (FadeOut) to set the length, in milliseconds, of the inserted image fade out. If you don't specify a value for Fade out, the image will disappear abruptly at the end of the inserted image duration.
---
--- * 'iiWidth' - Specify the Width (Width) of the inserted image. Use a value that is less than or equal to the video resolution width. Leave this setting blank to use the native width of the image.
---
--- * 'iiOpacity' - Use Opacity (Opacity) to specify how much of the underlying video shows through the inserted image. 0 is transparent and 100 is fully opaque. Default is 50.
---
--- * 'iiLayer' - Use Layer (Layer) to specify how overlapping inserted images appear. Images with higher values of layer appear on top of images with lower values of layer.
---
--- * 'iiDuration' - Use Duration (Duration) to set the time, in milliseconds, for the image to remain on the output video.
---
--- * 'iiImageY' - Use Top (ImageY) to set the distance, in pixels, between the inserted image and the top edge of the video frame. Required for BMP, PNG and TGA input.
---
--- * 'iiImageInserterInput' - Use Image location (imageInserterInput) to specify the Amazon S3 location of the image to be inserted into the output. Use a 32 bit BMP, PNG, or TGA file that fits inside the video frame.
---
--- * 'iiFadeIn' - Use Fade in (FadeIut) to set the length, in milliseconds, of the inserted image fade in. If you don't specify a value for Fade in, the image will appear abruptly at the Start time.
-insertableImage
-    :: InsertableImage
-insertableImage =
-  InsertableImage'
-    { _iiImageX = Nothing
-    , _iiHeight = Nothing
-    , _iiStartTime = Nothing
-    , _iiFadeOut = Nothing
-    , _iiWidth = Nothing
-    , _iiOpacity = Nothing
-    , _iiLayer = Nothing
-    , _iiDuration = Nothing
-    , _iiImageY = Nothing
-    , _iiImageInserterInput = Nothing
-    , _iiFadeIn = Nothing
-    }
-
-
--- | Use Left (ImageX) to set the distance, in pixels, between the inserted image and the left edge of the frame. Required for BMP, PNG and TGA input.
-iiImageX :: Lens' InsertableImage (Maybe Int)
-iiImageX = lens _iiImageX (\ s a -> s{_iiImageX = a})
-
--- | Specify the Height (Height) of the inserted image. Use a value that is less than or equal to the video resolution height. Leave this setting blank to use the native height of the image.
-iiHeight :: Lens' InsertableImage (Maybe Int)
-iiHeight = lens _iiHeight (\ s a -> s{_iiHeight = a})
-
--- | Use Start time (StartTime) to specify the video timecode when the image is inserted in the output. This must be in timecode format (HH:MM:SS:FF)
-iiStartTime :: Lens' InsertableImage (Maybe Text)
-iiStartTime = lens _iiStartTime (\ s a -> s{_iiStartTime = a})
-
--- | Use Fade out (FadeOut) to set the length, in milliseconds, of the inserted image fade out. If you don't specify a value for Fade out, the image will disappear abruptly at the end of the inserted image duration.
-iiFadeOut :: Lens' InsertableImage (Maybe Int)
-iiFadeOut = lens _iiFadeOut (\ s a -> s{_iiFadeOut = a})
-
--- | Specify the Width (Width) of the inserted image. Use a value that is less than or equal to the video resolution width. Leave this setting blank to use the native width of the image.
-iiWidth :: Lens' InsertableImage (Maybe Int)
-iiWidth = lens _iiWidth (\ s a -> s{_iiWidth = a})
-
--- | Use Opacity (Opacity) to specify how much of the underlying video shows through the inserted image. 0 is transparent and 100 is fully opaque. Default is 50.
-iiOpacity :: Lens' InsertableImage (Maybe Int)
-iiOpacity = lens _iiOpacity (\ s a -> s{_iiOpacity = a})
-
--- | Use Layer (Layer) to specify how overlapping inserted images appear. Images with higher values of layer appear on top of images with lower values of layer.
-iiLayer :: Lens' InsertableImage (Maybe Int)
-iiLayer = lens _iiLayer (\ s a -> s{_iiLayer = a})
-
--- | Use Duration (Duration) to set the time, in milliseconds, for the image to remain on the output video.
-iiDuration :: Lens' InsertableImage (Maybe Int)
-iiDuration = lens _iiDuration (\ s a -> s{_iiDuration = a})
-
--- | Use Top (ImageY) to set the distance, in pixels, between the inserted image and the top edge of the video frame. Required for BMP, PNG and TGA input.
-iiImageY :: Lens' InsertableImage (Maybe Int)
-iiImageY = lens _iiImageY (\ s a -> s{_iiImageY = a})
-
--- | Use Image location (imageInserterInput) to specify the Amazon S3 location of the image to be inserted into the output. Use a 32 bit BMP, PNG, or TGA file that fits inside the video frame.
-iiImageInserterInput :: Lens' InsertableImage (Maybe Text)
-iiImageInserterInput = lens _iiImageInserterInput (\ s a -> s{_iiImageInserterInput = a})
-
--- | Use Fade in (FadeIut) to set the length, in milliseconds, of the inserted image fade in. If you don't specify a value for Fade in, the image will appear abruptly at the Start time.
-iiFadeIn :: Lens' InsertableImage (Maybe Int)
-iiFadeIn = lens _iiFadeIn (\ s a -> s{_iiFadeIn = a})
-
-instance FromJSON InsertableImage where
-        parseJSON
-          = withObject "InsertableImage"
-              (\ x ->
-                 InsertableImage' <$>
-                   (x .:? "imageX") <*> (x .:? "height") <*>
-                     (x .:? "startTime")
-                     <*> (x .:? "fadeOut")
-                     <*> (x .:? "width")
-                     <*> (x .:? "opacity")
-                     <*> (x .:? "layer")
-                     <*> (x .:? "duration")
-                     <*> (x .:? "imageY")
-                     <*> (x .:? "imageInserterInput")
-                     <*> (x .:? "fadeIn"))
-
-instance Hashable InsertableImage where
-
-instance NFData InsertableImage where
-
-instance ToJSON InsertableImage where
-        toJSON InsertableImage'{..}
-          = object
-              (catMaybes
-                 [("imageX" .=) <$> _iiImageX,
-                  ("height" .=) <$> _iiHeight,
-                  ("startTime" .=) <$> _iiStartTime,
-                  ("fadeOut" .=) <$> _iiFadeOut,
-                  ("width" .=) <$> _iiWidth,
-                  ("opacity" .=) <$> _iiOpacity,
-                  ("layer" .=) <$> _iiLayer,
-                  ("duration" .=) <$> _iiDuration,
-                  ("imageY" .=) <$> _iiImageY,
-                  ("imageInserterInput" .=) <$> _iiImageInserterInput,
-                  ("fadeIn" .=) <$> _iiFadeIn])
-
--- | Each job converts an input file into an output file or files. For more information, see the User Guide at http://docs.aws.amazon.com/mediaconvert/latest/ug/what-is.html
---
--- /See:/ 'job' smart constructor.
-data Job = Job'
-  { _jStatus             :: !(Maybe JobStatus)
-  , _jJobTemplate        :: !(Maybe Text)
-  , _jSettings           :: !(Maybe JobSettings)
-  , _jARN                :: !(Maybe Text)
-  , _jCreatedAt          :: !(Maybe POSIX)
-  , _jQueue              :: !(Maybe Text)
-  , _jUserMetadata       :: !(Maybe (Map Text Text))
-  , _jRole               :: !(Maybe Text)
-  , _jOutputGroupDetails :: !(Maybe [OutputGroupDetail])
-  , _jErrorCode          :: !(Maybe Int)
-  , _jId                 :: !(Maybe Text)
-  , _jTiming             :: !(Maybe Timing)
-  , _jErrorMessage       :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Job' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jStatus' - Undocumented member.
---
--- * 'jJobTemplate' - The job template that the job is created from, if it is created from a job template.
---
--- * 'jSettings' - Undocumented member.
---
--- * 'jARN' - An identifier for this resource that is unique within all of AWS.
---
--- * 'jCreatedAt' - The time, in Unix epoch format in seconds, when the job got created.
---
--- * 'jQueue' - Optional. When you create a job, you can specify a queue to send it to. If you don't specify, the job will go to the default queue. For more about queues, see the User Guide topic at http://docs.aws.amazon.com/mediaconvert/latest/ug/what-is.html
---
--- * 'jUserMetadata' - User-defined metadata that you want to associate with an MediaConvert job. You specify metadata in key/value pairs.
---
--- * 'jRole' - The IAM role you use for creating this job. For details about permissions, see the User Guide topic at the User Guide at http://docs.aws.amazon.com/mediaconvert/latest/ug/iam-role.html
---
--- * 'jOutputGroupDetails' - List of output group details
---
--- * 'jErrorCode' - Error code for the job
---
--- * 'jId' - A portion of the job's ARN, unique within your AWS Elemental MediaConvert resources
---
--- * 'jTiming' - Undocumented member.
---
--- * 'jErrorMessage' - Error message of Job
-job
-    :: Job
-job =
-  Job'
-    { _jStatus = Nothing
-    , _jJobTemplate = Nothing
-    , _jSettings = Nothing
-    , _jARN = Nothing
-    , _jCreatedAt = Nothing
-    , _jQueue = Nothing
-    , _jUserMetadata = Nothing
-    , _jRole = Nothing
-    , _jOutputGroupDetails = Nothing
-    , _jErrorCode = Nothing
-    , _jId = Nothing
-    , _jTiming = Nothing
-    , _jErrorMessage = Nothing
-    }
-
-
--- | Undocumented member.
-jStatus :: Lens' Job (Maybe JobStatus)
-jStatus = lens _jStatus (\ s a -> s{_jStatus = a})
-
--- | The job template that the job is created from, if it is created from a job template.
-jJobTemplate :: Lens' Job (Maybe Text)
-jJobTemplate = lens _jJobTemplate (\ s a -> s{_jJobTemplate = a})
-
--- | Undocumented member.
-jSettings :: Lens' Job (Maybe JobSettings)
-jSettings = lens _jSettings (\ s a -> s{_jSettings = a})
-
--- | An identifier for this resource that is unique within all of AWS.
-jARN :: Lens' Job (Maybe Text)
-jARN = lens _jARN (\ s a -> s{_jARN = a})
-
--- | The time, in Unix epoch format in seconds, when the job got created.
-jCreatedAt :: Lens' Job (Maybe UTCTime)
-jCreatedAt = lens _jCreatedAt (\ s a -> s{_jCreatedAt = a}) . mapping _Time
-
--- | Optional. When you create a job, you can specify a queue to send it to. If you don't specify, the job will go to the default queue. For more about queues, see the User Guide topic at http://docs.aws.amazon.com/mediaconvert/latest/ug/what-is.html
-jQueue :: Lens' Job (Maybe Text)
-jQueue = lens _jQueue (\ s a -> s{_jQueue = a})
-
--- | User-defined metadata that you want to associate with an MediaConvert job. You specify metadata in key/value pairs.
-jUserMetadata :: Lens' Job (HashMap Text Text)
-jUserMetadata = lens _jUserMetadata (\ s a -> s{_jUserMetadata = a}) . _Default . _Map
-
--- | The IAM role you use for creating this job. For details about permissions, see the User Guide topic at the User Guide at http://docs.aws.amazon.com/mediaconvert/latest/ug/iam-role.html
-jRole :: Lens' Job (Maybe Text)
-jRole = lens _jRole (\ s a -> s{_jRole = a})
-
--- | List of output group details
-jOutputGroupDetails :: Lens' Job [OutputGroupDetail]
-jOutputGroupDetails = lens _jOutputGroupDetails (\ s a -> s{_jOutputGroupDetails = a}) . _Default . _Coerce
-
--- | Error code for the job
-jErrorCode :: Lens' Job (Maybe Int)
-jErrorCode = lens _jErrorCode (\ s a -> s{_jErrorCode = a})
-
--- | A portion of the job's ARN, unique within your AWS Elemental MediaConvert resources
-jId :: Lens' Job (Maybe Text)
-jId = lens _jId (\ s a -> s{_jId = a})
-
--- | Undocumented member.
-jTiming :: Lens' Job (Maybe Timing)
-jTiming = lens _jTiming (\ s a -> s{_jTiming = a})
-
--- | Error message of Job
-jErrorMessage :: Lens' Job (Maybe Text)
-jErrorMessage = lens _jErrorMessage (\ s a -> s{_jErrorMessage = a})
-
-instance FromJSON Job where
-        parseJSON
-          = withObject "Job"
-              (\ x ->
-                 Job' <$>
-                   (x .:? "status") <*> (x .:? "jobTemplate") <*>
-                     (x .:? "settings")
-                     <*> (x .:? "arn")
-                     <*> (x .:? "createdAt")
-                     <*> (x .:? "queue")
-                     <*> (x .:? "userMetadata" .!= mempty)
-                     <*> (x .:? "role")
-                     <*> (x .:? "outputGroupDetails" .!= mempty)
-                     <*> (x .:? "errorCode")
-                     <*> (x .:? "id")
-                     <*> (x .:? "timing")
-                     <*> (x .:? "errorMessage"))
-
-instance Hashable Job where
-
-instance NFData Job where
-
--- | JobSettings contains all the transcode settings for a job.
---
--- /See:/ 'jobSettings' smart constructor.
-data JobSettings = JobSettings'
-  { _jsInputs                 :: !(Maybe [Input])
-  , _jsTimedMetadataInsertion :: !(Maybe TimedMetadataInsertion)
-  , _jsNielsenConfiguration   :: !(Maybe NielsenConfiguration)
-  , _jsAvailBlanking          :: !(Maybe AvailBlanking)
-  , _jsTimecodeConfig         :: !(Maybe TimecodeConfig)
-  , _jsOutputGroups           :: !(Maybe [OutputGroup])
-  , _jsAdAvailOffset          :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'JobSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jsInputs' - Use Inputs (inputs) to define source file used in the transcode job. There can be multiple inputs add in a job. These inputs will be concantenated together to create the output.
---
--- * 'jsTimedMetadataInsertion' - Undocumented member.
---
--- * 'jsNielsenConfiguration' - Undocumented member.
---
--- * 'jsAvailBlanking' - Settings for ad avail blanking.  Video can be blanked or overlaid with an image, and audio muted during SCTE-35 triggered ad avails.
---
--- * 'jsTimecodeConfig' - Contains settings used to acquire and adjust timecode information from inputs.
---
--- * 'jsOutputGroups' - **!!**(OutputGroups) contains one group of settings for each set of outputs that share a common package type. All unpackaged files (MPEG-4, MPEG-2 TS, Quicktime, MXF, and no container) are grouped in a single output group as well. Required in (OutputGroups) is a group of settings that apply to the whole group. This required object depends on the value you set for (Type) under (OutputGroups)>(OutputGroupSettings). Type, settings object pairs are as follows. * FILE_GROUP_SETTINGS, FileGroupSettings * HLS_GROUP_SETTINGS, HlsGroupSettings * DASH_ISO_GROUP_SETTINGS, DashIsoGroupSettings * MS_SMOOTH_GROUP_SETTINGS, MsSmoothGroupSettings
---
--- * 'jsAdAvailOffset' - When specified, this offset (in milliseconds) is added to the input Ad Avail PTS time.
-jobSettings
-    :: JobSettings
-jobSettings =
-  JobSettings'
-    { _jsInputs = Nothing
-    , _jsTimedMetadataInsertion = Nothing
-    , _jsNielsenConfiguration = Nothing
-    , _jsAvailBlanking = Nothing
-    , _jsTimecodeConfig = Nothing
-    , _jsOutputGroups = Nothing
-    , _jsAdAvailOffset = Nothing
-    }
-
-
--- | Use Inputs (inputs) to define source file used in the transcode job. There can be multiple inputs add in a job. These inputs will be concantenated together to create the output.
-jsInputs :: Lens' JobSettings [Input]
-jsInputs = lens _jsInputs (\ s a -> s{_jsInputs = a}) . _Default . _Coerce
-
--- | Undocumented member.
-jsTimedMetadataInsertion :: Lens' JobSettings (Maybe TimedMetadataInsertion)
-jsTimedMetadataInsertion = lens _jsTimedMetadataInsertion (\ s a -> s{_jsTimedMetadataInsertion = a})
-
--- | Undocumented member.
-jsNielsenConfiguration :: Lens' JobSettings (Maybe NielsenConfiguration)
-jsNielsenConfiguration = lens _jsNielsenConfiguration (\ s a -> s{_jsNielsenConfiguration = a})
-
--- | Settings for ad avail blanking.  Video can be blanked or overlaid with an image, and audio muted during SCTE-35 triggered ad avails.
-jsAvailBlanking :: Lens' JobSettings (Maybe AvailBlanking)
-jsAvailBlanking = lens _jsAvailBlanking (\ s a -> s{_jsAvailBlanking = a})
-
--- | Contains settings used to acquire and adjust timecode information from inputs.
-jsTimecodeConfig :: Lens' JobSettings (Maybe TimecodeConfig)
-jsTimecodeConfig = lens _jsTimecodeConfig (\ s a -> s{_jsTimecodeConfig = a})
-
--- | **!!**(OutputGroups) contains one group of settings for each set of outputs that share a common package type. All unpackaged files (MPEG-4, MPEG-2 TS, Quicktime, MXF, and no container) are grouped in a single output group as well. Required in (OutputGroups) is a group of settings that apply to the whole group. This required object depends on the value you set for (Type) under (OutputGroups)>(OutputGroupSettings). Type, settings object pairs are as follows. * FILE_GROUP_SETTINGS, FileGroupSettings * HLS_GROUP_SETTINGS, HlsGroupSettings * DASH_ISO_GROUP_SETTINGS, DashIsoGroupSettings * MS_SMOOTH_GROUP_SETTINGS, MsSmoothGroupSettings
-jsOutputGroups :: Lens' JobSettings [OutputGroup]
-jsOutputGroups = lens _jsOutputGroups (\ s a -> s{_jsOutputGroups = a}) . _Default . _Coerce
-
--- | When specified, this offset (in milliseconds) is added to the input Ad Avail PTS time.
-jsAdAvailOffset :: Lens' JobSettings (Maybe Int)
-jsAdAvailOffset = lens _jsAdAvailOffset (\ s a -> s{_jsAdAvailOffset = a})
-
-instance FromJSON JobSettings where
-        parseJSON
-          = withObject "JobSettings"
-              (\ x ->
-                 JobSettings' <$>
-                   (x .:? "inputs" .!= mempty) <*>
-                     (x .:? "timedMetadataInsertion")
-                     <*> (x .:? "nielsenConfiguration")
-                     <*> (x .:? "availBlanking")
-                     <*> (x .:? "timecodeConfig")
-                     <*> (x .:? "outputGroups" .!= mempty)
-                     <*> (x .:? "adAvailOffset"))
-
-instance Hashable JobSettings where
-
-instance NFData JobSettings where
-
-instance ToJSON JobSettings where
-        toJSON JobSettings'{..}
-          = object
-              (catMaybes
-                 [("inputs" .=) <$> _jsInputs,
-                  ("timedMetadataInsertion" .=) <$>
-                    _jsTimedMetadataInsertion,
-                  ("nielsenConfiguration" .=) <$>
-                    _jsNielsenConfiguration,
-                  ("availBlanking" .=) <$> _jsAvailBlanking,
-                  ("timecodeConfig" .=) <$> _jsTimecodeConfig,
-                  ("outputGroups" .=) <$> _jsOutputGroups,
-                  ("adAvailOffset" .=) <$> _jsAdAvailOffset])
-
--- | A job template is a pre-made set of encoding instructions that you can use to quickly create a job.
---
--- /See:/ 'jobTemplate' smart constructor.
-data JobTemplate = JobTemplate'
-  { _jtLastUpdated :: !(Maybe POSIX)
-  , _jtSettings    :: !(Maybe JobTemplateSettings)
-  , _jtARN         :: !(Maybe Text)
-  , _jtCreatedAt   :: !(Maybe POSIX)
-  , _jtCategory    :: !(Maybe Text)
-  , _jtQueue       :: !(Maybe Text)
-  , _jtName        :: !(Maybe Text)
-  , _jtType        :: !(Maybe Type)
-  , _jtDescription :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'JobTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jtLastUpdated' - The timestamp in epoch seconds when the Job template was last updated.
---
--- * 'jtSettings' - Undocumented member.
---
--- * 'jtARN' - An identifier for this resource that is unique within all of AWS.
---
--- * 'jtCreatedAt' - The timestamp in epoch seconds for Job template creation.
---
--- * 'jtCategory' - An optional category you create to organize your job templates.
---
--- * 'jtQueue' - Optional. The queue that jobs created from this template are assigned to. If you don't specify this, jobs will go to the default queue.
---
--- * 'jtName' - A name you create for each job template. Each name must be unique within your account.
---
--- * 'jtType' - A job template can be of two types: system or custom. System or built-in job templates can't be modified or deleted by the user.
---
--- * 'jtDescription' - An optional description you create for each job template.
-jobTemplate
-    :: JobTemplate
-jobTemplate =
-  JobTemplate'
-    { _jtLastUpdated = Nothing
-    , _jtSettings = Nothing
-    , _jtARN = Nothing
-    , _jtCreatedAt = Nothing
-    , _jtCategory = Nothing
-    , _jtQueue = Nothing
-    , _jtName = Nothing
-    , _jtType = Nothing
-    , _jtDescription = Nothing
-    }
-
-
--- | The timestamp in epoch seconds when the Job template was last updated.
-jtLastUpdated :: Lens' JobTemplate (Maybe UTCTime)
-jtLastUpdated = lens _jtLastUpdated (\ s a -> s{_jtLastUpdated = a}) . mapping _Time
-
--- | Undocumented member.
-jtSettings :: Lens' JobTemplate (Maybe JobTemplateSettings)
-jtSettings = lens _jtSettings (\ s a -> s{_jtSettings = a})
-
--- | An identifier for this resource that is unique within all of AWS.
-jtARN :: Lens' JobTemplate (Maybe Text)
-jtARN = lens _jtARN (\ s a -> s{_jtARN = a})
-
--- | The timestamp in epoch seconds for Job template creation.
-jtCreatedAt :: Lens' JobTemplate (Maybe UTCTime)
-jtCreatedAt = lens _jtCreatedAt (\ s a -> s{_jtCreatedAt = a}) . mapping _Time
-
--- | An optional category you create to organize your job templates.
-jtCategory :: Lens' JobTemplate (Maybe Text)
-jtCategory = lens _jtCategory (\ s a -> s{_jtCategory = a})
-
--- | Optional. The queue that jobs created from this template are assigned to. If you don't specify this, jobs will go to the default queue.
-jtQueue :: Lens' JobTemplate (Maybe Text)
-jtQueue = lens _jtQueue (\ s a -> s{_jtQueue = a})
-
--- | A name you create for each job template. Each name must be unique within your account.
-jtName :: Lens' JobTemplate (Maybe Text)
-jtName = lens _jtName (\ s a -> s{_jtName = a})
-
--- | A job template can be of two types: system or custom. System or built-in job templates can't be modified or deleted by the user.
-jtType :: Lens' JobTemplate (Maybe Type)
-jtType = lens _jtType (\ s a -> s{_jtType = a})
-
--- | An optional description you create for each job template.
-jtDescription :: Lens' JobTemplate (Maybe Text)
-jtDescription = lens _jtDescription (\ s a -> s{_jtDescription = a})
-
-instance FromJSON JobTemplate where
-        parseJSON
-          = withObject "JobTemplate"
-              (\ x ->
-                 JobTemplate' <$>
-                   (x .:? "lastUpdated") <*> (x .:? "settings") <*>
-                     (x .:? "arn")
-                     <*> (x .:? "createdAt")
-                     <*> (x .:? "category")
-                     <*> (x .:? "queue")
-                     <*> (x .:? "name")
-                     <*> (x .:? "type")
-                     <*> (x .:? "description"))
-
-instance Hashable JobTemplate where
-
-instance NFData JobTemplate where
-
--- | JobTemplateSettings contains all the transcode settings saved in the template that will be applied to jobs created from it.
---
--- /See:/ 'jobTemplateSettings' smart constructor.
-data JobTemplateSettings = JobTemplateSettings'
-  { _jtsInputs                 :: !(Maybe [InputTemplate])
-  , _jtsTimedMetadataInsertion :: !(Maybe TimedMetadataInsertion)
-  , _jtsNielsenConfiguration   :: !(Maybe NielsenConfiguration)
-  , _jtsAvailBlanking          :: !(Maybe AvailBlanking)
-  , _jtsTimecodeConfig         :: !(Maybe TimecodeConfig)
-  , _jtsOutputGroups           :: !(Maybe [OutputGroup])
-  , _jtsAdAvailOffset          :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'JobTemplateSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jtsInputs' - Use Inputs (inputs) to define the source file used in the transcode job. There can only be one input in a job template.  Using the API, you can include multiple inputs when referencing a job template.
---
--- * 'jtsTimedMetadataInsertion' - Undocumented member.
---
--- * 'jtsNielsenConfiguration' - Undocumented member.
---
--- * 'jtsAvailBlanking' - Settings for ad avail blanking.  Video can be blanked or overlaid with an image, and audio muted during SCTE-35 triggered ad avails.
---
--- * 'jtsTimecodeConfig' - Contains settings used to acquire and adjust timecode information from inputs.
---
--- * 'jtsOutputGroups' - **!!**(OutputGroups) contains one group of settings for each set of outputs that share a common package type. All unpackaged files (MPEG-4, MPEG-2 TS, Quicktime, MXF, and no container) are grouped in a single output group as well. Required in (OutputGroups) is a group of settings that apply to the whole group. This required object depends on the value you set for (Type) under (OutputGroups)>(OutputGroupSettings). Type, settings object pairs are as follows. * FILE_GROUP_SETTINGS, FileGroupSettings * HLS_GROUP_SETTINGS, HlsGroupSettings * DASH_ISO_GROUP_SETTINGS, DashIsoGroupSettings * MS_SMOOTH_GROUP_SETTINGS, MsSmoothGroupSettings
---
--- * 'jtsAdAvailOffset' - When specified, this offset (in milliseconds) is added to the input Ad Avail PTS time.
-jobTemplateSettings
-    :: JobTemplateSettings
-jobTemplateSettings =
-  JobTemplateSettings'
-    { _jtsInputs = Nothing
-    , _jtsTimedMetadataInsertion = Nothing
-    , _jtsNielsenConfiguration = Nothing
-    , _jtsAvailBlanking = Nothing
-    , _jtsTimecodeConfig = Nothing
-    , _jtsOutputGroups = Nothing
-    , _jtsAdAvailOffset = Nothing
-    }
-
-
--- | Use Inputs (inputs) to define the source file used in the transcode job. There can only be one input in a job template.  Using the API, you can include multiple inputs when referencing a job template.
-jtsInputs :: Lens' JobTemplateSettings [InputTemplate]
-jtsInputs = lens _jtsInputs (\ s a -> s{_jtsInputs = a}) . _Default . _Coerce
-
--- | Undocumented member.
-jtsTimedMetadataInsertion :: Lens' JobTemplateSettings (Maybe TimedMetadataInsertion)
-jtsTimedMetadataInsertion = lens _jtsTimedMetadataInsertion (\ s a -> s{_jtsTimedMetadataInsertion = a})
-
--- | Undocumented member.
-jtsNielsenConfiguration :: Lens' JobTemplateSettings (Maybe NielsenConfiguration)
-jtsNielsenConfiguration = lens _jtsNielsenConfiguration (\ s a -> s{_jtsNielsenConfiguration = a})
-
--- | Settings for ad avail blanking.  Video can be blanked or overlaid with an image, and audio muted during SCTE-35 triggered ad avails.
-jtsAvailBlanking :: Lens' JobTemplateSettings (Maybe AvailBlanking)
-jtsAvailBlanking = lens _jtsAvailBlanking (\ s a -> s{_jtsAvailBlanking = a})
-
--- | Contains settings used to acquire and adjust timecode information from inputs.
-jtsTimecodeConfig :: Lens' JobTemplateSettings (Maybe TimecodeConfig)
-jtsTimecodeConfig = lens _jtsTimecodeConfig (\ s a -> s{_jtsTimecodeConfig = a})
-
--- | **!!**(OutputGroups) contains one group of settings for each set of outputs that share a common package type. All unpackaged files (MPEG-4, MPEG-2 TS, Quicktime, MXF, and no container) are grouped in a single output group as well. Required in (OutputGroups) is a group of settings that apply to the whole group. This required object depends on the value you set for (Type) under (OutputGroups)>(OutputGroupSettings). Type, settings object pairs are as follows. * FILE_GROUP_SETTINGS, FileGroupSettings * HLS_GROUP_SETTINGS, HlsGroupSettings * DASH_ISO_GROUP_SETTINGS, DashIsoGroupSettings * MS_SMOOTH_GROUP_SETTINGS, MsSmoothGroupSettings
-jtsOutputGroups :: Lens' JobTemplateSettings [OutputGroup]
-jtsOutputGroups = lens _jtsOutputGroups (\ s a -> s{_jtsOutputGroups = a}) . _Default . _Coerce
-
--- | When specified, this offset (in milliseconds) is added to the input Ad Avail PTS time.
-jtsAdAvailOffset :: Lens' JobTemplateSettings (Maybe Int)
-jtsAdAvailOffset = lens _jtsAdAvailOffset (\ s a -> s{_jtsAdAvailOffset = a})
-
-instance FromJSON JobTemplateSettings where
-        parseJSON
-          = withObject "JobTemplateSettings"
-              (\ x ->
-                 JobTemplateSettings' <$>
-                   (x .:? "inputs" .!= mempty) <*>
-                     (x .:? "timedMetadataInsertion")
-                     <*> (x .:? "nielsenConfiguration")
-                     <*> (x .:? "availBlanking")
-                     <*> (x .:? "timecodeConfig")
-                     <*> (x .:? "outputGroups" .!= mempty)
-                     <*> (x .:? "adAvailOffset"))
-
-instance Hashable JobTemplateSettings where
-
-instance NFData JobTemplateSettings where
-
-instance ToJSON JobTemplateSettings where
-        toJSON JobTemplateSettings'{..}
-          = object
-              (catMaybes
-                 [("inputs" .=) <$> _jtsInputs,
-                  ("timedMetadataInsertion" .=) <$>
-                    _jtsTimedMetadataInsertion,
-                  ("nielsenConfiguration" .=) <$>
-                    _jtsNielsenConfiguration,
-                  ("availBlanking" .=) <$> _jtsAvailBlanking,
-                  ("timecodeConfig" .=) <$> _jtsTimecodeConfig,
-                  ("outputGroups" .=) <$> _jtsOutputGroups,
-                  ("adAvailOffset" .=) <$> _jtsAdAvailOffset])
-
--- | Settings for M2TS Container.
---
--- /See:/ 'm2tsSettings' smart constructor.
-data M2tsSettings = M2tsSettings'
-  { _mPmtPid              :: !(Maybe Int)
-  , _mVideoPid            :: !(Maybe Int)
-  , _mBufferModel         :: !(Maybe M2tsBufferModel)
-  , _mProgramNumber       :: !(Maybe Int)
-  , _mScte35Pid           :: !(Maybe Int)
-  , _mMinEbpInterval      :: !(Maybe Int)
-  , _mTransportStreamId   :: !(Maybe Int)
-  , _mMaxPcrInterval      :: !(Maybe Int)
-  , _mFragmentTime        :: !(Maybe Double)
-  , _mPrivateMetadataPid  :: !(Maybe Int)
-  , _mPmtInterval         :: !(Maybe Int)
-  , _mDvbSdtSettings      :: !(Maybe DvbSdtSettings)
-  , _mNullPacketBitrate   :: !(Maybe Double)
-  , _mAudioBufferModel    :: !(Maybe M2tsAudioBufferModel)
-  , _mTimedMetadataPid    :: !(Maybe Int)
-  , _mAudioFramesPerPes   :: !(Maybe Int)
-  , _mPcrPid              :: !(Maybe Int)
-  , _mSegmentationMarkers :: !(Maybe M2tsSegmentationMarkers)
-  , _mDvbSubPids          :: !(Maybe [Int])
-  , _mScte35Source        :: !(Maybe M2tsScte35Source)
-  , _mPatInterval         :: !(Maybe Int)
-  , _mEsRateInPes         :: !(Maybe M2tsEsRateInPes)
-  , _mBitrate             :: !(Maybe Int)
-  , _mAudioPids           :: !(Maybe [Int])
-  , _mDvbTeletextPid      :: !(Maybe Int)
-  , _mNielsenId3          :: !(Maybe M2tsNielsenId3)
-  , _mSegmentationTime    :: !(Maybe Double)
-  , _mEbpAudioInterval    :: !(Maybe M2tsEbpAudioInterval)
-  , _mDvbNitSettings      :: !(Maybe DvbNitSettings)
-  , _mPcrControl          :: !(Maybe M2tsPcrControl)
-  , _mEbpPlacement        :: !(Maybe M2tsEbpPlacement)
-  , _mRateMode            :: !(Maybe M2tsRateMode)
-  , _mSegmentationStyle   :: !(Maybe M2tsSegmentationStyle)
-  , _mDvbTdtSettings      :: !(Maybe DvbTdtSettings)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'M2tsSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mPmtPid' - Packet Identifier (PID) for the Program Map Table (PMT) in the transport stream.
---
--- * 'mVideoPid' - Packet Identifier (PID) of the elementary video stream in the transport stream.
---
--- * 'mBufferModel' - Undocumented member.
---
--- * 'mProgramNumber' - The value of the program number field in the Program Map Table.
---
--- * 'mScte35Pid' - Packet Identifier (PID) of the SCTE-35 stream in the transport stream.
---
--- * 'mMinEbpInterval' - When set, enforces that Encoder Boundary Points do not come within the specified time interval of each other by looking ahead at input video. If another EBP is going to come in within the specified time interval, the current EBP is not emitted, and the segment is "stretched" to the next marker. The lookahead value does not add latency to the system. The Live Event must be configured elsewhere to create sufficient latency to make the lookahead accurate.
---
--- * 'mTransportStreamId' - The value of the transport stream ID field in the Program Map Table.
---
--- * 'mMaxPcrInterval' - Maximum time in milliseconds between Program Clock References (PCRs) inserted into the transport stream.
---
--- * 'mFragmentTime' - The length in seconds of each fragment. Only used with EBP markers.
---
--- * 'mPrivateMetadataPid' - Packet Identifier (PID) of the private metadata stream in the transport stream.
---
--- * 'mPmtInterval' - The number of milliseconds between instances of this table in the output transport stream.
---
--- * 'mDvbSdtSettings' - Undocumented member.
---
--- * 'mNullPacketBitrate' - Value in bits per second of extra null packets to insert into the transport stream. This can be used if a downstream encryption system requires periodic null packets.
---
--- * 'mAudioBufferModel' - Undocumented member.
---
--- * 'mTimedMetadataPid' - Packet Identifier (PID) of the timed metadata stream in the transport stream.
---
--- * 'mAudioFramesPerPes' - The number of audio frames to insert for each PES packet.
---
--- * 'mPcrPid' - Packet Identifier (PID) of the Program Clock Reference (PCR) in the transport stream. When no value is given, the encoder will assign the same value as the Video PID.
---
--- * 'mSegmentationMarkers' - Undocumented member.
---
--- * 'mDvbSubPids' - Packet Identifier (PID) for input source DVB Subtitle data to this output. Multiple values are accepted, and can be entered in ranges and/or by comma separation.
---
--- * 'mScte35Source' - Undocumented member.
---
--- * 'mPatInterval' - The number of milliseconds between instances of this table in the output transport stream.
---
--- * 'mEsRateInPes' - Undocumented member.
---
--- * 'mBitrate' - The output bitrate of the transport stream in bits per second. Setting to 0 lets the muxer automatically determine the appropriate bitrate. Other common values are 3750000, 7500000, and 15000000.
---
--- * 'mAudioPids' - Packet Identifier (PID) of the elementary audio stream(s) in the transport stream. Multiple values are accepted, and can be entered in ranges and/or by comma separation.
---
--- * 'mDvbTeletextPid' - Packet Identifier (PID) for input source DVB Teletext data to this output.
---
--- * 'mNielsenId3' - Undocumented member.
---
--- * 'mSegmentationTime' - The length in seconds of each segment. Required unless markers is set to _none_.
---
--- * 'mEbpAudioInterval' - Undocumented member.
---
--- * 'mDvbNitSettings' - Undocumented member.
---
--- * 'mPcrControl' - Undocumented member.
---
--- * 'mEbpPlacement' - Undocumented member.
---
--- * 'mRateMode' - Undocumented member.
---
--- * 'mSegmentationStyle' - Undocumented member.
---
--- * 'mDvbTdtSettings' - Undocumented member.
-m2tsSettings
-    :: M2tsSettings
-m2tsSettings =
-  M2tsSettings'
-    { _mPmtPid = Nothing
-    , _mVideoPid = Nothing
-    , _mBufferModel = Nothing
-    , _mProgramNumber = Nothing
-    , _mScte35Pid = Nothing
-    , _mMinEbpInterval = Nothing
-    , _mTransportStreamId = Nothing
-    , _mMaxPcrInterval = Nothing
-    , _mFragmentTime = Nothing
-    , _mPrivateMetadataPid = Nothing
-    , _mPmtInterval = Nothing
-    , _mDvbSdtSettings = Nothing
-    , _mNullPacketBitrate = Nothing
-    , _mAudioBufferModel = Nothing
-    , _mTimedMetadataPid = Nothing
-    , _mAudioFramesPerPes = Nothing
-    , _mPcrPid = Nothing
-    , _mSegmentationMarkers = Nothing
-    , _mDvbSubPids = Nothing
-    , _mScte35Source = Nothing
-    , _mPatInterval = Nothing
-    , _mEsRateInPes = Nothing
-    , _mBitrate = Nothing
-    , _mAudioPids = Nothing
-    , _mDvbTeletextPid = Nothing
-    , _mNielsenId3 = Nothing
-    , _mSegmentationTime = Nothing
-    , _mEbpAudioInterval = Nothing
-    , _mDvbNitSettings = Nothing
-    , _mPcrControl = Nothing
-    , _mEbpPlacement = Nothing
-    , _mRateMode = Nothing
-    , _mSegmentationStyle = Nothing
-    , _mDvbTdtSettings = Nothing
-    }
-
-
--- | Packet Identifier (PID) for the Program Map Table (PMT) in the transport stream.
-mPmtPid :: Lens' M2tsSettings (Maybe Int)
-mPmtPid = lens _mPmtPid (\ s a -> s{_mPmtPid = a})
-
--- | Packet Identifier (PID) of the elementary video stream in the transport stream.
-mVideoPid :: Lens' M2tsSettings (Maybe Int)
-mVideoPid = lens _mVideoPid (\ s a -> s{_mVideoPid = a})
-
--- | Undocumented member.
-mBufferModel :: Lens' M2tsSettings (Maybe M2tsBufferModel)
-mBufferModel = lens _mBufferModel (\ s a -> s{_mBufferModel = a})
-
--- | The value of the program number field in the Program Map Table.
-mProgramNumber :: Lens' M2tsSettings (Maybe Int)
-mProgramNumber = lens _mProgramNumber (\ s a -> s{_mProgramNumber = a})
-
--- | Packet Identifier (PID) of the SCTE-35 stream in the transport stream.
-mScte35Pid :: Lens' M2tsSettings (Maybe Int)
-mScte35Pid = lens _mScte35Pid (\ s a -> s{_mScte35Pid = a})
-
--- | When set, enforces that Encoder Boundary Points do not come within the specified time interval of each other by looking ahead at input video. If another EBP is going to come in within the specified time interval, the current EBP is not emitted, and the segment is "stretched" to the next marker. The lookahead value does not add latency to the system. The Live Event must be configured elsewhere to create sufficient latency to make the lookahead accurate.
-mMinEbpInterval :: Lens' M2tsSettings (Maybe Int)
-mMinEbpInterval = lens _mMinEbpInterval (\ s a -> s{_mMinEbpInterval = a})
-
--- | The value of the transport stream ID field in the Program Map Table.
-mTransportStreamId :: Lens' M2tsSettings (Maybe Int)
-mTransportStreamId = lens _mTransportStreamId (\ s a -> s{_mTransportStreamId = a})
-
--- | Maximum time in milliseconds between Program Clock References (PCRs) inserted into the transport stream.
-mMaxPcrInterval :: Lens' M2tsSettings (Maybe Int)
-mMaxPcrInterval = lens _mMaxPcrInterval (\ s a -> s{_mMaxPcrInterval = a})
-
--- | The length in seconds of each fragment. Only used with EBP markers.
-mFragmentTime :: Lens' M2tsSettings (Maybe Double)
-mFragmentTime = lens _mFragmentTime (\ s a -> s{_mFragmentTime = a})
-
--- | Packet Identifier (PID) of the private metadata stream in the transport stream.
-mPrivateMetadataPid :: Lens' M2tsSettings (Maybe Int)
-mPrivateMetadataPid = lens _mPrivateMetadataPid (\ s a -> s{_mPrivateMetadataPid = a})
-
--- | The number of milliseconds between instances of this table in the output transport stream.
-mPmtInterval :: Lens' M2tsSettings (Maybe Int)
-mPmtInterval = lens _mPmtInterval (\ s a -> s{_mPmtInterval = a})
-
--- | Undocumented member.
-mDvbSdtSettings :: Lens' M2tsSettings (Maybe DvbSdtSettings)
-mDvbSdtSettings = lens _mDvbSdtSettings (\ s a -> s{_mDvbSdtSettings = a})
-
--- | Value in bits per second of extra null packets to insert into the transport stream. This can be used if a downstream encryption system requires periodic null packets.
-mNullPacketBitrate :: Lens' M2tsSettings (Maybe Double)
-mNullPacketBitrate = lens _mNullPacketBitrate (\ s a -> s{_mNullPacketBitrate = a})
-
--- | Undocumented member.
-mAudioBufferModel :: Lens' M2tsSettings (Maybe M2tsAudioBufferModel)
-mAudioBufferModel = lens _mAudioBufferModel (\ s a -> s{_mAudioBufferModel = a})
-
--- | Packet Identifier (PID) of the timed metadata stream in the transport stream.
-mTimedMetadataPid :: Lens' M2tsSettings (Maybe Int)
-mTimedMetadataPid = lens _mTimedMetadataPid (\ s a -> s{_mTimedMetadataPid = a})
-
--- | The number of audio frames to insert for each PES packet.
-mAudioFramesPerPes :: Lens' M2tsSettings (Maybe Int)
-mAudioFramesPerPes = lens _mAudioFramesPerPes (\ s a -> s{_mAudioFramesPerPes = a})
-
--- | Packet Identifier (PID) of the Program Clock Reference (PCR) in the transport stream. When no value is given, the encoder will assign the same value as the Video PID.
-mPcrPid :: Lens' M2tsSettings (Maybe Int)
-mPcrPid = lens _mPcrPid (\ s a -> s{_mPcrPid = a})
-
--- | Undocumented member.
-mSegmentationMarkers :: Lens' M2tsSettings (Maybe M2tsSegmentationMarkers)
-mSegmentationMarkers = lens _mSegmentationMarkers (\ s a -> s{_mSegmentationMarkers = a})
-
--- | Packet Identifier (PID) for input source DVB Subtitle data to this output. Multiple values are accepted, and can be entered in ranges and/or by comma separation.
-mDvbSubPids :: Lens' M2tsSettings [Int]
-mDvbSubPids = lens _mDvbSubPids (\ s a -> s{_mDvbSubPids = a}) . _Default . _Coerce
-
--- | Undocumented member.
-mScte35Source :: Lens' M2tsSettings (Maybe M2tsScte35Source)
-mScte35Source = lens _mScte35Source (\ s a -> s{_mScte35Source = a})
-
--- | The number of milliseconds between instances of this table in the output transport stream.
-mPatInterval :: Lens' M2tsSettings (Maybe Int)
-mPatInterval = lens _mPatInterval (\ s a -> s{_mPatInterval = a})
-
--- | Undocumented member.
-mEsRateInPes :: Lens' M2tsSettings (Maybe M2tsEsRateInPes)
-mEsRateInPes = lens _mEsRateInPes (\ s a -> s{_mEsRateInPes = a})
-
--- | The output bitrate of the transport stream in bits per second. Setting to 0 lets the muxer automatically determine the appropriate bitrate. Other common values are 3750000, 7500000, and 15000000.
-mBitrate :: Lens' M2tsSettings (Maybe Int)
-mBitrate = lens _mBitrate (\ s a -> s{_mBitrate = a})
-
--- | Packet Identifier (PID) of the elementary audio stream(s) in the transport stream. Multiple values are accepted, and can be entered in ranges and/or by comma separation.
-mAudioPids :: Lens' M2tsSettings [Int]
-mAudioPids = lens _mAudioPids (\ s a -> s{_mAudioPids = a}) . _Default . _Coerce
-
--- | Packet Identifier (PID) for input source DVB Teletext data to this output.
-mDvbTeletextPid :: Lens' M2tsSettings (Maybe Int)
-mDvbTeletextPid = lens _mDvbTeletextPid (\ s a -> s{_mDvbTeletextPid = a})
-
--- | Undocumented member.
-mNielsenId3 :: Lens' M2tsSettings (Maybe M2tsNielsenId3)
-mNielsenId3 = lens _mNielsenId3 (\ s a -> s{_mNielsenId3 = a})
-
--- | The length in seconds of each segment. Required unless markers is set to _none_.
-mSegmentationTime :: Lens' M2tsSettings (Maybe Double)
-mSegmentationTime = lens _mSegmentationTime (\ s a -> s{_mSegmentationTime = a})
-
--- | Undocumented member.
-mEbpAudioInterval :: Lens' M2tsSettings (Maybe M2tsEbpAudioInterval)
-mEbpAudioInterval = lens _mEbpAudioInterval (\ s a -> s{_mEbpAudioInterval = a})
-
--- | Undocumented member.
-mDvbNitSettings :: Lens' M2tsSettings (Maybe DvbNitSettings)
-mDvbNitSettings = lens _mDvbNitSettings (\ s a -> s{_mDvbNitSettings = a})
-
--- | Undocumented member.
-mPcrControl :: Lens' M2tsSettings (Maybe M2tsPcrControl)
-mPcrControl = lens _mPcrControl (\ s a -> s{_mPcrControl = a})
-
--- | Undocumented member.
-mEbpPlacement :: Lens' M2tsSettings (Maybe M2tsEbpPlacement)
-mEbpPlacement = lens _mEbpPlacement (\ s a -> s{_mEbpPlacement = a})
-
--- | Undocumented member.
-mRateMode :: Lens' M2tsSettings (Maybe M2tsRateMode)
-mRateMode = lens _mRateMode (\ s a -> s{_mRateMode = a})
-
--- | Undocumented member.
-mSegmentationStyle :: Lens' M2tsSettings (Maybe M2tsSegmentationStyle)
-mSegmentationStyle = lens _mSegmentationStyle (\ s a -> s{_mSegmentationStyle = a})
-
--- | Undocumented member.
-mDvbTdtSettings :: Lens' M2tsSettings (Maybe DvbTdtSettings)
-mDvbTdtSettings = lens _mDvbTdtSettings (\ s a -> s{_mDvbTdtSettings = a})
-
-instance FromJSON M2tsSettings where
-        parseJSON
-          = withObject "M2tsSettings"
-              (\ x ->
-                 M2tsSettings' <$>
-                   (x .:? "pmtPid") <*> (x .:? "videoPid") <*>
-                     (x .:? "bufferModel")
-                     <*> (x .:? "programNumber")
-                     <*> (x .:? "scte35Pid")
-                     <*> (x .:? "minEbpInterval")
-                     <*> (x .:? "transportStreamId")
-                     <*> (x .:? "maxPcrInterval")
-                     <*> (x .:? "fragmentTime")
-                     <*> (x .:? "privateMetadataPid")
-                     <*> (x .:? "pmtInterval")
-                     <*> (x .:? "dvbSdtSettings")
-                     <*> (x .:? "nullPacketBitrate")
-                     <*> (x .:? "audioBufferModel")
-                     <*> (x .:? "timedMetadataPid")
-                     <*> (x .:? "audioFramesPerPes")
-                     <*> (x .:? "pcrPid")
-                     <*> (x .:? "segmentationMarkers")
-                     <*> (x .:? "dvbSubPids" .!= mempty)
-                     <*> (x .:? "scte35Source")
-                     <*> (x .:? "patInterval")
-                     <*> (x .:? "esRateInPes")
-                     <*> (x .:? "bitrate")
-                     <*> (x .:? "audioPids" .!= mempty)
-                     <*> (x .:? "dvbTeletextPid")
-                     <*> (x .:? "nielsenId3")
-                     <*> (x .:? "segmentationTime")
-                     <*> (x .:? "ebpAudioInterval")
-                     <*> (x .:? "dvbNitSettings")
-                     <*> (x .:? "pcrControl")
-                     <*> (x .:? "ebpPlacement")
-                     <*> (x .:? "rateMode")
-                     <*> (x .:? "segmentationStyle")
-                     <*> (x .:? "dvbTdtSettings"))
-
-instance Hashable M2tsSettings where
-
-instance NFData M2tsSettings where
-
-instance ToJSON M2tsSettings where
-        toJSON M2tsSettings'{..}
-          = object
-              (catMaybes
-                 [("pmtPid" .=) <$> _mPmtPid,
-                  ("videoPid" .=) <$> _mVideoPid,
-                  ("bufferModel" .=) <$> _mBufferModel,
-                  ("programNumber" .=) <$> _mProgramNumber,
-                  ("scte35Pid" .=) <$> _mScte35Pid,
-                  ("minEbpInterval" .=) <$> _mMinEbpInterval,
-                  ("transportStreamId" .=) <$> _mTransportStreamId,
-                  ("maxPcrInterval" .=) <$> _mMaxPcrInterval,
-                  ("fragmentTime" .=) <$> _mFragmentTime,
-                  ("privateMetadataPid" .=) <$> _mPrivateMetadataPid,
-                  ("pmtInterval" .=) <$> _mPmtInterval,
-                  ("dvbSdtSettings" .=) <$> _mDvbSdtSettings,
-                  ("nullPacketBitrate" .=) <$> _mNullPacketBitrate,
-                  ("audioBufferModel" .=) <$> _mAudioBufferModel,
-                  ("timedMetadataPid" .=) <$> _mTimedMetadataPid,
-                  ("audioFramesPerPes" .=) <$> _mAudioFramesPerPes,
-                  ("pcrPid" .=) <$> _mPcrPid,
-                  ("segmentationMarkers" .=) <$> _mSegmentationMarkers,
-                  ("dvbSubPids" .=) <$> _mDvbSubPids,
-                  ("scte35Source" .=) <$> _mScte35Source,
-                  ("patInterval" .=) <$> _mPatInterval,
-                  ("esRateInPes" .=) <$> _mEsRateInPes,
-                  ("bitrate" .=) <$> _mBitrate,
-                  ("audioPids" .=) <$> _mAudioPids,
-                  ("dvbTeletextPid" .=) <$> _mDvbTeletextPid,
-                  ("nielsenId3" .=) <$> _mNielsenId3,
-                  ("segmentationTime" .=) <$> _mSegmentationTime,
-                  ("ebpAudioInterval" .=) <$> _mEbpAudioInterval,
-                  ("dvbNitSettings" .=) <$> _mDvbNitSettings,
-                  ("pcrControl" .=) <$> _mPcrControl,
-                  ("ebpPlacement" .=) <$> _mEbpPlacement,
-                  ("rateMode" .=) <$> _mRateMode,
-                  ("segmentationStyle" .=) <$> _mSegmentationStyle,
-                  ("dvbTdtSettings" .=) <$> _mDvbTdtSettings])
-
--- | Settings for TS segments in HLS
---
--- /See:/ 'm3u8Settings' smart constructor.
-data M3u8Settings = M3u8Settings'
-  { _msPmtPid             :: !(Maybe Int)
-  , _msVideoPid           :: !(Maybe Int)
-  , _msProgramNumber      :: !(Maybe Int)
-  , _msScte35Pid          :: !(Maybe Int)
-  , _msTransportStreamId  :: !(Maybe Int)
-  , _msPrivateMetadataPid :: !(Maybe Int)
-  , _msPmtInterval        :: !(Maybe Int)
-  , _msTimedMetadataPid   :: !(Maybe Int)
-  , _msAudioFramesPerPes  :: !(Maybe Int)
-  , _msPcrPid             :: !(Maybe Int)
-  , _msTimedMetadata      :: !(Maybe TimedMetadata)
-  , _msScte35Source       :: !(Maybe M3u8Scte35Source)
-  , _msPatInterval        :: !(Maybe Int)
-  , _msAudioPids          :: !(Maybe [Int])
-  , _msNielsenId3         :: !(Maybe M3u8NielsenId3)
-  , _msPcrControl         :: !(Maybe M3u8PcrControl)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'M3u8Settings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'msPmtPid' - Packet Identifier (PID) for the Program Map Table (PMT) in the transport stream.
---
--- * 'msVideoPid' - Packet Identifier (PID) of the elementary video stream in the transport stream.
---
--- * 'msProgramNumber' - The value of the program number field in the Program Map Table.
---
--- * 'msScte35Pid' - Packet Identifier (PID) of the SCTE-35 stream in the transport stream.
---
--- * 'msTransportStreamId' - The value of the transport stream ID field in the Program Map Table.
---
--- * 'msPrivateMetadataPid' - Packet Identifier (PID) of the private metadata stream in the transport stream.
---
--- * 'msPmtInterval' - The number of milliseconds between instances of this table in the output transport stream.
---
--- * 'msTimedMetadataPid' - Packet Identifier (PID) of the timed metadata stream in the transport stream.
---
--- * 'msAudioFramesPerPes' - The number of audio frames to insert for each PES packet.
---
--- * 'msPcrPid' - Packet Identifier (PID) of the Program Clock Reference (PCR) in the transport stream. When no value is given, the encoder will assign the same value as the Video PID.
---
--- * 'msTimedMetadata' - Undocumented member.
---
--- * 'msScte35Source' - Undocumented member.
---
--- * 'msPatInterval' - The number of milliseconds between instances of this table in the output transport stream.
---
--- * 'msAudioPids' - Packet Identifier (PID) of the elementary audio stream(s) in the transport stream. Multiple values are accepted, and can be entered in ranges and/or by comma separation.
---
--- * 'msNielsenId3' - Undocumented member.
---
--- * 'msPcrControl' - Undocumented member.
-m3u8Settings
-    :: M3u8Settings
-m3u8Settings =
-  M3u8Settings'
-    { _msPmtPid = Nothing
-    , _msVideoPid = Nothing
-    , _msProgramNumber = Nothing
-    , _msScte35Pid = Nothing
-    , _msTransportStreamId = Nothing
-    , _msPrivateMetadataPid = Nothing
-    , _msPmtInterval = Nothing
-    , _msTimedMetadataPid = Nothing
-    , _msAudioFramesPerPes = Nothing
-    , _msPcrPid = Nothing
-    , _msTimedMetadata = Nothing
-    , _msScte35Source = Nothing
-    , _msPatInterval = Nothing
-    , _msAudioPids = Nothing
-    , _msNielsenId3 = Nothing
-    , _msPcrControl = Nothing
-    }
-
-
--- | Packet Identifier (PID) for the Program Map Table (PMT) in the transport stream.
-msPmtPid :: Lens' M3u8Settings (Maybe Int)
-msPmtPid = lens _msPmtPid (\ s a -> s{_msPmtPid = a})
-
--- | Packet Identifier (PID) of the elementary video stream in the transport stream.
-msVideoPid :: Lens' M3u8Settings (Maybe Int)
-msVideoPid = lens _msVideoPid (\ s a -> s{_msVideoPid = a})
-
--- | The value of the program number field in the Program Map Table.
-msProgramNumber :: Lens' M3u8Settings (Maybe Int)
-msProgramNumber = lens _msProgramNumber (\ s a -> s{_msProgramNumber = a})
-
--- | Packet Identifier (PID) of the SCTE-35 stream in the transport stream.
-msScte35Pid :: Lens' M3u8Settings (Maybe Int)
-msScte35Pid = lens _msScte35Pid (\ s a -> s{_msScte35Pid = a})
-
--- | The value of the transport stream ID field in the Program Map Table.
-msTransportStreamId :: Lens' M3u8Settings (Maybe Int)
-msTransportStreamId = lens _msTransportStreamId (\ s a -> s{_msTransportStreamId = a})
-
--- | Packet Identifier (PID) of the private metadata stream in the transport stream.
-msPrivateMetadataPid :: Lens' M3u8Settings (Maybe Int)
-msPrivateMetadataPid = lens _msPrivateMetadataPid (\ s a -> s{_msPrivateMetadataPid = a})
-
--- | The number of milliseconds between instances of this table in the output transport stream.
-msPmtInterval :: Lens' M3u8Settings (Maybe Int)
-msPmtInterval = lens _msPmtInterval (\ s a -> s{_msPmtInterval = a})
-
--- | Packet Identifier (PID) of the timed metadata stream in the transport stream.
-msTimedMetadataPid :: Lens' M3u8Settings (Maybe Int)
-msTimedMetadataPid = lens _msTimedMetadataPid (\ s a -> s{_msTimedMetadataPid = a})
-
--- | The number of audio frames to insert for each PES packet.
-msAudioFramesPerPes :: Lens' M3u8Settings (Maybe Int)
-msAudioFramesPerPes = lens _msAudioFramesPerPes (\ s a -> s{_msAudioFramesPerPes = a})
-
--- | Packet Identifier (PID) of the Program Clock Reference (PCR) in the transport stream. When no value is given, the encoder will assign the same value as the Video PID.
-msPcrPid :: Lens' M3u8Settings (Maybe Int)
-msPcrPid = lens _msPcrPid (\ s a -> s{_msPcrPid = a})
-
--- | Undocumented member.
-msTimedMetadata :: Lens' M3u8Settings (Maybe TimedMetadata)
-msTimedMetadata = lens _msTimedMetadata (\ s a -> s{_msTimedMetadata = a})
-
--- | Undocumented member.
-msScte35Source :: Lens' M3u8Settings (Maybe M3u8Scte35Source)
-msScte35Source = lens _msScte35Source (\ s a -> s{_msScte35Source = a})
-
--- | The number of milliseconds between instances of this table in the output transport stream.
-msPatInterval :: Lens' M3u8Settings (Maybe Int)
-msPatInterval = lens _msPatInterval (\ s a -> s{_msPatInterval = a})
-
--- | Packet Identifier (PID) of the elementary audio stream(s) in the transport stream. Multiple values are accepted, and can be entered in ranges and/or by comma separation.
-msAudioPids :: Lens' M3u8Settings [Int]
-msAudioPids = lens _msAudioPids (\ s a -> s{_msAudioPids = a}) . _Default . _Coerce
-
--- | Undocumented member.
-msNielsenId3 :: Lens' M3u8Settings (Maybe M3u8NielsenId3)
-msNielsenId3 = lens _msNielsenId3 (\ s a -> s{_msNielsenId3 = a})
-
--- | Undocumented member.
-msPcrControl :: Lens' M3u8Settings (Maybe M3u8PcrControl)
-msPcrControl = lens _msPcrControl (\ s a -> s{_msPcrControl = a})
-
-instance FromJSON M3u8Settings where
-        parseJSON
-          = withObject "M3u8Settings"
-              (\ x ->
-                 M3u8Settings' <$>
-                   (x .:? "pmtPid") <*> (x .:? "videoPid") <*>
-                     (x .:? "programNumber")
-                     <*> (x .:? "scte35Pid")
-                     <*> (x .:? "transportStreamId")
-                     <*> (x .:? "privateMetadataPid")
-                     <*> (x .:? "pmtInterval")
-                     <*> (x .:? "timedMetadataPid")
-                     <*> (x .:? "audioFramesPerPes")
-                     <*> (x .:? "pcrPid")
-                     <*> (x .:? "timedMetadata")
-                     <*> (x .:? "scte35Source")
-                     <*> (x .:? "patInterval")
-                     <*> (x .:? "audioPids" .!= mempty)
-                     <*> (x .:? "nielsenId3")
-                     <*> (x .:? "pcrControl"))
-
-instance Hashable M3u8Settings where
-
-instance NFData M3u8Settings where
-
-instance ToJSON M3u8Settings where
-        toJSON M3u8Settings'{..}
-          = object
-              (catMaybes
-                 [("pmtPid" .=) <$> _msPmtPid,
-                  ("videoPid" .=) <$> _msVideoPid,
-                  ("programNumber" .=) <$> _msProgramNumber,
-                  ("scte35Pid" .=) <$> _msScte35Pid,
-                  ("transportStreamId" .=) <$> _msTransportStreamId,
-                  ("privateMetadataPid" .=) <$> _msPrivateMetadataPid,
-                  ("pmtInterval" .=) <$> _msPmtInterval,
-                  ("timedMetadataPid" .=) <$> _msTimedMetadataPid,
-                  ("audioFramesPerPes" .=) <$> _msAudioFramesPerPes,
-                  ("pcrPid" .=) <$> _msPcrPid,
-                  ("timedMetadata" .=) <$> _msTimedMetadata,
-                  ("scte35Source" .=) <$> _msScte35Source,
-                  ("patInterval" .=) <$> _msPatInterval,
-                  ("audioPids" .=) <$> _msAudioPids,
-                  ("nielsenId3" .=) <$> _msNielsenId3,
-                  ("pcrControl" .=) <$> _msPcrControl])
-
--- | Settings for MOV Container.
---
--- /See:/ 'movSettings' smart constructor.
-data MovSettings = MovSettings'
-  { _msReference          :: !(Maybe MovReference)
-  , _msCslgAtom           :: !(Maybe MovCslgAtom)
-  , _msMpeg2FourCCControl :: !(Maybe MovMpeg2FourCCControl)
-  , _msPaddingControl     :: !(Maybe MovPaddingControl)
-  , _msClapAtom           :: !(Maybe MovClapAtom)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MovSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'msReference' - Undocumented member.
---
--- * 'msCslgAtom' - Undocumented member.
---
--- * 'msMpeg2FourCCControl' - Undocumented member.
---
--- * 'msPaddingControl' - Undocumented member.
---
--- * 'msClapAtom' - Undocumented member.
-movSettings
-    :: MovSettings
-movSettings =
-  MovSettings'
-    { _msReference = Nothing
-    , _msCslgAtom = Nothing
-    , _msMpeg2FourCCControl = Nothing
-    , _msPaddingControl = Nothing
-    , _msClapAtom = Nothing
-    }
-
-
--- | Undocumented member.
-msReference :: Lens' MovSettings (Maybe MovReference)
-msReference = lens _msReference (\ s a -> s{_msReference = a})
-
--- | Undocumented member.
-msCslgAtom :: Lens' MovSettings (Maybe MovCslgAtom)
-msCslgAtom = lens _msCslgAtom (\ s a -> s{_msCslgAtom = a})
-
--- | Undocumented member.
-msMpeg2FourCCControl :: Lens' MovSettings (Maybe MovMpeg2FourCCControl)
-msMpeg2FourCCControl = lens _msMpeg2FourCCControl (\ s a -> s{_msMpeg2FourCCControl = a})
-
--- | Undocumented member.
-msPaddingControl :: Lens' MovSettings (Maybe MovPaddingControl)
-msPaddingControl = lens _msPaddingControl (\ s a -> s{_msPaddingControl = a})
-
--- | Undocumented member.
-msClapAtom :: Lens' MovSettings (Maybe MovClapAtom)
-msClapAtom = lens _msClapAtom (\ s a -> s{_msClapAtom = a})
-
-instance FromJSON MovSettings where
-        parseJSON
-          = withObject "MovSettings"
-              (\ x ->
-                 MovSettings' <$>
-                   (x .:? "reference") <*> (x .:? "cslgAtom") <*>
-                     (x .:? "mpeg2FourCCControl")
-                     <*> (x .:? "paddingControl")
-                     <*> (x .:? "clapAtom"))
-
-instance Hashable MovSettings where
-
-instance NFData MovSettings where
-
-instance ToJSON MovSettings where
-        toJSON MovSettings'{..}
-          = object
-              (catMaybes
-                 [("reference" .=) <$> _msReference,
-                  ("cslgAtom" .=) <$> _msCslgAtom,
-                  ("mpeg2FourCCControl" .=) <$> _msMpeg2FourCCControl,
-                  ("paddingControl" .=) <$> _msPaddingControl,
-                  ("clapAtom" .=) <$> _msClapAtom])
-
--- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings) to the value MP2.
---
--- /See:/ 'mp2Settings' smart constructor.
-data Mp2Settings = Mp2Settings'
-  { _mssChannels   :: !(Maybe Int)
-  , _mssSampleRate :: !(Maybe Int)
-  , _mssBitrate    :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Mp2Settings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mssChannels' - Set Channels to specify the number of channels in this output audio track. Choosing Mono in the console will give you 1 output channel; choosing Stereo will give you 2. In the API, valid values are 1 and 2.
---
--- * 'mssSampleRate' - Sample rate in hz.
---
--- * 'mssBitrate' - Average bitrate in bits/second.
-mp2Settings
-    :: Mp2Settings
-mp2Settings =
-  Mp2Settings'
-    {_mssChannels = Nothing, _mssSampleRate = Nothing, _mssBitrate = Nothing}
-
-
--- | Set Channels to specify the number of channels in this output audio track. Choosing Mono in the console will give you 1 output channel; choosing Stereo will give you 2. In the API, valid values are 1 and 2.
-mssChannels :: Lens' Mp2Settings (Maybe Int)
-mssChannels = lens _mssChannels (\ s a -> s{_mssChannels = a})
-
--- | Sample rate in hz.
-mssSampleRate :: Lens' Mp2Settings (Maybe Int)
-mssSampleRate = lens _mssSampleRate (\ s a -> s{_mssSampleRate = a})
-
--- | Average bitrate in bits/second.
-mssBitrate :: Lens' Mp2Settings (Maybe Int)
-mssBitrate = lens _mssBitrate (\ s a -> s{_mssBitrate = a})
-
-instance FromJSON Mp2Settings where
-        parseJSON
-          = withObject "Mp2Settings"
-              (\ x ->
-                 Mp2Settings' <$>
-                   (x .:? "channels") <*> (x .:? "sampleRate") <*>
-                     (x .:? "bitrate"))
-
-instance Hashable Mp2Settings where
-
-instance NFData Mp2Settings where
-
-instance ToJSON Mp2Settings where
-        toJSON Mp2Settings'{..}
-          = object
-              (catMaybes
-                 [("channels" .=) <$> _mssChannels,
-                  ("sampleRate" .=) <$> _mssSampleRate,
-                  ("bitrate" .=) <$> _mssBitrate])
-
--- | Settings for MP4 Container
---
--- /See:/ 'mp4Settings' smart constructor.
-data Mp4Settings = Mp4Settings'
-  { _mMoovPlacement :: !(Maybe Mp4MoovPlacement)
-  , _mFreeSpaceBox  :: !(Maybe Mp4FreeSpaceBox)
-  , _mMp4MajorBrand :: !(Maybe Text)
-  , _mCslgAtom      :: !(Maybe Mp4CslgAtom)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Mp4Settings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mMoovPlacement' - Undocumented member.
---
--- * 'mFreeSpaceBox' - Undocumented member.
---
--- * 'mMp4MajorBrand' - Overrides the "Major Brand" field in the output file. Usually not necessary to specify.
---
--- * 'mCslgAtom' - Undocumented member.
-mp4Settings
-    :: Mp4Settings
-mp4Settings =
-  Mp4Settings'
-    { _mMoovPlacement = Nothing
-    , _mFreeSpaceBox = Nothing
-    , _mMp4MajorBrand = Nothing
-    , _mCslgAtom = Nothing
-    }
-
-
--- | Undocumented member.
-mMoovPlacement :: Lens' Mp4Settings (Maybe Mp4MoovPlacement)
-mMoovPlacement = lens _mMoovPlacement (\ s a -> s{_mMoovPlacement = a})
-
--- | Undocumented member.
-mFreeSpaceBox :: Lens' Mp4Settings (Maybe Mp4FreeSpaceBox)
-mFreeSpaceBox = lens _mFreeSpaceBox (\ s a -> s{_mFreeSpaceBox = a})
-
--- | Overrides the "Major Brand" field in the output file. Usually not necessary to specify.
-mMp4MajorBrand :: Lens' Mp4Settings (Maybe Text)
-mMp4MajorBrand = lens _mMp4MajorBrand (\ s a -> s{_mMp4MajorBrand = a})
-
--- | Undocumented member.
-mCslgAtom :: Lens' Mp4Settings (Maybe Mp4CslgAtom)
-mCslgAtom = lens _mCslgAtom (\ s a -> s{_mCslgAtom = a})
-
-instance FromJSON Mp4Settings where
-        parseJSON
-          = withObject "Mp4Settings"
-              (\ x ->
-                 Mp4Settings' <$>
-                   (x .:? "moovPlacement") <*> (x .:? "freeSpaceBox")
-                     <*> (x .:? "mp4MajorBrand")
-                     <*> (x .:? "cslgAtom"))
-
-instance Hashable Mp4Settings where
-
-instance NFData Mp4Settings where
-
-instance ToJSON Mp4Settings where
-        toJSON Mp4Settings'{..}
-          = object
-              (catMaybes
-                 [("moovPlacement" .=) <$> _mMoovPlacement,
-                  ("freeSpaceBox" .=) <$> _mFreeSpaceBox,
-                  ("mp4MajorBrand" .=) <$> _mMp4MajorBrand,
-                  ("cslgAtom" .=) <$> _mCslgAtom])
-
--- | Required when you set (Codec) under (VideoDescription)>(CodecSettings) to the value MPEG2.
---
--- /See:/ 'mpeg2Settings' smart constructor.
-data Mpeg2Settings = Mpeg2Settings'
-  { _msQualityTuningLevel :: !(Maybe Mpeg2QualityTuningLevel)
-  , _msTemporalAdaptiveQuantization :: !(Maybe Mpeg2TemporalAdaptiveQuantization)
-  , _msSceneChangeDetect :: !(Maybe Mpeg2SceneChangeDetect)
-  , _msHrdBufferInitialFillPercentage :: !(Maybe Int)
-  , _msSlowPal :: !(Maybe Mpeg2SlowPal)
-  , _msParNumerator :: !(Maybe Int)
-  , _msGopSize :: !(Maybe Double)
-  , _msNumberBFramesBetweenReferenceFrames :: !(Maybe Int)
-  , _msGopSizeUnits :: !(Maybe Mpeg2GopSizeUnits)
-  , _msHrdBufferSize :: !(Maybe Int)
-  , _msRateControlMode :: !(Maybe Mpeg2RateControlMode)
-  , _msTelecine :: !(Maybe Mpeg2Telecine)
-  , _msIntraDcPrecision :: !(Maybe Mpeg2IntraDcPrecision)
-  , _msMinIInterval :: !(Maybe Int)
-  , _msInterlaceMode :: !(Maybe Mpeg2InterlaceMode)
-  , _msParControl :: !(Maybe Mpeg2ParControl)
-  , _msSoftness :: !(Maybe Int)
-  , _msCodecProfile :: !(Maybe Mpeg2CodecProfile)
-  , _msBitrate :: !(Maybe Int)
-  , _msFramerateDenominator :: !(Maybe Int)
-  , _msFramerateConversionAlgorithm :: !(Maybe Mpeg2FramerateConversionAlgorithm)
-  , _msCodecLevel :: !(Maybe Mpeg2CodecLevel)
-  , _msFramerateControl :: !(Maybe Mpeg2FramerateControl)
-  , _msAdaptiveQuantization :: !(Maybe Mpeg2AdaptiveQuantization)
-  , _msFramerateNumerator :: !(Maybe Int)
-  , _msMaxBitrate :: !(Maybe Int)
-  , _msSyntax :: !(Maybe Mpeg2Syntax)
-  , _msGopClosedCadence :: !(Maybe Int)
-  , _msParDenominator :: !(Maybe Int)
-  , _msSpatialAdaptiveQuantization :: !(Maybe Mpeg2SpatialAdaptiveQuantization)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Mpeg2Settings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'msQualityTuningLevel' - Undocumented member.
---
--- * 'msTemporalAdaptiveQuantization' - Undocumented member.
---
--- * 'msSceneChangeDetect' - Undocumented member.
---
--- * 'msHrdBufferInitialFillPercentage' - Percentage of the buffer that should initially be filled (HRD buffer model).
---
--- * 'msSlowPal' - Undocumented member.
---
--- * 'msParNumerator' - Pixel Aspect Ratio numerator.
---
--- * 'msGopSize' - GOP Length (keyframe interval) in frames or seconds. Must be greater than zero.
---
--- * 'msNumberBFramesBetweenReferenceFrames' - Number of B-frames between reference frames.
---
--- * 'msGopSizeUnits' - Undocumented member.
---
--- * 'msHrdBufferSize' - Size of buffer (HRD buffer model). Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m.
---
--- * 'msRateControlMode' - Undocumented member.
---
--- * 'msTelecine' - Undocumented member.
---
--- * 'msIntraDcPrecision' - Undocumented member.
---
--- * 'msMinIInterval' - Enforces separation between repeated (cadence) I-frames and I-frames inserted by Scene Change Detection. If a scene change I-frame is within I-interval frames of a cadence I-frame, the GOP is shrunk and/or stretched to the scene change I-frame. GOP stretch requires enabling lookahead as well as setting I-interval. The normal cadence resumes for the next GOP. This setting is only used when Scene Change Detect is enabled. Note: Maximum GOP stretch = GOP size + Min-I-interval - 1
---
--- * 'msInterlaceMode' - Undocumented member.
---
--- * 'msParControl' - Undocumented member.
---
--- * 'msSoftness' - Softness. Selects quantizer matrix, larger values reduce high-frequency content in the encoded image.
---
--- * 'msCodecProfile' - Undocumented member.
---
--- * 'msBitrate' - Average bitrate in bits/second. Required for VBR, CBR, and ABR. Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m. For MS Smooth outputs, bitrates must be unique when rounded down to the nearest multiple of 1000.
---
--- * 'msFramerateDenominator' - Framerate denominator.
---
--- * 'msFramerateConversionAlgorithm' - Undocumented member.
---
--- * 'msCodecLevel' - Undocumented member.
---
--- * 'msFramerateControl' - Undocumented member.
---
--- * 'msAdaptiveQuantization' - Undocumented member.
---
--- * 'msFramerateNumerator' - Framerate numerator - framerate is a fraction, e.g. 24000 / 1001 = 23.976 fps.
---
--- * 'msMaxBitrate' - Maximum bitrate in bits/second (for VBR mode only). Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m.
---
--- * 'msSyntax' - Undocumented member.
---
--- * 'msGopClosedCadence' - Frequency of closed GOPs. In streaming applications, it is recommended that this be set to 1 so a decoder joining mid-stream will receive an IDR frame as quickly as possible. Setting this value to 0 will break output segmenting.
---
--- * 'msParDenominator' - Pixel Aspect Ratio denominator.
---
--- * 'msSpatialAdaptiveQuantization' - Undocumented member.
-mpeg2Settings
-    :: Mpeg2Settings
-mpeg2Settings =
-  Mpeg2Settings'
-    { _msQualityTuningLevel = Nothing
-    , _msTemporalAdaptiveQuantization = Nothing
-    , _msSceneChangeDetect = Nothing
-    , _msHrdBufferInitialFillPercentage = Nothing
-    , _msSlowPal = Nothing
-    , _msParNumerator = Nothing
-    , _msGopSize = Nothing
-    , _msNumberBFramesBetweenReferenceFrames = Nothing
-    , _msGopSizeUnits = Nothing
-    , _msHrdBufferSize = Nothing
-    , _msRateControlMode = Nothing
-    , _msTelecine = Nothing
-    , _msIntraDcPrecision = Nothing
-    , _msMinIInterval = Nothing
-    , _msInterlaceMode = Nothing
-    , _msParControl = Nothing
-    , _msSoftness = Nothing
-    , _msCodecProfile = Nothing
-    , _msBitrate = Nothing
-    , _msFramerateDenominator = Nothing
-    , _msFramerateConversionAlgorithm = Nothing
-    , _msCodecLevel = Nothing
-    , _msFramerateControl = Nothing
-    , _msAdaptiveQuantization = Nothing
-    , _msFramerateNumerator = Nothing
-    , _msMaxBitrate = Nothing
-    , _msSyntax = Nothing
-    , _msGopClosedCadence = Nothing
-    , _msParDenominator = Nothing
-    , _msSpatialAdaptiveQuantization = Nothing
-    }
-
-
--- | Undocumented member.
-msQualityTuningLevel :: Lens' Mpeg2Settings (Maybe Mpeg2QualityTuningLevel)
-msQualityTuningLevel = lens _msQualityTuningLevel (\ s a -> s{_msQualityTuningLevel = a})
-
--- | Undocumented member.
-msTemporalAdaptiveQuantization :: Lens' Mpeg2Settings (Maybe Mpeg2TemporalAdaptiveQuantization)
-msTemporalAdaptiveQuantization = lens _msTemporalAdaptiveQuantization (\ s a -> s{_msTemporalAdaptiveQuantization = a})
-
--- | Undocumented member.
-msSceneChangeDetect :: Lens' Mpeg2Settings (Maybe Mpeg2SceneChangeDetect)
-msSceneChangeDetect = lens _msSceneChangeDetect (\ s a -> s{_msSceneChangeDetect = a})
-
--- | Percentage of the buffer that should initially be filled (HRD buffer model).
-msHrdBufferInitialFillPercentage :: Lens' Mpeg2Settings (Maybe Int)
-msHrdBufferInitialFillPercentage = lens _msHrdBufferInitialFillPercentage (\ s a -> s{_msHrdBufferInitialFillPercentage = a})
-
--- | Undocumented member.
-msSlowPal :: Lens' Mpeg2Settings (Maybe Mpeg2SlowPal)
-msSlowPal = lens _msSlowPal (\ s a -> s{_msSlowPal = a})
-
--- | Pixel Aspect Ratio numerator.
-msParNumerator :: Lens' Mpeg2Settings (Maybe Int)
-msParNumerator = lens _msParNumerator (\ s a -> s{_msParNumerator = a})
-
--- | GOP Length (keyframe interval) in frames or seconds. Must be greater than zero.
-msGopSize :: Lens' Mpeg2Settings (Maybe Double)
-msGopSize = lens _msGopSize (\ s a -> s{_msGopSize = a})
-
--- | Number of B-frames between reference frames.
-msNumberBFramesBetweenReferenceFrames :: Lens' Mpeg2Settings (Maybe Int)
-msNumberBFramesBetweenReferenceFrames = lens _msNumberBFramesBetweenReferenceFrames (\ s a -> s{_msNumberBFramesBetweenReferenceFrames = a})
-
--- | Undocumented member.
-msGopSizeUnits :: Lens' Mpeg2Settings (Maybe Mpeg2GopSizeUnits)
-msGopSizeUnits = lens _msGopSizeUnits (\ s a -> s{_msGopSizeUnits = a})
-
--- | Size of buffer (HRD buffer model). Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m.
-msHrdBufferSize :: Lens' Mpeg2Settings (Maybe Int)
-msHrdBufferSize = lens _msHrdBufferSize (\ s a -> s{_msHrdBufferSize = a})
-
--- | Undocumented member.
-msRateControlMode :: Lens' Mpeg2Settings (Maybe Mpeg2RateControlMode)
-msRateControlMode = lens _msRateControlMode (\ s a -> s{_msRateControlMode = a})
-
--- | Undocumented member.
-msTelecine :: Lens' Mpeg2Settings (Maybe Mpeg2Telecine)
-msTelecine = lens _msTelecine (\ s a -> s{_msTelecine = a})
-
--- | Undocumented member.
-msIntraDcPrecision :: Lens' Mpeg2Settings (Maybe Mpeg2IntraDcPrecision)
-msIntraDcPrecision = lens _msIntraDcPrecision (\ s a -> s{_msIntraDcPrecision = a})
-
--- | Enforces separation between repeated (cadence) I-frames and I-frames inserted by Scene Change Detection. If a scene change I-frame is within I-interval frames of a cadence I-frame, the GOP is shrunk and/or stretched to the scene change I-frame. GOP stretch requires enabling lookahead as well as setting I-interval. The normal cadence resumes for the next GOP. This setting is only used when Scene Change Detect is enabled. Note: Maximum GOP stretch = GOP size + Min-I-interval - 1
-msMinIInterval :: Lens' Mpeg2Settings (Maybe Int)
-msMinIInterval = lens _msMinIInterval (\ s a -> s{_msMinIInterval = a})
-
--- | Undocumented member.
-msInterlaceMode :: Lens' Mpeg2Settings (Maybe Mpeg2InterlaceMode)
-msInterlaceMode = lens _msInterlaceMode (\ s a -> s{_msInterlaceMode = a})
-
--- | Undocumented member.
-msParControl :: Lens' Mpeg2Settings (Maybe Mpeg2ParControl)
-msParControl = lens _msParControl (\ s a -> s{_msParControl = a})
-
--- | Softness. Selects quantizer matrix, larger values reduce high-frequency content in the encoded image.
-msSoftness :: Lens' Mpeg2Settings (Maybe Int)
-msSoftness = lens _msSoftness (\ s a -> s{_msSoftness = a})
-
--- | Undocumented member.
-msCodecProfile :: Lens' Mpeg2Settings (Maybe Mpeg2CodecProfile)
-msCodecProfile = lens _msCodecProfile (\ s a -> s{_msCodecProfile = a})
-
--- | Average bitrate in bits/second. Required for VBR, CBR, and ABR. Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m. For MS Smooth outputs, bitrates must be unique when rounded down to the nearest multiple of 1000.
-msBitrate :: Lens' Mpeg2Settings (Maybe Int)
-msBitrate = lens _msBitrate (\ s a -> s{_msBitrate = a})
-
--- | Framerate denominator.
-msFramerateDenominator :: Lens' Mpeg2Settings (Maybe Int)
-msFramerateDenominator = lens _msFramerateDenominator (\ s a -> s{_msFramerateDenominator = a})
-
--- | Undocumented member.
-msFramerateConversionAlgorithm :: Lens' Mpeg2Settings (Maybe Mpeg2FramerateConversionAlgorithm)
-msFramerateConversionAlgorithm = lens _msFramerateConversionAlgorithm (\ s a -> s{_msFramerateConversionAlgorithm = a})
-
--- | Undocumented member.
-msCodecLevel :: Lens' Mpeg2Settings (Maybe Mpeg2CodecLevel)
-msCodecLevel = lens _msCodecLevel (\ s a -> s{_msCodecLevel = a})
-
--- | Undocumented member.
-msFramerateControl :: Lens' Mpeg2Settings (Maybe Mpeg2FramerateControl)
-msFramerateControl = lens _msFramerateControl (\ s a -> s{_msFramerateControl = a})
-
--- | Undocumented member.
-msAdaptiveQuantization :: Lens' Mpeg2Settings (Maybe Mpeg2AdaptiveQuantization)
-msAdaptiveQuantization = lens _msAdaptiveQuantization (\ s a -> s{_msAdaptiveQuantization = a})
-
--- | Framerate numerator - framerate is a fraction, e.g. 24000 / 1001 = 23.976 fps.
-msFramerateNumerator :: Lens' Mpeg2Settings (Maybe Int)
-msFramerateNumerator = lens _msFramerateNumerator (\ s a -> s{_msFramerateNumerator = a})
-
--- | Maximum bitrate in bits/second (for VBR mode only). Five megabits can be entered as 5000000 or 5m. Five hundred kilobits can be entered as 500000 or 0.5m.
-msMaxBitrate :: Lens' Mpeg2Settings (Maybe Int)
-msMaxBitrate = lens _msMaxBitrate (\ s a -> s{_msMaxBitrate = a})
-
--- | Undocumented member.
-msSyntax :: Lens' Mpeg2Settings (Maybe Mpeg2Syntax)
-msSyntax = lens _msSyntax (\ s a -> s{_msSyntax = a})
-
--- | Frequency of closed GOPs. In streaming applications, it is recommended that this be set to 1 so a decoder joining mid-stream will receive an IDR frame as quickly as possible. Setting this value to 0 will break output segmenting.
-msGopClosedCadence :: Lens' Mpeg2Settings (Maybe Int)
-msGopClosedCadence = lens _msGopClosedCadence (\ s a -> s{_msGopClosedCadence = a})
-
--- | Pixel Aspect Ratio denominator.
-msParDenominator :: Lens' Mpeg2Settings (Maybe Int)
-msParDenominator = lens _msParDenominator (\ s a -> s{_msParDenominator = a})
-
--- | Undocumented member.
-msSpatialAdaptiveQuantization :: Lens' Mpeg2Settings (Maybe Mpeg2SpatialAdaptiveQuantization)
-msSpatialAdaptiveQuantization = lens _msSpatialAdaptiveQuantization (\ s a -> s{_msSpatialAdaptiveQuantization = a})
-
-instance FromJSON Mpeg2Settings where
-        parseJSON
-          = withObject "Mpeg2Settings"
-              (\ x ->
-                 Mpeg2Settings' <$>
-                   (x .:? "qualityTuningLevel") <*>
-                     (x .:? "temporalAdaptiveQuantization")
-                     <*> (x .:? "sceneChangeDetect")
-                     <*> (x .:? "hrdBufferInitialFillPercentage")
-                     <*> (x .:? "slowPal")
-                     <*> (x .:? "parNumerator")
-                     <*> (x .:? "gopSize")
-                     <*> (x .:? "numberBFramesBetweenReferenceFrames")
-                     <*> (x .:? "gopSizeUnits")
-                     <*> (x .:? "hrdBufferSize")
-                     <*> (x .:? "rateControlMode")
-                     <*> (x .:? "telecine")
-                     <*> (x .:? "intraDcPrecision")
-                     <*> (x .:? "minIInterval")
-                     <*> (x .:? "interlaceMode")
-                     <*> (x .:? "parControl")
-                     <*> (x .:? "softness")
-                     <*> (x .:? "codecProfile")
-                     <*> (x .:? "bitrate")
-                     <*> (x .:? "framerateDenominator")
-                     <*> (x .:? "framerateConversionAlgorithm")
-                     <*> (x .:? "codecLevel")
-                     <*> (x .:? "framerateControl")
-                     <*> (x .:? "adaptiveQuantization")
-                     <*> (x .:? "framerateNumerator")
-                     <*> (x .:? "maxBitrate")
-                     <*> (x .:? "syntax")
-                     <*> (x .:? "gopClosedCadence")
-                     <*> (x .:? "parDenominator")
-                     <*> (x .:? "spatialAdaptiveQuantization"))
-
-instance Hashable Mpeg2Settings where
-
-instance NFData Mpeg2Settings where
-
-instance ToJSON Mpeg2Settings where
-        toJSON Mpeg2Settings'{..}
-          = object
-              (catMaybes
-                 [("qualityTuningLevel" .=) <$> _msQualityTuningLevel,
-                  ("temporalAdaptiveQuantization" .=) <$>
-                    _msTemporalAdaptiveQuantization,
-                  ("sceneChangeDetect" .=) <$> _msSceneChangeDetect,
-                  ("hrdBufferInitialFillPercentage" .=) <$>
-                    _msHrdBufferInitialFillPercentage,
-                  ("slowPal" .=) <$> _msSlowPal,
-                  ("parNumerator" .=) <$> _msParNumerator,
-                  ("gopSize" .=) <$> _msGopSize,
-                  ("numberBFramesBetweenReferenceFrames" .=) <$>
-                    _msNumberBFramesBetweenReferenceFrames,
-                  ("gopSizeUnits" .=) <$> _msGopSizeUnits,
-                  ("hrdBufferSize" .=) <$> _msHrdBufferSize,
-                  ("rateControlMode" .=) <$> _msRateControlMode,
-                  ("telecine" .=) <$> _msTelecine,
-                  ("intraDcPrecision" .=) <$> _msIntraDcPrecision,
-                  ("minIInterval" .=) <$> _msMinIInterval,
-                  ("interlaceMode" .=) <$> _msInterlaceMode,
-                  ("parControl" .=) <$> _msParControl,
-                  ("softness" .=) <$> _msSoftness,
-                  ("codecProfile" .=) <$> _msCodecProfile,
-                  ("bitrate" .=) <$> _msBitrate,
-                  ("framerateDenominator" .=) <$>
-                    _msFramerateDenominator,
-                  ("framerateConversionAlgorithm" .=) <$>
-                    _msFramerateConversionAlgorithm,
-                  ("codecLevel" .=) <$> _msCodecLevel,
-                  ("framerateControl" .=) <$> _msFramerateControl,
-                  ("adaptiveQuantization" .=) <$>
-                    _msAdaptiveQuantization,
-                  ("framerateNumerator" .=) <$> _msFramerateNumerator,
-                  ("maxBitrate" .=) <$> _msMaxBitrate,
-                  ("syntax" .=) <$> _msSyntax,
-                  ("gopClosedCadence" .=) <$> _msGopClosedCadence,
-                  ("parDenominator" .=) <$> _msParDenominator,
-                  ("spatialAdaptiveQuantization" .=) <$>
-                    _msSpatialAdaptiveQuantization])
-
--- | If you are using DRM, set DRM System (MsSmoothEncryptionSettings) to specify the value SpekeKeyProvider.
---
--- /See:/ 'msSmoothEncryptionSettings' smart constructor.
-newtype MsSmoothEncryptionSettings = MsSmoothEncryptionSettings'
-  { _msesSpekeKeyProvider :: Maybe SpekeKeyProvider
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MsSmoothEncryptionSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'msesSpekeKeyProvider' - Undocumented member.
-msSmoothEncryptionSettings
-    :: MsSmoothEncryptionSettings
-msSmoothEncryptionSettings =
-  MsSmoothEncryptionSettings' {_msesSpekeKeyProvider = Nothing}
-
-
--- | Undocumented member.
-msesSpekeKeyProvider :: Lens' MsSmoothEncryptionSettings (Maybe SpekeKeyProvider)
-msesSpekeKeyProvider = lens _msesSpekeKeyProvider (\ s a -> s{_msesSpekeKeyProvider = a})
-
-instance FromJSON MsSmoothEncryptionSettings where
-        parseJSON
-          = withObject "MsSmoothEncryptionSettings"
-              (\ x ->
-                 MsSmoothEncryptionSettings' <$>
-                   (x .:? "spekeKeyProvider"))
-
-instance Hashable MsSmoothEncryptionSettings where
-
-instance NFData MsSmoothEncryptionSettings where
-
-instance ToJSON MsSmoothEncryptionSettings where
-        toJSON MsSmoothEncryptionSettings'{..}
-          = object
-              (catMaybes
-                 [("spekeKeyProvider" .=) <$> _msesSpekeKeyProvider])
-
--- | Required when you set (Type) under (OutputGroups)>(OutputGroupSettings) to MS_SMOOTH_GROUP_SETTINGS.
---
--- /See:/ 'msSmoothGroupSettings' smart constructor.
-data MsSmoothGroupSettings = MsSmoothGroupSettings'
-  { _msgsFragmentLength     :: !(Maybe Int)
-  , _msgsManifestEncoding   :: !(Maybe MsSmoothManifestEncoding)
-  , _msgsDestination        :: !(Maybe Text)
-  , _msgsAudioDeduplication :: !(Maybe MsSmoothAudioDeduplication)
-  , _msgsEncryption         :: !(Maybe MsSmoothEncryptionSettings)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MsSmoothGroupSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'msgsFragmentLength' - Use Fragment length (FragmentLength) to specify the mp4 fragment sizes in seconds. Fragment length must be compatible with GOP size and framerate.
---
--- * 'msgsManifestEncoding' - Undocumented member.
---
--- * 'msgsDestination' - Use Destination (Destination) to specify the S3 output location and the output filename base. Destination accepts format identifiers. If you do not specify the base filename in the URI, the service will use the filename of the input file. If your job has multiple inputs, the service uses the filename of the first input file.
---
--- * 'msgsAudioDeduplication' - Undocumented member.
---
--- * 'msgsEncryption' - Undocumented member.
-msSmoothGroupSettings
-    :: MsSmoothGroupSettings
-msSmoothGroupSettings =
-  MsSmoothGroupSettings'
-    { _msgsFragmentLength = Nothing
-    , _msgsManifestEncoding = Nothing
-    , _msgsDestination = Nothing
-    , _msgsAudioDeduplication = Nothing
-    , _msgsEncryption = Nothing
-    }
-
-
--- | Use Fragment length (FragmentLength) to specify the mp4 fragment sizes in seconds. Fragment length must be compatible with GOP size and framerate.
-msgsFragmentLength :: Lens' MsSmoothGroupSettings (Maybe Int)
-msgsFragmentLength = lens _msgsFragmentLength (\ s a -> s{_msgsFragmentLength = a})
-
--- | Undocumented member.
-msgsManifestEncoding :: Lens' MsSmoothGroupSettings (Maybe MsSmoothManifestEncoding)
-msgsManifestEncoding = lens _msgsManifestEncoding (\ s a -> s{_msgsManifestEncoding = a})
-
--- | Use Destination (Destination) to specify the S3 output location and the output filename base. Destination accepts format identifiers. If you do not specify the base filename in the URI, the service will use the filename of the input file. If your job has multiple inputs, the service uses the filename of the first input file.
-msgsDestination :: Lens' MsSmoothGroupSettings (Maybe Text)
-msgsDestination = lens _msgsDestination (\ s a -> s{_msgsDestination = a})
-
--- | Undocumented member.
-msgsAudioDeduplication :: Lens' MsSmoothGroupSettings (Maybe MsSmoothAudioDeduplication)
-msgsAudioDeduplication = lens _msgsAudioDeduplication (\ s a -> s{_msgsAudioDeduplication = a})
-
--- | Undocumented member.
-msgsEncryption :: Lens' MsSmoothGroupSettings (Maybe MsSmoothEncryptionSettings)
-msgsEncryption = lens _msgsEncryption (\ s a -> s{_msgsEncryption = a})
-
-instance FromJSON MsSmoothGroupSettings where
-        parseJSON
-          = withObject "MsSmoothGroupSettings"
-              (\ x ->
-                 MsSmoothGroupSettings' <$>
-                   (x .:? "fragmentLength") <*>
-                     (x .:? "manifestEncoding")
-                     <*> (x .:? "destination")
-                     <*> (x .:? "audioDeduplication")
-                     <*> (x .:? "encryption"))
-
-instance Hashable MsSmoothGroupSettings where
-
-instance NFData MsSmoothGroupSettings where
-
-instance ToJSON MsSmoothGroupSettings where
-        toJSON MsSmoothGroupSettings'{..}
-          = object
-              (catMaybes
-                 [("fragmentLength" .=) <$> _msgsFragmentLength,
-                  ("manifestEncoding" .=) <$> _msgsManifestEncoding,
-                  ("destination" .=) <$> _msgsDestination,
-                  ("audioDeduplication" .=) <$>
-                    _msgsAudioDeduplication,
-                  ("encryption" .=) <$> _msgsEncryption])
-
--- | Settings for Nielsen Configuration
---
--- /See:/ 'nielsenConfiguration' smart constructor.
-data NielsenConfiguration = NielsenConfiguration'
-  { _ncBreakoutCode  :: !(Maybe Int)
-  , _ncDistributorId :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NielsenConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ncBreakoutCode' - Use Nielsen Configuration (NielsenConfiguration) to set the Nielsen measurement system breakout code. Supported values are 0, 3, 7, and 9.
---
--- * 'ncDistributorId' - Use Distributor ID (DistributorID) to specify the distributor ID that is assigned to your organization by Neilsen.
-nielsenConfiguration
-    :: NielsenConfiguration
-nielsenConfiguration =
-  NielsenConfiguration' {_ncBreakoutCode = Nothing, _ncDistributorId = Nothing}
-
-
--- | Use Nielsen Configuration (NielsenConfiguration) to set the Nielsen measurement system breakout code. Supported values are 0, 3, 7, and 9.
-ncBreakoutCode :: Lens' NielsenConfiguration (Maybe Int)
-ncBreakoutCode = lens _ncBreakoutCode (\ s a -> s{_ncBreakoutCode = a})
-
--- | Use Distributor ID (DistributorID) to specify the distributor ID that is assigned to your organization by Neilsen.
-ncDistributorId :: Lens' NielsenConfiguration (Maybe Text)
-ncDistributorId = lens _ncDistributorId (\ s a -> s{_ncDistributorId = a})
-
-instance FromJSON NielsenConfiguration where
-        parseJSON
-          = withObject "NielsenConfiguration"
-              (\ x ->
-                 NielsenConfiguration' <$>
-                   (x .:? "breakoutCode") <*> (x .:? "distributorId"))
-
-instance Hashable NielsenConfiguration where
-
-instance NFData NielsenConfiguration where
-
-instance ToJSON NielsenConfiguration where
-        toJSON NielsenConfiguration'{..}
-          = object
-              (catMaybes
-                 [("breakoutCode" .=) <$> _ncBreakoutCode,
-                  ("distributorId" .=) <$> _ncDistributorId])
-
--- | Enable the Noise reducer (NoiseReducer) feature to remove noise from your video output if necessary. Enable or disable this feature for each output individually. This setting is disabled by default. When you enable Noise reducer (NoiseReducer), you must also select a value for Noise reducer filter (NoiseReducerFilter).
---
--- /See:/ 'noiseReducer' smart constructor.
-data NoiseReducer = NoiseReducer'
-  { _nrSpatialFilterSettings :: !(Maybe NoiseReducerSpatialFilterSettings)
-  , _nrFilterSettings        :: !(Maybe NoiseReducerFilterSettings)
-  , _nrFilter                :: !(Maybe NoiseReducerFilter)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NoiseReducer' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nrSpatialFilterSettings' - Undocumented member.
---
--- * 'nrFilterSettings' - Undocumented member.
---
--- * 'nrFilter' - Undocumented member.
-noiseReducer
-    :: NoiseReducer
-noiseReducer =
-  NoiseReducer'
-    { _nrSpatialFilterSettings = Nothing
-    , _nrFilterSettings = Nothing
-    , _nrFilter = Nothing
-    }
-
-
--- | Undocumented member.
-nrSpatialFilterSettings :: Lens' NoiseReducer (Maybe NoiseReducerSpatialFilterSettings)
-nrSpatialFilterSettings = lens _nrSpatialFilterSettings (\ s a -> s{_nrSpatialFilterSettings = a})
-
--- | Undocumented member.
-nrFilterSettings :: Lens' NoiseReducer (Maybe NoiseReducerFilterSettings)
-nrFilterSettings = lens _nrFilterSettings (\ s a -> s{_nrFilterSettings = a})
-
--- | Undocumented member.
-nrFilter :: Lens' NoiseReducer (Maybe NoiseReducerFilter)
-nrFilter = lens _nrFilter (\ s a -> s{_nrFilter = a})
-
-instance FromJSON NoiseReducer where
-        parseJSON
-          = withObject "NoiseReducer"
-              (\ x ->
-                 NoiseReducer' <$>
-                   (x .:? "spatialFilterSettings") <*>
-                     (x .:? "filterSettings")
-                     <*> (x .:? "filter"))
-
-instance Hashable NoiseReducer where
-
-instance NFData NoiseReducer where
-
-instance ToJSON NoiseReducer where
-        toJSON NoiseReducer'{..}
-          = object
-              (catMaybes
-                 [("spatialFilterSettings" .=) <$>
-                    _nrSpatialFilterSettings,
-                  ("filterSettings" .=) <$> _nrFilterSettings,
-                  ("filter" .=) <$> _nrFilter])
-
--- | Settings for a noise reducer filter
---
--- /See:/ 'noiseReducerFilterSettings' smart constructor.
-newtype NoiseReducerFilterSettings = NoiseReducerFilterSettings'
-  { _nrfsStrength :: Maybe Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NoiseReducerFilterSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nrfsStrength' - Relative strength of noise reducing filter. Higher values produce stronger filtering.
-noiseReducerFilterSettings
-    :: NoiseReducerFilterSettings
-noiseReducerFilterSettings =
-  NoiseReducerFilterSettings' {_nrfsStrength = Nothing}
-
-
--- | Relative strength of noise reducing filter. Higher values produce stronger filtering.
-nrfsStrength :: Lens' NoiseReducerFilterSettings (Maybe Int)
-nrfsStrength = lens _nrfsStrength (\ s a -> s{_nrfsStrength = a})
-
-instance FromJSON NoiseReducerFilterSettings where
-        parseJSON
-          = withObject "NoiseReducerFilterSettings"
-              (\ x ->
-                 NoiseReducerFilterSettings' <$> (x .:? "strength"))
-
-instance Hashable NoiseReducerFilterSettings where
-
-instance NFData NoiseReducerFilterSettings where
-
-instance ToJSON NoiseReducerFilterSettings where
-        toJSON NoiseReducerFilterSettings'{..}
-          = object
-              (catMaybes [("strength" .=) <$> _nrfsStrength])
-
--- | Noise reducer filter settings for spatial filter.
---
--- /See:/ 'noiseReducerSpatialFilterSettings' smart constructor.
-data NoiseReducerSpatialFilterSettings = NoiseReducerSpatialFilterSettings'
-  { _nrsfsStrength                  :: !(Maybe Int)
-  , _nrsfsPostFilterSharpenStrength :: !(Maybe Int)
-  , _nrsfsSpeed                     :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NoiseReducerSpatialFilterSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nrsfsStrength' - Relative strength of noise reducing filter. Higher values produce stronger filtering.
---
--- * 'nrsfsPostFilterSharpenStrength' - Specify strength of post noise reduction sharpening filter, with 0 disabling the filter and 3 enabling it at maximum strength.
---
--- * 'nrsfsSpeed' - The speed of the filter, from -2 (lower speed) to 3 (higher speed), with 0 being the nominal value.
-noiseReducerSpatialFilterSettings
-    :: NoiseReducerSpatialFilterSettings
-noiseReducerSpatialFilterSettings =
-  NoiseReducerSpatialFilterSettings'
-    { _nrsfsStrength = Nothing
-    , _nrsfsPostFilterSharpenStrength = Nothing
-    , _nrsfsSpeed = Nothing
-    }
-
-
--- | Relative strength of noise reducing filter. Higher values produce stronger filtering.
-nrsfsStrength :: Lens' NoiseReducerSpatialFilterSettings (Maybe Int)
-nrsfsStrength = lens _nrsfsStrength (\ s a -> s{_nrsfsStrength = a})
-
--- | Specify strength of post noise reduction sharpening filter, with 0 disabling the filter and 3 enabling it at maximum strength.
-nrsfsPostFilterSharpenStrength :: Lens' NoiseReducerSpatialFilterSettings (Maybe Int)
-nrsfsPostFilterSharpenStrength = lens _nrsfsPostFilterSharpenStrength (\ s a -> s{_nrsfsPostFilterSharpenStrength = a})
-
--- | The speed of the filter, from -2 (lower speed) to 3 (higher speed), with 0 being the nominal value.
-nrsfsSpeed :: Lens' NoiseReducerSpatialFilterSettings (Maybe Int)
-nrsfsSpeed = lens _nrsfsSpeed (\ s a -> s{_nrsfsSpeed = a})
-
-instance FromJSON NoiseReducerSpatialFilterSettings
-         where
-        parseJSON
-          = withObject "NoiseReducerSpatialFilterSettings"
-              (\ x ->
-                 NoiseReducerSpatialFilterSettings' <$>
-                   (x .:? "strength") <*>
-                     (x .:? "postFilterSharpenStrength")
-                     <*> (x .:? "speed"))
-
-instance Hashable NoiseReducerSpatialFilterSettings
-         where
-
-instance NFData NoiseReducerSpatialFilterSettings
-         where
-
-instance ToJSON NoiseReducerSpatialFilterSettings
-         where
-        toJSON NoiseReducerSpatialFilterSettings'{..}
-          = object
-              (catMaybes
-                 [("strength" .=) <$> _nrsfsStrength,
-                  ("postFilterSharpenStrength" .=) <$>
-                    _nrsfsPostFilterSharpenStrength,
-                  ("speed" .=) <$> _nrsfsSpeed])
-
--- | An output object describes the settings for a single output file or stream in an output group.
---
--- /See:/ 'output' smart constructor.
-data Output = Output'
-  { _oCaptionDescriptions :: !(Maybe [CaptionDescription])
-  , _oExtension           :: !(Maybe Text)
-  , _oVideoDescription    :: !(Maybe VideoDescription)
-  , _oContainerSettings   :: !(Maybe ContainerSettings)
-  , _oOutputSettings      :: !(Maybe OutputSettings)
-  , _oPreset              :: !(Maybe Text)
-  , _oNameModifier        :: !(Maybe Text)
-  , _oAudioDescriptions   :: !(Maybe [AudioDescription])
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Output' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oCaptionDescriptions' - (CaptionDescriptions) contains groups of captions settings. For each output that has captions, include one instance of (CaptionDescriptions). (CaptionDescriptions) can contain multiple groups of captions settings.
---
--- * 'oExtension' - Use Extension (Extension) to specify the file extension for outputs in File output groups. If you do not specify a value, the service will use default extensions by container type as follows * MPEG-2 transport stream, m2ts * Quicktime, mov * MXF container, mxf * MPEG-4 container, mp4 * No Container, the service will use codec extensions (e.g. AAC, H265, H265, AC3)
---
--- * 'oVideoDescription' - (VideoDescription) contains a group of video encoding settings. The specific video settings depend on the video codec you choose when you specify a value for Video codec (codec). Include one instance of (VideoDescription) per output.
---
--- * 'oContainerSettings' - Undocumented member.
---
--- * 'oOutputSettings' - Undocumented member.
---
--- * 'oPreset' - Use Preset (Preset) to specifiy a preset for your transcoding settings. Provide the system or custom preset name. You can specify either Preset (Preset) or Container settings (ContainerSettings), but not both.
---
--- * 'oNameModifier' - Use Name modifier (NameModifier) to have the service add a string to the end of each output filename. You specify the base filename as part of your destination URI. When you create multiple outputs in the same output group, Name modifier (NameModifier) is required. Name modifier also accepts format identifiers. For DASH ISO outputs, if you use the format identifiers $Number$ or $Time$ in one output, you must use them in the same way in all outputs of the output group.
---
--- * 'oAudioDescriptions' - (AudioDescriptions) contains groups of audio encoding settings organized by audio codec. Include one instance of (AudioDescriptions) per output. (AudioDescriptions) can contain multiple groups of encoding settings.
-output
-    :: Output
-output =
-  Output'
-    { _oCaptionDescriptions = Nothing
-    , _oExtension = Nothing
-    , _oVideoDescription = Nothing
-    , _oContainerSettings = Nothing
-    , _oOutputSettings = Nothing
-    , _oPreset = Nothing
-    , _oNameModifier = Nothing
-    , _oAudioDescriptions = Nothing
-    }
-
-
--- | (CaptionDescriptions) contains groups of captions settings. For each output that has captions, include one instance of (CaptionDescriptions). (CaptionDescriptions) can contain multiple groups of captions settings.
-oCaptionDescriptions :: Lens' Output [CaptionDescription]
-oCaptionDescriptions = lens _oCaptionDescriptions (\ s a -> s{_oCaptionDescriptions = a}) . _Default . _Coerce
-
--- | Use Extension (Extension) to specify the file extension for outputs in File output groups. If you do not specify a value, the service will use default extensions by container type as follows * MPEG-2 transport stream, m2ts * Quicktime, mov * MXF container, mxf * MPEG-4 container, mp4 * No Container, the service will use codec extensions (e.g. AAC, H265, H265, AC3)
-oExtension :: Lens' Output (Maybe Text)
-oExtension = lens _oExtension (\ s a -> s{_oExtension = a})
-
--- | (VideoDescription) contains a group of video encoding settings. The specific video settings depend on the video codec you choose when you specify a value for Video codec (codec). Include one instance of (VideoDescription) per output.
-oVideoDescription :: Lens' Output (Maybe VideoDescription)
-oVideoDescription = lens _oVideoDescription (\ s a -> s{_oVideoDescription = a})
-
--- | Undocumented member.
-oContainerSettings :: Lens' Output (Maybe ContainerSettings)
-oContainerSettings = lens _oContainerSettings (\ s a -> s{_oContainerSettings = a})
-
--- | Undocumented member.
-oOutputSettings :: Lens' Output (Maybe OutputSettings)
-oOutputSettings = lens _oOutputSettings (\ s a -> s{_oOutputSettings = a})
-
--- | Use Preset (Preset) to specifiy a preset for your transcoding settings. Provide the system or custom preset name. You can specify either Preset (Preset) or Container settings (ContainerSettings), but not both.
-oPreset :: Lens' Output (Maybe Text)
-oPreset = lens _oPreset (\ s a -> s{_oPreset = a})
-
--- | Use Name modifier (NameModifier) to have the service add a string to the end of each output filename. You specify the base filename as part of your destination URI. When you create multiple outputs in the same output group, Name modifier (NameModifier) is required. Name modifier also accepts format identifiers. For DASH ISO outputs, if you use the format identifiers $Number$ or $Time$ in one output, you must use them in the same way in all outputs of the output group.
-oNameModifier :: Lens' Output (Maybe Text)
-oNameModifier = lens _oNameModifier (\ s a -> s{_oNameModifier = a})
-
--- | (AudioDescriptions) contains groups of audio encoding settings organized by audio codec. Include one instance of (AudioDescriptions) per output. (AudioDescriptions) can contain multiple groups of encoding settings.
-oAudioDescriptions :: Lens' Output [AudioDescription]
-oAudioDescriptions = lens _oAudioDescriptions (\ s a -> s{_oAudioDescriptions = a}) . _Default . _Coerce
-
-instance FromJSON Output where
-        parseJSON
-          = withObject "Output"
-              (\ x ->
-                 Output' <$>
-                   (x .:? "captionDescriptions" .!= mempty) <*>
-                     (x .:? "extension")
-                     <*> (x .:? "videoDescription")
-                     <*> (x .:? "containerSettings")
-                     <*> (x .:? "outputSettings")
-                     <*> (x .:? "preset")
-                     <*> (x .:? "nameModifier")
-                     <*> (x .:? "audioDescriptions" .!= mempty))
-
-instance Hashable Output where
-
-instance NFData Output where
-
-instance ToJSON Output where
-        toJSON Output'{..}
-          = object
-              (catMaybes
-                 [("captionDescriptions" .=) <$>
-                    _oCaptionDescriptions,
-                  ("extension" .=) <$> _oExtension,
-                  ("videoDescription" .=) <$> _oVideoDescription,
-                  ("containerSettings" .=) <$> _oContainerSettings,
-                  ("outputSettings" .=) <$> _oOutputSettings,
-                  ("preset" .=) <$> _oPreset,
-                  ("nameModifier" .=) <$> _oNameModifier,
-                  ("audioDescriptions" .=) <$> _oAudioDescriptions])
-
--- | OutputChannel mapping settings.
---
--- /See:/ 'outputChannelMapping' smart constructor.
-newtype OutputChannelMapping = OutputChannelMapping'
-  { _ocmInputChannels :: Maybe [Int]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OutputChannelMapping' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ocmInputChannels' - List of input channels
-outputChannelMapping
-    :: OutputChannelMapping
-outputChannelMapping = OutputChannelMapping' {_ocmInputChannels = Nothing}
-
-
--- | List of input channels
-ocmInputChannels :: Lens' OutputChannelMapping [Int]
-ocmInputChannels = lens _ocmInputChannels (\ s a -> s{_ocmInputChannels = a}) . _Default . _Coerce
-
-instance FromJSON OutputChannelMapping where
-        parseJSON
-          = withObject "OutputChannelMapping"
-              (\ x ->
-                 OutputChannelMapping' <$>
-                   (x .:? "inputChannels" .!= mempty))
-
-instance Hashable OutputChannelMapping where
-
-instance NFData OutputChannelMapping where
-
-instance ToJSON OutputChannelMapping where
-        toJSON OutputChannelMapping'{..}
-          = object
-              (catMaybes
-                 [("inputChannels" .=) <$> _ocmInputChannels])
-
--- | Details regarding output
---
--- /See:/ 'outputDetail' smart constructor.
-data OutputDetail = OutputDetail'
-  { _odVideoDetails :: !(Maybe VideoDetail)
-  , _odDurationInMs :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OutputDetail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'odVideoDetails' - Undocumented member.
---
--- * 'odDurationInMs' - Duration in milliseconds
-outputDetail
-    :: OutputDetail
-outputDetail =
-  OutputDetail' {_odVideoDetails = Nothing, _odDurationInMs = Nothing}
-
-
--- | Undocumented member.
-odVideoDetails :: Lens' OutputDetail (Maybe VideoDetail)
-odVideoDetails = lens _odVideoDetails (\ s a -> s{_odVideoDetails = a})
-
--- | Duration in milliseconds
-odDurationInMs :: Lens' OutputDetail (Maybe Int)
-odDurationInMs = lens _odDurationInMs (\ s a -> s{_odDurationInMs = a})
-
-instance FromJSON OutputDetail where
-        parseJSON
-          = withObject "OutputDetail"
-              (\ x ->
-                 OutputDetail' <$>
-                   (x .:? "videoDetails") <*> (x .:? "durationInMs"))
-
-instance Hashable OutputDetail where
-
-instance NFData OutputDetail where
-
--- | Group of outputs
---
--- /See:/ 'outputGroup' smart constructor.
-data OutputGroup = OutputGroup'
-  { _ogOutputGroupSettings :: !(Maybe OutputGroupSettings)
-  , _ogOutputs             :: !(Maybe [Output])
-  , _ogCustomName          :: !(Maybe Text)
-  , _ogName                :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OutputGroup' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ogOutputGroupSettings' - Undocumented member.
---
--- * 'ogOutputs' - This object holds groups of encoding settings, one group of settings per output.
---
--- * 'ogCustomName' - Use Custom Group Name (CustomName) to specify a name for the output group. This value is displayed on the console and can make your job settings JSON more human-readable. It does not affect your outputs. Use up to twelve characters that are either letters, numbers, spaces, or underscores.
---
--- * 'ogName' - Name of the output group
-outputGroup
-    :: OutputGroup
-outputGroup =
-  OutputGroup'
-    { _ogOutputGroupSettings = Nothing
-    , _ogOutputs = Nothing
-    , _ogCustomName = Nothing
-    , _ogName = Nothing
-    }
-
-
--- | Undocumented member.
-ogOutputGroupSettings :: Lens' OutputGroup (Maybe OutputGroupSettings)
-ogOutputGroupSettings = lens _ogOutputGroupSettings (\ s a -> s{_ogOutputGroupSettings = a})
-
--- | This object holds groups of encoding settings, one group of settings per output.
-ogOutputs :: Lens' OutputGroup [Output]
-ogOutputs = lens _ogOutputs (\ s a -> s{_ogOutputs = a}) . _Default . _Coerce
-
--- | Use Custom Group Name (CustomName) to specify a name for the output group. This value is displayed on the console and can make your job settings JSON more human-readable. It does not affect your outputs. Use up to twelve characters that are either letters, numbers, spaces, or underscores.
-ogCustomName :: Lens' OutputGroup (Maybe Text)
-ogCustomName = lens _ogCustomName (\ s a -> s{_ogCustomName = a})
-
--- | Name of the output group
-ogName :: Lens' OutputGroup (Maybe Text)
-ogName = lens _ogName (\ s a -> s{_ogName = a})
-
-instance FromJSON OutputGroup where
-        parseJSON
-          = withObject "OutputGroup"
-              (\ x ->
-                 OutputGroup' <$>
-                   (x .:? "outputGroupSettings") <*>
-                     (x .:? "outputs" .!= mempty)
-                     <*> (x .:? "customName")
-                     <*> (x .:? "name"))
-
-instance Hashable OutputGroup where
-
-instance NFData OutputGroup where
-
-instance ToJSON OutputGroup where
-        toJSON OutputGroup'{..}
-          = object
-              (catMaybes
-                 [("outputGroupSettings" .=) <$>
-                    _ogOutputGroupSettings,
-                  ("outputs" .=) <$> _ogOutputs,
-                  ("customName" .=) <$> _ogCustomName,
-                  ("name" .=) <$> _ogName])
-
--- | Contains details about the output groups specified in the job settings.
---
--- /See:/ 'outputGroupDetail' smart constructor.
-newtype OutputGroupDetail = OutputGroupDetail'
-  { _ogdOutputDetails :: Maybe [OutputDetail]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OutputGroupDetail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ogdOutputDetails' - Details about the output
-outputGroupDetail
-    :: OutputGroupDetail
-outputGroupDetail = OutputGroupDetail' {_ogdOutputDetails = Nothing}
-
-
--- | Details about the output
-ogdOutputDetails :: Lens' OutputGroupDetail [OutputDetail]
-ogdOutputDetails = lens _ogdOutputDetails (\ s a -> s{_ogdOutputDetails = a}) . _Default . _Coerce
-
-instance FromJSON OutputGroupDetail where
-        parseJSON
-          = withObject "OutputGroupDetail"
-              (\ x ->
-                 OutputGroupDetail' <$>
-                   (x .:? "outputDetails" .!= mempty))
-
-instance Hashable OutputGroupDetail where
-
-instance NFData OutputGroupDetail where
-
--- | Output Group settings, including type
---
--- /See:/ 'outputGroupSettings' smart constructor.
-data OutputGroupSettings = OutputGroupSettings'
-  { _ogsFileGroupSettings     :: !(Maybe FileGroupSettings)
-  , _ogsMsSmoothGroupSettings :: !(Maybe MsSmoothGroupSettings)
-  , _ogsHlsGroupSettings      :: !(Maybe HlsGroupSettings)
-  , _ogsType                  :: !(Maybe OutputGroupType)
-  , _ogsDashIsoGroupSettings  :: !(Maybe DashIsoGroupSettings)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OutputGroupSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ogsFileGroupSettings' - Undocumented member.
---
--- * 'ogsMsSmoothGroupSettings' - Undocumented member.
---
--- * 'ogsHlsGroupSettings' - Undocumented member.
---
--- * 'ogsType' - Undocumented member.
---
--- * 'ogsDashIsoGroupSettings' - Undocumented member.
-outputGroupSettings
-    :: OutputGroupSettings
-outputGroupSettings =
-  OutputGroupSettings'
-    { _ogsFileGroupSettings = Nothing
-    , _ogsMsSmoothGroupSettings = Nothing
-    , _ogsHlsGroupSettings = Nothing
-    , _ogsType = Nothing
-    , _ogsDashIsoGroupSettings = Nothing
-    }
-
-
--- | Undocumented member.
-ogsFileGroupSettings :: Lens' OutputGroupSettings (Maybe FileGroupSettings)
-ogsFileGroupSettings = lens _ogsFileGroupSettings (\ s a -> s{_ogsFileGroupSettings = a})
-
--- | Undocumented member.
-ogsMsSmoothGroupSettings :: Lens' OutputGroupSettings (Maybe MsSmoothGroupSettings)
-ogsMsSmoothGroupSettings = lens _ogsMsSmoothGroupSettings (\ s a -> s{_ogsMsSmoothGroupSettings = a})
-
--- | Undocumented member.
-ogsHlsGroupSettings :: Lens' OutputGroupSettings (Maybe HlsGroupSettings)
-ogsHlsGroupSettings = lens _ogsHlsGroupSettings (\ s a -> s{_ogsHlsGroupSettings = a})
-
--- | Undocumented member.
-ogsType :: Lens' OutputGroupSettings (Maybe OutputGroupType)
-ogsType = lens _ogsType (\ s a -> s{_ogsType = a})
-
--- | Undocumented member.
-ogsDashIsoGroupSettings :: Lens' OutputGroupSettings (Maybe DashIsoGroupSettings)
-ogsDashIsoGroupSettings = lens _ogsDashIsoGroupSettings (\ s a -> s{_ogsDashIsoGroupSettings = a})
-
-instance FromJSON OutputGroupSettings where
-        parseJSON
-          = withObject "OutputGroupSettings"
-              (\ x ->
-                 OutputGroupSettings' <$>
-                   (x .:? "fileGroupSettings") <*>
-                     (x .:? "msSmoothGroupSettings")
-                     <*> (x .:? "hlsGroupSettings")
-                     <*> (x .:? "type")
-                     <*> (x .:? "dashIsoGroupSettings"))
-
-instance Hashable OutputGroupSettings where
-
-instance NFData OutputGroupSettings where
-
-instance ToJSON OutputGroupSettings where
-        toJSON OutputGroupSettings'{..}
-          = object
-              (catMaybes
-                 [("fileGroupSettings" .=) <$> _ogsFileGroupSettings,
-                  ("msSmoothGroupSettings" .=) <$>
-                    _ogsMsSmoothGroupSettings,
-                  ("hlsGroupSettings" .=) <$> _ogsHlsGroupSettings,
-                  ("type" .=) <$> _ogsType,
-                  ("dashIsoGroupSettings" .=) <$>
-                    _ogsDashIsoGroupSettings])
-
--- | Specific settings for this type of output.
---
--- /See:/ 'outputSettings' smart constructor.
-newtype OutputSettings = OutputSettings'
-  { _osHlsSettings :: Maybe HlsSettings
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OutputSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'osHlsSettings' - Undocumented member.
-outputSettings
-    :: OutputSettings
-outputSettings = OutputSettings' {_osHlsSettings = Nothing}
-
-
--- | Undocumented member.
-osHlsSettings :: Lens' OutputSettings (Maybe HlsSettings)
-osHlsSettings = lens _osHlsSettings (\ s a -> s{_osHlsSettings = a})
-
-instance FromJSON OutputSettings where
-        parseJSON
-          = withObject "OutputSettings"
-              (\ x -> OutputSettings' <$> (x .:? "hlsSettings"))
-
-instance Hashable OutputSettings where
-
-instance NFData OutputSettings where
-
-instance ToJSON OutputSettings where
-        toJSON OutputSettings'{..}
-          = object
-              (catMaybes [("hlsSettings" .=) <$> _osHlsSettings])
-
--- | A preset is a collection of preconfigured media conversion settings that you want MediaConvert to apply to the output during the conversion process.
---
--- /See:/ 'preset' smart constructor.
-data Preset = Preset'
-  { _pLastUpdated :: !(Maybe POSIX)
-  , _pSettings    :: !(Maybe PresetSettings)
-  , _pARN         :: !(Maybe Text)
-  , _pCreatedAt   :: !(Maybe POSIX)
-  , _pCategory    :: !(Maybe Text)
-  , _pName        :: !(Maybe Text)
-  , _pType        :: !(Maybe Type)
-  , _pDescription :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Preset' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pLastUpdated' - The timestamp in epoch seconds when the preset was last updated.
---
--- * 'pSettings' - Undocumented member.
---
--- * 'pARN' - An identifier for this resource that is unique within all of AWS.
---
--- * 'pCreatedAt' - The timestamp in epoch seconds for preset creation.
---
--- * 'pCategory' - An optional category you create to organize your presets.
---
--- * 'pName' - A name you create for each preset. Each name must be unique within your account.
---
--- * 'pType' - A preset can be of two types: system or custom. System or built-in preset can't be modified or deleted by the user.
---
--- * 'pDescription' - An optional description you create for each preset.
-preset
-    :: Preset
-preset =
-  Preset'
-    { _pLastUpdated = Nothing
-    , _pSettings = Nothing
-    , _pARN = Nothing
-    , _pCreatedAt = Nothing
-    , _pCategory = Nothing
-    , _pName = Nothing
-    , _pType = Nothing
-    , _pDescription = Nothing
-    }
-
-
--- | The timestamp in epoch seconds when the preset was last updated.
-pLastUpdated :: Lens' Preset (Maybe UTCTime)
-pLastUpdated = lens _pLastUpdated (\ s a -> s{_pLastUpdated = a}) . mapping _Time
-
--- | Undocumented member.
-pSettings :: Lens' Preset (Maybe PresetSettings)
-pSettings = lens _pSettings (\ s a -> s{_pSettings = a})
-
--- | An identifier for this resource that is unique within all of AWS.
-pARN :: Lens' Preset (Maybe Text)
-pARN = lens _pARN (\ s a -> s{_pARN = a})
-
--- | The timestamp in epoch seconds for preset creation.
-pCreatedAt :: Lens' Preset (Maybe UTCTime)
-pCreatedAt = lens _pCreatedAt (\ s a -> s{_pCreatedAt = a}) . mapping _Time
-
--- | An optional category you create to organize your presets.
-pCategory :: Lens' Preset (Maybe Text)
-pCategory = lens _pCategory (\ s a -> s{_pCategory = a})
-
--- | A name you create for each preset. Each name must be unique within your account.
-pName :: Lens' Preset (Maybe Text)
-pName = lens _pName (\ s a -> s{_pName = a})
-
--- | A preset can be of two types: system or custom. System or built-in preset can't be modified or deleted by the user.
-pType :: Lens' Preset (Maybe Type)
-pType = lens _pType (\ s a -> s{_pType = a})
-
--- | An optional description you create for each preset.
-pDescription :: Lens' Preset (Maybe Text)
-pDescription = lens _pDescription (\ s a -> s{_pDescription = a})
-
-instance FromJSON Preset where
-        parseJSON
-          = withObject "Preset"
-              (\ x ->
-                 Preset' <$>
-                   (x .:? "lastUpdated") <*> (x .:? "settings") <*>
-                     (x .:? "arn")
-                     <*> (x .:? "createdAt")
-                     <*> (x .:? "category")
-                     <*> (x .:? "name")
-                     <*> (x .:? "type")
-                     <*> (x .:? "description"))
-
-instance Hashable Preset where
-
-instance NFData Preset where
-
--- | Settings for preset
---
--- /See:/ 'presetSettings' smart constructor.
-data PresetSettings = PresetSettings'
-  { _psCaptionDescriptions :: !(Maybe [CaptionDescriptionPreset])
-  , _psVideoDescription    :: !(Maybe VideoDescription)
-  , _psContainerSettings   :: !(Maybe ContainerSettings)
-  , _psAudioDescriptions   :: !(Maybe [AudioDescription])
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PresetSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'psCaptionDescriptions' - Caption settings for this preset. There can be multiple caption settings in a single output.
---
--- * 'psVideoDescription' - (VideoDescription) contains a group of video encoding settings. The specific video settings depend on the video codec you choose when you specify a value for Video codec (codec). Include one instance of (VideoDescription) per output.
---
--- * 'psContainerSettings' - Undocumented member.
---
--- * 'psAudioDescriptions' - (AudioDescriptions) contains groups of audio encoding settings organized by audio codec. Include one instance of (AudioDescriptions) per output. (AudioDescriptions) can contain multiple groups of encoding settings.
-presetSettings
-    :: PresetSettings
-presetSettings =
-  PresetSettings'
-    { _psCaptionDescriptions = Nothing
-    , _psVideoDescription = Nothing
-    , _psContainerSettings = Nothing
-    , _psAudioDescriptions = Nothing
-    }
-
-
--- | Caption settings for this preset. There can be multiple caption settings in a single output.
-psCaptionDescriptions :: Lens' PresetSettings [CaptionDescriptionPreset]
-psCaptionDescriptions = lens _psCaptionDescriptions (\ s a -> s{_psCaptionDescriptions = a}) . _Default . _Coerce
-
--- | (VideoDescription) contains a group of video encoding settings. The specific video settings depend on the video codec you choose when you specify a value for Video codec (codec). Include one instance of (VideoDescription) per output.
-psVideoDescription :: Lens' PresetSettings (Maybe VideoDescription)
-psVideoDescription = lens _psVideoDescription (\ s a -> s{_psVideoDescription = a})
-
--- | Undocumented member.
-psContainerSettings :: Lens' PresetSettings (Maybe ContainerSettings)
-psContainerSettings = lens _psContainerSettings (\ s a -> s{_psContainerSettings = a})
-
--- | (AudioDescriptions) contains groups of audio encoding settings organized by audio codec. Include one instance of (AudioDescriptions) per output. (AudioDescriptions) can contain multiple groups of encoding settings.
-psAudioDescriptions :: Lens' PresetSettings [AudioDescription]
-psAudioDescriptions = lens _psAudioDescriptions (\ s a -> s{_psAudioDescriptions = a}) . _Default . _Coerce
-
-instance FromJSON PresetSettings where
-        parseJSON
-          = withObject "PresetSettings"
-              (\ x ->
-                 PresetSettings' <$>
-                   (x .:? "captionDescriptions" .!= mempty) <*>
-                     (x .:? "videoDescription")
-                     <*> (x .:? "containerSettings")
-                     <*> (x .:? "audioDescriptions" .!= mempty))
-
-instance Hashable PresetSettings where
-
-instance NFData PresetSettings where
-
-instance ToJSON PresetSettings where
-        toJSON PresetSettings'{..}
-          = object
-              (catMaybes
-                 [("captionDescriptions" .=) <$>
-                    _psCaptionDescriptions,
-                  ("videoDescription" .=) <$> _psVideoDescription,
-                  ("containerSettings" .=) <$> _psContainerSettings,
-                  ("audioDescriptions" .=) <$> _psAudioDescriptions])
-
--- | Required when you set (Codec) under (VideoDescription)>(CodecSettings) to the value PRORES.
---
--- /See:/ 'proresSettings' smart constructor.
-data ProresSettings = ProresSettings'
-  { _psSlowPal :: !(Maybe ProresSlowPal)
-  , _psParNumerator :: !(Maybe Int)
-  , _psTelecine :: !(Maybe ProresTelecine)
-  , _psInterlaceMode :: !(Maybe ProresInterlaceMode)
-  , _psParControl :: !(Maybe ProresParControl)
-  , _psCodecProfile :: !(Maybe ProresCodecProfile)
-  , _psFramerateDenominator :: !(Maybe Int)
-  , _psFramerateConversionAlgorithm :: !(Maybe ProresFramerateConversionAlgorithm)
-  , _psFramerateControl :: !(Maybe ProresFramerateControl)
-  , _psFramerateNumerator :: !(Maybe Int)
-  , _psParDenominator :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProresSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'psSlowPal' - Undocumented member.
---
--- * 'psParNumerator' - Pixel Aspect Ratio numerator.
---
--- * 'psTelecine' - Undocumented member.
---
--- * 'psInterlaceMode' - Undocumented member.
---
--- * 'psParControl' - Undocumented member.
---
--- * 'psCodecProfile' - Undocumented member.
---
--- * 'psFramerateDenominator' - Framerate denominator.
---
--- * 'psFramerateConversionAlgorithm' - Undocumented member.
---
--- * 'psFramerateControl' - Undocumented member.
---
--- * 'psFramerateNumerator' - When you use the API for transcode jobs that use framerate conversion, specify the framerate as a fraction. For example,  24000 / 1001 = 23.976 fps. Use FramerateNumerator to specify the numerator of this fraction. In this example, use 24000 for the value of FramerateNumerator.
---
--- * 'psParDenominator' - Pixel Aspect Ratio denominator.
-proresSettings
-    :: ProresSettings
-proresSettings =
-  ProresSettings'
-    { _psSlowPal = Nothing
-    , _psParNumerator = Nothing
-    , _psTelecine = Nothing
-    , _psInterlaceMode = Nothing
-    , _psParControl = Nothing
-    , _psCodecProfile = Nothing
-    , _psFramerateDenominator = Nothing
-    , _psFramerateConversionAlgorithm = Nothing
-    , _psFramerateControl = Nothing
-    , _psFramerateNumerator = Nothing
-    , _psParDenominator = Nothing
-    }
-
-
--- | Undocumented member.
-psSlowPal :: Lens' ProresSettings (Maybe ProresSlowPal)
-psSlowPal = lens _psSlowPal (\ s a -> s{_psSlowPal = a})
-
--- | Pixel Aspect Ratio numerator.
-psParNumerator :: Lens' ProresSettings (Maybe Int)
-psParNumerator = lens _psParNumerator (\ s a -> s{_psParNumerator = a})
-
--- | Undocumented member.
-psTelecine :: Lens' ProresSettings (Maybe ProresTelecine)
-psTelecine = lens _psTelecine (\ s a -> s{_psTelecine = a})
-
--- | Undocumented member.
-psInterlaceMode :: Lens' ProresSettings (Maybe ProresInterlaceMode)
-psInterlaceMode = lens _psInterlaceMode (\ s a -> s{_psInterlaceMode = a})
-
--- | Undocumented member.
-psParControl :: Lens' ProresSettings (Maybe ProresParControl)
-psParControl = lens _psParControl (\ s a -> s{_psParControl = a})
-
--- | Undocumented member.
-psCodecProfile :: Lens' ProresSettings (Maybe ProresCodecProfile)
-psCodecProfile = lens _psCodecProfile (\ s a -> s{_psCodecProfile = a})
-
--- | Framerate denominator.
-psFramerateDenominator :: Lens' ProresSettings (Maybe Int)
-psFramerateDenominator = lens _psFramerateDenominator (\ s a -> s{_psFramerateDenominator = a})
-
--- | Undocumented member.
-psFramerateConversionAlgorithm :: Lens' ProresSettings (Maybe ProresFramerateConversionAlgorithm)
-psFramerateConversionAlgorithm = lens _psFramerateConversionAlgorithm (\ s a -> s{_psFramerateConversionAlgorithm = a})
-
--- | Undocumented member.
-psFramerateControl :: Lens' ProresSettings (Maybe ProresFramerateControl)
-psFramerateControl = lens _psFramerateControl (\ s a -> s{_psFramerateControl = a})
-
--- | When you use the API for transcode jobs that use framerate conversion, specify the framerate as a fraction. For example,  24000 / 1001 = 23.976 fps. Use FramerateNumerator to specify the numerator of this fraction. In this example, use 24000 for the value of FramerateNumerator.
-psFramerateNumerator :: Lens' ProresSettings (Maybe Int)
-psFramerateNumerator = lens _psFramerateNumerator (\ s a -> s{_psFramerateNumerator = a})
-
--- | Pixel Aspect Ratio denominator.
-psParDenominator :: Lens' ProresSettings (Maybe Int)
-psParDenominator = lens _psParDenominator (\ s a -> s{_psParDenominator = a})
-
-instance FromJSON ProresSettings where
-        parseJSON
-          = withObject "ProresSettings"
-              (\ x ->
-                 ProresSettings' <$>
-                   (x .:? "slowPal") <*> (x .:? "parNumerator") <*>
-                     (x .:? "telecine")
-                     <*> (x .:? "interlaceMode")
-                     <*> (x .:? "parControl")
-                     <*> (x .:? "codecProfile")
-                     <*> (x .:? "framerateDenominator")
-                     <*> (x .:? "framerateConversionAlgorithm")
-                     <*> (x .:? "framerateControl")
-                     <*> (x .:? "framerateNumerator")
-                     <*> (x .:? "parDenominator"))
-
-instance Hashable ProresSettings where
-
-instance NFData ProresSettings where
-
-instance ToJSON ProresSettings where
-        toJSON ProresSettings'{..}
-          = object
-              (catMaybes
-                 [("slowPal" .=) <$> _psSlowPal,
-                  ("parNumerator" .=) <$> _psParNumerator,
-                  ("telecine" .=) <$> _psTelecine,
-                  ("interlaceMode" .=) <$> _psInterlaceMode,
-                  ("parControl" .=) <$> _psParControl,
-                  ("codecProfile" .=) <$> _psCodecProfile,
-                  ("framerateDenominator" .=) <$>
-                    _psFramerateDenominator,
-                  ("framerateConversionAlgorithm" .=) <$>
-                    _psFramerateConversionAlgorithm,
-                  ("framerateControl" .=) <$> _psFramerateControl,
-                  ("framerateNumerator" .=) <$> _psFramerateNumerator,
-                  ("parDenominator" .=) <$> _psParDenominator])
-
--- | MediaConvert jobs are submitted to a queue. Unless specified otherwise jobs are submitted to a built-in default queue. User can create additional queues to separate the jobs of different categories or priority.
---
--- /See:/ 'queue' smart constructor.
-data Queue = Queue'
-  { _qStatus      :: !(Maybe QueueStatus)
-  , _qLastUpdated :: !(Maybe POSIX)
-  , _qARN         :: !(Maybe Text)
-  , _qCreatedAt   :: !(Maybe POSIX)
-  , _qName        :: !(Maybe Text)
-  , _qType        :: !(Maybe Type)
-  , _qDescription :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Queue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'qStatus' - Undocumented member.
---
--- * 'qLastUpdated' - The timestamp in epoch seconds when the queue was last updated.
---
--- * 'qARN' - An identifier for this resource that is unique within all of AWS.
---
--- * 'qCreatedAt' - The timestamp in epoch seconds for queue creation.
---
--- * 'qName' - A name you create for each queue. Each name must be unique within your account.
---
--- * 'qType' - A queue can be of two types: system or custom. System or built-in queues can't be modified or deleted by the user.
---
--- * 'qDescription' - An optional description you create for each queue.
-queue
-    :: Queue
-queue =
-  Queue'
-    { _qStatus = Nothing
-    , _qLastUpdated = Nothing
-    , _qARN = Nothing
-    , _qCreatedAt = Nothing
-    , _qName = Nothing
-    , _qType = Nothing
-    , _qDescription = Nothing
-    }
-
-
--- | Undocumented member.
-qStatus :: Lens' Queue (Maybe QueueStatus)
-qStatus = lens _qStatus (\ s a -> s{_qStatus = a})
-
--- | The timestamp in epoch seconds when the queue was last updated.
-qLastUpdated :: Lens' Queue (Maybe UTCTime)
-qLastUpdated = lens _qLastUpdated (\ s a -> s{_qLastUpdated = a}) . mapping _Time
-
--- | An identifier for this resource that is unique within all of AWS.
-qARN :: Lens' Queue (Maybe Text)
-qARN = lens _qARN (\ s a -> s{_qARN = a})
-
--- | The timestamp in epoch seconds for queue creation.
-qCreatedAt :: Lens' Queue (Maybe UTCTime)
-qCreatedAt = lens _qCreatedAt (\ s a -> s{_qCreatedAt = a}) . mapping _Time
-
--- | A name you create for each queue. Each name must be unique within your account.
-qName :: Lens' Queue (Maybe Text)
-qName = lens _qName (\ s a -> s{_qName = a})
-
--- | A queue can be of two types: system or custom. System or built-in queues can't be modified or deleted by the user.
-qType :: Lens' Queue (Maybe Type)
-qType = lens _qType (\ s a -> s{_qType = a})
-
--- | An optional description you create for each queue.
-qDescription :: Lens' Queue (Maybe Text)
-qDescription = lens _qDescription (\ s a -> s{_qDescription = a})
-
-instance FromJSON Queue where
-        parseJSON
-          = withObject "Queue"
-              (\ x ->
-                 Queue' <$>
-                   (x .:? "status") <*> (x .:? "lastUpdated") <*>
-                     (x .:? "arn")
-                     <*> (x .:? "createdAt")
-                     <*> (x .:? "name")
-                     <*> (x .:? "type")
-                     <*> (x .:? "description"))
-
-instance Hashable Queue where
-
-instance NFData Queue where
-
--- | Use Rectangle to identify a specific area of the video frame.
---
--- /See:/ 'rectangle' smart constructor.
-data Rectangle = Rectangle'
-  { _rHeight :: !(Maybe Int)
-  , _rWidth  :: !(Maybe Int)
-  , _rX      :: !(Maybe Int)
-  , _rY      :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Rectangle' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rHeight' - Height of rectangle in pixels.
---
--- * 'rWidth' - Width of rectangle in pixels.
---
--- * 'rX' - The distance, in pixels, between the rectangle and the left edge of the video frame.
---
--- * 'rY' - The distance, in pixels, between the rectangle and the top edge of the video frame.
-rectangle
-    :: Rectangle
-rectangle =
-  Rectangle'
-    {_rHeight = Nothing, _rWidth = Nothing, _rX = Nothing, _rY = Nothing}
-
-
--- | Height of rectangle in pixels.
-rHeight :: Lens' Rectangle (Maybe Int)
-rHeight = lens _rHeight (\ s a -> s{_rHeight = a})
-
--- | Width of rectangle in pixels.
-rWidth :: Lens' Rectangle (Maybe Int)
-rWidth = lens _rWidth (\ s a -> s{_rWidth = a})
-
--- | The distance, in pixels, between the rectangle and the left edge of the video frame.
-rX :: Lens' Rectangle (Maybe Int)
-rX = lens _rX (\ s a -> s{_rX = a})
-
--- | The distance, in pixels, between the rectangle and the top edge of the video frame.
-rY :: Lens' Rectangle (Maybe Int)
-rY = lens _rY (\ s a -> s{_rY = a})
-
-instance FromJSON Rectangle where
-        parseJSON
-          = withObject "Rectangle"
-              (\ x ->
-                 Rectangle' <$>
-                   (x .:? "height") <*> (x .:? "width") <*> (x .:? "x")
-                     <*> (x .:? "y"))
-
-instance Hashable Rectangle where
-
-instance NFData Rectangle where
-
-instance ToJSON Rectangle where
-        toJSON Rectangle'{..}
-          = object
-              (catMaybes
-                 [("height" .=) <$> _rHeight,
-                  ("width" .=) <$> _rWidth, ("x" .=) <$> _rX,
-                  ("y" .=) <$> _rY])
-
--- | Use Manual audio remixing (RemixSettings) to adjust audio levels for each output channel. With audio remixing, you can output more or fewer audio channels than your input audio source provides.
---
--- /See:/ 'remixSettings' smart constructor.
-data RemixSettings = RemixSettings'
-  { _rsChannelMapping :: !(Maybe ChannelMapping)
-  , _rsChannelsIn     :: !(Maybe Int)
-  , _rsChannelsOut    :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RemixSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rsChannelMapping' - Undocumented member.
---
--- * 'rsChannelsIn' - Specify the number of audio channels from your input that you want to use in your output. With remixing, you might combine or split the data in these channels, so the number of channels in your final output might be different.
---
--- * 'rsChannelsOut' - Specify the number of channels in this output after remixing. Valid values: 1, 2, 4, 6, 8
-remixSettings
-    :: RemixSettings
-remixSettings =
-  RemixSettings'
-    { _rsChannelMapping = Nothing
-    , _rsChannelsIn = Nothing
-    , _rsChannelsOut = Nothing
-    }
-
-
--- | Undocumented member.
-rsChannelMapping :: Lens' RemixSettings (Maybe ChannelMapping)
-rsChannelMapping = lens _rsChannelMapping (\ s a -> s{_rsChannelMapping = a})
-
--- | Specify the number of audio channels from your input that you want to use in your output. With remixing, you might combine or split the data in these channels, so the number of channels in your final output might be different.
-rsChannelsIn :: Lens' RemixSettings (Maybe Int)
-rsChannelsIn = lens _rsChannelsIn (\ s a -> s{_rsChannelsIn = a})
-
--- | Specify the number of channels in this output after remixing. Valid values: 1, 2, 4, 6, 8
-rsChannelsOut :: Lens' RemixSettings (Maybe Int)
-rsChannelsOut = lens _rsChannelsOut (\ s a -> s{_rsChannelsOut = a})
-
-instance FromJSON RemixSettings where
-        parseJSON
-          = withObject "RemixSettings"
-              (\ x ->
-                 RemixSettings' <$>
-                   (x .:? "channelMapping") <*> (x .:? "channelsIn") <*>
-                     (x .:? "channelsOut"))
-
-instance Hashable RemixSettings where
-
-instance NFData RemixSettings where
-
-instance ToJSON RemixSettings where
-        toJSON RemixSettings'{..}
-          = object
-              (catMaybes
-                 [("channelMapping" .=) <$> _rsChannelMapping,
-                  ("channelsIn" .=) <$> _rsChannelsIn,
-                  ("channelsOut" .=) <$> _rsChannelsOut])
-
--- | Settings for SCC caption output.
---
--- /See:/ 'sccDestinationSettings' smart constructor.
-newtype SccDestinationSettings = SccDestinationSettings'
-  { _sdsFramerate :: Maybe SccDestinationFramerate
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SccDestinationSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdsFramerate' - Undocumented member.
-sccDestinationSettings
-    :: SccDestinationSettings
-sccDestinationSettings = SccDestinationSettings' {_sdsFramerate = Nothing}
-
-
--- | Undocumented member.
-sdsFramerate :: Lens' SccDestinationSettings (Maybe SccDestinationFramerate)
-sdsFramerate = lens _sdsFramerate (\ s a -> s{_sdsFramerate = a})
-
-instance FromJSON SccDestinationSettings where
-        parseJSON
-          = withObject "SccDestinationSettings"
-              (\ x ->
-                 SccDestinationSettings' <$> (x .:? "framerate"))
-
-instance Hashable SccDestinationSettings where
-
-instance NFData SccDestinationSettings where
-
-instance ToJSON SccDestinationSettings where
-        toJSON SccDestinationSettings'{..}
-          = object
-              (catMaybes [("framerate" .=) <$> _sdsFramerate])
-
--- | Settings for use with a SPEKE key provider
---
--- /See:/ 'spekeKeyProvider' smart constructor.
-data SpekeKeyProvider = SpekeKeyProvider'
-  { _skpResourceId :: !(Maybe Text)
-  , _skpURL        :: !(Maybe Text)
-  , _skpSystemIds  :: !(Maybe [Text])
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpekeKeyProvider' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'skpResourceId' - The SPEKE-compliant server uses Resource ID (ResourceId) to identify content.
---
--- * 'skpURL' - Use URL (Url) to specify the SPEKE-compliant server that will provide keys for content.
---
--- * 'skpSystemIds' - Relates to SPEKE implementation. DRM system identifiers. DASH output groups support a max of two system ids. Other group types support one system id.
-spekeKeyProvider
-    :: SpekeKeyProvider
-spekeKeyProvider =
-  SpekeKeyProvider'
-    {_skpResourceId = Nothing, _skpURL = Nothing, _skpSystemIds = Nothing}
-
-
--- | The SPEKE-compliant server uses Resource ID (ResourceId) to identify content.
-skpResourceId :: Lens' SpekeKeyProvider (Maybe Text)
-skpResourceId = lens _skpResourceId (\ s a -> s{_skpResourceId = a})
-
--- | Use URL (Url) to specify the SPEKE-compliant server that will provide keys for content.
-skpURL :: Lens' SpekeKeyProvider (Maybe Text)
-skpURL = lens _skpURL (\ s a -> s{_skpURL = a})
-
--- | Relates to SPEKE implementation. DRM system identifiers. DASH output groups support a max of two system ids. Other group types support one system id.
-skpSystemIds :: Lens' SpekeKeyProvider [Text]
-skpSystemIds = lens _skpSystemIds (\ s a -> s{_skpSystemIds = a}) . _Default . _Coerce
-
-instance FromJSON SpekeKeyProvider where
-        parseJSON
-          = withObject "SpekeKeyProvider"
-              (\ x ->
-                 SpekeKeyProvider' <$>
-                   (x .:? "resourceId") <*> (x .:? "url") <*>
-                     (x .:? "systemIds" .!= mempty))
-
-instance Hashable SpekeKeyProvider where
-
-instance NFData SpekeKeyProvider where
-
-instance ToJSON SpekeKeyProvider where
-        toJSON SpekeKeyProvider'{..}
-          = object
-              (catMaybes
-                 [("resourceId" .=) <$> _skpResourceId,
-                  ("url" .=) <$> _skpURL,
-                  ("systemIds" .=) <$> _skpSystemIds])
-
--- | Settings for use with a SPEKE key provider.
---
--- /See:/ 'staticKeyProvider' smart constructor.
-data StaticKeyProvider = StaticKeyProvider'
-  { _sStaticKeyValue    :: !(Maybe Text)
-  , _sURL               :: !(Maybe Text)
-  , _sKeyFormat         :: !(Maybe Text)
-  , _sKeyFormatVersions :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StaticKeyProvider' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sStaticKeyValue' - Relates to DRM implementation. Use a 32-character hexidecimal string to specify Key Value (StaticKeyValue).
---
--- * 'sURL' - Relates to DRM implementation. The location of the license server used for protecting content.
---
--- * 'sKeyFormat' - Relates to DRM implementation. Sets the value of the KEYFORMAT attribute. Must be 'identity' or a reverse DNS string. May be omitted to indicate an implicit value of 'identity'.
---
--- * 'sKeyFormatVersions' - Relates to DRM implementation. Either a single positive integer version value or a slash delimited list of version values (1/2/3).
-staticKeyProvider
-    :: StaticKeyProvider
-staticKeyProvider =
-  StaticKeyProvider'
-    { _sStaticKeyValue = Nothing
-    , _sURL = Nothing
-    , _sKeyFormat = Nothing
-    , _sKeyFormatVersions = Nothing
-    }
-
-
--- | Relates to DRM implementation. Use a 32-character hexidecimal string to specify Key Value (StaticKeyValue).
-sStaticKeyValue :: Lens' StaticKeyProvider (Maybe Text)
-sStaticKeyValue = lens _sStaticKeyValue (\ s a -> s{_sStaticKeyValue = a})
-
--- | Relates to DRM implementation. The location of the license server used for protecting content.
-sURL :: Lens' StaticKeyProvider (Maybe Text)
-sURL = lens _sURL (\ s a -> s{_sURL = a})
-
--- | Relates to DRM implementation. Sets the value of the KEYFORMAT attribute. Must be 'identity' or a reverse DNS string. May be omitted to indicate an implicit value of 'identity'.
-sKeyFormat :: Lens' StaticKeyProvider (Maybe Text)
-sKeyFormat = lens _sKeyFormat (\ s a -> s{_sKeyFormat = a})
-
--- | Relates to DRM implementation. Either a single positive integer version value or a slash delimited list of version values (1/2/3).
-sKeyFormatVersions :: Lens' StaticKeyProvider (Maybe Text)
-sKeyFormatVersions = lens _sKeyFormatVersions (\ s a -> s{_sKeyFormatVersions = a})
-
-instance FromJSON StaticKeyProvider where
-        parseJSON
-          = withObject "StaticKeyProvider"
-              (\ x ->
-                 StaticKeyProvider' <$>
-                   (x .:? "staticKeyValue") <*> (x .:? "url") <*>
-                     (x .:? "keyFormat")
-                     <*> (x .:? "keyFormatVersions"))
-
-instance Hashable StaticKeyProvider where
-
-instance NFData StaticKeyProvider where
-
-instance ToJSON StaticKeyProvider where
-        toJSON StaticKeyProvider'{..}
-          = object
-              (catMaybes
-                 [("staticKeyValue" .=) <$> _sStaticKeyValue,
-                  ("url" .=) <$> _sURL,
-                  ("keyFormat" .=) <$> _sKeyFormat,
-                  ("keyFormatVersions" .=) <$> _sKeyFormatVersions])
-
--- | Settings for Teletext caption output
---
--- /See:/ 'teletextDestinationSettings' smart constructor.
-newtype TeletextDestinationSettings = TeletextDestinationSettings'
-  { _tdsPageNumber :: Maybe Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TeletextDestinationSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tdsPageNumber' - Set pageNumber to the Teletext page number for the destination captions for this output. This value must be a three-digit hexadecimal string; strings ending in -FF are invalid. If you are passing through the entire set of Teletext data, do not use this field.
-teletextDestinationSettings
-    :: TeletextDestinationSettings
-teletextDestinationSettings =
-  TeletextDestinationSettings' {_tdsPageNumber = Nothing}
-
-
--- | Set pageNumber to the Teletext page number for the destination captions for this output. This value must be a three-digit hexadecimal string; strings ending in -FF are invalid. If you are passing through the entire set of Teletext data, do not use this field.
-tdsPageNumber :: Lens' TeletextDestinationSettings (Maybe Text)
-tdsPageNumber = lens _tdsPageNumber (\ s a -> s{_tdsPageNumber = a})
-
-instance FromJSON TeletextDestinationSettings where
-        parseJSON
-          = withObject "TeletextDestinationSettings"
-              (\ x ->
-                 TeletextDestinationSettings' <$>
-                   (x .:? "pageNumber"))
-
-instance Hashable TeletextDestinationSettings where
-
-instance NFData TeletextDestinationSettings where
-
-instance ToJSON TeletextDestinationSettings where
-        toJSON TeletextDestinationSettings'{..}
-          = object
-              (catMaybes [("pageNumber" .=) <$> _tdsPageNumber])
-
--- | Settings specific to Teletext caption sources, including Page number.
---
--- /See:/ 'teletextSourceSettings' smart constructor.
-newtype TeletextSourceSettings = TeletextSourceSettings'
-  { _tssPageNumber :: Maybe Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TeletextSourceSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tssPageNumber' - Use Page Number (PageNumber) to specify the three-digit hexadecimal page number that will be used for Teletext captions. Do not use this setting if you are passing through teletext from the input source to output.
-teletextSourceSettings
-    :: TeletextSourceSettings
-teletextSourceSettings = TeletextSourceSettings' {_tssPageNumber = Nothing}
-
-
--- | Use Page Number (PageNumber) to specify the three-digit hexadecimal page number that will be used for Teletext captions. Do not use this setting if you are passing through teletext from the input source to output.
-tssPageNumber :: Lens' TeletextSourceSettings (Maybe Text)
-tssPageNumber = lens _tssPageNumber (\ s a -> s{_tssPageNumber = a})
-
-instance FromJSON TeletextSourceSettings where
-        parseJSON
-          = withObject "TeletextSourceSettings"
-              (\ x ->
-                 TeletextSourceSettings' <$> (x .:? "pageNumber"))
-
-instance Hashable TeletextSourceSettings where
-
-instance NFData TeletextSourceSettings where
-
-instance ToJSON TeletextSourceSettings where
-        toJSON TeletextSourceSettings'{..}
-          = object
-              (catMaybes [("pageNumber" .=) <$> _tssPageNumber])
-
--- | Timecode burn-in (TimecodeBurnIn)--Burns the output timecode and specified prefix into the output.
---
--- /See:/ 'timecodeBurnin' smart constructor.
-data TimecodeBurnin = TimecodeBurnin'
-  { _tbPrefix   :: !(Maybe Text)
-  , _tbFontSize :: !(Maybe Int)
-  , _tbPosition :: !(Maybe TimecodeBurninPosition)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TimecodeBurnin' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tbPrefix' - Use Prefix (Prefix) to place ASCII characters before any burned-in timecode. For example, a prefix of "EZ-" will result in the timecode "EZ-00:00:00:00". Provide either the characters themselves or the ASCII code equivalents. The supported range of characters is 0x20 through 0x7e. This includes letters, numbers, and all special characters represented on a standard English keyboard.
---
--- * 'tbFontSize' - Use Font Size (FontSize) to set the font size of any burned-in timecode. Valid values are 10, 16, 32, 48.
---
--- * 'tbPosition' - Undocumented member.
-timecodeBurnin
-    :: TimecodeBurnin
-timecodeBurnin =
-  TimecodeBurnin'
-    {_tbPrefix = Nothing, _tbFontSize = Nothing, _tbPosition = Nothing}
-
-
--- | Use Prefix (Prefix) to place ASCII characters before any burned-in timecode. For example, a prefix of "EZ-" will result in the timecode "EZ-00:00:00:00". Provide either the characters themselves or the ASCII code equivalents. The supported range of characters is 0x20 through 0x7e. This includes letters, numbers, and all special characters represented on a standard English keyboard.
-tbPrefix :: Lens' TimecodeBurnin (Maybe Text)
-tbPrefix = lens _tbPrefix (\ s a -> s{_tbPrefix = a})
-
--- | Use Font Size (FontSize) to set the font size of any burned-in timecode. Valid values are 10, 16, 32, 48.
-tbFontSize :: Lens' TimecodeBurnin (Maybe Int)
-tbFontSize = lens _tbFontSize (\ s a -> s{_tbFontSize = a})
-
--- | Undocumented member.
-tbPosition :: Lens' TimecodeBurnin (Maybe TimecodeBurninPosition)
-tbPosition = lens _tbPosition (\ s a -> s{_tbPosition = a})
-
-instance FromJSON TimecodeBurnin where
-        parseJSON
-          = withObject "TimecodeBurnin"
-              (\ x ->
-                 TimecodeBurnin' <$>
-                   (x .:? "prefix") <*> (x .:? "fontSize") <*>
-                     (x .:? "position"))
-
-instance Hashable TimecodeBurnin where
-
-instance NFData TimecodeBurnin where
-
-instance ToJSON TimecodeBurnin where
-        toJSON TimecodeBurnin'{..}
-          = object
-              (catMaybes
-                 [("prefix" .=) <$> _tbPrefix,
-                  ("fontSize" .=) <$> _tbFontSize,
-                  ("position" .=) <$> _tbPosition])
-
--- | Contains settings used to acquire and adjust timecode information from inputs.
---
--- /See:/ 'timecodeConfig' smart constructor.
-data TimecodeConfig = TimecodeConfig'
-  { _tcStart           :: !(Maybe Text)
-  , _tcTimestampOffset :: !(Maybe Text)
-  , _tcAnchor          :: !(Maybe Text)
-  , _tcSource          :: !(Maybe TimecodeSource)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TimecodeConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tcStart' - Only use when you set Timecode Source (TimecodeSource) to Specified Start (SPECIFIEDSTART). Use Start timecode (Start) to specify the timecode for the initial frame. Use 24-hour format with frame number, (HH:MM:SS:FF) or (HH:MM:SS;FF).
---
--- * 'tcTimestampOffset' - Only applies to outputs that support program-date-time stamp. Use Time stamp offset (TimestampOffset) to overwrite the timecode date without affecting the time and frame number. Provide the new date as a string in the format "yyyy-mm-dd".  To use Time stamp offset, you must also enable Insert program-date-time (InsertProgramDateTime) in the output settings.
---
--- * 'tcAnchor' - If you use an editing platform that relies on an anchor timecode, use Anchor Timecode (Anchor) to specify a timecode that will match the input video frame to the output video frame. Use 24-hour format with frame number, (HH:MM:SS:FF) or (HH:MM:SS;FF). This setting ignores framerate conversion. System behavior for Anchor Timecode varies depending on your setting for Timecode source (TimecodeSource). * If Timecode source (TimecodeSource) is set to Specified Start (specifiedstart), the first input frame is the specified value in Start Timecode (Start). Anchor Timecode (Anchor) and Start Timecode (Start) are used calculate output timecode. * If Timecode source (TimecodeSource) is set to Start at 0 (zerobased)  the  first frame is 00:00:00:00. * If Timecode source (TimecodeSource) is set to Embedded (embedded), the  first frame is the timecode value on the first input frame of the input.
---
--- * 'tcSource' - Undocumented member.
-timecodeConfig
-    :: TimecodeConfig
-timecodeConfig =
-  TimecodeConfig'
-    { _tcStart = Nothing
-    , _tcTimestampOffset = Nothing
-    , _tcAnchor = Nothing
-    , _tcSource = Nothing
-    }
-
-
--- | Only use when you set Timecode Source (TimecodeSource) to Specified Start (SPECIFIEDSTART). Use Start timecode (Start) to specify the timecode for the initial frame. Use 24-hour format with frame number, (HH:MM:SS:FF) or (HH:MM:SS;FF).
-tcStart :: Lens' TimecodeConfig (Maybe Text)
-tcStart = lens _tcStart (\ s a -> s{_tcStart = a})
-
--- | Only applies to outputs that support program-date-time stamp. Use Time stamp offset (TimestampOffset) to overwrite the timecode date without affecting the time and frame number. Provide the new date as a string in the format "yyyy-mm-dd".  To use Time stamp offset, you must also enable Insert program-date-time (InsertProgramDateTime) in the output settings.
-tcTimestampOffset :: Lens' TimecodeConfig (Maybe Text)
-tcTimestampOffset = lens _tcTimestampOffset (\ s a -> s{_tcTimestampOffset = a})
-
--- | If you use an editing platform that relies on an anchor timecode, use Anchor Timecode (Anchor) to specify a timecode that will match the input video frame to the output video frame. Use 24-hour format with frame number, (HH:MM:SS:FF) or (HH:MM:SS;FF). This setting ignores framerate conversion. System behavior for Anchor Timecode varies depending on your setting for Timecode source (TimecodeSource). * If Timecode source (TimecodeSource) is set to Specified Start (specifiedstart), the first input frame is the specified value in Start Timecode (Start). Anchor Timecode (Anchor) and Start Timecode (Start) are used calculate output timecode. * If Timecode source (TimecodeSource) is set to Start at 0 (zerobased)  the  first frame is 00:00:00:00. * If Timecode source (TimecodeSource) is set to Embedded (embedded), the  first frame is the timecode value on the first input frame of the input.
-tcAnchor :: Lens' TimecodeConfig (Maybe Text)
-tcAnchor = lens _tcAnchor (\ s a -> s{_tcAnchor = a})
-
--- | Undocumented member.
-tcSource :: Lens' TimecodeConfig (Maybe TimecodeSource)
-tcSource = lens _tcSource (\ s a -> s{_tcSource = a})
-
-instance FromJSON TimecodeConfig where
-        parseJSON
-          = withObject "TimecodeConfig"
-              (\ x ->
-                 TimecodeConfig' <$>
-                   (x .:? "start") <*> (x .:? "timestampOffset") <*>
-                     (x .:? "anchor")
-                     <*> (x .:? "source"))
-
-instance Hashable TimecodeConfig where
-
-instance NFData TimecodeConfig where
-
-instance ToJSON TimecodeConfig where
-        toJSON TimecodeConfig'{..}
-          = object
-              (catMaybes
-                 [("start" .=) <$> _tcStart,
-                  ("timestampOffset" .=) <$> _tcTimestampOffset,
-                  ("anchor" .=) <$> _tcAnchor,
-                  ("source" .=) <$> _tcSource])
-
--- | Enable Timed metadata insertion (TimedMetadataInsertion) to include ID3 tags in your job. To include timed metadata, you must enable it here, enable it in each output container, and specify tags and timecodes in ID3 insertion (Id3Insertion) objects.
---
--- /See:/ 'timedMetadataInsertion' smart constructor.
-newtype TimedMetadataInsertion = TimedMetadataInsertion'
-  { _tmiId3Insertions :: Maybe [Id3Insertion]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TimedMetadataInsertion' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tmiId3Insertions' - Id3Insertions contains the array of Id3Insertion instances.
-timedMetadataInsertion
-    :: TimedMetadataInsertion
-timedMetadataInsertion = TimedMetadataInsertion' {_tmiId3Insertions = Nothing}
-
-
--- | Id3Insertions contains the array of Id3Insertion instances.
-tmiId3Insertions :: Lens' TimedMetadataInsertion [Id3Insertion]
-tmiId3Insertions = lens _tmiId3Insertions (\ s a -> s{_tmiId3Insertions = a}) . _Default . _Coerce
-
-instance FromJSON TimedMetadataInsertion where
-        parseJSON
-          = withObject "TimedMetadataInsertion"
-              (\ x ->
-                 TimedMetadataInsertion' <$>
-                   (x .:? "id3Insertions" .!= mempty))
-
-instance Hashable TimedMetadataInsertion where
-
-instance NFData TimedMetadataInsertion where
-
-instance ToJSON TimedMetadataInsertion where
-        toJSON TimedMetadataInsertion'{..}
-          = object
-              (catMaybes
-                 [("id3Insertions" .=) <$> _tmiId3Insertions])
-
--- | Information about when jobs are submitted, started, and finished is specified in Unix epoch format in seconds.
---
--- /See:/ 'timing' smart constructor.
-data Timing = Timing'
-  { _tStartTime  :: !(Maybe POSIX)
-  , _tFinishTime :: !(Maybe POSIX)
-  , _tSubmitTime :: !(Maybe POSIX)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Timing' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tStartTime' - The time, in Unix epoch format, that transcoding for the job began.
---
--- * 'tFinishTime' - The time, in Unix epoch format, that the transcoding job finished
---
--- * 'tSubmitTime' - The time, in Unix epoch format, that you submitted the job.
-timing
-    :: Timing
-timing =
-  Timing'
-    {_tStartTime = Nothing, _tFinishTime = Nothing, _tSubmitTime = Nothing}
-
-
--- | The time, in Unix epoch format, that transcoding for the job began.
-tStartTime :: Lens' Timing (Maybe UTCTime)
-tStartTime = lens _tStartTime (\ s a -> s{_tStartTime = a}) . mapping _Time
-
--- | The time, in Unix epoch format, that the transcoding job finished
-tFinishTime :: Lens' Timing (Maybe UTCTime)
-tFinishTime = lens _tFinishTime (\ s a -> s{_tFinishTime = a}) . mapping _Time
-
--- | The time, in Unix epoch format, that you submitted the job.
-tSubmitTime :: Lens' Timing (Maybe UTCTime)
-tSubmitTime = lens _tSubmitTime (\ s a -> s{_tSubmitTime = a}) . mapping _Time
-
-instance FromJSON Timing where
-        parseJSON
-          = withObject "Timing"
-              (\ x ->
-                 Timing' <$>
-                   (x .:? "startTime") <*> (x .:? "finishTime") <*>
-                     (x .:? "submitTime"))
-
-instance Hashable Timing where
-
-instance NFData Timing where
-
--- | Settings specific to TTML caption outputs, including Pass style information (TtmlStylePassthrough).
---
--- /See:/ 'ttmlDestinationSettings' smart constructor.
-newtype TtmlDestinationSettings = TtmlDestinationSettings'
-  { _tdsStylePassthrough :: Maybe TtmlStylePassthrough
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TtmlDestinationSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tdsStylePassthrough' - Undocumented member.
-ttmlDestinationSettings
-    :: TtmlDestinationSettings
-ttmlDestinationSettings =
-  TtmlDestinationSettings' {_tdsStylePassthrough = Nothing}
-
-
--- | Undocumented member.
-tdsStylePassthrough :: Lens' TtmlDestinationSettings (Maybe TtmlStylePassthrough)
-tdsStylePassthrough = lens _tdsStylePassthrough (\ s a -> s{_tdsStylePassthrough = a})
-
-instance FromJSON TtmlDestinationSettings where
-        parseJSON
-          = withObject "TtmlDestinationSettings"
-              (\ x ->
-                 TtmlDestinationSettings' <$>
-                   (x .:? "stylePassthrough"))
-
-instance Hashable TtmlDestinationSettings where
-
-instance NFData TtmlDestinationSettings where
-
-instance ToJSON TtmlDestinationSettings where
-        toJSON TtmlDestinationSettings'{..}
-          = object
-              (catMaybes
-                 [("stylePassthrough" .=) <$> _tdsStylePassthrough])
-
--- | Video codec settings, (CodecSettings) under (VideoDescription), contains the group of settings related to video encoding. The settings in this group vary depending on the value you choose for Video codec (Codec). For each codec enum you choose, define the corresponding settings object. The following lists the codec enum, settings object pairs. * H_264, H264Settings * H_265, H265Settings * MPEG2, Mpeg2Settings * PRORES, ProresSettings * FRAME_CAPTURE, FrameCaptureSettings
---
--- /See:/ 'videoCodecSettings' smart constructor.
-data VideoCodecSettings = VideoCodecSettings'
-  { _vcsFrameCaptureSettings :: !(Maybe FrameCaptureSettings)
-  , _vcsCodec                :: !(Maybe VideoCodec)
-  , _vcsH265Settings         :: !(Maybe H265Settings)
-  , _vcsProresSettings       :: !(Maybe ProresSettings)
-  , _vcsH264Settings         :: !(Maybe H264Settings)
-  , _vcsMpeg2Settings        :: !(Maybe Mpeg2Settings)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VideoCodecSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vcsFrameCaptureSettings' - Undocumented member.
---
--- * 'vcsCodec' - Undocumented member.
---
--- * 'vcsH265Settings' - Undocumented member.
---
--- * 'vcsProresSettings' - Undocumented member.
---
--- * 'vcsH264Settings' - Undocumented member.
---
--- * 'vcsMpeg2Settings' - Undocumented member.
-videoCodecSettings
-    :: VideoCodecSettings
-videoCodecSettings =
-  VideoCodecSettings'
-    { _vcsFrameCaptureSettings = Nothing
-    , _vcsCodec = Nothing
-    , _vcsH265Settings = Nothing
-    , _vcsProresSettings = Nothing
-    , _vcsH264Settings = Nothing
-    , _vcsMpeg2Settings = Nothing
-    }
-
-
--- | Undocumented member.
-vcsFrameCaptureSettings :: Lens' VideoCodecSettings (Maybe FrameCaptureSettings)
-vcsFrameCaptureSettings = lens _vcsFrameCaptureSettings (\ s a -> s{_vcsFrameCaptureSettings = a})
-
--- | Undocumented member.
-vcsCodec :: Lens' VideoCodecSettings (Maybe VideoCodec)
-vcsCodec = lens _vcsCodec (\ s a -> s{_vcsCodec = a})
-
--- | Undocumented member.
-vcsH265Settings :: Lens' VideoCodecSettings (Maybe H265Settings)
-vcsH265Settings = lens _vcsH265Settings (\ s a -> s{_vcsH265Settings = a})
-
--- | Undocumented member.
-vcsProresSettings :: Lens' VideoCodecSettings (Maybe ProresSettings)
-vcsProresSettings = lens _vcsProresSettings (\ s a -> s{_vcsProresSettings = a})
-
--- | Undocumented member.
-vcsH264Settings :: Lens' VideoCodecSettings (Maybe H264Settings)
-vcsH264Settings = lens _vcsH264Settings (\ s a -> s{_vcsH264Settings = a})
-
--- | Undocumented member.
-vcsMpeg2Settings :: Lens' VideoCodecSettings (Maybe Mpeg2Settings)
-vcsMpeg2Settings = lens _vcsMpeg2Settings (\ s a -> s{_vcsMpeg2Settings = a})
-
-instance FromJSON VideoCodecSettings where
-        parseJSON
-          = withObject "VideoCodecSettings"
-              (\ x ->
-                 VideoCodecSettings' <$>
-                   (x .:? "frameCaptureSettings") <*> (x .:? "codec")
-                     <*> (x .:? "h265Settings")
-                     <*> (x .:? "proresSettings")
-                     <*> (x .:? "h264Settings")
-                     <*> (x .:? "mpeg2Settings"))
-
-instance Hashable VideoCodecSettings where
-
-instance NFData VideoCodecSettings where
-
-instance ToJSON VideoCodecSettings where
-        toJSON VideoCodecSettings'{..}
-          = object
-              (catMaybes
-                 [("frameCaptureSettings" .=) <$>
-                    _vcsFrameCaptureSettings,
-                  ("codec" .=) <$> _vcsCodec,
-                  ("h265Settings" .=) <$> _vcsH265Settings,
-                  ("proresSettings" .=) <$> _vcsProresSettings,
-                  ("h264Settings" .=) <$> _vcsH264Settings,
-                  ("mpeg2Settings" .=) <$> _vcsMpeg2Settings])
-
--- | Settings for video outputs
---
--- /See:/ 'videoDescription' smart constructor.
-data VideoDescription = VideoDescription'
-  { _vdTimecodeInsertion  :: !(Maybe VideoTimecodeInsertion)
-  , _vdHeight             :: !(Maybe Int)
-  , _vdAfdSignaling       :: !(Maybe AfdSignaling)
-  , _vdSharpness          :: !(Maybe Int)
-  , _vdCrop               :: !(Maybe Rectangle)
-  , _vdWidth              :: !(Maybe Int)
-  , _vdScalingBehavior    :: !(Maybe ScalingBehavior)
-  , _vdRespondToAfd       :: !(Maybe RespondToAfd)
-  , _vdDropFrameTimecode  :: !(Maybe DropFrameTimecode)
-  , _vdAntiAlias          :: !(Maybe AntiAlias)
-  , _vdFixedAfd           :: !(Maybe Int)
-  , _vdColorMetadata      :: !(Maybe ColorMetadata)
-  , _vdCodecSettings      :: !(Maybe VideoCodecSettings)
-  , _vdVideoPreprocessors :: !(Maybe VideoPreprocessor)
-  , _vdPosition           :: !(Maybe Rectangle)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VideoDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vdTimecodeInsertion' - Undocumented member.
---
--- * 'vdHeight' - Use the Height (Height) setting to define the video resolution height for this output. Specify in pixels. If you don't provide a value here, the service will use the input height.
---
--- * 'vdAfdSignaling' - Undocumented member.
---
--- * 'vdSharpness' - Use Sharpness (Sharpness)setting to specify the strength of anti-aliasing. This setting changes the width of the anti-alias filter kernel used for scaling. Sharpness only applies if your output resolution is different from your input resolution, and if you set Anti-alias (AntiAlias) to ENABLED. 0 is the softest setting, 100 the sharpest, and 50 recommended for most content.
---
--- * 'vdCrop' - Applies only if your input aspect ratio is different from your output aspect ratio. Use Input cropping rectangle (Crop) to specify the  video area the service will include in the output. This will crop the input source, causing video pixels to be removed on encode. Do not use this setting if you have enabled Stretch to output (stretchToOutput) in your output settings.
---
--- * 'vdWidth' - Use Width (Width) to define the video resolution width, in pixels, for this output. If you don't provide a value here, the service will use the input width.
---
--- * 'vdScalingBehavior' - Undocumented member.
---
--- * 'vdRespondToAfd' - Undocumented member.
---
--- * 'vdDropFrameTimecode' - Undocumented member.
---
--- * 'vdAntiAlias' - Undocumented member.
---
--- * 'vdFixedAfd' - Applies only if you set AFD Signaling(AfdSignaling) to Fixed (FIXED). Use Fixed (FixedAfd) to specify a four-bit AFD value which the service will write on all  frames of this video output.
---
--- * 'vdColorMetadata' - Undocumented member.
---
--- * 'vdCodecSettings' - Undocumented member.
---
--- * 'vdVideoPreprocessors' - Find additional transcoding features under Preprocessors (VideoPreprocessors). Enable the features at each output individually. These features are disabled by default.
---
--- * 'vdPosition' - Use Position (Position) to point to a rectangle object to define your position. This setting overrides any other aspect ratio.
-videoDescription
-    :: VideoDescription
-videoDescription =
-  VideoDescription'
-    { _vdTimecodeInsertion = Nothing
-    , _vdHeight = Nothing
-    , _vdAfdSignaling = Nothing
-    , _vdSharpness = Nothing
-    , _vdCrop = Nothing
-    , _vdWidth = Nothing
-    , _vdScalingBehavior = Nothing
-    , _vdRespondToAfd = Nothing
-    , _vdDropFrameTimecode = Nothing
-    , _vdAntiAlias = Nothing
-    , _vdFixedAfd = Nothing
-    , _vdColorMetadata = Nothing
-    , _vdCodecSettings = Nothing
-    , _vdVideoPreprocessors = Nothing
-    , _vdPosition = Nothing
-    }
-
-
--- | Undocumented member.
-vdTimecodeInsertion :: Lens' VideoDescription (Maybe VideoTimecodeInsertion)
-vdTimecodeInsertion = lens _vdTimecodeInsertion (\ s a -> s{_vdTimecodeInsertion = a})
-
--- | Use the Height (Height) setting to define the video resolution height for this output. Specify in pixels. If you don't provide a value here, the service will use the input height.
-vdHeight :: Lens' VideoDescription (Maybe Int)
-vdHeight = lens _vdHeight (\ s a -> s{_vdHeight = a})
-
--- | Undocumented member.
-vdAfdSignaling :: Lens' VideoDescription (Maybe AfdSignaling)
-vdAfdSignaling = lens _vdAfdSignaling (\ s a -> s{_vdAfdSignaling = a})
-
--- | Use Sharpness (Sharpness)setting to specify the strength of anti-aliasing. This setting changes the width of the anti-alias filter kernel used for scaling. Sharpness only applies if your output resolution is different from your input resolution, and if you set Anti-alias (AntiAlias) to ENABLED. 0 is the softest setting, 100 the sharpest, and 50 recommended for most content.
-vdSharpness :: Lens' VideoDescription (Maybe Int)
-vdSharpness = lens _vdSharpness (\ s a -> s{_vdSharpness = a})
-
--- | Applies only if your input aspect ratio is different from your output aspect ratio. Use Input cropping rectangle (Crop) to specify the  video area the service will include in the output. This will crop the input source, causing video pixels to be removed on encode. Do not use this setting if you have enabled Stretch to output (stretchToOutput) in your output settings.
-vdCrop :: Lens' VideoDescription (Maybe Rectangle)
-vdCrop = lens _vdCrop (\ s a -> s{_vdCrop = a})
-
--- | Use Width (Width) to define the video resolution width, in pixels, for this output. If you don't provide a value here, the service will use the input width.
-vdWidth :: Lens' VideoDescription (Maybe Int)
-vdWidth = lens _vdWidth (\ s a -> s{_vdWidth = a})
-
--- | Undocumented member.
-vdScalingBehavior :: Lens' VideoDescription (Maybe ScalingBehavior)
-vdScalingBehavior = lens _vdScalingBehavior (\ s a -> s{_vdScalingBehavior = a})
-
--- | Undocumented member.
-vdRespondToAfd :: Lens' VideoDescription (Maybe RespondToAfd)
-vdRespondToAfd = lens _vdRespondToAfd (\ s a -> s{_vdRespondToAfd = a})
-
--- | Undocumented member.
-vdDropFrameTimecode :: Lens' VideoDescription (Maybe DropFrameTimecode)
-vdDropFrameTimecode = lens _vdDropFrameTimecode (\ s a -> s{_vdDropFrameTimecode = a})
-
--- | Undocumented member.
-vdAntiAlias :: Lens' VideoDescription (Maybe AntiAlias)
-vdAntiAlias = lens _vdAntiAlias (\ s a -> s{_vdAntiAlias = a})
-
--- | Applies only if you set AFD Signaling(AfdSignaling) to Fixed (FIXED). Use Fixed (FixedAfd) to specify a four-bit AFD value which the service will write on all  frames of this video output.
-vdFixedAfd :: Lens' VideoDescription (Maybe Int)
-vdFixedAfd = lens _vdFixedAfd (\ s a -> s{_vdFixedAfd = a})
-
--- | Undocumented member.
-vdColorMetadata :: Lens' VideoDescription (Maybe ColorMetadata)
-vdColorMetadata = lens _vdColorMetadata (\ s a -> s{_vdColorMetadata = a})
-
--- | Undocumented member.
-vdCodecSettings :: Lens' VideoDescription (Maybe VideoCodecSettings)
-vdCodecSettings = lens _vdCodecSettings (\ s a -> s{_vdCodecSettings = a})
-
--- | Find additional transcoding features under Preprocessors (VideoPreprocessors). Enable the features at each output individually. These features are disabled by default.
-vdVideoPreprocessors :: Lens' VideoDescription (Maybe VideoPreprocessor)
-vdVideoPreprocessors = lens _vdVideoPreprocessors (\ s a -> s{_vdVideoPreprocessors = a})
-
--- | Use Position (Position) to point to a rectangle object to define your position. This setting overrides any other aspect ratio.
-vdPosition :: Lens' VideoDescription (Maybe Rectangle)
-vdPosition = lens _vdPosition (\ s a -> s{_vdPosition = a})
-
-instance FromJSON VideoDescription where
-        parseJSON
-          = withObject "VideoDescription"
-              (\ x ->
-                 VideoDescription' <$>
-                   (x .:? "timecodeInsertion") <*> (x .:? "height") <*>
-                     (x .:? "afdSignaling")
-                     <*> (x .:? "sharpness")
-                     <*> (x .:? "crop")
-                     <*> (x .:? "width")
-                     <*> (x .:? "scalingBehavior")
-                     <*> (x .:? "respondToAfd")
-                     <*> (x .:? "dropFrameTimecode")
-                     <*> (x .:? "antiAlias")
-                     <*> (x .:? "fixedAfd")
-                     <*> (x .:? "colorMetadata")
-                     <*> (x .:? "codecSettings")
-                     <*> (x .:? "videoPreprocessors")
-                     <*> (x .:? "position"))
-
-instance Hashable VideoDescription where
-
-instance NFData VideoDescription where
-
-instance ToJSON VideoDescription where
-        toJSON VideoDescription'{..}
-          = object
-              (catMaybes
-                 [("timecodeInsertion" .=) <$> _vdTimecodeInsertion,
-                  ("height" .=) <$> _vdHeight,
-                  ("afdSignaling" .=) <$> _vdAfdSignaling,
-                  ("sharpness" .=) <$> _vdSharpness,
-                  ("crop" .=) <$> _vdCrop, ("width" .=) <$> _vdWidth,
-                  ("scalingBehavior" .=) <$> _vdScalingBehavior,
-                  ("respondToAfd" .=) <$> _vdRespondToAfd,
-                  ("dropFrameTimecode" .=) <$> _vdDropFrameTimecode,
-                  ("antiAlias" .=) <$> _vdAntiAlias,
-                  ("fixedAfd" .=) <$> _vdFixedAfd,
-                  ("colorMetadata" .=) <$> _vdColorMetadata,
-                  ("codecSettings" .=) <$> _vdCodecSettings,
-                  ("videoPreprocessors" .=) <$> _vdVideoPreprocessors,
-                  ("position" .=) <$> _vdPosition])
-
--- | Contains details about the output's video stream
---
--- /See:/ 'videoDetail' smart constructor.
-data VideoDetail = VideoDetail'
-  { _vdHeightInPx :: !(Maybe Int)
-  , _vdWidthInPx  :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VideoDetail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vdHeightInPx' - Height in pixels for the output
---
--- * 'vdWidthInPx' - Width in pixels for the output
-videoDetail
-    :: VideoDetail
-videoDetail = VideoDetail' {_vdHeightInPx = Nothing, _vdWidthInPx = Nothing}
-
-
--- | Height in pixels for the output
-vdHeightInPx :: Lens' VideoDetail (Maybe Int)
-vdHeightInPx = lens _vdHeightInPx (\ s a -> s{_vdHeightInPx = a})
-
--- | Width in pixels for the output
-vdWidthInPx :: Lens' VideoDetail (Maybe Int)
-vdWidthInPx = lens _vdWidthInPx (\ s a -> s{_vdWidthInPx = a})
-
-instance FromJSON VideoDetail where
-        parseJSON
-          = withObject "VideoDetail"
-              (\ x ->
-                 VideoDetail' <$>
-                   (x .:? "heightInPx") <*> (x .:? "widthInPx"))
-
-instance Hashable VideoDetail where
-
-instance NFData VideoDetail where
-
--- | Find additional transcoding features under Preprocessors (VideoPreprocessors). Enable the features at each output individually. These features are disabled by default.
---
--- /See:/ 'videoPreprocessor' smart constructor.
-data VideoPreprocessor = VideoPreprocessor'
-  { _vpTimecodeBurnin :: !(Maybe TimecodeBurnin)
-  , _vpColorCorrector :: !(Maybe ColorCorrector)
-  , _vpDeinterlacer   :: !(Maybe Deinterlacer)
-  , _vpNoiseReducer   :: !(Maybe NoiseReducer)
-  , _vpImageInserter  :: !(Maybe ImageInserter)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VideoPreprocessor' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vpTimecodeBurnin' - Timecode burn-in (TimecodeBurnIn)--Burns the output timecode and specified prefix into the output.
---
--- * 'vpColorCorrector' - Enable the Color corrector (ColorCorrector) feature if necessary. Enable or disable this feature for each output individually. This setting is disabled by default.
---
--- * 'vpDeinterlacer' - Use Deinterlacer (Deinterlacer) to produce smoother motion and a clearer picture.
---
--- * 'vpNoiseReducer' - Enable the Noise reducer (NoiseReducer) feature to remove noise from your video output if necessary. Enable or disable this feature for each output individually. This setting is disabled by default.
---
--- * 'vpImageInserter' - Enable the Image inserter (ImageInserter) feature to include a graphic overlay on your video. Enable or disable this feature for each output individually. This setting is disabled by default.
-videoPreprocessor
-    :: VideoPreprocessor
-videoPreprocessor =
-  VideoPreprocessor'
-    { _vpTimecodeBurnin = Nothing
-    , _vpColorCorrector = Nothing
-    , _vpDeinterlacer = Nothing
-    , _vpNoiseReducer = Nothing
-    , _vpImageInserter = Nothing
-    }
-
-
--- | Timecode burn-in (TimecodeBurnIn)--Burns the output timecode and specified prefix into the output.
-vpTimecodeBurnin :: Lens' VideoPreprocessor (Maybe TimecodeBurnin)
-vpTimecodeBurnin = lens _vpTimecodeBurnin (\ s a -> s{_vpTimecodeBurnin = a})
-
--- | Enable the Color corrector (ColorCorrector) feature if necessary. Enable or disable this feature for each output individually. This setting is disabled by default.
-vpColorCorrector :: Lens' VideoPreprocessor (Maybe ColorCorrector)
-vpColorCorrector = lens _vpColorCorrector (\ s a -> s{_vpColorCorrector = a})
-
--- | Use Deinterlacer (Deinterlacer) to produce smoother motion and a clearer picture.
-vpDeinterlacer :: Lens' VideoPreprocessor (Maybe Deinterlacer)
-vpDeinterlacer = lens _vpDeinterlacer (\ s a -> s{_vpDeinterlacer = a})
-
--- | Enable the Noise reducer (NoiseReducer) feature to remove noise from your video output if necessary. Enable or disable this feature for each output individually. This setting is disabled by default.
-vpNoiseReducer :: Lens' VideoPreprocessor (Maybe NoiseReducer)
-vpNoiseReducer = lens _vpNoiseReducer (\ s a -> s{_vpNoiseReducer = a})
-
--- | Enable the Image inserter (ImageInserter) feature to include a graphic overlay on your video. Enable or disable this feature for each output individually. This setting is disabled by default.
-vpImageInserter :: Lens' VideoPreprocessor (Maybe ImageInserter)
-vpImageInserter = lens _vpImageInserter (\ s a -> s{_vpImageInserter = a})
-
-instance FromJSON VideoPreprocessor where
-        parseJSON
-          = withObject "VideoPreprocessor"
-              (\ x ->
-                 VideoPreprocessor' <$>
-                   (x .:? "timecodeBurnin") <*> (x .:? "colorCorrector")
-                     <*> (x .:? "deinterlacer")
-                     <*> (x .:? "noiseReducer")
-                     <*> (x .:? "imageInserter"))
-
-instance Hashable VideoPreprocessor where
-
-instance NFData VideoPreprocessor where
-
-instance ToJSON VideoPreprocessor where
-        toJSON VideoPreprocessor'{..}
-          = object
-              (catMaybes
-                 [("timecodeBurnin" .=) <$> _vpTimecodeBurnin,
-                  ("colorCorrector" .=) <$> _vpColorCorrector,
-                  ("deinterlacer" .=) <$> _vpDeinterlacer,
-                  ("noiseReducer" .=) <$> _vpNoiseReducer,
-                  ("imageInserter" .=) <$> _vpImageInserter])
-
--- | Selector for video.
---
--- /See:/ 'videoSelector' smart constructor.
-data VideoSelector = VideoSelector'
-  { _vsProgramNumber   :: !(Maybe Int)
-  , _vsColorSpaceUsage :: !(Maybe ColorSpaceUsage)
-  , _vsHdr10Metadata   :: !(Maybe Hdr10Metadata)
-  , _vsPid             :: !(Maybe Int)
-  , _vsColorSpace      :: !(Maybe ColorSpace)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VideoSelector' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vsProgramNumber' - Selects a specific program from within a multi-program transport stream. Note that Quad 4K is not currently supported.
---
--- * 'vsColorSpaceUsage' - Undocumented member.
---
--- * 'vsHdr10Metadata' - Undocumented member.
---
--- * 'vsPid' - Use PID (Pid) to select specific video data from an input file. Specify this value as an integer; the system automatically converts it to the hexidecimal value. For example, 257 selects PID 0x101. A PID, or packet identifier, is an identifier for a set of data in an MPEG-2 transport stream container.
---
--- * 'vsColorSpace' - Undocumented member.
-videoSelector
-    :: VideoSelector
-videoSelector =
-  VideoSelector'
-    { _vsProgramNumber = Nothing
-    , _vsColorSpaceUsage = Nothing
-    , _vsHdr10Metadata = Nothing
-    , _vsPid = Nothing
-    , _vsColorSpace = Nothing
-    }
-
-
--- | Selects a specific program from within a multi-program transport stream. Note that Quad 4K is not currently supported.
-vsProgramNumber :: Lens' VideoSelector (Maybe Int)
-vsProgramNumber = lens _vsProgramNumber (\ s a -> s{_vsProgramNumber = a})
-
--- | Undocumented member.
-vsColorSpaceUsage :: Lens' VideoSelector (Maybe ColorSpaceUsage)
-vsColorSpaceUsage = lens _vsColorSpaceUsage (\ s a -> s{_vsColorSpaceUsage = a})
-
--- | Undocumented member.
-vsHdr10Metadata :: Lens' VideoSelector (Maybe Hdr10Metadata)
-vsHdr10Metadata = lens _vsHdr10Metadata (\ s a -> s{_vsHdr10Metadata = a})
-
--- | Use PID (Pid) to select specific video data from an input file. Specify this value as an integer; the system automatically converts it to the hexidecimal value. For example, 257 selects PID 0x101. A PID, or packet identifier, is an identifier for a set of data in an MPEG-2 transport stream container.
-vsPid :: Lens' VideoSelector (Maybe Int)
-vsPid = lens _vsPid (\ s a -> s{_vsPid = a})
-
--- | Undocumented member.
-vsColorSpace :: Lens' VideoSelector (Maybe ColorSpace)
-vsColorSpace = lens _vsColorSpace (\ s a -> s{_vsColorSpace = a})
-
-instance FromJSON VideoSelector where
-        parseJSON
-          = withObject "VideoSelector"
-              (\ x ->
-                 VideoSelector' <$>
-                   (x .:? "programNumber") <*> (x .:? "colorSpaceUsage")
-                     <*> (x .:? "hdr10Metadata")
-                     <*> (x .:? "pid")
-                     <*> (x .:? "colorSpace"))
-
-instance Hashable VideoSelector where
-
-instance NFData VideoSelector where
-
-instance ToJSON VideoSelector where
-        toJSON VideoSelector'{..}
-          = object
-              (catMaybes
-                 [("programNumber" .=) <$> _vsProgramNumber,
-                  ("colorSpaceUsage" .=) <$> _vsColorSpaceUsage,
-                  ("hdr10Metadata" .=) <$> _vsHdr10Metadata,
-                  ("pid" .=) <$> _vsPid,
-                  ("colorSpace" .=) <$> _vsColorSpace])
-
--- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings) to the value WAV.
---
--- /See:/ 'wavSettings' smart constructor.
-data WavSettings = WavSettings'
-  { _wsBitDepth   :: !(Maybe Int)
-  , _wsChannels   :: !(Maybe Int)
-  , _wsSampleRate :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'WavSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wsBitDepth' - Specify Bit depth (BitDepth), in bits per sample, to choose the encoding quality for this audio track.
---
--- * 'wsChannels' - Set Channels to specify the number of channels in this output audio track. With WAV, valid values 1, 2, 4, and 8. In the console, these values are Mono, Stereo, 4-Channel, and 8-Channel, respectively.
---
--- * 'wsSampleRate' - Sample rate in Hz.
-wavSettings
-    :: WavSettings
-wavSettings =
-  WavSettings'
-    {_wsBitDepth = Nothing, _wsChannels = Nothing, _wsSampleRate = Nothing}
-
-
--- | Specify Bit depth (BitDepth), in bits per sample, to choose the encoding quality for this audio track.
-wsBitDepth :: Lens' WavSettings (Maybe Int)
-wsBitDepth = lens _wsBitDepth (\ s a -> s{_wsBitDepth = a})
-
--- | Set Channels to specify the number of channels in this output audio track. With WAV, valid values 1, 2, 4, and 8. In the console, these values are Mono, Stereo, 4-Channel, and 8-Channel, respectively.
-wsChannels :: Lens' WavSettings (Maybe Int)
-wsChannels = lens _wsChannels (\ s a -> s{_wsChannels = a})
-
--- | Sample rate in Hz.
-wsSampleRate :: Lens' WavSettings (Maybe Int)
-wsSampleRate = lens _wsSampleRate (\ s a -> s{_wsSampleRate = a})
-
-instance FromJSON WavSettings where
-        parseJSON
-          = withObject "WavSettings"
-              (\ x ->
-                 WavSettings' <$>
-                   (x .:? "bitDepth") <*> (x .:? "channels") <*>
-                     (x .:? "sampleRate"))
-
-instance Hashable WavSettings where
-
-instance NFData WavSettings where
-
-instance ToJSON WavSettings where
-        toJSON WavSettings'{..}
-          = object
-              (catMaybes
-                 [("bitDepth" .=) <$> _wsBitDepth,
-                  ("channels" .=) <$> _wsChannels,
-                  ("sampleRate" .=) <$> _wsSampleRate])
diff --git a/gen/Network/AWS/MediaConvert/Types/Sum.hs b/gen/Network/AWS/MediaConvert/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/Types/Sum.hs
+++ /dev/null
@@ -1,7338 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.Types.Sum
--- Copyright   : (c) 2013-2018 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 Network.AWS.MediaConvert.Types.Sum where
-
-import Network.AWS.Prelude
-
--- | Choose BROADCASTER_MIXED_AD when the input contains pre-mixed main audio + audio description (AD) as a stereo pair. The value for AudioType will be set to 3, which signals to downstream systems that this stream contains "broadcaster mixed AD". Note that the input received by the encoder must contain pre-mixed audio; the encoder does not perform the mixing. When you choose BROADCASTER_MIXED_AD, the encoder ignores any values you provide in AudioType and  FollowInputAudioType. Choose NORMAL when the input does not contain pre-mixed audio + audio description (AD). In this case, the encoder will use any values you provide for AudioType and FollowInputAudioType.
-data AacAudioDescriptionBroadcasterMix
-  = AADBMBroadcasterMixedAd
-  | AADBMNormal
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AacAudioDescriptionBroadcasterMix where
-    parser = takeLowerText >>= \case
-        "broadcaster_mixed_ad" -> pure AADBMBroadcasterMixedAd
-        "normal" -> pure AADBMNormal
-        e -> fromTextError $ "Failure parsing AacAudioDescriptionBroadcasterMix from value: '" <> e
-           <> "'. Accepted values: broadcaster_mixed_ad, normal"
-
-instance ToText AacAudioDescriptionBroadcasterMix where
-    toText = \case
-        AADBMBroadcasterMixedAd -> "BROADCASTER_MIXED_AD"
-        AADBMNormal -> "NORMAL"
-
-instance Hashable     AacAudioDescriptionBroadcasterMix
-instance NFData       AacAudioDescriptionBroadcasterMix
-instance ToByteString AacAudioDescriptionBroadcasterMix
-instance ToQuery      AacAudioDescriptionBroadcasterMix
-instance ToHeader     AacAudioDescriptionBroadcasterMix
-
-instance ToJSON AacAudioDescriptionBroadcasterMix where
-    toJSON = toJSONText
-
-instance FromJSON AacAudioDescriptionBroadcasterMix where
-    parseJSON = parseJSONText "AacAudioDescriptionBroadcasterMix"
-
--- | AAC Profile.
-data AacCodecProfile
-  = HEV1
-  | HEV2
-  | LC
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AacCodecProfile where
-    parser = takeLowerText >>= \case
-        "hev1" -> pure HEV1
-        "hev2" -> pure HEV2
-        "lc" -> pure LC
-        e -> fromTextError $ "Failure parsing AacCodecProfile from value: '" <> e
-           <> "'. Accepted values: hev1, hev2, lc"
-
-instance ToText AacCodecProfile where
-    toText = \case
-        HEV1 -> "HEV1"
-        HEV2 -> "HEV2"
-        LC -> "LC"
-
-instance Hashable     AacCodecProfile
-instance NFData       AacCodecProfile
-instance ToByteString AacCodecProfile
-instance ToQuery      AacCodecProfile
-instance ToHeader     AacCodecProfile
-
-instance ToJSON AacCodecProfile where
-    toJSON = toJSONText
-
-instance FromJSON AacCodecProfile where
-    parseJSON = parseJSONText "AacCodecProfile"
-
--- | Mono (Audio Description), Mono, Stereo, or 5.1 channel layout. Valid values depend on rate control mode and profile. "1.0 - Audio Description (Receiver Mix)" setting receives a stereo description plus control track and emits a mono AAC encode of the description track, with control data emitted in the PES header as per ETSI TS 101 154 Annex E.
-data AacCodingMode
-  = ACMAdReceiverMix
-  | ACMCodingMode10
-  | ACMCodingMode11
-  | ACMCodingMode20
-  | ACMCodingMode51
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AacCodingMode where
-    parser = takeLowerText >>= \case
-        "ad_receiver_mix" -> pure ACMAdReceiverMix
-        "coding_mode_1_0" -> pure ACMCodingMode10
-        "coding_mode_1_1" -> pure ACMCodingMode11
-        "coding_mode_2_0" -> pure ACMCodingMode20
-        "coding_mode_5_1" -> pure ACMCodingMode51
-        e -> fromTextError $ "Failure parsing AacCodingMode from value: '" <> e
-           <> "'. Accepted values: ad_receiver_mix, coding_mode_1_0, coding_mode_1_1, coding_mode_2_0, coding_mode_5_1"
-
-instance ToText AacCodingMode where
-    toText = \case
-        ACMAdReceiverMix -> "AD_RECEIVER_MIX"
-        ACMCodingMode10 -> "CODING_MODE_1_0"
-        ACMCodingMode11 -> "CODING_MODE_1_1"
-        ACMCodingMode20 -> "CODING_MODE_2_0"
-        ACMCodingMode51 -> "CODING_MODE_5_1"
-
-instance Hashable     AacCodingMode
-instance NFData       AacCodingMode
-instance ToByteString AacCodingMode
-instance ToQuery      AacCodingMode
-instance ToHeader     AacCodingMode
-
-instance ToJSON AacCodingMode where
-    toJSON = toJSONText
-
-instance FromJSON AacCodingMode where
-    parseJSON = parseJSONText "AacCodingMode"
-
--- | Rate Control Mode.
-data AacRateControlMode
-  = ARCMCbr
-  | ARCMVbr
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AacRateControlMode where
-    parser = takeLowerText >>= \case
-        "cbr" -> pure ARCMCbr
-        "vbr" -> pure ARCMVbr
-        e -> fromTextError $ "Failure parsing AacRateControlMode from value: '" <> e
-           <> "'. Accepted values: cbr, vbr"
-
-instance ToText AacRateControlMode where
-    toText = \case
-        ARCMCbr -> "CBR"
-        ARCMVbr -> "VBR"
-
-instance Hashable     AacRateControlMode
-instance NFData       AacRateControlMode
-instance ToByteString AacRateControlMode
-instance ToQuery      AacRateControlMode
-instance ToHeader     AacRateControlMode
-
-instance ToJSON AacRateControlMode where
-    toJSON = toJSONText
-
-instance FromJSON AacRateControlMode where
-    parseJSON = parseJSONText "AacRateControlMode"
-
--- | Enables LATM/LOAS AAC output. Note that if you use LATM/LOAS AAC in an output, you must choose "No container" for the output container.
-data AacRawFormat
-  = ARFLatmLoas
-  | ARFNone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AacRawFormat where
-    parser = takeLowerText >>= \case
-        "latm_loas" -> pure ARFLatmLoas
-        "none" -> pure ARFNone
-        e -> fromTextError $ "Failure parsing AacRawFormat from value: '" <> e
-           <> "'. Accepted values: latm_loas, none"
-
-instance ToText AacRawFormat where
-    toText = \case
-        ARFLatmLoas -> "LATM_LOAS"
-        ARFNone -> "NONE"
-
-instance Hashable     AacRawFormat
-instance NFData       AacRawFormat
-instance ToByteString AacRawFormat
-instance ToQuery      AacRawFormat
-instance ToHeader     AacRawFormat
-
-instance ToJSON AacRawFormat where
-    toJSON = toJSONText
-
-instance FromJSON AacRawFormat where
-    parseJSON = parseJSONText "AacRawFormat"
-
--- | Use MPEG-2 AAC instead of MPEG-4 AAC audio for raw or MPEG-2 Transport Stream containers.
-data AacSpecification
-  = ASMPEG2
-  | ASMPEG4
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AacSpecification where
-    parser = takeLowerText >>= \case
-        "mpeg2" -> pure ASMPEG2
-        "mpeg4" -> pure ASMPEG4
-        e -> fromTextError $ "Failure parsing AacSpecification from value: '" <> e
-           <> "'. Accepted values: mpeg2, mpeg4"
-
-instance ToText AacSpecification where
-    toText = \case
-        ASMPEG2 -> "MPEG2"
-        ASMPEG4 -> "MPEG4"
-
-instance Hashable     AacSpecification
-instance NFData       AacSpecification
-instance ToByteString AacSpecification
-instance ToQuery      AacSpecification
-instance ToHeader     AacSpecification
-
-instance ToJSON AacSpecification where
-    toJSON = toJSONText
-
-instance FromJSON AacSpecification where
-    parseJSON = parseJSONText "AacSpecification"
-
--- | VBR Quality Level - Only used if rate_control_mode is VBR.
-data AacVbrQuality
-  = AVQHigh
-  | AVQLow
-  | AVQMediumHigh
-  | AVQMediumLow
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AacVbrQuality where
-    parser = takeLowerText >>= \case
-        "high" -> pure AVQHigh
-        "low" -> pure AVQLow
-        "medium_high" -> pure AVQMediumHigh
-        "medium_low" -> pure AVQMediumLow
-        e -> fromTextError $ "Failure parsing AacVbrQuality from value: '" <> e
-           <> "'. Accepted values: high, low, medium_high, medium_low"
-
-instance ToText AacVbrQuality where
-    toText = \case
-        AVQHigh -> "HIGH"
-        AVQLow -> "LOW"
-        AVQMediumHigh -> "MEDIUM_HIGH"
-        AVQMediumLow -> "MEDIUM_LOW"
-
-instance Hashable     AacVbrQuality
-instance NFData       AacVbrQuality
-instance ToByteString AacVbrQuality
-instance ToQuery      AacVbrQuality
-instance ToHeader     AacVbrQuality
-
-instance ToJSON AacVbrQuality where
-    toJSON = toJSONText
-
-instance FromJSON AacVbrQuality where
-    parseJSON = parseJSONText "AacVbrQuality"
-
--- | Specifies the "Bitstream Mode" (bsmod) for the emitted AC-3 stream. See ATSC A/52-2012 for background on these values.
-data Ac3BitstreamMode
-  = Commentary
-  | CompleteMain
-  | Dialogue
-  | Emergency
-  | HearingImpaired
-  | MusicAndEffects
-  | VisuallyImpaired
-  | VoiceOver
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Ac3BitstreamMode where
-    parser = takeLowerText >>= \case
-        "commentary" -> pure Commentary
-        "complete_main" -> pure CompleteMain
-        "dialogue" -> pure Dialogue
-        "emergency" -> pure Emergency
-        "hearing_impaired" -> pure HearingImpaired
-        "music_and_effects" -> pure MusicAndEffects
-        "visually_impaired" -> pure VisuallyImpaired
-        "voice_over" -> pure VoiceOver
-        e -> fromTextError $ "Failure parsing Ac3BitstreamMode from value: '" <> e
-           <> "'. Accepted values: commentary, complete_main, dialogue, emergency, hearing_impaired, music_and_effects, visually_impaired, voice_over"
-
-instance ToText Ac3BitstreamMode where
-    toText = \case
-        Commentary -> "COMMENTARY"
-        CompleteMain -> "COMPLETE_MAIN"
-        Dialogue -> "DIALOGUE"
-        Emergency -> "EMERGENCY"
-        HearingImpaired -> "HEARING_IMPAIRED"
-        MusicAndEffects -> "MUSIC_AND_EFFECTS"
-        VisuallyImpaired -> "VISUALLY_IMPAIRED"
-        VoiceOver -> "VOICE_OVER"
-
-instance Hashable     Ac3BitstreamMode
-instance NFData       Ac3BitstreamMode
-instance ToByteString Ac3BitstreamMode
-instance ToQuery      Ac3BitstreamMode
-instance ToHeader     Ac3BitstreamMode
-
-instance ToJSON Ac3BitstreamMode where
-    toJSON = toJSONText
-
-instance FromJSON Ac3BitstreamMode where
-    parseJSON = parseJSONText "Ac3BitstreamMode"
-
--- | Dolby Digital coding mode. Determines number of channels.
-data Ac3CodingMode
-  = CodingMode10
-  | CodingMode11
-  | CodingMode20
-  | CodingMode32Lfe
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Ac3CodingMode where
-    parser = takeLowerText >>= \case
-        "coding_mode_1_0" -> pure CodingMode10
-        "coding_mode_1_1" -> pure CodingMode11
-        "coding_mode_2_0" -> pure CodingMode20
-        "coding_mode_3_2_lfe" -> pure CodingMode32Lfe
-        e -> fromTextError $ "Failure parsing Ac3CodingMode from value: '" <> e
-           <> "'. Accepted values: coding_mode_1_0, coding_mode_1_1, coding_mode_2_0, coding_mode_3_2_lfe"
-
-instance ToText Ac3CodingMode where
-    toText = \case
-        CodingMode10 -> "CODING_MODE_1_0"
-        CodingMode11 -> "CODING_MODE_1_1"
-        CodingMode20 -> "CODING_MODE_2_0"
-        CodingMode32Lfe -> "CODING_MODE_3_2_LFE"
-
-instance Hashable     Ac3CodingMode
-instance NFData       Ac3CodingMode
-instance ToByteString Ac3CodingMode
-instance ToQuery      Ac3CodingMode
-instance ToHeader     Ac3CodingMode
-
-instance ToJSON Ac3CodingMode where
-    toJSON = toJSONText
-
-instance FromJSON Ac3CodingMode where
-    parseJSON = parseJSONText "Ac3CodingMode"
-
--- | If set to FILM_STANDARD, adds dynamic range compression signaling to the output bitstream as defined in the Dolby Digital specification.
-data Ac3DynamicRangeCompressionProfile
-  = ADRCPFilmStandard
-  | ADRCPNone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Ac3DynamicRangeCompressionProfile where
-    parser = takeLowerText >>= \case
-        "film_standard" -> pure ADRCPFilmStandard
-        "none" -> pure ADRCPNone
-        e -> fromTextError $ "Failure parsing Ac3DynamicRangeCompressionProfile from value: '" <> e
-           <> "'. Accepted values: film_standard, none"
-
-instance ToText Ac3DynamicRangeCompressionProfile where
-    toText = \case
-        ADRCPFilmStandard -> "FILM_STANDARD"
-        ADRCPNone -> "NONE"
-
-instance Hashable     Ac3DynamicRangeCompressionProfile
-instance NFData       Ac3DynamicRangeCompressionProfile
-instance ToByteString Ac3DynamicRangeCompressionProfile
-instance ToQuery      Ac3DynamicRangeCompressionProfile
-instance ToHeader     Ac3DynamicRangeCompressionProfile
-
-instance ToJSON Ac3DynamicRangeCompressionProfile where
-    toJSON = toJSONText
-
-instance FromJSON Ac3DynamicRangeCompressionProfile where
-    parseJSON = parseJSONText "Ac3DynamicRangeCompressionProfile"
-
--- | Applies a 120Hz lowpass filter to the LFE channel prior to encoding. Only valid with 3_2_LFE coding mode.
-data Ac3LfeFilter
-  = ALFDisabled
-  | ALFEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Ac3LfeFilter where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure ALFDisabled
-        "enabled" -> pure ALFEnabled
-        e -> fromTextError $ "Failure parsing Ac3LfeFilter from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText Ac3LfeFilter where
-    toText = \case
-        ALFDisabled -> "DISABLED"
-        ALFEnabled -> "ENABLED"
-
-instance Hashable     Ac3LfeFilter
-instance NFData       Ac3LfeFilter
-instance ToByteString Ac3LfeFilter
-instance ToQuery      Ac3LfeFilter
-instance ToHeader     Ac3LfeFilter
-
-instance ToJSON Ac3LfeFilter where
-    toJSON = toJSONText
-
-instance FromJSON Ac3LfeFilter where
-    parseJSON = parseJSONText "Ac3LfeFilter"
-
--- | 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.
-data Ac3MetadataControl
-  = AMCFollowInput
-  | AMCUseConfigured
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Ac3MetadataControl where
-    parser = takeLowerText >>= \case
-        "follow_input" -> pure AMCFollowInput
-        "use_configured" -> pure AMCUseConfigured
-        e -> fromTextError $ "Failure parsing Ac3MetadataControl from value: '" <> e
-           <> "'. Accepted values: follow_input, use_configured"
-
-instance ToText Ac3MetadataControl where
-    toText = \case
-        AMCFollowInput -> "FOLLOW_INPUT"
-        AMCUseConfigured -> "USE_CONFIGURED"
-
-instance Hashable     Ac3MetadataControl
-instance NFData       Ac3MetadataControl
-instance ToByteString Ac3MetadataControl
-instance ToQuery      Ac3MetadataControl
-instance ToHeader     Ac3MetadataControl
-
-instance ToJSON Ac3MetadataControl where
-    toJSON = toJSONText
-
-instance FromJSON Ac3MetadataControl where
-    parseJSON = parseJSONText "Ac3MetadataControl"
-
--- | This setting only applies to H.264 and MPEG2 outputs. Use Insert AFD signaling (AfdSignaling) to whether there are AFD values in the output video data and what those values are. * Choose None to remove all AFD values from this output. * Choose Fixed to ignore input AFD values and instead encode the value specified in the job. * Choose Auto to calculate output AFD values based on the input AFD scaler data.
-data AfdSignaling
-  = ASAuto
-  | ASFixed
-  | ASNone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AfdSignaling where
-    parser = takeLowerText >>= \case
-        "auto" -> pure ASAuto
-        "fixed" -> pure ASFixed
-        "none" -> pure ASNone
-        e -> fromTextError $ "Failure parsing AfdSignaling from value: '" <> e
-           <> "'. Accepted values: auto, fixed, none"
-
-instance ToText AfdSignaling where
-    toText = \case
-        ASAuto -> "AUTO"
-        ASFixed -> "FIXED"
-        ASNone -> "NONE"
-
-instance Hashable     AfdSignaling
-instance NFData       AfdSignaling
-instance ToByteString AfdSignaling
-instance ToQuery      AfdSignaling
-instance ToHeader     AfdSignaling
-
-instance ToJSON AfdSignaling where
-    toJSON = toJSONText
-
-instance FromJSON AfdSignaling where
-    parseJSON = parseJSONText "AfdSignaling"
-
--- | Enable Anti-alias (AntiAlias) to enhance sharp edges in video output when your input resolution is much larger than your output resolution. Default is enabled.
-data AntiAlias
-  = AADisabled
-  | AAEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AntiAlias where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure AADisabled
-        "enabled" -> pure AAEnabled
-        e -> fromTextError $ "Failure parsing AntiAlias from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText AntiAlias where
-    toText = \case
-        AADisabled -> "DISABLED"
-        AAEnabled -> "ENABLED"
-
-instance Hashable     AntiAlias
-instance NFData       AntiAlias
-instance ToByteString AntiAlias
-instance ToQuery      AntiAlias
-instance ToHeader     AntiAlias
-
-instance ToJSON AntiAlias where
-    toJSON = toJSONText
-
-instance FromJSON AntiAlias where
-    parseJSON = parseJSONText "AntiAlias"
-
--- | Type of Audio codec.
-data AudioCodec
-  = AC3
-  | Aac
-  | Aiff
-  | EAC3
-  | MP2
-  | Passthrough
-  | Wav
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AudioCodec where
-    parser = takeLowerText >>= \case
-        "ac3" -> pure AC3
-        "aac" -> pure Aac
-        "aiff" -> pure Aiff
-        "eac3" -> pure EAC3
-        "mp2" -> pure MP2
-        "passthrough" -> pure Passthrough
-        "wav" -> pure Wav
-        e -> fromTextError $ "Failure parsing AudioCodec from value: '" <> e
-           <> "'. Accepted values: ac3, aac, aiff, eac3, mp2, passthrough, wav"
-
-instance ToText AudioCodec where
-    toText = \case
-        AC3 -> "AC3"
-        Aac -> "AAC"
-        Aiff -> "AIFF"
-        EAC3 -> "EAC3"
-        MP2 -> "MP2"
-        Passthrough -> "PASSTHROUGH"
-        Wav -> "WAV"
-
-instance Hashable     AudioCodec
-instance NFData       AudioCodec
-instance ToByteString AudioCodec
-instance ToQuery      AudioCodec
-instance ToHeader     AudioCodec
-
-instance ToJSON AudioCodec where
-    toJSON = toJSONText
-
-instance FromJSON AudioCodec where
-    parseJSON = parseJSONText "AudioCodec"
-
--- | When an "Audio Description":#audio_description specifies an AudioSelector or AudioSelectorGroup  for which no matching source is found in the input, then the audio selector marked as DEFAULT will be used.  If none are marked as default, silence will be inserted for the duration of the input.
-data AudioDefaultSelection
-  = Default
-  | NotDefault
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AudioDefaultSelection where
-    parser = takeLowerText >>= \case
-        "default" -> pure Default
-        "not_default" -> pure NotDefault
-        e -> fromTextError $ "Failure parsing AudioDefaultSelection from value: '" <> e
-           <> "'. Accepted values: default, not_default"
-
-instance ToText AudioDefaultSelection where
-    toText = \case
-        Default -> "DEFAULT"
-        NotDefault -> "NOT_DEFAULT"
-
-instance Hashable     AudioDefaultSelection
-instance NFData       AudioDefaultSelection
-instance ToByteString AudioDefaultSelection
-instance ToQuery      AudioDefaultSelection
-instance ToHeader     AudioDefaultSelection
-
-instance ToJSON AudioDefaultSelection where
-    toJSON = toJSONText
-
-instance FromJSON AudioDefaultSelection where
-    parseJSON = parseJSONText "AudioDefaultSelection"
-
--- | Choosing FOLLOW_INPUT will cause the ISO 639 language code of the output to follow the ISO 639 language code of the input. The language specified for languageCode' will be used when USE_CONFIGURED is selected or when FOLLOW_INPUT is selected but there is no ISO 639 language code specified by the input.
-data AudioLanguageCodeControl
-  = FollowInput
-  | UseConfigured
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AudioLanguageCodeControl where
-    parser = takeLowerText >>= \case
-        "follow_input" -> pure FollowInput
-        "use_configured" -> pure UseConfigured
-        e -> fromTextError $ "Failure parsing AudioLanguageCodeControl from value: '" <> e
-           <> "'. Accepted values: follow_input, use_configured"
-
-instance ToText AudioLanguageCodeControl where
-    toText = \case
-        FollowInput -> "FOLLOW_INPUT"
-        UseConfigured -> "USE_CONFIGURED"
-
-instance Hashable     AudioLanguageCodeControl
-instance NFData       AudioLanguageCodeControl
-instance ToByteString AudioLanguageCodeControl
-instance ToQuery      AudioLanguageCodeControl
-instance ToHeader     AudioLanguageCodeControl
-
-instance ToJSON AudioLanguageCodeControl where
-    toJSON = toJSONText
-
-instance FromJSON AudioLanguageCodeControl where
-    parseJSON = parseJSONText "AudioLanguageCodeControl"
-
--- | Audio normalization algorithm to use. 1770-1 conforms to the CALM Act specification, 1770-2 conforms to the EBU R-128 specification.
-data AudioNormalizationAlgorithm
-  = ItuBs17701
-  | ItuBs17702
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AudioNormalizationAlgorithm where
-    parser = takeLowerText >>= \case
-        "itu_bs_1770_1" -> pure ItuBs17701
-        "itu_bs_1770_2" -> pure ItuBs17702
-        e -> fromTextError $ "Failure parsing AudioNormalizationAlgorithm from value: '" <> e
-           <> "'. Accepted values: itu_bs_1770_1, itu_bs_1770_2"
-
-instance ToText AudioNormalizationAlgorithm where
-    toText = \case
-        ItuBs17701 -> "ITU_BS_1770_1"
-        ItuBs17702 -> "ITU_BS_1770_2"
-
-instance Hashable     AudioNormalizationAlgorithm
-instance NFData       AudioNormalizationAlgorithm
-instance ToByteString AudioNormalizationAlgorithm
-instance ToQuery      AudioNormalizationAlgorithm
-instance ToHeader     AudioNormalizationAlgorithm
-
-instance ToJSON AudioNormalizationAlgorithm where
-    toJSON = toJSONText
-
-instance FromJSON AudioNormalizationAlgorithm where
-    parseJSON = parseJSONText "AudioNormalizationAlgorithm"
-
--- | When enabled the output audio is corrected using the chosen algorithm. If disabled, the audio will be measured but not adjusted.
-data AudioNormalizationAlgorithmControl
-  = CorrectAudio
-  | MeasureOnly
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AudioNormalizationAlgorithmControl where
-    parser = takeLowerText >>= \case
-        "correct_audio" -> pure CorrectAudio
-        "measure_only" -> pure MeasureOnly
-        e -> fromTextError $ "Failure parsing AudioNormalizationAlgorithmControl from value: '" <> e
-           <> "'. Accepted values: correct_audio, measure_only"
-
-instance ToText AudioNormalizationAlgorithmControl where
-    toText = \case
-        CorrectAudio -> "CORRECT_AUDIO"
-        MeasureOnly -> "MEASURE_ONLY"
-
-instance Hashable     AudioNormalizationAlgorithmControl
-instance NFData       AudioNormalizationAlgorithmControl
-instance ToByteString AudioNormalizationAlgorithmControl
-instance ToQuery      AudioNormalizationAlgorithmControl
-instance ToHeader     AudioNormalizationAlgorithmControl
-
-instance ToJSON AudioNormalizationAlgorithmControl where
-    toJSON = toJSONText
-
-instance FromJSON AudioNormalizationAlgorithmControl where
-    parseJSON = parseJSONText "AudioNormalizationAlgorithmControl"
-
--- | If set to LOG, log each output's audio track loudness to a CSV file.
-data AudioNormalizationLoudnessLogging
-  = DontLog
-  | Log
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AudioNormalizationLoudnessLogging where
-    parser = takeLowerText >>= \case
-        "dont_log" -> pure DontLog
-        "log" -> pure Log
-        e -> fromTextError $ "Failure parsing AudioNormalizationLoudnessLogging from value: '" <> e
-           <> "'. Accepted values: dont_log, log"
-
-instance ToText AudioNormalizationLoudnessLogging where
-    toText = \case
-        DontLog -> "DONT_LOG"
-        Log -> "LOG"
-
-instance Hashable     AudioNormalizationLoudnessLogging
-instance NFData       AudioNormalizationLoudnessLogging
-instance ToByteString AudioNormalizationLoudnessLogging
-instance ToQuery      AudioNormalizationLoudnessLogging
-instance ToHeader     AudioNormalizationLoudnessLogging
-
-instance ToJSON AudioNormalizationLoudnessLogging where
-    toJSON = toJSONText
-
-instance FromJSON AudioNormalizationLoudnessLogging where
-    parseJSON = parseJSONText "AudioNormalizationLoudnessLogging"
-
--- | If set to TRUE_PEAK, calculate and log the TruePeak for each output's audio track loudness.
-data AudioNormalizationPeakCalculation
-  = ANPCNone
-  | ANPCTruePeak
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AudioNormalizationPeakCalculation where
-    parser = takeLowerText >>= \case
-        "none" -> pure ANPCNone
-        "true_peak" -> pure ANPCTruePeak
-        e -> fromTextError $ "Failure parsing AudioNormalizationPeakCalculation from value: '" <> e
-           <> "'. Accepted values: none, true_peak"
-
-instance ToText AudioNormalizationPeakCalculation where
-    toText = \case
-        ANPCNone -> "NONE"
-        ANPCTruePeak -> "TRUE_PEAK"
-
-instance Hashable     AudioNormalizationPeakCalculation
-instance NFData       AudioNormalizationPeakCalculation
-instance ToByteString AudioNormalizationPeakCalculation
-instance ToQuery      AudioNormalizationPeakCalculation
-instance ToHeader     AudioNormalizationPeakCalculation
-
-instance ToJSON AudioNormalizationPeakCalculation where
-    toJSON = toJSONText
-
-instance FromJSON AudioNormalizationPeakCalculation where
-    parseJSON = parseJSONText "AudioNormalizationPeakCalculation"
-
--- | Specifies the type of the audio selector.
-data AudioSelectorType
-  = LanguageCode
-  | Pid
-  | Track
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AudioSelectorType where
-    parser = takeLowerText >>= \case
-        "language_code" -> pure LanguageCode
-        "pid" -> pure Pid
-        "track" -> pure Track
-        e -> fromTextError $ "Failure parsing AudioSelectorType from value: '" <> e
-           <> "'. Accepted values: language_code, pid, track"
-
-instance ToText AudioSelectorType where
-    toText = \case
-        LanguageCode -> "LANGUAGE_CODE"
-        Pid -> "PID"
-        Track -> "TRACK"
-
-instance Hashable     AudioSelectorType
-instance NFData       AudioSelectorType
-instance ToByteString AudioSelectorType
-instance ToQuery      AudioSelectorType
-instance ToHeader     AudioSelectorType
-
-instance ToJSON AudioSelectorType where
-    toJSON = toJSONText
-
-instance FromJSON AudioSelectorType where
-    parseJSON = parseJSONText "AudioSelectorType"
-
--- | When set to FOLLOW_INPUT, if the input contains an ISO 639 audio_type, then that value is passed through to the output. If the input contains no ISO 639 audio_type, the value in Audio Type is included in the output. Otherwise the value in Audio Type is included in the output. Note that this field and audioType are both ignored if audioDescriptionBroadcasterMix is set to BROADCASTER_MIXED_AD.
-data AudioTypeControl
-  = ATCFollowInput
-  | ATCUseConfigured
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AudioTypeControl where
-    parser = takeLowerText >>= \case
-        "follow_input" -> pure ATCFollowInput
-        "use_configured" -> pure ATCUseConfigured
-        e -> fromTextError $ "Failure parsing AudioTypeControl from value: '" <> e
-           <> "'. Accepted values: follow_input, use_configured"
-
-instance ToText AudioTypeControl where
-    toText = \case
-        ATCFollowInput -> "FOLLOW_INPUT"
-        ATCUseConfigured -> "USE_CONFIGURED"
-
-instance Hashable     AudioTypeControl
-instance NFData       AudioTypeControl
-instance ToByteString AudioTypeControl
-instance ToQuery      AudioTypeControl
-instance ToHeader     AudioTypeControl
-
-instance ToJSON AudioTypeControl where
-    toJSON = toJSONText
-
-instance FromJSON AudioTypeControl where
-    parseJSON = parseJSONText "AudioTypeControl"
-
--- | If no explicit x_position or y_position is provided, setting alignment to centered will place the captions at the bottom center of the output. Similarly, setting a left alignment will align captions to the bottom left of the output. If x and y positions are given in conjunction with the alignment parameter, the font will be justified (either left or centered) relative to those coordinates. This option is not valid for source captions that are STL, 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
-data BurninSubtitleAlignment
-  = BSACentered
-  | BSALeft'
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText BurninSubtitleAlignment where
-    parser = takeLowerText >>= \case
-        "centered" -> pure BSACentered
-        "left" -> pure BSALeft'
-        e -> fromTextError $ "Failure parsing BurninSubtitleAlignment from value: '" <> e
-           <> "'. Accepted values: centered, left"
-
-instance ToText BurninSubtitleAlignment where
-    toText = \case
-        BSACentered -> "CENTERED"
-        BSALeft' -> "LEFT"
-
-instance Hashable     BurninSubtitleAlignment
-instance NFData       BurninSubtitleAlignment
-instance ToByteString BurninSubtitleAlignment
-instance ToQuery      BurninSubtitleAlignment
-instance ToHeader     BurninSubtitleAlignment
-
-instance ToJSON BurninSubtitleAlignment where
-    toJSON = toJSONText
-
-instance FromJSON BurninSubtitleAlignment where
-    parseJSON = parseJSONText "BurninSubtitleAlignment"
-
--- | Specifies the color of the rectangle behind the captions.
---
--- All burn-in and DVB-Sub font settings must match.
-data BurninSubtitleBackgroundColor
-  = BSBCBlack
-  | BSBCNone
-  | BSBCWhite
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText BurninSubtitleBackgroundColor where
-    parser = takeLowerText >>= \case
-        "black" -> pure BSBCBlack
-        "none" -> pure BSBCNone
-        "white" -> pure BSBCWhite
-        e -> fromTextError $ "Failure parsing BurninSubtitleBackgroundColor from value: '" <> e
-           <> "'. Accepted values: black, none, white"
-
-instance ToText BurninSubtitleBackgroundColor where
-    toText = \case
-        BSBCBlack -> "BLACK"
-        BSBCNone -> "NONE"
-        BSBCWhite -> "WHITE"
-
-instance Hashable     BurninSubtitleBackgroundColor
-instance NFData       BurninSubtitleBackgroundColor
-instance ToByteString BurninSubtitleBackgroundColor
-instance ToQuery      BurninSubtitleBackgroundColor
-instance ToHeader     BurninSubtitleBackgroundColor
-
-instance ToJSON BurninSubtitleBackgroundColor where
-    toJSON = toJSONText
-
-instance FromJSON BurninSubtitleBackgroundColor where
-    parseJSON = parseJSONText "BurninSubtitleBackgroundColor"
-
--- | Specifies the color of the burned-in captions. This option is not valid for source captions that are STL, 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
-data BurninSubtitleFontColor
-  = BSFCBlack
-  | BSFCBlue
-  | BSFCGreen
-  | BSFCRed
-  | BSFCWhite
-  | BSFCYellow
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText BurninSubtitleFontColor where
-    parser = takeLowerText >>= \case
-        "black" -> pure BSFCBlack
-        "blue" -> pure BSFCBlue
-        "green" -> pure BSFCGreen
-        "red" -> pure BSFCRed
-        "white" -> pure BSFCWhite
-        "yellow" -> pure BSFCYellow
-        e -> fromTextError $ "Failure parsing BurninSubtitleFontColor from value: '" <> e
-           <> "'. Accepted values: black, blue, green, red, white, yellow"
-
-instance ToText BurninSubtitleFontColor where
-    toText = \case
-        BSFCBlack -> "BLACK"
-        BSFCBlue -> "BLUE"
-        BSFCGreen -> "GREEN"
-        BSFCRed -> "RED"
-        BSFCWhite -> "WHITE"
-        BSFCYellow -> "YELLOW"
-
-instance Hashable     BurninSubtitleFontColor
-instance NFData       BurninSubtitleFontColor
-instance ToByteString BurninSubtitleFontColor
-instance ToQuery      BurninSubtitleFontColor
-instance ToHeader     BurninSubtitleFontColor
-
-instance ToJSON BurninSubtitleFontColor where
-    toJSON = toJSONText
-
-instance FromJSON BurninSubtitleFontColor where
-    parseJSON = parseJSONText "BurninSubtitleFontColor"
-
--- | Specifies font outline color. This option is not valid for source captions that are either 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
-data BurninSubtitleOutlineColor
-  = BSOCBlack
-  | BSOCBlue
-  | BSOCGreen
-  | BSOCRed
-  | BSOCWhite
-  | BSOCYellow
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText BurninSubtitleOutlineColor where
-    parser = takeLowerText >>= \case
-        "black" -> pure BSOCBlack
-        "blue" -> pure BSOCBlue
-        "green" -> pure BSOCGreen
-        "red" -> pure BSOCRed
-        "white" -> pure BSOCWhite
-        "yellow" -> pure BSOCYellow
-        e -> fromTextError $ "Failure parsing BurninSubtitleOutlineColor from value: '" <> e
-           <> "'. Accepted values: black, blue, green, red, white, yellow"
-
-instance ToText BurninSubtitleOutlineColor where
-    toText = \case
-        BSOCBlack -> "BLACK"
-        BSOCBlue -> "BLUE"
-        BSOCGreen -> "GREEN"
-        BSOCRed -> "RED"
-        BSOCWhite -> "WHITE"
-        BSOCYellow -> "YELLOW"
-
-instance Hashable     BurninSubtitleOutlineColor
-instance NFData       BurninSubtitleOutlineColor
-instance ToByteString BurninSubtitleOutlineColor
-instance ToQuery      BurninSubtitleOutlineColor
-instance ToHeader     BurninSubtitleOutlineColor
-
-instance ToJSON BurninSubtitleOutlineColor where
-    toJSON = toJSONText
-
-instance FromJSON BurninSubtitleOutlineColor where
-    parseJSON = parseJSONText "BurninSubtitleOutlineColor"
-
--- | Specifies the color of the shadow cast by the captions.
---
--- All burn-in and DVB-Sub font settings must match.
-data BurninSubtitleShadowColor
-  = BSSCBlack
-  | BSSCNone
-  | BSSCWhite
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText BurninSubtitleShadowColor where
-    parser = takeLowerText >>= \case
-        "black" -> pure BSSCBlack
-        "none" -> pure BSSCNone
-        "white" -> pure BSSCWhite
-        e -> fromTextError $ "Failure parsing BurninSubtitleShadowColor from value: '" <> e
-           <> "'. Accepted values: black, none, white"
-
-instance ToText BurninSubtitleShadowColor where
-    toText = \case
-        BSSCBlack -> "BLACK"
-        BSSCNone -> "NONE"
-        BSSCWhite -> "WHITE"
-
-instance Hashable     BurninSubtitleShadowColor
-instance NFData       BurninSubtitleShadowColor
-instance ToByteString BurninSubtitleShadowColor
-instance ToQuery      BurninSubtitleShadowColor
-instance ToHeader     BurninSubtitleShadowColor
-
-instance ToJSON BurninSubtitleShadowColor where
-    toJSON = toJSONText
-
-instance FromJSON BurninSubtitleShadowColor where
-    parseJSON = parseJSONText "BurninSubtitleShadowColor"
-
--- | Controls whether a fixed grid size or proportional font spacing will be used to generate the output subtitles bitmap. Only applicable for Teletext inputs and DVB-Sub/Burn-in outputs.
-data BurninSubtitleTeletextSpacing
-  = BSTSFixedGrid
-  | BSTSProportional
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText BurninSubtitleTeletextSpacing where
-    parser = takeLowerText >>= \case
-        "fixed_grid" -> pure BSTSFixedGrid
-        "proportional" -> pure BSTSProportional
-        e -> fromTextError $ "Failure parsing BurninSubtitleTeletextSpacing from value: '" <> e
-           <> "'. Accepted values: fixed_grid, proportional"
-
-instance ToText BurninSubtitleTeletextSpacing where
-    toText = \case
-        BSTSFixedGrid -> "FIXED_GRID"
-        BSTSProportional -> "PROPORTIONAL"
-
-instance Hashable     BurninSubtitleTeletextSpacing
-instance NFData       BurninSubtitleTeletextSpacing
-instance ToByteString BurninSubtitleTeletextSpacing
-instance ToQuery      BurninSubtitleTeletextSpacing
-instance ToHeader     BurninSubtitleTeletextSpacing
-
-instance ToJSON BurninSubtitleTeletextSpacing where
-    toJSON = toJSONText
-
-instance FromJSON BurninSubtitleTeletextSpacing where
-    parseJSON = parseJSONText "BurninSubtitleTeletextSpacing"
-
--- | Type of Caption output, including Burn-In, Embedded, SCC, SRT, TTML, WebVTT, DVB-Sub, Teletext.
-data CaptionDestinationType
-  = CDTBurnIn
-  | CDTDvbSub
-  | CDTEmbedded
-  | CDTScc
-  | CDTSrt
-  | CDTTeletext
-  | CDTTtml
-  | CDTWebvtt
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText CaptionDestinationType where
-    parser = takeLowerText >>= \case
-        "burn_in" -> pure CDTBurnIn
-        "dvb_sub" -> pure CDTDvbSub
-        "embedded" -> pure CDTEmbedded
-        "scc" -> pure CDTScc
-        "srt" -> pure CDTSrt
-        "teletext" -> pure CDTTeletext
-        "ttml" -> pure CDTTtml
-        "webvtt" -> pure CDTWebvtt
-        e -> fromTextError $ "Failure parsing CaptionDestinationType from value: '" <> e
-           <> "'. Accepted values: burn_in, dvb_sub, embedded, scc, srt, teletext, ttml, webvtt"
-
-instance ToText CaptionDestinationType where
-    toText = \case
-        CDTBurnIn -> "BURN_IN"
-        CDTDvbSub -> "DVB_SUB"
-        CDTEmbedded -> "EMBEDDED"
-        CDTScc -> "SCC"
-        CDTSrt -> "SRT"
-        CDTTeletext -> "TELETEXT"
-        CDTTtml -> "TTML"
-        CDTWebvtt -> "WEBVTT"
-
-instance Hashable     CaptionDestinationType
-instance NFData       CaptionDestinationType
-instance ToByteString CaptionDestinationType
-instance ToQuery      CaptionDestinationType
-instance ToHeader     CaptionDestinationType
-
-instance ToJSON CaptionDestinationType where
-    toJSON = toJSONText
-
-instance FromJSON CaptionDestinationType where
-    parseJSON = parseJSONText "CaptionDestinationType"
-
--- | Use Source (SourceType) to identify the format of your input captions.  The service cannot auto-detect caption format.
-data CaptionSourceType
-  = CSTAncillary
-  | CSTDvbSub
-  | CSTEmbedded
-  | CSTNullSource
-  | CSTScc
-  | CSTSrt
-  | CSTStl
-  | CSTTeletext
-  | CSTTtml
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText CaptionSourceType where
-    parser = takeLowerText >>= \case
-        "ancillary" -> pure CSTAncillary
-        "dvb_sub" -> pure CSTDvbSub
-        "embedded" -> pure CSTEmbedded
-        "null_source" -> pure CSTNullSource
-        "scc" -> pure CSTScc
-        "srt" -> pure CSTSrt
-        "stl" -> pure CSTStl
-        "teletext" -> pure CSTTeletext
-        "ttml" -> pure CSTTtml
-        e -> fromTextError $ "Failure parsing CaptionSourceType from value: '" <> e
-           <> "'. Accepted values: ancillary, dvb_sub, embedded, null_source, scc, srt, stl, teletext, ttml"
-
-instance ToText CaptionSourceType where
-    toText = \case
-        CSTAncillary -> "ANCILLARY"
-        CSTDvbSub -> "DVB_SUB"
-        CSTEmbedded -> "EMBEDDED"
-        CSTNullSource -> "NULL_SOURCE"
-        CSTScc -> "SCC"
-        CSTSrt -> "SRT"
-        CSTStl -> "STL"
-        CSTTeletext -> "TELETEXT"
-        CSTTtml -> "TTML"
-
-instance Hashable     CaptionSourceType
-instance NFData       CaptionSourceType
-instance ToByteString CaptionSourceType
-instance ToQuery      CaptionSourceType
-instance ToHeader     CaptionSourceType
-
-instance ToJSON CaptionSourceType where
-    toJSON = toJSONText
-
-instance FromJSON CaptionSourceType where
-    parseJSON = parseJSONText "CaptionSourceType"
-
--- | Enable Insert color metadata (ColorMetadata) to include color metadata in this output. This setting is enabled by default.
-data ColorMetadata
-  = Ignore
-  | Insert
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ColorMetadata where
-    parser = takeLowerText >>= \case
-        "ignore" -> pure Ignore
-        "insert" -> pure Insert
-        e -> fromTextError $ "Failure parsing ColorMetadata from value: '" <> e
-           <> "'. Accepted values: ignore, insert"
-
-instance ToText ColorMetadata where
-    toText = \case
-        Ignore -> "IGNORE"
-        Insert -> "INSERT"
-
-instance Hashable     ColorMetadata
-instance NFData       ColorMetadata
-instance ToByteString ColorMetadata
-instance ToQuery      ColorMetadata
-instance ToHeader     ColorMetadata
-
-instance ToJSON ColorMetadata where
-    toJSON = toJSONText
-
-instance FromJSON ColorMetadata where
-    parseJSON = parseJSONText "ColorMetadata"
-
--- | Specifies the colorspace of an input. This setting works in tandem with "Color Corrector":#color_corrector > color_space_conversion to determine if any conversion will be performed.
-data ColorSpace
-  = Follow
-  | HDR10
-  | Hlg2020
-  | Rec601
-  | Rec709
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ColorSpace where
-    parser = takeLowerText >>= \case
-        "follow" -> pure Follow
-        "hdr10" -> pure HDR10
-        "hlg_2020" -> pure Hlg2020
-        "rec_601" -> pure Rec601
-        "rec_709" -> pure Rec709
-        e -> fromTextError $ "Failure parsing ColorSpace from value: '" <> e
-           <> "'. Accepted values: follow, hdr10, hlg_2020, rec_601, rec_709"
-
-instance ToText ColorSpace where
-    toText = \case
-        Follow -> "FOLLOW"
-        HDR10 -> "HDR10"
-        Hlg2020 -> "HLG_2020"
-        Rec601 -> "REC_601"
-        Rec709 -> "REC_709"
-
-instance Hashable     ColorSpace
-instance NFData       ColorSpace
-instance ToByteString ColorSpace
-instance ToQuery      ColorSpace
-instance ToHeader     ColorSpace
-
-instance ToJSON ColorSpace where
-    toJSON = toJSONText
-
-instance FromJSON ColorSpace where
-    parseJSON = parseJSONText "ColorSpace"
-
--- | Determines if colorspace conversion will be performed. If set to _None_, no conversion will be performed. If _Force 601_ or _Force 709_ are selected, conversion will be performed for inputs with differing colorspaces. An input's colorspace can be specified explicitly in the "Video Selector":#inputs-video_selector if necessary.
-data ColorSpaceConversion
-  = CSCForce601
-  | CSCForce709
-  | CSCForceHDR10
-  | CSCForceHlg2020
-  | CSCNone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ColorSpaceConversion where
-    parser = takeLowerText >>= \case
-        "force_601" -> pure CSCForce601
-        "force_709" -> pure CSCForce709
-        "force_hdr10" -> pure CSCForceHDR10
-        "force_hlg_2020" -> pure CSCForceHlg2020
-        "none" -> pure CSCNone
-        e -> fromTextError $ "Failure parsing ColorSpaceConversion from value: '" <> e
-           <> "'. Accepted values: force_601, force_709, force_hdr10, force_hlg_2020, none"
-
-instance ToText ColorSpaceConversion where
-    toText = \case
-        CSCForce601 -> "FORCE_601"
-        CSCForce709 -> "FORCE_709"
-        CSCForceHDR10 -> "FORCE_HDR10"
-        CSCForceHlg2020 -> "FORCE_HLG_2020"
-        CSCNone -> "NONE"
-
-instance Hashable     ColorSpaceConversion
-instance NFData       ColorSpaceConversion
-instance ToByteString ColorSpaceConversion
-instance ToQuery      ColorSpaceConversion
-instance ToHeader     ColorSpaceConversion
-
-instance ToJSON ColorSpaceConversion where
-    toJSON = toJSONText
-
-instance FromJSON ColorSpaceConversion where
-    parseJSON = parseJSONText "ColorSpaceConversion"
-
--- | There are two sources for color metadata, the input file and the job configuration. This enum controls which takes precedence. FORCE: System will use color metadata supplied by user, if any. If the user does not supply color metadata the system will use data from the source. FALLBACK: System will use color metadata from the source. If source has no color metadata, the system will use user-supplied color metadata values if available.
-data ColorSpaceUsage
-  = Fallback
-  | Force
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ColorSpaceUsage where
-    parser = takeLowerText >>= \case
-        "fallback" -> pure Fallback
-        "force" -> pure Force
-        e -> fromTextError $ "Failure parsing ColorSpaceUsage from value: '" <> e
-           <> "'. Accepted values: fallback, force"
-
-instance ToText ColorSpaceUsage where
-    toText = \case
-        Fallback -> "FALLBACK"
-        Force -> "FORCE"
-
-instance Hashable     ColorSpaceUsage
-instance NFData       ColorSpaceUsage
-instance ToByteString ColorSpaceUsage
-instance ToQuery      ColorSpaceUsage
-instance ToHeader     ColorSpaceUsage
-
-instance ToJSON ColorSpaceUsage where
-    toJSON = toJSONText
-
-instance FromJSON ColorSpaceUsage where
-    parseJSON = parseJSONText "ColorSpaceUsage"
-
--- | Container for this output. Some containers require a container settings object. If not specified, the default object will be created.
-data ContainerType
-  = F4V
-  | Ismv
-  | M2TS
-  | M3U8
-  | MP4
-  | Mov
-  | Mpd
-  | Mxf
-  | Raw
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ContainerType where
-    parser = takeLowerText >>= \case
-        "f4v" -> pure F4V
-        "ismv" -> pure Ismv
-        "m2ts" -> pure M2TS
-        "m3u8" -> pure M3U8
-        "mp4" -> pure MP4
-        "mov" -> pure Mov
-        "mpd" -> pure Mpd
-        "mxf" -> pure Mxf
-        "raw" -> pure Raw
-        e -> fromTextError $ "Failure parsing ContainerType from value: '" <> e
-           <> "'. Accepted values: f4v, ismv, m2ts, m3u8, mp4, mov, mpd, mxf, raw"
-
-instance ToText ContainerType where
-    toText = \case
-        F4V -> "F4V"
-        Ismv -> "ISMV"
-        M2TS -> "M2TS"
-        M3U8 -> "M3U8"
-        MP4 -> "MP4"
-        Mov -> "MOV"
-        Mpd -> "MPD"
-        Mxf -> "MXF"
-        Raw -> "RAW"
-
-instance Hashable     ContainerType
-instance NFData       ContainerType
-instance ToByteString ContainerType
-instance ToQuery      ContainerType
-instance ToHeader     ContainerType
-
-instance ToJSON ContainerType where
-    toJSON = toJSONText
-
-instance FromJSON ContainerType where
-    parseJSON = parseJSONText "ContainerType"
-
--- | Supports HbbTV specification as indicated
-data DashIsoHbbtvCompliance
-  = DIHCHbbtv15
-  | DIHCNone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DashIsoHbbtvCompliance where
-    parser = takeLowerText >>= \case
-        "hbbtv_1_5" -> pure DIHCHbbtv15
-        "none" -> pure DIHCNone
-        e -> fromTextError $ "Failure parsing DashIsoHbbtvCompliance from value: '" <> e
-           <> "'. Accepted values: hbbtv_1_5, none"
-
-instance ToText DashIsoHbbtvCompliance where
-    toText = \case
-        DIHCHbbtv15 -> "HBBTV_1_5"
-        DIHCNone -> "NONE"
-
-instance Hashable     DashIsoHbbtvCompliance
-instance NFData       DashIsoHbbtvCompliance
-instance ToByteString DashIsoHbbtvCompliance
-instance ToQuery      DashIsoHbbtvCompliance
-instance ToHeader     DashIsoHbbtvCompliance
-
-instance ToJSON DashIsoHbbtvCompliance where
-    toJSON = toJSONText
-
-instance FromJSON DashIsoHbbtvCompliance where
-    parseJSON = parseJSONText "DashIsoHbbtvCompliance"
-
--- | When set to SINGLE_FILE, a single output file is generated, which is internally segmented using the Fragment Length and Segment Length. When set to SEGMENTED_FILES, separate segment files will be created.
-data DashIsoSegmentControl
-  = DISCSegmentedFiles
-  | DISCSingleFile
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DashIsoSegmentControl where
-    parser = takeLowerText >>= \case
-        "segmented_files" -> pure DISCSegmentedFiles
-        "single_file" -> pure DISCSingleFile
-        e -> fromTextError $ "Failure parsing DashIsoSegmentControl from value: '" <> e
-           <> "'. Accepted values: segmented_files, single_file"
-
-instance ToText DashIsoSegmentControl where
-    toText = \case
-        DISCSegmentedFiles -> "SEGMENTED_FILES"
-        DISCSingleFile -> "SINGLE_FILE"
-
-instance Hashable     DashIsoSegmentControl
-instance NFData       DashIsoSegmentControl
-instance ToByteString DashIsoSegmentControl
-instance ToQuery      DashIsoSegmentControl
-instance ToHeader     DashIsoSegmentControl
-
-instance ToJSON DashIsoSegmentControl where
-    toJSON = toJSONText
-
-instance FromJSON DashIsoSegmentControl where
-    parseJSON = parseJSONText "DashIsoSegmentControl"
-
--- | Only applies when you set Deinterlacer (DeinterlaceMode) to Deinterlace (DEINTERLACE) or Adaptive (ADAPTIVE). Motion adaptive interpolate (INTERPOLATE) produces sharper pictures, while blend (BLEND) produces smoother motion. Use (INTERPOLATE_TICKER) OR (BLEND_TICKER) if your source file includes a ticker, such as a scrolling headline at the bottom of the frame.
-data DeinterlaceAlgorithm
-  = DABlend
-  | DABlendTicker
-  | DAInterpolate
-  | DAInterpolateTicker
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DeinterlaceAlgorithm where
-    parser = takeLowerText >>= \case
-        "blend" -> pure DABlend
-        "blend_ticker" -> pure DABlendTicker
-        "interpolate" -> pure DAInterpolate
-        "interpolate_ticker" -> pure DAInterpolateTicker
-        e -> fromTextError $ "Failure parsing DeinterlaceAlgorithm from value: '" <> e
-           <> "'. Accepted values: blend, blend_ticker, interpolate, interpolate_ticker"
-
-instance ToText DeinterlaceAlgorithm where
-    toText = \case
-        DABlend -> "BLEND"
-        DABlendTicker -> "BLEND_TICKER"
-        DAInterpolate -> "INTERPOLATE"
-        DAInterpolateTicker -> "INTERPOLATE_TICKER"
-
-instance Hashable     DeinterlaceAlgorithm
-instance NFData       DeinterlaceAlgorithm
-instance ToByteString DeinterlaceAlgorithm
-instance ToQuery      DeinterlaceAlgorithm
-instance ToHeader     DeinterlaceAlgorithm
-
-instance ToJSON DeinterlaceAlgorithm where
-    toJSON = toJSONText
-
-instance FromJSON DeinterlaceAlgorithm where
-    parseJSON = parseJSONText "DeinterlaceAlgorithm"
-
--- | - When set to NORMAL (default), the deinterlacer does not convert frames that are tagged  in metadata as progressive. It will only convert those that are tagged as some other type. - When set to FORCE_ALL_FRAMES, the deinterlacer converts every frame to progressive - even those that are already tagged as progressive. Turn Force mode on only if there is  a good chance that the metadata has tagged frames as progressive when they are not  progressive. Do not turn on otherwise; processing frames that are already progressive  into progressive will probably result in lower quality video.
-data DeinterlacerControl
-  = ForceAllFrames
-  | Normal
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DeinterlacerControl where
-    parser = takeLowerText >>= \case
-        "force_all_frames" -> pure ForceAllFrames
-        "normal" -> pure Normal
-        e -> fromTextError $ "Failure parsing DeinterlacerControl from value: '" <> e
-           <> "'. Accepted values: force_all_frames, normal"
-
-instance ToText DeinterlacerControl where
-    toText = \case
-        ForceAllFrames -> "FORCE_ALL_FRAMES"
-        Normal -> "NORMAL"
-
-instance Hashable     DeinterlacerControl
-instance NFData       DeinterlacerControl
-instance ToByteString DeinterlacerControl
-instance ToQuery      DeinterlacerControl
-instance ToHeader     DeinterlacerControl
-
-instance ToJSON DeinterlacerControl where
-    toJSON = toJSONText
-
-instance FromJSON DeinterlacerControl where
-    parseJSON = parseJSONText "DeinterlacerControl"
-
--- | Use Deinterlacer (DeinterlaceMode) to choose how the service will do deinterlacing. Default is Deinterlace. - Deinterlace converts interlaced to progressive. - Inverse telecine converts Hard Telecine 29.97i to progressive 23.976p. - Adaptive auto-detects and converts to progressive.
-data DeinterlacerMode
-  = Adaptive
-  | Deinterlace
-  | InverseTelecine
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DeinterlacerMode where
-    parser = takeLowerText >>= \case
-        "adaptive" -> pure Adaptive
-        "deinterlace" -> pure Deinterlace
-        "inverse_telecine" -> pure InverseTelecine
-        e -> fromTextError $ "Failure parsing DeinterlacerMode from value: '" <> e
-           <> "'. Accepted values: adaptive, deinterlace, inverse_telecine"
-
-instance ToText DeinterlacerMode where
-    toText = \case
-        Adaptive -> "ADAPTIVE"
-        Deinterlace -> "DEINTERLACE"
-        InverseTelecine -> "INVERSE_TELECINE"
-
-instance Hashable     DeinterlacerMode
-instance NFData       DeinterlacerMode
-instance ToByteString DeinterlacerMode
-instance ToQuery      DeinterlacerMode
-instance ToHeader     DeinterlacerMode
-
-instance ToJSON DeinterlacerMode where
-    toJSON = toJSONText
-
-instance FromJSON DeinterlacerMode where
-    parseJSON = parseJSONText "DeinterlacerMode"
-
--- | Applies only to 29.97 fps outputs. When this feature is enabled, the service will use drop-frame timecode on outputs. If it is not possible to use drop-frame timecode, the system will fall back to non-drop-frame. This setting is enabled by default when Timecode insertion (TimecodeInsertion) is enabled.
-data DropFrameTimecode
-  = DFTDisabled
-  | DFTEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DropFrameTimecode where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure DFTDisabled
-        "enabled" -> pure DFTEnabled
-        e -> fromTextError $ "Failure parsing DropFrameTimecode from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText DropFrameTimecode where
-    toText = \case
-        DFTDisabled -> "DISABLED"
-        DFTEnabled -> "ENABLED"
-
-instance Hashable     DropFrameTimecode
-instance NFData       DropFrameTimecode
-instance ToByteString DropFrameTimecode
-instance ToQuery      DropFrameTimecode
-instance ToHeader     DropFrameTimecode
-
-instance ToJSON DropFrameTimecode where
-    toJSON = toJSONText
-
-instance FromJSON DropFrameTimecode where
-    parseJSON = parseJSONText "DropFrameTimecode"
-
--- | If no explicit x_position or y_position is provided, setting alignment to centered will place the captions at the bottom center of the output. Similarly, setting a left alignment will align captions to the bottom left of the output. If x and y positions are given in conjunction with the alignment parameter, the font will be justified (either left or centered) relative to those coordinates. This option is not valid for source captions that are STL, 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
-data DvbSubtitleAlignment
-  = Centered
-  | Left'
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DvbSubtitleAlignment where
-    parser = takeLowerText >>= \case
-        "centered" -> pure Centered
-        "left" -> pure Left'
-        e -> fromTextError $ "Failure parsing DvbSubtitleAlignment from value: '" <> e
-           <> "'. Accepted values: centered, left"
-
-instance ToText DvbSubtitleAlignment where
-    toText = \case
-        Centered -> "CENTERED"
-        Left' -> "LEFT"
-
-instance Hashable     DvbSubtitleAlignment
-instance NFData       DvbSubtitleAlignment
-instance ToByteString DvbSubtitleAlignment
-instance ToQuery      DvbSubtitleAlignment
-instance ToHeader     DvbSubtitleAlignment
-
-instance ToJSON DvbSubtitleAlignment where
-    toJSON = toJSONText
-
-instance FromJSON DvbSubtitleAlignment where
-    parseJSON = parseJSONText "DvbSubtitleAlignment"
-
--- | Specifies the color of the rectangle behind the captions.
---
--- All burn-in and DVB-Sub font settings must match.
-data DvbSubtitleBackgroundColor
-  = DSBCBlack
-  | DSBCNone
-  | DSBCWhite
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DvbSubtitleBackgroundColor where
-    parser = takeLowerText >>= \case
-        "black" -> pure DSBCBlack
-        "none" -> pure DSBCNone
-        "white" -> pure DSBCWhite
-        e -> fromTextError $ "Failure parsing DvbSubtitleBackgroundColor from value: '" <> e
-           <> "'. Accepted values: black, none, white"
-
-instance ToText DvbSubtitleBackgroundColor where
-    toText = \case
-        DSBCBlack -> "BLACK"
-        DSBCNone -> "NONE"
-        DSBCWhite -> "WHITE"
-
-instance Hashable     DvbSubtitleBackgroundColor
-instance NFData       DvbSubtitleBackgroundColor
-instance ToByteString DvbSubtitleBackgroundColor
-instance ToQuery      DvbSubtitleBackgroundColor
-instance ToHeader     DvbSubtitleBackgroundColor
-
-instance ToJSON DvbSubtitleBackgroundColor where
-    toJSON = toJSONText
-
-instance FromJSON DvbSubtitleBackgroundColor where
-    parseJSON = parseJSONText "DvbSubtitleBackgroundColor"
-
--- | Specifies the color of the burned-in captions. This option is not valid for source captions that are STL, 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
-data DvbSubtitleFontColor
-  = DSFCBlack
-  | DSFCBlue
-  | DSFCGreen
-  | DSFCRed
-  | DSFCWhite
-  | DSFCYellow
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DvbSubtitleFontColor where
-    parser = takeLowerText >>= \case
-        "black" -> pure DSFCBlack
-        "blue" -> pure DSFCBlue
-        "green" -> pure DSFCGreen
-        "red" -> pure DSFCRed
-        "white" -> pure DSFCWhite
-        "yellow" -> pure DSFCYellow
-        e -> fromTextError $ "Failure parsing DvbSubtitleFontColor from value: '" <> e
-           <> "'. Accepted values: black, blue, green, red, white, yellow"
-
-instance ToText DvbSubtitleFontColor where
-    toText = \case
-        DSFCBlack -> "BLACK"
-        DSFCBlue -> "BLUE"
-        DSFCGreen -> "GREEN"
-        DSFCRed -> "RED"
-        DSFCWhite -> "WHITE"
-        DSFCYellow -> "YELLOW"
-
-instance Hashable     DvbSubtitleFontColor
-instance NFData       DvbSubtitleFontColor
-instance ToByteString DvbSubtitleFontColor
-instance ToQuery      DvbSubtitleFontColor
-instance ToHeader     DvbSubtitleFontColor
-
-instance ToJSON DvbSubtitleFontColor where
-    toJSON = toJSONText
-
-instance FromJSON DvbSubtitleFontColor where
-    parseJSON = parseJSONText "DvbSubtitleFontColor"
-
--- | Specifies font outline color. This option is not valid for source captions that are either 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.
-data DvbSubtitleOutlineColor
-  = Black
-  | Blue
-  | Green
-  | Red
-  | White
-  | Yellow
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DvbSubtitleOutlineColor where
-    parser = takeLowerText >>= \case
-        "black" -> pure Black
-        "blue" -> pure Blue
-        "green" -> pure Green
-        "red" -> pure Red
-        "white" -> pure White
-        "yellow" -> pure Yellow
-        e -> fromTextError $ "Failure parsing DvbSubtitleOutlineColor from value: '" <> e
-           <> "'. Accepted values: black, blue, green, red, white, yellow"
-
-instance ToText DvbSubtitleOutlineColor where
-    toText = \case
-        Black -> "BLACK"
-        Blue -> "BLUE"
-        Green -> "GREEN"
-        Red -> "RED"
-        White -> "WHITE"
-        Yellow -> "YELLOW"
-
-instance Hashable     DvbSubtitleOutlineColor
-instance NFData       DvbSubtitleOutlineColor
-instance ToByteString DvbSubtitleOutlineColor
-instance ToQuery      DvbSubtitleOutlineColor
-instance ToHeader     DvbSubtitleOutlineColor
-
-instance ToJSON DvbSubtitleOutlineColor where
-    toJSON = toJSONText
-
-instance FromJSON DvbSubtitleOutlineColor where
-    parseJSON = parseJSONText "DvbSubtitleOutlineColor"
-
--- | Specifies the color of the shadow cast by the captions.
---
--- All burn-in and DVB-Sub font settings must match.
-data DvbSubtitleShadowColor
-  = DSSCBlack
-  | DSSCNone
-  | DSSCWhite
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DvbSubtitleShadowColor where
-    parser = takeLowerText >>= \case
-        "black" -> pure DSSCBlack
-        "none" -> pure DSSCNone
-        "white" -> pure DSSCWhite
-        e -> fromTextError $ "Failure parsing DvbSubtitleShadowColor from value: '" <> e
-           <> "'. Accepted values: black, none, white"
-
-instance ToText DvbSubtitleShadowColor where
-    toText = \case
-        DSSCBlack -> "BLACK"
-        DSSCNone -> "NONE"
-        DSSCWhite -> "WHITE"
-
-instance Hashable     DvbSubtitleShadowColor
-instance NFData       DvbSubtitleShadowColor
-instance ToByteString DvbSubtitleShadowColor
-instance ToQuery      DvbSubtitleShadowColor
-instance ToHeader     DvbSubtitleShadowColor
-
-instance ToJSON DvbSubtitleShadowColor where
-    toJSON = toJSONText
-
-instance FromJSON DvbSubtitleShadowColor where
-    parseJSON = parseJSONText "DvbSubtitleShadowColor"
-
--- | Controls whether a fixed grid size or proportional font spacing will be used to generate the output subtitles bitmap. Only applicable for Teletext inputs and DVB-Sub/Burn-in outputs.
-data DvbSubtitleTeletextSpacing
-  = FixedGrid
-  | Proportional
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DvbSubtitleTeletextSpacing where
-    parser = takeLowerText >>= \case
-        "fixed_grid" -> pure FixedGrid
-        "proportional" -> pure Proportional
-        e -> fromTextError $ "Failure parsing DvbSubtitleTeletextSpacing from value: '" <> e
-           <> "'. Accepted values: fixed_grid, proportional"
-
-instance ToText DvbSubtitleTeletextSpacing where
-    toText = \case
-        FixedGrid -> "FIXED_GRID"
-        Proportional -> "PROPORTIONAL"
-
-instance Hashable     DvbSubtitleTeletextSpacing
-instance NFData       DvbSubtitleTeletextSpacing
-instance ToByteString DvbSubtitleTeletextSpacing
-instance ToQuery      DvbSubtitleTeletextSpacing
-instance ToHeader     DvbSubtitleTeletextSpacing
-
-instance ToJSON DvbSubtitleTeletextSpacing where
-    toJSON = toJSONText
-
-instance FromJSON DvbSubtitleTeletextSpacing where
-    parseJSON = parseJSONText "DvbSubtitleTeletextSpacing"
-
--- | If set to ATTENUATE_3_DB, applies a 3 dB attenuation to the surround channels. Only used for 3/2 coding mode.
-data Eac3AttenuationControl
-  = EACAttenuate3DB
-  | EACNone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3AttenuationControl where
-    parser = takeLowerText >>= \case
-        "attenuate_3_db" -> pure EACAttenuate3DB
-        "none" -> pure EACNone
-        e -> fromTextError $ "Failure parsing Eac3AttenuationControl from value: '" <> e
-           <> "'. Accepted values: attenuate_3_db, none"
-
-instance ToText Eac3AttenuationControl where
-    toText = \case
-        EACAttenuate3DB -> "ATTENUATE_3_DB"
-        EACNone -> "NONE"
-
-instance Hashable     Eac3AttenuationControl
-instance NFData       Eac3AttenuationControl
-instance ToByteString Eac3AttenuationControl
-instance ToQuery      Eac3AttenuationControl
-instance ToHeader     Eac3AttenuationControl
-
-instance ToJSON Eac3AttenuationControl where
-    toJSON = toJSONText
-
-instance FromJSON Eac3AttenuationControl where
-    parseJSON = parseJSONText "Eac3AttenuationControl"
-
--- | Specifies the "Bitstream Mode" (bsmod) for the emitted E-AC-3 stream. See ATSC A/52-2012 (Annex E) for background on these values.
-data Eac3BitstreamMode
-  = EBMCommentary
-  | EBMCompleteMain
-  | EBMEmergency
-  | EBMHearingImpaired
-  | EBMVisuallyImpaired
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3BitstreamMode where
-    parser = takeLowerText >>= \case
-        "commentary" -> pure EBMCommentary
-        "complete_main" -> pure EBMCompleteMain
-        "emergency" -> pure EBMEmergency
-        "hearing_impaired" -> pure EBMHearingImpaired
-        "visually_impaired" -> pure EBMVisuallyImpaired
-        e -> fromTextError $ "Failure parsing Eac3BitstreamMode from value: '" <> e
-           <> "'. Accepted values: commentary, complete_main, emergency, hearing_impaired, visually_impaired"
-
-instance ToText Eac3BitstreamMode where
-    toText = \case
-        EBMCommentary -> "COMMENTARY"
-        EBMCompleteMain -> "COMPLETE_MAIN"
-        EBMEmergency -> "EMERGENCY"
-        EBMHearingImpaired -> "HEARING_IMPAIRED"
-        EBMVisuallyImpaired -> "VISUALLY_IMPAIRED"
-
-instance Hashable     Eac3BitstreamMode
-instance NFData       Eac3BitstreamMode
-instance ToByteString Eac3BitstreamMode
-instance ToQuery      Eac3BitstreamMode
-instance ToHeader     Eac3BitstreamMode
-
-instance ToJSON Eac3BitstreamMode where
-    toJSON = toJSONText
-
-instance FromJSON Eac3BitstreamMode where
-    parseJSON = parseJSONText "Eac3BitstreamMode"
-
--- | Dolby Digital Plus coding mode. Determines number of channels.
-data Eac3CodingMode
-  = ECMCodingMode10
-  | ECMCodingMode20
-  | ECMCodingMode32
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3CodingMode where
-    parser = takeLowerText >>= \case
-        "coding_mode_1_0" -> pure ECMCodingMode10
-        "coding_mode_2_0" -> pure ECMCodingMode20
-        "coding_mode_3_2" -> pure ECMCodingMode32
-        e -> fromTextError $ "Failure parsing Eac3CodingMode from value: '" <> e
-           <> "'. Accepted values: coding_mode_1_0, coding_mode_2_0, coding_mode_3_2"
-
-instance ToText Eac3CodingMode where
-    toText = \case
-        ECMCodingMode10 -> "CODING_MODE_1_0"
-        ECMCodingMode20 -> "CODING_MODE_2_0"
-        ECMCodingMode32 -> "CODING_MODE_3_2"
-
-instance Hashable     Eac3CodingMode
-instance NFData       Eac3CodingMode
-instance ToByteString Eac3CodingMode
-instance ToQuery      Eac3CodingMode
-instance ToHeader     Eac3CodingMode
-
-instance ToJSON Eac3CodingMode where
-    toJSON = toJSONText
-
-instance FromJSON Eac3CodingMode where
-    parseJSON = parseJSONText "Eac3CodingMode"
-
--- | Activates a DC highpass filter for all input channels.
-data Eac3DcFilter
-  = EDFDisabled
-  | EDFEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3DcFilter where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure EDFDisabled
-        "enabled" -> pure EDFEnabled
-        e -> fromTextError $ "Failure parsing Eac3DcFilter from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText Eac3DcFilter where
-    toText = \case
-        EDFDisabled -> "DISABLED"
-        EDFEnabled -> "ENABLED"
-
-instance Hashable     Eac3DcFilter
-instance NFData       Eac3DcFilter
-instance ToByteString Eac3DcFilter
-instance ToQuery      Eac3DcFilter
-instance ToHeader     Eac3DcFilter
-
-instance ToJSON Eac3DcFilter where
-    toJSON = toJSONText
-
-instance FromJSON Eac3DcFilter where
-    parseJSON = parseJSONText "Eac3DcFilter"
-
--- | Enables Dynamic Range Compression that restricts the absolute peak level for a signal.
-data Eac3DynamicRangeCompressionLine
-  = EDRCLFilmLight
-  | EDRCLFilmStandard
-  | EDRCLMusicLight
-  | EDRCLMusicStandard
-  | EDRCLNone
-  | EDRCLSpeech
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3DynamicRangeCompressionLine where
-    parser = takeLowerText >>= \case
-        "film_light" -> pure EDRCLFilmLight
-        "film_standard" -> pure EDRCLFilmStandard
-        "music_light" -> pure EDRCLMusicLight
-        "music_standard" -> pure EDRCLMusicStandard
-        "none" -> pure EDRCLNone
-        "speech" -> pure EDRCLSpeech
-        e -> fromTextError $ "Failure parsing Eac3DynamicRangeCompressionLine from value: '" <> e
-           <> "'. Accepted values: film_light, film_standard, music_light, music_standard, none, speech"
-
-instance ToText Eac3DynamicRangeCompressionLine where
-    toText = \case
-        EDRCLFilmLight -> "FILM_LIGHT"
-        EDRCLFilmStandard -> "FILM_STANDARD"
-        EDRCLMusicLight -> "MUSIC_LIGHT"
-        EDRCLMusicStandard -> "MUSIC_STANDARD"
-        EDRCLNone -> "NONE"
-        EDRCLSpeech -> "SPEECH"
-
-instance Hashable     Eac3DynamicRangeCompressionLine
-instance NFData       Eac3DynamicRangeCompressionLine
-instance ToByteString Eac3DynamicRangeCompressionLine
-instance ToQuery      Eac3DynamicRangeCompressionLine
-instance ToHeader     Eac3DynamicRangeCompressionLine
-
-instance ToJSON Eac3DynamicRangeCompressionLine where
-    toJSON = toJSONText
-
-instance FromJSON Eac3DynamicRangeCompressionLine where
-    parseJSON = parseJSONText "Eac3DynamicRangeCompressionLine"
-
--- | Enables Heavy Dynamic Range Compression, ensures that the instantaneous signal peaks do not exceed specified levels.
-data Eac3DynamicRangeCompressionRf
-  = EDRCRFilmLight
-  | EDRCRFilmStandard
-  | EDRCRMusicLight
-  | EDRCRMusicStandard
-  | EDRCRNone
-  | EDRCRSpeech
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3DynamicRangeCompressionRf where
-    parser = takeLowerText >>= \case
-        "film_light" -> pure EDRCRFilmLight
-        "film_standard" -> pure EDRCRFilmStandard
-        "music_light" -> pure EDRCRMusicLight
-        "music_standard" -> pure EDRCRMusicStandard
-        "none" -> pure EDRCRNone
-        "speech" -> pure EDRCRSpeech
-        e -> fromTextError $ "Failure parsing Eac3DynamicRangeCompressionRf from value: '" <> e
-           <> "'. Accepted values: film_light, film_standard, music_light, music_standard, none, speech"
-
-instance ToText Eac3DynamicRangeCompressionRf where
-    toText = \case
-        EDRCRFilmLight -> "FILM_LIGHT"
-        EDRCRFilmStandard -> "FILM_STANDARD"
-        EDRCRMusicLight -> "MUSIC_LIGHT"
-        EDRCRMusicStandard -> "MUSIC_STANDARD"
-        EDRCRNone -> "NONE"
-        EDRCRSpeech -> "SPEECH"
-
-instance Hashable     Eac3DynamicRangeCompressionRf
-instance NFData       Eac3DynamicRangeCompressionRf
-instance ToByteString Eac3DynamicRangeCompressionRf
-instance ToQuery      Eac3DynamicRangeCompressionRf
-instance ToHeader     Eac3DynamicRangeCompressionRf
-
-instance ToJSON Eac3DynamicRangeCompressionRf where
-    toJSON = toJSONText
-
-instance FromJSON Eac3DynamicRangeCompressionRf where
-    parseJSON = parseJSONText "Eac3DynamicRangeCompressionRf"
-
--- | When encoding 3/2 audio, controls whether the LFE channel is enabled
-data Eac3LfeControl
-  = Lfe
-  | NoLfe
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3LfeControl where
-    parser = takeLowerText >>= \case
-        "lfe" -> pure Lfe
-        "no_lfe" -> pure NoLfe
-        e -> fromTextError $ "Failure parsing Eac3LfeControl from value: '" <> e
-           <> "'. Accepted values: lfe, no_lfe"
-
-instance ToText Eac3LfeControl where
-    toText = \case
-        Lfe -> "LFE"
-        NoLfe -> "NO_LFE"
-
-instance Hashable     Eac3LfeControl
-instance NFData       Eac3LfeControl
-instance ToByteString Eac3LfeControl
-instance ToQuery      Eac3LfeControl
-instance ToHeader     Eac3LfeControl
-
-instance ToJSON Eac3LfeControl where
-    toJSON = toJSONText
-
-instance FromJSON Eac3LfeControl where
-    parseJSON = parseJSONText "Eac3LfeControl"
-
--- | Applies a 120Hz lowpass filter to the LFE channel prior to encoding. Only valid with 3_2_LFE coding mode.
-data Eac3LfeFilter
-  = ELFDisabled
-  | ELFEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3LfeFilter where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure ELFDisabled
-        "enabled" -> pure ELFEnabled
-        e -> fromTextError $ "Failure parsing Eac3LfeFilter from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText Eac3LfeFilter where
-    toText = \case
-        ELFDisabled -> "DISABLED"
-        ELFEnabled -> "ENABLED"
-
-instance Hashable     Eac3LfeFilter
-instance NFData       Eac3LfeFilter
-instance ToByteString Eac3LfeFilter
-instance ToQuery      Eac3LfeFilter
-instance ToHeader     Eac3LfeFilter
-
-instance ToJSON Eac3LfeFilter where
-    toJSON = toJSONText
-
-instance FromJSON Eac3LfeFilter where
-    parseJSON = parseJSONText "Eac3LfeFilter"
-
--- | 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.
-data Eac3MetadataControl
-  = EMCFollowInput
-  | EMCUseConfigured
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3MetadataControl where
-    parser = takeLowerText >>= \case
-        "follow_input" -> pure EMCFollowInput
-        "use_configured" -> pure EMCUseConfigured
-        e -> fromTextError $ "Failure parsing Eac3MetadataControl from value: '" <> e
-           <> "'. Accepted values: follow_input, use_configured"
-
-instance ToText Eac3MetadataControl where
-    toText = \case
-        EMCFollowInput -> "FOLLOW_INPUT"
-        EMCUseConfigured -> "USE_CONFIGURED"
-
-instance Hashable     Eac3MetadataControl
-instance NFData       Eac3MetadataControl
-instance ToByteString Eac3MetadataControl
-instance ToQuery      Eac3MetadataControl
-instance ToHeader     Eac3MetadataControl
-
-instance ToJSON Eac3MetadataControl where
-    toJSON = toJSONText
-
-instance FromJSON Eac3MetadataControl where
-    parseJSON = parseJSONText "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.
-data Eac3PassthroughControl
-  = NoPassthrough
-  | WhenPossible
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3PassthroughControl where
-    parser = takeLowerText >>= \case
-        "no_passthrough" -> pure NoPassthrough
-        "when_possible" -> pure WhenPossible
-        e -> fromTextError $ "Failure parsing Eac3PassthroughControl from value: '" <> e
-           <> "'. Accepted values: no_passthrough, when_possible"
-
-instance ToText Eac3PassthroughControl where
-    toText = \case
-        NoPassthrough -> "NO_PASSTHROUGH"
-        WhenPossible -> "WHEN_POSSIBLE"
-
-instance Hashable     Eac3PassthroughControl
-instance NFData       Eac3PassthroughControl
-instance ToByteString Eac3PassthroughControl
-instance ToQuery      Eac3PassthroughControl
-instance ToHeader     Eac3PassthroughControl
-
-instance ToJSON Eac3PassthroughControl where
-    toJSON = toJSONText
-
-instance FromJSON Eac3PassthroughControl where
-    parseJSON = parseJSONText "Eac3PassthroughControl"
-
--- | Controls the amount of phase-shift applied to the surround channels. Only used for 3/2 coding mode.
-data Eac3PhaseControl
-  = NoShift
-  | Shift90Degrees
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3PhaseControl where
-    parser = takeLowerText >>= \case
-        "no_shift" -> pure NoShift
-        "shift_90_degrees" -> pure Shift90Degrees
-        e -> fromTextError $ "Failure parsing Eac3PhaseControl from value: '" <> e
-           <> "'. Accepted values: no_shift, shift_90_degrees"
-
-instance ToText Eac3PhaseControl where
-    toText = \case
-        NoShift -> "NO_SHIFT"
-        Shift90Degrees -> "SHIFT_90_DEGREES"
-
-instance Hashable     Eac3PhaseControl
-instance NFData       Eac3PhaseControl
-instance ToByteString Eac3PhaseControl
-instance ToQuery      Eac3PhaseControl
-instance ToHeader     Eac3PhaseControl
-
-instance ToJSON Eac3PhaseControl where
-    toJSON = toJSONText
-
-instance FromJSON Eac3PhaseControl where
-    parseJSON = parseJSONText "Eac3PhaseControl"
-
--- | Stereo downmix preference. Only used for 3/2 coding mode.
-data Eac3StereoDownmix
-  = DPL2
-  | LoRo
-  | LtRt
-  | NotIndicated
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3StereoDownmix where
-    parser = takeLowerText >>= \case
-        "dpl2" -> pure DPL2
-        "lo_ro" -> pure LoRo
-        "lt_rt" -> pure LtRt
-        "not_indicated" -> pure NotIndicated
-        e -> fromTextError $ "Failure parsing Eac3StereoDownmix from value: '" <> e
-           <> "'. Accepted values: dpl2, lo_ro, lt_rt, not_indicated"
-
-instance ToText Eac3StereoDownmix where
-    toText = \case
-        DPL2 -> "DPL2"
-        LoRo -> "LO_RO"
-        LtRt -> "LT_RT"
-        NotIndicated -> "NOT_INDICATED"
-
-instance Hashable     Eac3StereoDownmix
-instance NFData       Eac3StereoDownmix
-instance ToByteString Eac3StereoDownmix
-instance ToQuery      Eac3StereoDownmix
-instance ToHeader     Eac3StereoDownmix
-
-instance ToJSON Eac3StereoDownmix where
-    toJSON = toJSONText
-
-instance FromJSON Eac3StereoDownmix where
-    parseJSON = parseJSONText "Eac3StereoDownmix"
-
--- | When encoding 3/2 audio, sets whether an extra center back surround channel is matrix encoded into the left and right surround channels.
-data Eac3SurroundExMode
-  = ESEMDisabled
-  | ESEMEnabled
-  | ESEMNotIndicated
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3SurroundExMode where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure ESEMDisabled
-        "enabled" -> pure ESEMEnabled
-        "not_indicated" -> pure ESEMNotIndicated
-        e -> fromTextError $ "Failure parsing Eac3SurroundExMode from value: '" <> e
-           <> "'. Accepted values: disabled, enabled, not_indicated"
-
-instance ToText Eac3SurroundExMode where
-    toText = \case
-        ESEMDisabled -> "DISABLED"
-        ESEMEnabled -> "ENABLED"
-        ESEMNotIndicated -> "NOT_INDICATED"
-
-instance Hashable     Eac3SurroundExMode
-instance NFData       Eac3SurroundExMode
-instance ToByteString Eac3SurroundExMode
-instance ToQuery      Eac3SurroundExMode
-instance ToHeader     Eac3SurroundExMode
-
-instance ToJSON Eac3SurroundExMode where
-    toJSON = toJSONText
-
-instance FromJSON Eac3SurroundExMode where
-    parseJSON = parseJSONText "Eac3SurroundExMode"
-
--- | When encoding 2/0 audio, sets whether Dolby Surround is matrix encoded into the two channels.
-data Eac3SurroundMode
-  = ESMDisabled
-  | ESMEnabled
-  | ESMNotIndicated
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Eac3SurroundMode where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure ESMDisabled
-        "enabled" -> pure ESMEnabled
-        "not_indicated" -> pure ESMNotIndicated
-        e -> fromTextError $ "Failure parsing Eac3SurroundMode from value: '" <> e
-           <> "'. Accepted values: disabled, enabled, not_indicated"
-
-instance ToText Eac3SurroundMode where
-    toText = \case
-        ESMDisabled -> "DISABLED"
-        ESMEnabled -> "ENABLED"
-        ESMNotIndicated -> "NOT_INDICATED"
-
-instance Hashable     Eac3SurroundMode
-instance NFData       Eac3SurroundMode
-instance ToByteString Eac3SurroundMode
-instance ToQuery      Eac3SurroundMode
-instance ToHeader     Eac3SurroundMode
-
-instance ToJSON Eac3SurroundMode where
-    toJSON = toJSONText
-
-instance FromJSON Eac3SurroundMode where
-    parseJSON = parseJSONText "Eac3SurroundMode"
-
--- | When set to UPCONVERT, 608 data is both passed through via the "608 compatibility bytes" fields of the 708 wrapper as well as translated into 708. 708 data present in the source content will be discarded.
-data EmbeddedConvert608To708
-  = ECTDisabled
-  | ECTUpconvert
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText EmbeddedConvert608To708 where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure ECTDisabled
-        "upconvert" -> pure ECTUpconvert
-        e -> fromTextError $ "Failure parsing EmbeddedConvert608To708 from value: '" <> e
-           <> "'. Accepted values: disabled, upconvert"
-
-instance ToText EmbeddedConvert608To708 where
-    toText = \case
-        ECTDisabled -> "DISABLED"
-        ECTUpconvert -> "UPCONVERT"
-
-instance Hashable     EmbeddedConvert608To708
-instance NFData       EmbeddedConvert608To708
-instance ToByteString EmbeddedConvert608To708
-instance ToQuery      EmbeddedConvert608To708
-instance ToHeader     EmbeddedConvert608To708
-
-instance ToJSON EmbeddedConvert608To708 where
-    toJSON = toJSONText
-
-instance FromJSON EmbeddedConvert608To708 where
-    parseJSON = parseJSONText "EmbeddedConvert608To708"
-
--- | If set to PROGRESSIVE_DOWNLOAD, the MOOV atom is relocated to the beginning of the archive as required for progressive downloading. Otherwise it is placed normally at the end.
-data F4vMoovPlacement
-  = FMPNormal
-  | FMPProgressiveDownload
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText F4vMoovPlacement where
-    parser = takeLowerText >>= \case
-        "normal" -> pure FMPNormal
-        "progressive_download" -> pure FMPProgressiveDownload
-        e -> fromTextError $ "Failure parsing F4vMoovPlacement from value: '" <> e
-           <> "'. Accepted values: normal, progressive_download"
-
-instance ToText F4vMoovPlacement where
-    toText = \case
-        FMPNormal -> "NORMAL"
-        FMPProgressiveDownload -> "PROGRESSIVE_DOWNLOAD"
-
-instance Hashable     F4vMoovPlacement
-instance NFData       F4vMoovPlacement
-instance ToByteString F4vMoovPlacement
-instance ToQuery      F4vMoovPlacement
-instance ToHeader     F4vMoovPlacement
-
-instance ToJSON F4vMoovPlacement where
-    toJSON = toJSONText
-
-instance FromJSON F4vMoovPlacement where
-    parseJSON = parseJSONText "F4vMoovPlacement"
-
--- | If set to UPCONVERT, 608 caption data is both passed through via the "608 compatibility bytes" fields of the 708 wrapper as well as translated into 708. 708 data present in the source content will be discarded.
-data FileSourceConvert608To708
-  = FSCTDisabled
-  | FSCTUpconvert
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText FileSourceConvert608To708 where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure FSCTDisabled
-        "upconvert" -> pure FSCTUpconvert
-        e -> fromTextError $ "Failure parsing FileSourceConvert608To708 from value: '" <> e
-           <> "'. Accepted values: disabled, upconvert"
-
-instance ToText FileSourceConvert608To708 where
-    toText = \case
-        FSCTDisabled -> "DISABLED"
-        FSCTUpconvert -> "UPCONVERT"
-
-instance Hashable     FileSourceConvert608To708
-instance NFData       FileSourceConvert608To708
-instance ToByteString FileSourceConvert608To708
-instance ToQuery      FileSourceConvert608To708
-instance ToHeader     FileSourceConvert608To708
-
-instance ToJSON FileSourceConvert608To708 where
-    toJSON = toJSONText
-
-instance FromJSON FileSourceConvert608To708 where
-    parseJSON = parseJSONText "FileSourceConvert608To708"
-
--- | Adaptive quantization. Allows intra-frame quantizers to vary to improve visual quality.
-data H264AdaptiveQuantization
-  = HAQHigh
-  | HAQHigher
-  | HAQLow
-  | HAQMax
-  | HAQMedium
-  | HAQOff
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264AdaptiveQuantization where
-    parser = takeLowerText >>= \case
-        "high" -> pure HAQHigh
-        "higher" -> pure HAQHigher
-        "low" -> pure HAQLow
-        "max" -> pure HAQMax
-        "medium" -> pure HAQMedium
-        "off" -> pure HAQOff
-        e -> fromTextError $ "Failure parsing H264AdaptiveQuantization from value: '" <> e
-           <> "'. Accepted values: high, higher, low, max, medium, off"
-
-instance ToText H264AdaptiveQuantization where
-    toText = \case
-        HAQHigh -> "HIGH"
-        HAQHigher -> "HIGHER"
-        HAQLow -> "LOW"
-        HAQMax -> "MAX"
-        HAQMedium -> "MEDIUM"
-        HAQOff -> "OFF"
-
-instance Hashable     H264AdaptiveQuantization
-instance NFData       H264AdaptiveQuantization
-instance ToByteString H264AdaptiveQuantization
-instance ToQuery      H264AdaptiveQuantization
-instance ToHeader     H264AdaptiveQuantization
-
-instance ToJSON H264AdaptiveQuantization where
-    toJSON = toJSONText
-
-instance FromJSON H264AdaptiveQuantization where
-    parseJSON = parseJSONText "H264AdaptiveQuantization"
-
--- | H.264 Level.
-data H264CodecLevel
-  = HCLAuto
-  | HCLLevel1
-  | HCLLevel11
-  | HCLLevel12
-  | HCLLevel13
-  | HCLLevel2
-  | HCLLevel21
-  | HCLLevel22
-  | HCLLevel3
-  | HCLLevel31
-  | HCLLevel32
-  | HCLLevel4
-  | HCLLevel41
-  | HCLLevel42
-  | HCLLevel5
-  | HCLLevel51
-  | HCLLevel52
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264CodecLevel where
-    parser = takeLowerText >>= \case
-        "auto" -> pure HCLAuto
-        "level_1" -> pure HCLLevel1
-        "level_1_1" -> pure HCLLevel11
-        "level_1_2" -> pure HCLLevel12
-        "level_1_3" -> pure HCLLevel13
-        "level_2" -> pure HCLLevel2
-        "level_2_1" -> pure HCLLevel21
-        "level_2_2" -> pure HCLLevel22
-        "level_3" -> pure HCLLevel3
-        "level_3_1" -> pure HCLLevel31
-        "level_3_2" -> pure HCLLevel32
-        "level_4" -> pure HCLLevel4
-        "level_4_1" -> pure HCLLevel41
-        "level_4_2" -> pure HCLLevel42
-        "level_5" -> pure HCLLevel5
-        "level_5_1" -> pure HCLLevel51
-        "level_5_2" -> pure HCLLevel52
-        e -> fromTextError $ "Failure parsing H264CodecLevel from value: '" <> e
-           <> "'. Accepted values: auto, level_1, level_1_1, level_1_2, level_1_3, level_2, level_2_1, level_2_2, level_3, level_3_1, level_3_2, level_4, level_4_1, level_4_2, level_5, level_5_1, level_5_2"
-
-instance ToText H264CodecLevel where
-    toText = \case
-        HCLAuto -> "AUTO"
-        HCLLevel1 -> "LEVEL_1"
-        HCLLevel11 -> "LEVEL_1_1"
-        HCLLevel12 -> "LEVEL_1_2"
-        HCLLevel13 -> "LEVEL_1_3"
-        HCLLevel2 -> "LEVEL_2"
-        HCLLevel21 -> "LEVEL_2_1"
-        HCLLevel22 -> "LEVEL_2_2"
-        HCLLevel3 -> "LEVEL_3"
-        HCLLevel31 -> "LEVEL_3_1"
-        HCLLevel32 -> "LEVEL_3_2"
-        HCLLevel4 -> "LEVEL_4"
-        HCLLevel41 -> "LEVEL_4_1"
-        HCLLevel42 -> "LEVEL_4_2"
-        HCLLevel5 -> "LEVEL_5"
-        HCLLevel51 -> "LEVEL_5_1"
-        HCLLevel52 -> "LEVEL_5_2"
-
-instance Hashable     H264CodecLevel
-instance NFData       H264CodecLevel
-instance ToByteString H264CodecLevel
-instance ToQuery      H264CodecLevel
-instance ToHeader     H264CodecLevel
-
-instance ToJSON H264CodecLevel where
-    toJSON = toJSONText
-
-instance FromJSON H264CodecLevel where
-    parseJSON = parseJSONText "H264CodecLevel"
-
--- | H.264 Profile. High 4:2:2 and 10-bit profiles are only available with the AVC-I License.
-data H264CodecProfile
-  = HCPBaseline
-  | HCPHigh
-  | HCPHigh10BIT
-  | HCPHigh422
-  | HCPHigh42210BIT
-  | HCPMain
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264CodecProfile where
-    parser = takeLowerText >>= \case
-        "baseline" -> pure HCPBaseline
-        "high" -> pure HCPHigh
-        "high_10bit" -> pure HCPHigh10BIT
-        "high_422" -> pure HCPHigh422
-        "high_422_10bit" -> pure HCPHigh42210BIT
-        "main" -> pure HCPMain
-        e -> fromTextError $ "Failure parsing H264CodecProfile from value: '" <> e
-           <> "'. Accepted values: baseline, high, high_10bit, high_422, high_422_10bit, main"
-
-instance ToText H264CodecProfile where
-    toText = \case
-        HCPBaseline -> "BASELINE"
-        HCPHigh -> "HIGH"
-        HCPHigh10BIT -> "HIGH_10BIT"
-        HCPHigh422 -> "HIGH_422"
-        HCPHigh42210BIT -> "HIGH_422_10BIT"
-        HCPMain -> "MAIN"
-
-instance Hashable     H264CodecProfile
-instance NFData       H264CodecProfile
-instance ToByteString H264CodecProfile
-instance ToQuery      H264CodecProfile
-instance ToHeader     H264CodecProfile
-
-instance ToJSON H264CodecProfile where
-    toJSON = toJSONText
-
-instance FromJSON H264CodecProfile where
-    parseJSON = parseJSONText "H264CodecProfile"
-
--- | Entropy encoding mode. Use CABAC (must be in Main or High profile) or CAVLC.
-data H264EntropyEncoding
-  = Cabac
-  | Cavlc
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264EntropyEncoding where
-    parser = takeLowerText >>= \case
-        "cabac" -> pure Cabac
-        "cavlc" -> pure Cavlc
-        e -> fromTextError $ "Failure parsing H264EntropyEncoding from value: '" <> e
-           <> "'. Accepted values: cabac, cavlc"
-
-instance ToText H264EntropyEncoding where
-    toText = \case
-        Cabac -> "CABAC"
-        Cavlc -> "CAVLC"
-
-instance Hashable     H264EntropyEncoding
-instance NFData       H264EntropyEncoding
-instance ToByteString H264EntropyEncoding
-instance ToQuery      H264EntropyEncoding
-instance ToHeader     H264EntropyEncoding
-
-instance ToJSON H264EntropyEncoding where
-    toJSON = toJSONText
-
-instance FromJSON H264EntropyEncoding where
-    parseJSON = parseJSONText "H264EntropyEncoding"
-
--- | Choosing FORCE_FIELD disables PAFF encoding for interlaced outputs.
-data H264FieldEncoding
-  = ForceField
-  | Paff
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264FieldEncoding where
-    parser = takeLowerText >>= \case
-        "force_field" -> pure ForceField
-        "paff" -> pure Paff
-        e -> fromTextError $ "Failure parsing H264FieldEncoding from value: '" <> e
-           <> "'. Accepted values: force_field, paff"
-
-instance ToText H264FieldEncoding where
-    toText = \case
-        ForceField -> "FORCE_FIELD"
-        Paff -> "PAFF"
-
-instance Hashable     H264FieldEncoding
-instance NFData       H264FieldEncoding
-instance ToByteString H264FieldEncoding
-instance ToQuery      H264FieldEncoding
-instance ToHeader     H264FieldEncoding
-
-instance ToJSON H264FieldEncoding where
-    toJSON = toJSONText
-
-instance FromJSON H264FieldEncoding where
-    parseJSON = parseJSONText "H264FieldEncoding"
-
--- | Adjust quantization within each frame to reduce flicker or 'pop' on I-frames.
-data H264FlickerAdaptiveQuantization
-  = HFAQFDisabled
-  | HFAQFEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264FlickerAdaptiveQuantization where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HFAQFDisabled
-        "enabled" -> pure HFAQFEnabled
-        e -> fromTextError $ "Failure parsing H264FlickerAdaptiveQuantization from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H264FlickerAdaptiveQuantization where
-    toText = \case
-        HFAQFDisabled -> "DISABLED"
-        HFAQFEnabled -> "ENABLED"
-
-instance Hashable     H264FlickerAdaptiveQuantization
-instance NFData       H264FlickerAdaptiveQuantization
-instance ToByteString H264FlickerAdaptiveQuantization
-instance ToQuery      H264FlickerAdaptiveQuantization
-instance ToHeader     H264FlickerAdaptiveQuantization
-
-instance ToJSON H264FlickerAdaptiveQuantization where
-    toJSON = toJSONText
-
-instance FromJSON H264FlickerAdaptiveQuantization where
-    parseJSON = parseJSONText "H264FlickerAdaptiveQuantization"
-
--- | Using the API, set FramerateControl to INITIALIZE_FROM_SOURCE if you want the service to use the framerate from the input. Using the console, do this by choosing INITIALIZE_FROM_SOURCE for Framerate.
-data H264FramerateControl
-  = HInitializeFromSource
-  | HSpecified
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264FramerateControl where
-    parser = takeLowerText >>= \case
-        "initialize_from_source" -> pure HInitializeFromSource
-        "specified" -> pure HSpecified
-        e -> fromTextError $ "Failure parsing H264FramerateControl from value: '" <> e
-           <> "'. Accepted values: initialize_from_source, specified"
-
-instance ToText H264FramerateControl where
-    toText = \case
-        HInitializeFromSource -> "INITIALIZE_FROM_SOURCE"
-        HSpecified -> "SPECIFIED"
-
-instance Hashable     H264FramerateControl
-instance NFData       H264FramerateControl
-instance ToByteString H264FramerateControl
-instance ToQuery      H264FramerateControl
-instance ToHeader     H264FramerateControl
-
-instance ToJSON H264FramerateControl where
-    toJSON = toJSONText
-
-instance FromJSON H264FramerateControl where
-    parseJSON = parseJSONText "H264FramerateControl"
-
--- | When set to INTERPOLATE, produces smoother motion during framerate conversion.
-data H264FramerateConversionAlgorithm
-  = HFCADuplicateDrop
-  | HFCAInterpolate
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264FramerateConversionAlgorithm where
-    parser = takeLowerText >>= \case
-        "duplicate_drop" -> pure HFCADuplicateDrop
-        "interpolate" -> pure HFCAInterpolate
-        e -> fromTextError $ "Failure parsing H264FramerateConversionAlgorithm from value: '" <> e
-           <> "'. Accepted values: duplicate_drop, interpolate"
-
-instance ToText H264FramerateConversionAlgorithm where
-    toText = \case
-        HFCADuplicateDrop -> "DUPLICATE_DROP"
-        HFCAInterpolate -> "INTERPOLATE"
-
-instance Hashable     H264FramerateConversionAlgorithm
-instance NFData       H264FramerateConversionAlgorithm
-instance ToByteString H264FramerateConversionAlgorithm
-instance ToQuery      H264FramerateConversionAlgorithm
-instance ToHeader     H264FramerateConversionAlgorithm
-
-instance ToJSON H264FramerateConversionAlgorithm where
-    toJSON = toJSONText
-
-instance FromJSON H264FramerateConversionAlgorithm where
-    parseJSON = parseJSONText "H264FramerateConversionAlgorithm"
-
--- | If enable, use reference B frames for GOP structures that have B frames > 1.
-data H264GopBReference
-  = HGBRGDisabled
-  | HGBRGEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264GopBReference where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HGBRGDisabled
-        "enabled" -> pure HGBRGEnabled
-        e -> fromTextError $ "Failure parsing H264GopBReference from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H264GopBReference where
-    toText = \case
-        HGBRGDisabled -> "DISABLED"
-        HGBRGEnabled -> "ENABLED"
-
-instance Hashable     H264GopBReference
-instance NFData       H264GopBReference
-instance ToByteString H264GopBReference
-instance ToQuery      H264GopBReference
-instance ToHeader     H264GopBReference
-
-instance ToJSON H264GopBReference where
-    toJSON = toJSONText
-
-instance FromJSON H264GopBReference where
-    parseJSON = parseJSONText "H264GopBReference"
-
--- | Indicates if the GOP Size in H264 is specified in frames or seconds. If seconds the system will convert the GOP Size into a frame count at run time.
-data H264GopSizeUnits
-  = HGSUFrames
-  | HGSUSeconds
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264GopSizeUnits where
-    parser = takeLowerText >>= \case
-        "frames" -> pure HGSUFrames
-        "seconds" -> pure HGSUSeconds
-        e -> fromTextError $ "Failure parsing H264GopSizeUnits from value: '" <> e
-           <> "'. Accepted values: frames, seconds"
-
-instance ToText H264GopSizeUnits where
-    toText = \case
-        HGSUFrames -> "FRAMES"
-        HGSUSeconds -> "SECONDS"
-
-instance Hashable     H264GopSizeUnits
-instance NFData       H264GopSizeUnits
-instance ToByteString H264GopSizeUnits
-instance ToQuery      H264GopSizeUnits
-instance ToHeader     H264GopSizeUnits
-
-instance ToJSON H264GopSizeUnits where
-    toJSON = toJSONText
-
-instance FromJSON H264GopSizeUnits where
-    parseJSON = parseJSONText "H264GopSizeUnits"
-
--- | Use Interlace mode (InterlaceMode) to choose the scan line type for the output. * Top Field First (TOP_FIELD) and Bottom Field First (BOTTOM_FIELD) produce interlaced output with the entire output having the same field polarity (top or bottom first). * Follow, Default Top (FOLLOw_TOP_FIELD) and Follow, Default Bottom (FOLLOW_BOTTOM_FIELD) use the same  field polarity as the source. Therefore, behavior depends on the input scan type. - If the source is interlaced, the output will be interlaced with the same polarity as the source (it will follow the source). The output could therefore be a mix of "top field first" and "bottom field first". - If the source is progressive, the output will be interlaced with "top field first" or "bottom field first" polarity, depending on which of the Follow options you chose.
-data H264InterlaceMode
-  = HIMBottomField
-  | HIMFollowBottomField
-  | HIMFollowTopField
-  | HIMProgressive
-  | HIMTopField
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264InterlaceMode where
-    parser = takeLowerText >>= \case
-        "bottom_field" -> pure HIMBottomField
-        "follow_bottom_field" -> pure HIMFollowBottomField
-        "follow_top_field" -> pure HIMFollowTopField
-        "progressive" -> pure HIMProgressive
-        "top_field" -> pure HIMTopField
-        e -> fromTextError $ "Failure parsing H264InterlaceMode from value: '" <> e
-           <> "'. Accepted values: bottom_field, follow_bottom_field, follow_top_field, progressive, top_field"
-
-instance ToText H264InterlaceMode where
-    toText = \case
-        HIMBottomField -> "BOTTOM_FIELD"
-        HIMFollowBottomField -> "FOLLOW_BOTTOM_FIELD"
-        HIMFollowTopField -> "FOLLOW_TOP_FIELD"
-        HIMProgressive -> "PROGRESSIVE"
-        HIMTopField -> "TOP_FIELD"
-
-instance Hashable     H264InterlaceMode
-instance NFData       H264InterlaceMode
-instance ToByteString H264InterlaceMode
-instance ToQuery      H264InterlaceMode
-instance ToHeader     H264InterlaceMode
-
-instance ToJSON H264InterlaceMode where
-    toJSON = toJSONText
-
-instance FromJSON H264InterlaceMode where
-    parseJSON = parseJSONText "H264InterlaceMode"
-
--- | Using the API, enable ParFollowSource if you want the service to use the pixel aspect ratio from the input. Using the console, do this by choosing Follow source for Pixel aspect ratio.
-data H264ParControl
-  = HPCInitializeFromSource
-  | HPCSpecified
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264ParControl where
-    parser = takeLowerText >>= \case
-        "initialize_from_source" -> pure HPCInitializeFromSource
-        "specified" -> pure HPCSpecified
-        e -> fromTextError $ "Failure parsing H264ParControl from value: '" <> e
-           <> "'. Accepted values: initialize_from_source, specified"
-
-instance ToText H264ParControl where
-    toText = \case
-        HPCInitializeFromSource -> "INITIALIZE_FROM_SOURCE"
-        HPCSpecified -> "SPECIFIED"
-
-instance Hashable     H264ParControl
-instance NFData       H264ParControl
-instance ToByteString H264ParControl
-instance ToQuery      H264ParControl
-instance ToHeader     H264ParControl
-
-instance ToJSON H264ParControl where
-    toJSON = toJSONText
-
-instance FromJSON H264ParControl where
-    parseJSON = parseJSONText "H264ParControl"
-
--- | Use Quality tuning level (H264QualityTuningLevel) to specifiy whether to use fast single-pass, high-quality singlepass, or high-quality multipass video encoding.
-data H264QualityTuningLevel
-  = HQTLMultiPassHq
-  | HQTLSinglePass
-  | HQTLSinglePassHq
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264QualityTuningLevel where
-    parser = takeLowerText >>= \case
-        "multi_pass_hq" -> pure HQTLMultiPassHq
-        "single_pass" -> pure HQTLSinglePass
-        "single_pass_hq" -> pure HQTLSinglePassHq
-        e -> fromTextError $ "Failure parsing H264QualityTuningLevel from value: '" <> e
-           <> "'. Accepted values: multi_pass_hq, single_pass, single_pass_hq"
-
-instance ToText H264QualityTuningLevel where
-    toText = \case
-        HQTLMultiPassHq -> "MULTI_PASS_HQ"
-        HQTLSinglePass -> "SINGLE_PASS"
-        HQTLSinglePassHq -> "SINGLE_PASS_HQ"
-
-instance Hashable     H264QualityTuningLevel
-instance NFData       H264QualityTuningLevel
-instance ToByteString H264QualityTuningLevel
-instance ToQuery      H264QualityTuningLevel
-instance ToHeader     H264QualityTuningLevel
-
-instance ToJSON H264QualityTuningLevel where
-    toJSON = toJSONText
-
-instance FromJSON H264QualityTuningLevel where
-    parseJSON = parseJSONText "H264QualityTuningLevel"
-
--- | Rate control mode. CQ uses constant quantizer (qp), ABR (average bitrate) does not write HRD parameters.
-data H264RateControlMode
-  = HRCMCbr
-  | HRCMVbr
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264RateControlMode where
-    parser = takeLowerText >>= \case
-        "cbr" -> pure HRCMCbr
-        "vbr" -> pure HRCMVbr
-        e -> fromTextError $ "Failure parsing H264RateControlMode from value: '" <> e
-           <> "'. Accepted values: cbr, vbr"
-
-instance ToText H264RateControlMode where
-    toText = \case
-        HRCMCbr -> "CBR"
-        HRCMVbr -> "VBR"
-
-instance Hashable     H264RateControlMode
-instance NFData       H264RateControlMode
-instance ToByteString H264RateControlMode
-instance ToQuery      H264RateControlMode
-instance ToHeader     H264RateControlMode
-
-instance ToJSON H264RateControlMode where
-    toJSON = toJSONText
-
-instance FromJSON H264RateControlMode where
-    parseJSON = parseJSONText "H264RateControlMode"
-
--- | Places a PPS header on each encoded picture, even if repeated.
-data H264RepeatPps
-  = HRPDisabled
-  | HRPEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264RepeatPps where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HRPDisabled
-        "enabled" -> pure HRPEnabled
-        e -> fromTextError $ "Failure parsing H264RepeatPps from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H264RepeatPps where
-    toText = \case
-        HRPDisabled -> "DISABLED"
-        HRPEnabled -> "ENABLED"
-
-instance Hashable     H264RepeatPps
-instance NFData       H264RepeatPps
-instance ToByteString H264RepeatPps
-instance ToQuery      H264RepeatPps
-instance ToHeader     H264RepeatPps
-
-instance ToJSON H264RepeatPps where
-    toJSON = toJSONText
-
-instance FromJSON H264RepeatPps where
-    parseJSON = parseJSONText "H264RepeatPps"
-
--- | Scene change detection (inserts I-frames on scene changes).
-data H264SceneChangeDetect
-  = HSCDSDisabled
-  | HSCDSEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264SceneChangeDetect where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HSCDSDisabled
-        "enabled" -> pure HSCDSEnabled
-        e -> fromTextError $ "Failure parsing H264SceneChangeDetect from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H264SceneChangeDetect where
-    toText = \case
-        HSCDSDisabled -> "DISABLED"
-        HSCDSEnabled -> "ENABLED"
-
-instance Hashable     H264SceneChangeDetect
-instance NFData       H264SceneChangeDetect
-instance ToByteString H264SceneChangeDetect
-instance ToQuery      H264SceneChangeDetect
-instance ToHeader     H264SceneChangeDetect
-
-instance ToJSON H264SceneChangeDetect where
-    toJSON = toJSONText
-
-instance FromJSON H264SceneChangeDetect where
-    parseJSON = parseJSONText "H264SceneChangeDetect"
-
--- | Enables Slow PAL rate conversion. 23.976fps and 24fps input is relabeled as 25fps, and audio is sped up correspondingly.
-data H264SlowPal
-  = HSPSDisabled
-  | HSPSEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264SlowPal where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HSPSDisabled
-        "enabled" -> pure HSPSEnabled
-        e -> fromTextError $ "Failure parsing H264SlowPal from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H264SlowPal where
-    toText = \case
-        HSPSDisabled -> "DISABLED"
-        HSPSEnabled -> "ENABLED"
-
-instance Hashable     H264SlowPal
-instance NFData       H264SlowPal
-instance ToByteString H264SlowPal
-instance ToQuery      H264SlowPal
-instance ToHeader     H264SlowPal
-
-instance ToJSON H264SlowPal where
-    toJSON = toJSONText
-
-instance FromJSON H264SlowPal where
-    parseJSON = parseJSONText "H264SlowPal"
-
--- | Adjust quantization within each frame based on spatial variation of content complexity.
-data H264SpatialAdaptiveQuantization
-  = HSAQSDisabled
-  | HSAQSEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264SpatialAdaptiveQuantization where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HSAQSDisabled
-        "enabled" -> pure HSAQSEnabled
-        e -> fromTextError $ "Failure parsing H264SpatialAdaptiveQuantization from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H264SpatialAdaptiveQuantization where
-    toText = \case
-        HSAQSDisabled -> "DISABLED"
-        HSAQSEnabled -> "ENABLED"
-
-instance Hashable     H264SpatialAdaptiveQuantization
-instance NFData       H264SpatialAdaptiveQuantization
-instance ToByteString H264SpatialAdaptiveQuantization
-instance ToQuery      H264SpatialAdaptiveQuantization
-instance ToHeader     H264SpatialAdaptiveQuantization
-
-instance ToJSON H264SpatialAdaptiveQuantization where
-    toJSON = toJSONText
-
-instance FromJSON H264SpatialAdaptiveQuantization where
-    parseJSON = parseJSONText "H264SpatialAdaptiveQuantization"
-
--- | Produces a bitstream compliant with SMPTE RP-2027.
-data H264Syntax
-  = HSDefault
-  | HSRP2027
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264Syntax where
-    parser = takeLowerText >>= \case
-        "default" -> pure HSDefault
-        "rp2027" -> pure HSRP2027
-        e -> fromTextError $ "Failure parsing H264Syntax from value: '" <> e
-           <> "'. Accepted values: default, rp2027"
-
-instance ToText H264Syntax where
-    toText = \case
-        HSDefault -> "DEFAULT"
-        HSRP2027 -> "RP2027"
-
-instance Hashable     H264Syntax
-instance NFData       H264Syntax
-instance ToByteString H264Syntax
-instance ToQuery      H264Syntax
-instance ToHeader     H264Syntax
-
-instance ToJSON H264Syntax where
-    toJSON = toJSONText
-
-instance FromJSON H264Syntax where
-    parseJSON = parseJSONText "H264Syntax"
-
--- | This field applies only if the Streams > Advanced > Framerate (framerate) field  is set to 29.970. This field works with the Streams > Advanced > Preprocessors > Deinterlacer  field (deinterlace_mode) and the Streams > Advanced > Interlaced Mode field (interlace_mode)  to identify the scan type for the output: Progressive, Interlaced, Hard Telecine or Soft Telecine. - Hard: produces 29.97i output from 23.976 input. - Soft: produces 23.976; the player converts this output to 29.97i.
-data H264Telecine
-  = HHard
-  | HNone
-  | HSoft
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264Telecine where
-    parser = takeLowerText >>= \case
-        "hard" -> pure HHard
-        "none" -> pure HNone
-        "soft" -> pure HSoft
-        e -> fromTextError $ "Failure parsing H264Telecine from value: '" <> e
-           <> "'. Accepted values: hard, none, soft"
-
-instance ToText H264Telecine where
-    toText = \case
-        HHard -> "HARD"
-        HNone -> "NONE"
-        HSoft -> "SOFT"
-
-instance Hashable     H264Telecine
-instance NFData       H264Telecine
-instance ToByteString H264Telecine
-instance ToQuery      H264Telecine
-instance ToHeader     H264Telecine
-
-instance ToJSON H264Telecine where
-    toJSON = toJSONText
-
-instance FromJSON H264Telecine where
-    parseJSON = parseJSONText "H264Telecine"
-
--- | Adjust quantization within each frame based on temporal variation of content complexity.
-data H264TemporalAdaptiveQuantization
-  = H26Disabled
-  | H26Enabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264TemporalAdaptiveQuantization where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure H26Disabled
-        "enabled" -> pure H26Enabled
-        e -> fromTextError $ "Failure parsing H264TemporalAdaptiveQuantization from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H264TemporalAdaptiveQuantization where
-    toText = \case
-        H26Disabled -> "DISABLED"
-        H26Enabled -> "ENABLED"
-
-instance Hashable     H264TemporalAdaptiveQuantization
-instance NFData       H264TemporalAdaptiveQuantization
-instance ToByteString H264TemporalAdaptiveQuantization
-instance ToQuery      H264TemporalAdaptiveQuantization
-instance ToHeader     H264TemporalAdaptiveQuantization
-
-instance ToJSON H264TemporalAdaptiveQuantization where
-    toJSON = toJSONText
-
-instance FromJSON H264TemporalAdaptiveQuantization where
-    parseJSON = parseJSONText "H264TemporalAdaptiveQuantization"
-
--- | Inserts timecode for each frame as 4 bytes of an unregistered SEI message.
-data H264UnregisteredSeiTimecode
-  = HDisabled
-  | HEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H264UnregisteredSeiTimecode where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HDisabled
-        "enabled" -> pure HEnabled
-        e -> fromTextError $ "Failure parsing H264UnregisteredSeiTimecode from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H264UnregisteredSeiTimecode where
-    toText = \case
-        HDisabled -> "DISABLED"
-        HEnabled -> "ENABLED"
-
-instance Hashable     H264UnregisteredSeiTimecode
-instance NFData       H264UnregisteredSeiTimecode
-instance ToByteString H264UnregisteredSeiTimecode
-instance ToQuery      H264UnregisteredSeiTimecode
-instance ToHeader     H264UnregisteredSeiTimecode
-
-instance ToJSON H264UnregisteredSeiTimecode where
-    toJSON = toJSONText
-
-instance FromJSON H264UnregisteredSeiTimecode where
-    parseJSON = parseJSONText "H264UnregisteredSeiTimecode"
-
--- | Adaptive quantization. Allows intra-frame quantizers to vary to improve visual quality.
-data H265AdaptiveQuantization
-  = High
-  | Higher
-  | Low
-  | Max
-  | Medium
-  | Off
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265AdaptiveQuantization where
-    parser = takeLowerText >>= \case
-        "high" -> pure High
-        "higher" -> pure Higher
-        "low" -> pure Low
-        "max" -> pure Max
-        "medium" -> pure Medium
-        "off" -> pure Off
-        e -> fromTextError $ "Failure parsing H265AdaptiveQuantization from value: '" <> e
-           <> "'. Accepted values: high, higher, low, max, medium, off"
-
-instance ToText H265AdaptiveQuantization where
-    toText = \case
-        High -> "HIGH"
-        Higher -> "HIGHER"
-        Low -> "LOW"
-        Max -> "MAX"
-        Medium -> "MEDIUM"
-        Off -> "OFF"
-
-instance Hashable     H265AdaptiveQuantization
-instance NFData       H265AdaptiveQuantization
-instance ToByteString H265AdaptiveQuantization
-instance ToQuery      H265AdaptiveQuantization
-instance ToHeader     H265AdaptiveQuantization
-
-instance ToJSON H265AdaptiveQuantization where
-    toJSON = toJSONText
-
-instance FromJSON H265AdaptiveQuantization where
-    parseJSON = parseJSONText "H265AdaptiveQuantization"
-
--- | Enables Alternate Transfer Function SEI message for outputs using Hybrid Log Gamma (HLG) Electro-Optical Transfer Function (EOTF).
-data H265AlternateTransferFunctionSei
-  = HATFSDisabled
-  | HATFSEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265AlternateTransferFunctionSei where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HATFSDisabled
-        "enabled" -> pure HATFSEnabled
-        e -> fromTextError $ "Failure parsing H265AlternateTransferFunctionSei from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H265AlternateTransferFunctionSei where
-    toText = \case
-        HATFSDisabled -> "DISABLED"
-        HATFSEnabled -> "ENABLED"
-
-instance Hashable     H265AlternateTransferFunctionSei
-instance NFData       H265AlternateTransferFunctionSei
-instance ToByteString H265AlternateTransferFunctionSei
-instance ToQuery      H265AlternateTransferFunctionSei
-instance ToHeader     H265AlternateTransferFunctionSei
-
-instance ToJSON H265AlternateTransferFunctionSei where
-    toJSON = toJSONText
-
-instance FromJSON H265AlternateTransferFunctionSei where
-    parseJSON = parseJSONText "H265AlternateTransferFunctionSei"
-
--- | H.265 Level.
-data H265CodecLevel
-  = Auto
-  | Level1
-  | Level2
-  | Level21
-  | Level3
-  | Level31
-  | Level4
-  | Level41
-  | Level5
-  | Level51
-  | Level52
-  | Level6
-  | Level61
-  | Level62
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265CodecLevel where
-    parser = takeLowerText >>= \case
-        "auto" -> pure Auto
-        "level_1" -> pure Level1
-        "level_2" -> pure Level2
-        "level_2_1" -> pure Level21
-        "level_3" -> pure Level3
-        "level_3_1" -> pure Level31
-        "level_4" -> pure Level4
-        "level_4_1" -> pure Level41
-        "level_5" -> pure Level5
-        "level_5_1" -> pure Level51
-        "level_5_2" -> pure Level52
-        "level_6" -> pure Level6
-        "level_6_1" -> pure Level61
-        "level_6_2" -> pure Level62
-        e -> fromTextError $ "Failure parsing H265CodecLevel from value: '" <> e
-           <> "'. Accepted values: auto, level_1, level_2, level_2_1, level_3, level_3_1, level_4, level_4_1, level_5, level_5_1, level_5_2, level_6, level_6_1, level_6_2"
-
-instance ToText H265CodecLevel where
-    toText = \case
-        Auto -> "AUTO"
-        Level1 -> "LEVEL_1"
-        Level2 -> "LEVEL_2"
-        Level21 -> "LEVEL_2_1"
-        Level3 -> "LEVEL_3"
-        Level31 -> "LEVEL_3_1"
-        Level4 -> "LEVEL_4"
-        Level41 -> "LEVEL_4_1"
-        Level5 -> "LEVEL_5"
-        Level51 -> "LEVEL_5_1"
-        Level52 -> "LEVEL_5_2"
-        Level6 -> "LEVEL_6"
-        Level61 -> "LEVEL_6_1"
-        Level62 -> "LEVEL_6_2"
-
-instance Hashable     H265CodecLevel
-instance NFData       H265CodecLevel
-instance ToByteString H265CodecLevel
-instance ToQuery      H265CodecLevel
-instance ToHeader     H265CodecLevel
-
-instance ToJSON H265CodecLevel where
-    toJSON = toJSONText
-
-instance FromJSON H265CodecLevel where
-    parseJSON = parseJSONText "H265CodecLevel"
-
--- | Represents the Profile and Tier, per the HEVC (H.265) specification. Selections are grouped as [Profile] / [Tier], so "Main/High" represents Main Profile with High Tier. 4:2:2 profiles are only available with the HEVC 4:2:2 License.
-data H265CodecProfile
-  = MAIN10High
-  | MAIN10Main
-  | Main42210BITHigh
-  | Main42210BITMain
-  | Main4228BITHigh
-  | Main4228BITMain
-  | MainHigh
-  | MainMain
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265CodecProfile where
-    parser = takeLowerText >>= \case
-        "main10_high" -> pure MAIN10High
-        "main10_main" -> pure MAIN10Main
-        "main_422_10bit_high" -> pure Main42210BITHigh
-        "main_422_10bit_main" -> pure Main42210BITMain
-        "main_422_8bit_high" -> pure Main4228BITHigh
-        "main_422_8bit_main" -> pure Main4228BITMain
-        "main_high" -> pure MainHigh
-        "main_main" -> pure MainMain
-        e -> fromTextError $ "Failure parsing H265CodecProfile from value: '" <> e
-           <> "'. Accepted values: main10_high, main10_main, main_422_10bit_high, main_422_10bit_main, main_422_8bit_high, main_422_8bit_main, main_high, main_main"
-
-instance ToText H265CodecProfile where
-    toText = \case
-        MAIN10High -> "MAIN10_HIGH"
-        MAIN10Main -> "MAIN10_MAIN"
-        Main42210BITHigh -> "MAIN_422_10BIT_HIGH"
-        Main42210BITMain -> "MAIN_422_10BIT_MAIN"
-        Main4228BITHigh -> "MAIN_422_8BIT_HIGH"
-        Main4228BITMain -> "MAIN_422_8BIT_MAIN"
-        MainHigh -> "MAIN_HIGH"
-        MainMain -> "MAIN_MAIN"
-
-instance Hashable     H265CodecProfile
-instance NFData       H265CodecProfile
-instance ToByteString H265CodecProfile
-instance ToQuery      H265CodecProfile
-instance ToHeader     H265CodecProfile
-
-instance ToJSON H265CodecProfile where
-    toJSON = toJSONText
-
-instance FromJSON H265CodecProfile where
-    parseJSON = parseJSONText "H265CodecProfile"
-
--- | Adjust quantization within each frame to reduce flicker or 'pop' on I-frames.
-data H265FlickerAdaptiveQuantization
-  = HFAQDisabled
-  | HFAQEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265FlickerAdaptiveQuantization where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HFAQDisabled
-        "enabled" -> pure HFAQEnabled
-        e -> fromTextError $ "Failure parsing H265FlickerAdaptiveQuantization from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H265FlickerAdaptiveQuantization where
-    toText = \case
-        HFAQDisabled -> "DISABLED"
-        HFAQEnabled -> "ENABLED"
-
-instance Hashable     H265FlickerAdaptiveQuantization
-instance NFData       H265FlickerAdaptiveQuantization
-instance ToByteString H265FlickerAdaptiveQuantization
-instance ToQuery      H265FlickerAdaptiveQuantization
-instance ToHeader     H265FlickerAdaptiveQuantization
-
-instance ToJSON H265FlickerAdaptiveQuantization where
-    toJSON = toJSONText
-
-instance FromJSON H265FlickerAdaptiveQuantization where
-    parseJSON = parseJSONText "H265FlickerAdaptiveQuantization"
-
--- | Using the API, set FramerateControl to INITIALIZE_FROM_SOURCE if you want the service to use the framerate from the input. Using the console, do this by choosing INITIALIZE_FROM_SOURCE for Framerate.
-data H265FramerateControl
-  = HFCInitializeFromSource
-  | HFCSpecified
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265FramerateControl where
-    parser = takeLowerText >>= \case
-        "initialize_from_source" -> pure HFCInitializeFromSource
-        "specified" -> pure HFCSpecified
-        e -> fromTextError $ "Failure parsing H265FramerateControl from value: '" <> e
-           <> "'. Accepted values: initialize_from_source, specified"
-
-instance ToText H265FramerateControl where
-    toText = \case
-        HFCInitializeFromSource -> "INITIALIZE_FROM_SOURCE"
-        HFCSpecified -> "SPECIFIED"
-
-instance Hashable     H265FramerateControl
-instance NFData       H265FramerateControl
-instance ToByteString H265FramerateControl
-instance ToQuery      H265FramerateControl
-instance ToHeader     H265FramerateControl
-
-instance ToJSON H265FramerateControl where
-    toJSON = toJSONText
-
-instance FromJSON H265FramerateControl where
-    parseJSON = parseJSONText "H265FramerateControl"
-
--- | When set to INTERPOLATE, produces smoother motion during framerate conversion.
-data H265FramerateConversionAlgorithm
-  = DuplicateDrop
-  | Interpolate
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265FramerateConversionAlgorithm where
-    parser = takeLowerText >>= \case
-        "duplicate_drop" -> pure DuplicateDrop
-        "interpolate" -> pure Interpolate
-        e -> fromTextError $ "Failure parsing H265FramerateConversionAlgorithm from value: '" <> e
-           <> "'. Accepted values: duplicate_drop, interpolate"
-
-instance ToText H265FramerateConversionAlgorithm where
-    toText = \case
-        DuplicateDrop -> "DUPLICATE_DROP"
-        Interpolate -> "INTERPOLATE"
-
-instance Hashable     H265FramerateConversionAlgorithm
-instance NFData       H265FramerateConversionAlgorithm
-instance ToByteString H265FramerateConversionAlgorithm
-instance ToQuery      H265FramerateConversionAlgorithm
-instance ToHeader     H265FramerateConversionAlgorithm
-
-instance ToJSON H265FramerateConversionAlgorithm where
-    toJSON = toJSONText
-
-instance FromJSON H265FramerateConversionAlgorithm where
-    parseJSON = parseJSONText "H265FramerateConversionAlgorithm"
-
--- | If enable, use reference B frames for GOP structures that have B frames > 1.
-data H265GopBReference
-  = HGBRDisabled
-  | HGBREnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265GopBReference where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HGBRDisabled
-        "enabled" -> pure HGBREnabled
-        e -> fromTextError $ "Failure parsing H265GopBReference from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H265GopBReference where
-    toText = \case
-        HGBRDisabled -> "DISABLED"
-        HGBREnabled -> "ENABLED"
-
-instance Hashable     H265GopBReference
-instance NFData       H265GopBReference
-instance ToByteString H265GopBReference
-instance ToQuery      H265GopBReference
-instance ToHeader     H265GopBReference
-
-instance ToJSON H265GopBReference where
-    toJSON = toJSONText
-
-instance FromJSON H265GopBReference where
-    parseJSON = parseJSONText "H265GopBReference"
-
--- | Indicates if the GOP Size in H265 is specified in frames or seconds. If seconds the system will convert the GOP Size into a frame count at run time.
-data H265GopSizeUnits
-  = Frames
-  | Seconds
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265GopSizeUnits where
-    parser = takeLowerText >>= \case
-        "frames" -> pure Frames
-        "seconds" -> pure Seconds
-        e -> fromTextError $ "Failure parsing H265GopSizeUnits from value: '" <> e
-           <> "'. Accepted values: frames, seconds"
-
-instance ToText H265GopSizeUnits where
-    toText = \case
-        Frames -> "FRAMES"
-        Seconds -> "SECONDS"
-
-instance Hashable     H265GopSizeUnits
-instance NFData       H265GopSizeUnits
-instance ToByteString H265GopSizeUnits
-instance ToQuery      H265GopSizeUnits
-instance ToHeader     H265GopSizeUnits
-
-instance ToJSON H265GopSizeUnits where
-    toJSON = toJSONText
-
-instance FromJSON H265GopSizeUnits where
-    parseJSON = parseJSONText "H265GopSizeUnits"
-
--- | Use Interlace mode (InterlaceMode) to choose the scan line type for the output. * Top Field First (TOP_FIELD) and Bottom Field First (BOTTOM_FIELD) produce interlaced output with the entire output having the same field polarity (top or bottom first). * Follow, Default Top (FOLLOw_TOP_FIELD) and Follow, Default Bottom (FOLLOW_BOTTOM_FIELD) use the same  field polarity as the source. Therefore, behavior depends on the input scan type. - If the source is interlaced, the output will be interlaced with the same polarity as the source (it will follow the source). The output could therefore be a mix of "top field first" and "bottom field first". - If the source is progressive, the output will be interlaced with "top field first" or "bottom field first" polarity, depending on which of the Follow options you chose.
-data H265InterlaceMode
-  = BottomField
-  | FollowBottomField
-  | FollowTopField
-  | Progressive
-  | TopField
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265InterlaceMode where
-    parser = takeLowerText >>= \case
-        "bottom_field" -> pure BottomField
-        "follow_bottom_field" -> pure FollowBottomField
-        "follow_top_field" -> pure FollowTopField
-        "progressive" -> pure Progressive
-        "top_field" -> pure TopField
-        e -> fromTextError $ "Failure parsing H265InterlaceMode from value: '" <> e
-           <> "'. Accepted values: bottom_field, follow_bottom_field, follow_top_field, progressive, top_field"
-
-instance ToText H265InterlaceMode where
-    toText = \case
-        BottomField -> "BOTTOM_FIELD"
-        FollowBottomField -> "FOLLOW_BOTTOM_FIELD"
-        FollowTopField -> "FOLLOW_TOP_FIELD"
-        Progressive -> "PROGRESSIVE"
-        TopField -> "TOP_FIELD"
-
-instance Hashable     H265InterlaceMode
-instance NFData       H265InterlaceMode
-instance ToByteString H265InterlaceMode
-instance ToQuery      H265InterlaceMode
-instance ToHeader     H265InterlaceMode
-
-instance ToJSON H265InterlaceMode where
-    toJSON = toJSONText
-
-instance FromJSON H265InterlaceMode where
-    parseJSON = parseJSONText "H265InterlaceMode"
-
--- | Using the API, enable ParFollowSource if you want the service to use the pixel aspect ratio from the input. Using the console, do this by choosing Follow source for Pixel aspect ratio.
-data H265ParControl
-  = InitializeFromSource
-  | Specified
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265ParControl where
-    parser = takeLowerText >>= \case
-        "initialize_from_source" -> pure InitializeFromSource
-        "specified" -> pure Specified
-        e -> fromTextError $ "Failure parsing H265ParControl from value: '" <> e
-           <> "'. Accepted values: initialize_from_source, specified"
-
-instance ToText H265ParControl where
-    toText = \case
-        InitializeFromSource -> "INITIALIZE_FROM_SOURCE"
-        Specified -> "SPECIFIED"
-
-instance Hashable     H265ParControl
-instance NFData       H265ParControl
-instance ToByteString H265ParControl
-instance ToQuery      H265ParControl
-instance ToHeader     H265ParControl
-
-instance ToJSON H265ParControl where
-    toJSON = toJSONText
-
-instance FromJSON H265ParControl where
-    parseJSON = parseJSONText "H265ParControl"
-
--- | Use Quality tuning level (H265QualityTuningLevel) to specifiy whether to use fast single-pass, high-quality singlepass, or high-quality multipass video encoding.
-data H265QualityTuningLevel
-  = MultiPassHq
-  | SinglePass
-  | SinglePassHq
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265QualityTuningLevel where
-    parser = takeLowerText >>= \case
-        "multi_pass_hq" -> pure MultiPassHq
-        "single_pass" -> pure SinglePass
-        "single_pass_hq" -> pure SinglePassHq
-        e -> fromTextError $ "Failure parsing H265QualityTuningLevel from value: '" <> e
-           <> "'. Accepted values: multi_pass_hq, single_pass, single_pass_hq"
-
-instance ToText H265QualityTuningLevel where
-    toText = \case
-        MultiPassHq -> "MULTI_PASS_HQ"
-        SinglePass -> "SINGLE_PASS"
-        SinglePassHq -> "SINGLE_PASS_HQ"
-
-instance Hashable     H265QualityTuningLevel
-instance NFData       H265QualityTuningLevel
-instance ToByteString H265QualityTuningLevel
-instance ToQuery      H265QualityTuningLevel
-instance ToHeader     H265QualityTuningLevel
-
-instance ToJSON H265QualityTuningLevel where
-    toJSON = toJSONText
-
-instance FromJSON H265QualityTuningLevel where
-    parseJSON = parseJSONText "H265QualityTuningLevel"
-
--- | Rate control mode. CQ uses constant quantizer (qp), ABR (average bitrate) does not write HRD parameters.
-data H265RateControlMode
-  = Cbr
-  | Vbr
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265RateControlMode where
-    parser = takeLowerText >>= \case
-        "cbr" -> pure Cbr
-        "vbr" -> pure Vbr
-        e -> fromTextError $ "Failure parsing H265RateControlMode from value: '" <> e
-           <> "'. Accepted values: cbr, vbr"
-
-instance ToText H265RateControlMode where
-    toText = \case
-        Cbr -> "CBR"
-        Vbr -> "VBR"
-
-instance Hashable     H265RateControlMode
-instance NFData       H265RateControlMode
-instance ToByteString H265RateControlMode
-instance ToQuery      H265RateControlMode
-instance ToHeader     H265RateControlMode
-
-instance ToJSON H265RateControlMode where
-    toJSON = toJSONText
-
-instance FromJSON H265RateControlMode where
-    parseJSON = parseJSONText "H265RateControlMode"
-
--- | Specify Sample Adaptive Offset (SAO) filter strength.  Adaptive mode dynamically selects best strength based on content
-data H265SampleAdaptiveOffsetFilterMode
-  = HSAOFMAdaptive
-  | HSAOFMDefault
-  | HSAOFMOff
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265SampleAdaptiveOffsetFilterMode where
-    parser = takeLowerText >>= \case
-        "adaptive" -> pure HSAOFMAdaptive
-        "default" -> pure HSAOFMDefault
-        "off" -> pure HSAOFMOff
-        e -> fromTextError $ "Failure parsing H265SampleAdaptiveOffsetFilterMode from value: '" <> e
-           <> "'. Accepted values: adaptive, default, off"
-
-instance ToText H265SampleAdaptiveOffsetFilterMode where
-    toText = \case
-        HSAOFMAdaptive -> "ADAPTIVE"
-        HSAOFMDefault -> "DEFAULT"
-        HSAOFMOff -> "OFF"
-
-instance Hashable     H265SampleAdaptiveOffsetFilterMode
-instance NFData       H265SampleAdaptiveOffsetFilterMode
-instance ToByteString H265SampleAdaptiveOffsetFilterMode
-instance ToQuery      H265SampleAdaptiveOffsetFilterMode
-instance ToHeader     H265SampleAdaptiveOffsetFilterMode
-
-instance ToJSON H265SampleAdaptiveOffsetFilterMode where
-    toJSON = toJSONText
-
-instance FromJSON H265SampleAdaptiveOffsetFilterMode where
-    parseJSON = parseJSONText "H265SampleAdaptiveOffsetFilterMode"
-
--- | Scene change detection (inserts I-frames on scene changes).
-data H265SceneChangeDetect
-  = HSCDDisabled
-  | HSCDEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265SceneChangeDetect where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HSCDDisabled
-        "enabled" -> pure HSCDEnabled
-        e -> fromTextError $ "Failure parsing H265SceneChangeDetect from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H265SceneChangeDetect where
-    toText = \case
-        HSCDDisabled -> "DISABLED"
-        HSCDEnabled -> "ENABLED"
-
-instance Hashable     H265SceneChangeDetect
-instance NFData       H265SceneChangeDetect
-instance ToByteString H265SceneChangeDetect
-instance ToQuery      H265SceneChangeDetect
-instance ToHeader     H265SceneChangeDetect
-
-instance ToJSON H265SceneChangeDetect where
-    toJSON = toJSONText
-
-instance FromJSON H265SceneChangeDetect where
-    parseJSON = parseJSONText "H265SceneChangeDetect"
-
--- | Enables Slow PAL rate conversion. 23.976fps and 24fps input is relabeled as 25fps, and audio is sped up correspondingly.
-data H265SlowPal
-  = HSPDisabled
-  | HSPEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265SlowPal where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HSPDisabled
-        "enabled" -> pure HSPEnabled
-        e -> fromTextError $ "Failure parsing H265SlowPal from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H265SlowPal where
-    toText = \case
-        HSPDisabled -> "DISABLED"
-        HSPEnabled -> "ENABLED"
-
-instance Hashable     H265SlowPal
-instance NFData       H265SlowPal
-instance ToByteString H265SlowPal
-instance ToQuery      H265SlowPal
-instance ToHeader     H265SlowPal
-
-instance ToJSON H265SlowPal where
-    toJSON = toJSONText
-
-instance FromJSON H265SlowPal where
-    parseJSON = parseJSONText "H265SlowPal"
-
--- | Adjust quantization within each frame based on spatial variation of content complexity.
-data H265SpatialAdaptiveQuantization
-  = HSAQDisabled
-  | HSAQEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265SpatialAdaptiveQuantization where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HSAQDisabled
-        "enabled" -> pure HSAQEnabled
-        e -> fromTextError $ "Failure parsing H265SpatialAdaptiveQuantization from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H265SpatialAdaptiveQuantization where
-    toText = \case
-        HSAQDisabled -> "DISABLED"
-        HSAQEnabled -> "ENABLED"
-
-instance Hashable     H265SpatialAdaptiveQuantization
-instance NFData       H265SpatialAdaptiveQuantization
-instance ToByteString H265SpatialAdaptiveQuantization
-instance ToQuery      H265SpatialAdaptiveQuantization
-instance ToHeader     H265SpatialAdaptiveQuantization
-
-instance ToJSON H265SpatialAdaptiveQuantization where
-    toJSON = toJSONText
-
-instance FromJSON H265SpatialAdaptiveQuantization where
-    parseJSON = parseJSONText "H265SpatialAdaptiveQuantization"
-
--- | This field applies only if the Streams > Advanced > Framerate (framerate) field  is set to 29.970. This field works with the Streams > Advanced > Preprocessors > Deinterlacer  field (deinterlace_mode) and the Streams > Advanced > Interlaced Mode field (interlace_mode)  to identify the scan type for the output: Progressive, Interlaced, Hard Telecine or Soft Telecine. - Hard: produces 29.97i output from 23.976 input. - Soft: produces 23.976; the player converts this output to 29.97i.
-data H265Telecine
-  = HTHard
-  | HTNone
-  | HTSoft
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265Telecine where
-    parser = takeLowerText >>= \case
-        "hard" -> pure HTHard
-        "none" -> pure HTNone
-        "soft" -> pure HTSoft
-        e -> fromTextError $ "Failure parsing H265Telecine from value: '" <> e
-           <> "'. Accepted values: hard, none, soft"
-
-instance ToText H265Telecine where
-    toText = \case
-        HTHard -> "HARD"
-        HTNone -> "NONE"
-        HTSoft -> "SOFT"
-
-instance Hashable     H265Telecine
-instance NFData       H265Telecine
-instance ToByteString H265Telecine
-instance ToQuery      H265Telecine
-instance ToHeader     H265Telecine
-
-instance ToJSON H265Telecine where
-    toJSON = toJSONText
-
-instance FromJSON H265Telecine where
-    parseJSON = parseJSONText "H265Telecine"
-
--- | Adjust quantization within each frame based on temporal variation of content complexity.
-data H265TemporalAdaptiveQuantization
-  = HTAQDisabled
-  | HTAQEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265TemporalAdaptiveQuantization where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HTAQDisabled
-        "enabled" -> pure HTAQEnabled
-        e -> fromTextError $ "Failure parsing H265TemporalAdaptiveQuantization from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H265TemporalAdaptiveQuantization where
-    toText = \case
-        HTAQDisabled -> "DISABLED"
-        HTAQEnabled -> "ENABLED"
-
-instance Hashable     H265TemporalAdaptiveQuantization
-instance NFData       H265TemporalAdaptiveQuantization
-instance ToByteString H265TemporalAdaptiveQuantization
-instance ToQuery      H265TemporalAdaptiveQuantization
-instance ToHeader     H265TemporalAdaptiveQuantization
-
-instance ToJSON H265TemporalAdaptiveQuantization where
-    toJSON = toJSONText
-
-instance FromJSON H265TemporalAdaptiveQuantization where
-    parseJSON = parseJSONText "H265TemporalAdaptiveQuantization"
-
--- | Enables temporal layer identifiers in the encoded bitstream. Up to 3 layers are supported depending on GOP structure: I- and P-frames form one layer, reference B-frames can form a second layer and non-reference b-frames can form a third layer. Decoders can optionally decode only the lower temporal layers to generate a lower frame rate output. For example, given a bitstream with temporal IDs and with b-frames = 1 (i.e. IbPbPb display order), a decoder could decode all the frames for full frame rate output or only the I and P frames (lowest temporal layer) for a half frame rate output.
-data H265TemporalIds
-  = HTIDisabled
-  | HTIEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265TemporalIds where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HTIDisabled
-        "enabled" -> pure HTIEnabled
-        e -> fromTextError $ "Failure parsing H265TemporalIds from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H265TemporalIds where
-    toText = \case
-        HTIDisabled -> "DISABLED"
-        HTIEnabled -> "ENABLED"
-
-instance Hashable     H265TemporalIds
-instance NFData       H265TemporalIds
-instance ToByteString H265TemporalIds
-instance ToQuery      H265TemporalIds
-instance ToHeader     H265TemporalIds
-
-instance ToJSON H265TemporalIds where
-    toJSON = toJSONText
-
-instance FromJSON H265TemporalIds where
-    parseJSON = parseJSONText "H265TemporalIds"
-
--- | Enable use of tiles, allowing horizontal as well as vertical subdivision of the encoded pictures.
-data H265Tiles
-  = HTDisabled
-  | HTEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265Tiles where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HTDisabled
-        "enabled" -> pure HTEnabled
-        e -> fromTextError $ "Failure parsing H265Tiles from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H265Tiles where
-    toText = \case
-        HTDisabled -> "DISABLED"
-        HTEnabled -> "ENABLED"
-
-instance Hashable     H265Tiles
-instance NFData       H265Tiles
-instance ToByteString H265Tiles
-instance ToQuery      H265Tiles
-instance ToHeader     H265Tiles
-
-instance ToJSON H265Tiles where
-    toJSON = toJSONText
-
-instance FromJSON H265Tiles where
-    parseJSON = parseJSONText "H265Tiles"
-
--- | Inserts timecode for each frame as 4 bytes of an unregistered SEI message.
-data H265UnregisteredSeiTimecode
-  = HUSTDisabled
-  | HUSTEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText H265UnregisteredSeiTimecode where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HUSTDisabled
-        "enabled" -> pure HUSTEnabled
-        e -> fromTextError $ "Failure parsing H265UnregisteredSeiTimecode from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText H265UnregisteredSeiTimecode where
-    toText = \case
-        HUSTDisabled -> "DISABLED"
-        HUSTEnabled -> "ENABLED"
-
-instance Hashable     H265UnregisteredSeiTimecode
-instance NFData       H265UnregisteredSeiTimecode
-instance ToByteString H265UnregisteredSeiTimecode
-instance ToQuery      H265UnregisteredSeiTimecode
-instance ToHeader     H265UnregisteredSeiTimecode
-
-instance ToJSON H265UnregisteredSeiTimecode where
-    toJSON = toJSONText
-
-instance FromJSON H265UnregisteredSeiTimecode where
-    parseJSON = parseJSONText "H265UnregisteredSeiTimecode"
-
-data HlsAdMarkers
-  = Elemental
-  | ElementalSCTE35
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsAdMarkers where
-    parser = takeLowerText >>= \case
-        "elemental" -> pure Elemental
-        "elemental_scte35" -> pure ElementalSCTE35
-        e -> fromTextError $ "Failure parsing HlsAdMarkers from value: '" <> e
-           <> "'. Accepted values: elemental, elemental_scte35"
-
-instance ToText HlsAdMarkers where
-    toText = \case
-        Elemental -> "ELEMENTAL"
-        ElementalSCTE35 -> "ELEMENTAL_SCTE35"
-
-instance Hashable     HlsAdMarkers
-instance NFData       HlsAdMarkers
-instance ToByteString HlsAdMarkers
-instance ToQuery      HlsAdMarkers
-instance ToHeader     HlsAdMarkers
-
-instance ToJSON HlsAdMarkers where
-    toJSON = toJSONText
-
-instance FromJSON HlsAdMarkers where
-    parseJSON = parseJSONText "HlsAdMarkers"
-
--- | Four types of audio-only tracks are supported: Audio-Only Variant Stream The client can play back this audio-only stream instead of video in low-bandwidth scenarios. Represented as an EXT-X-STREAM-INF in the HLS manifest. Alternate Audio, Auto Select, Default Alternate rendition that the client should try to play back by default. Represented as an EXT-X-MEDIA in the HLS manifest with DEFAULT=YES, AUTOSELECT=YES Alternate Audio, Auto Select, Not Default Alternate rendition that the client may try to play back by default. Represented as an EXT-X-MEDIA in the HLS manifest with DEFAULT=NO, AUTOSELECT=YES Alternate Audio, not Auto Select Alternate rendition that the client will not try to play back by default. Represented as an EXT-X-MEDIA in the HLS manifest with DEFAULT=NO, AUTOSELECT=NO
-data HlsAudioTrackType
-  = AlternateAudioAutoSelect
-  | AlternateAudioAutoSelectDefault
-  | AlternateAudioNotAutoSelect
-  | AudioOnlyVariantStream
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsAudioTrackType where
-    parser = takeLowerText >>= \case
-        "alternate_audio_auto_select" -> pure AlternateAudioAutoSelect
-        "alternate_audio_auto_select_default" -> pure AlternateAudioAutoSelectDefault
-        "alternate_audio_not_auto_select" -> pure AlternateAudioNotAutoSelect
-        "audio_only_variant_stream" -> pure AudioOnlyVariantStream
-        e -> fromTextError $ "Failure parsing HlsAudioTrackType from value: '" <> e
-           <> "'. Accepted values: alternate_audio_auto_select, alternate_audio_auto_select_default, alternate_audio_not_auto_select, audio_only_variant_stream"
-
-instance ToText HlsAudioTrackType where
-    toText = \case
-        AlternateAudioAutoSelect -> "ALTERNATE_AUDIO_AUTO_SELECT"
-        AlternateAudioAutoSelectDefault -> "ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT"
-        AlternateAudioNotAutoSelect -> "ALTERNATE_AUDIO_NOT_AUTO_SELECT"
-        AudioOnlyVariantStream -> "AUDIO_ONLY_VARIANT_STREAM"
-
-instance Hashable     HlsAudioTrackType
-instance NFData       HlsAudioTrackType
-instance ToByteString HlsAudioTrackType
-instance ToQuery      HlsAudioTrackType
-instance ToHeader     HlsAudioTrackType
-
-instance ToJSON HlsAudioTrackType where
-    toJSON = toJSONText
-
-instance FromJSON HlsAudioTrackType where
-    parseJSON = parseJSONText "HlsAudioTrackType"
-
--- | Applies only to 608 Embedded output captions. Insert: Include CLOSED-CAPTIONS lines in the manifest. Specify at least one language in the CC1 Language Code field. One CLOSED-CAPTION line is added for each Language Code you specify. Make sure to specify the languages in the order in which they appear in the original source (if the source is embedded format) or the order of the caption selectors (if the source is other than embedded). Otherwise, languages in the manifest will not match up properly with the output captions. None: Include CLOSED-CAPTIONS=NONE line in the manifest. Omit: Omit any CLOSED-CAPTIONS line from the manifest.
-data HlsCaptionLanguageSetting
-  = HCLSInsert
-  | HCLSNone
-  | HCLSOmit
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsCaptionLanguageSetting where
-    parser = takeLowerText >>= \case
-        "insert" -> pure HCLSInsert
-        "none" -> pure HCLSNone
-        "omit" -> pure HCLSOmit
-        e -> fromTextError $ "Failure parsing HlsCaptionLanguageSetting from value: '" <> e
-           <> "'. Accepted values: insert, none, omit"
-
-instance ToText HlsCaptionLanguageSetting where
-    toText = \case
-        HCLSInsert -> "INSERT"
-        HCLSNone -> "NONE"
-        HCLSOmit -> "OMIT"
-
-instance Hashable     HlsCaptionLanguageSetting
-instance NFData       HlsCaptionLanguageSetting
-instance ToByteString HlsCaptionLanguageSetting
-instance ToQuery      HlsCaptionLanguageSetting
-instance ToHeader     HlsCaptionLanguageSetting
-
-instance ToJSON HlsCaptionLanguageSetting where
-    toJSON = toJSONText
-
-instance FromJSON HlsCaptionLanguageSetting where
-    parseJSON = parseJSONText "HlsCaptionLanguageSetting"
-
--- | When set to ENABLED, sets #EXT-X-ALLOW-CACHE:no tag, which prevents client from saving media segments for later replay.
-data HlsClientCache
-  = HCCDisabled
-  | HCCEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsClientCache where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure HCCDisabled
-        "enabled" -> pure HCCEnabled
-        e -> fromTextError $ "Failure parsing HlsClientCache from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText HlsClientCache where
-    toText = \case
-        HCCDisabled -> "DISABLED"
-        HCCEnabled -> "ENABLED"
-
-instance Hashable     HlsClientCache
-instance NFData       HlsClientCache
-instance ToByteString HlsClientCache
-instance ToQuery      HlsClientCache
-instance ToHeader     HlsClientCache
-
-instance ToJSON HlsClientCache where
-    toJSON = toJSONText
-
-instance FromJSON HlsClientCache where
-    parseJSON = parseJSONText "HlsClientCache"
-
--- | Specification to use (RFC-6381 or the default RFC-4281) during m3u8 playlist generation.
-data HlsCodecSpecification
-  = Rfc4281
-  | Rfc6381
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsCodecSpecification where
-    parser = takeLowerText >>= \case
-        "rfc_4281" -> pure Rfc4281
-        "rfc_6381" -> pure Rfc6381
-        e -> fromTextError $ "Failure parsing HlsCodecSpecification from value: '" <> e
-           <> "'. Accepted values: rfc_4281, rfc_6381"
-
-instance ToText HlsCodecSpecification where
-    toText = \case
-        Rfc4281 -> "RFC_4281"
-        Rfc6381 -> "RFC_6381"
-
-instance Hashable     HlsCodecSpecification
-instance NFData       HlsCodecSpecification
-instance ToByteString HlsCodecSpecification
-instance ToQuery      HlsCodecSpecification
-instance ToHeader     HlsCodecSpecification
-
-instance ToJSON HlsCodecSpecification where
-    toJSON = toJSONText
-
-instance FromJSON HlsCodecSpecification where
-    parseJSON = parseJSONText "HlsCodecSpecification"
-
--- | Indicates whether segments should be placed in subdirectories.
-data HlsDirectoryStructure
-  = SingleDirectory
-  | SubdirectoryPerStream
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsDirectoryStructure where
-    parser = takeLowerText >>= \case
-        "single_directory" -> pure SingleDirectory
-        "subdirectory_per_stream" -> pure SubdirectoryPerStream
-        e -> fromTextError $ "Failure parsing HlsDirectoryStructure from value: '" <> e
-           <> "'. Accepted values: single_directory, subdirectory_per_stream"
-
-instance ToText HlsDirectoryStructure where
-    toText = \case
-        SingleDirectory -> "SINGLE_DIRECTORY"
-        SubdirectoryPerStream -> "SUBDIRECTORY_PER_STREAM"
-
-instance Hashable     HlsDirectoryStructure
-instance NFData       HlsDirectoryStructure
-instance ToByteString HlsDirectoryStructure
-instance ToQuery      HlsDirectoryStructure
-instance ToHeader     HlsDirectoryStructure
-
-instance ToJSON HlsDirectoryStructure where
-    toJSON = toJSONText
-
-instance FromJSON HlsDirectoryStructure where
-    parseJSON = parseJSONText "HlsDirectoryStructure"
-
--- | Encrypts the segments with the given encryption scheme. Leave blank to disable. Selecting 'Disabled' in the web interface also disables encryption.
-data HlsEncryptionType
-  = AES128
-  | SampleAES
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsEncryptionType where
-    parser = takeLowerText >>= \case
-        "aes128" -> pure AES128
-        "sample_aes" -> pure SampleAES
-        e -> fromTextError $ "Failure parsing HlsEncryptionType from value: '" <> e
-           <> "'. Accepted values: aes128, sample_aes"
-
-instance ToText HlsEncryptionType where
-    toText = \case
-        AES128 -> "AES128"
-        SampleAES -> "SAMPLE_AES"
-
-instance Hashable     HlsEncryptionType
-instance NFData       HlsEncryptionType
-instance ToByteString HlsEncryptionType
-instance ToQuery      HlsEncryptionType
-instance ToHeader     HlsEncryptionType
-
-instance ToJSON HlsEncryptionType where
-    toJSON = toJSONText
-
-instance FromJSON HlsEncryptionType where
-    parseJSON = parseJSONText "HlsEncryptionType"
-
--- | When set to INCLUDE, writes I-Frame Only Manifest in addition to the HLS manifest
-data HlsIFrameOnlyManifest
-  = HIFOMExclude
-  | HIFOMInclude
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsIFrameOnlyManifest where
-    parser = takeLowerText >>= \case
-        "exclude" -> pure HIFOMExclude
-        "include" -> pure HIFOMInclude
-        e -> fromTextError $ "Failure parsing HlsIFrameOnlyManifest from value: '" <> e
-           <> "'. Accepted values: exclude, include"
-
-instance ToText HlsIFrameOnlyManifest where
-    toText = \case
-        HIFOMExclude -> "EXCLUDE"
-        HIFOMInclude -> "INCLUDE"
-
-instance Hashable     HlsIFrameOnlyManifest
-instance NFData       HlsIFrameOnlyManifest
-instance ToByteString HlsIFrameOnlyManifest
-instance ToQuery      HlsIFrameOnlyManifest
-instance ToHeader     HlsIFrameOnlyManifest
-
-instance ToJSON HlsIFrameOnlyManifest where
-    toJSON = toJSONText
-
-instance FromJSON HlsIFrameOnlyManifest where
-    parseJSON = parseJSONText "HlsIFrameOnlyManifest"
-
--- | The Initialization Vector is a 128-bit number used in conjunction with the key for encrypting blocks. If set to INCLUDE, Initialization Vector is listed in the manifest. Otherwise Initialization Vector is not in the manifest.
-data HlsInitializationVectorInManifest
-  = HIVIMExclude
-  | HIVIMInclude
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsInitializationVectorInManifest where
-    parser = takeLowerText >>= \case
-        "exclude" -> pure HIVIMExclude
-        "include" -> pure HIVIMInclude
-        e -> fromTextError $ "Failure parsing HlsInitializationVectorInManifest from value: '" <> e
-           <> "'. Accepted values: exclude, include"
-
-instance ToText HlsInitializationVectorInManifest where
-    toText = \case
-        HIVIMExclude -> "EXCLUDE"
-        HIVIMInclude -> "INCLUDE"
-
-instance Hashable     HlsInitializationVectorInManifest
-instance NFData       HlsInitializationVectorInManifest
-instance ToByteString HlsInitializationVectorInManifest
-instance ToQuery      HlsInitializationVectorInManifest
-instance ToHeader     HlsInitializationVectorInManifest
-
-instance ToJSON HlsInitializationVectorInManifest where
-    toJSON = toJSONText
-
-instance FromJSON HlsInitializationVectorInManifest where
-    parseJSON = parseJSONText "HlsInitializationVectorInManifest"
-
--- | Indicates which type of key provider is used for encryption.
-data HlsKeyProviderType
-  = Speke
-  | StaticKey
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsKeyProviderType where
-    parser = takeLowerText >>= \case
-        "speke" -> pure Speke
-        "static_key" -> pure StaticKey
-        e -> fromTextError $ "Failure parsing HlsKeyProviderType from value: '" <> e
-           <> "'. Accepted values: speke, static_key"
-
-instance ToText HlsKeyProviderType where
-    toText = \case
-        Speke -> "SPEKE"
-        StaticKey -> "STATIC_KEY"
-
-instance Hashable     HlsKeyProviderType
-instance NFData       HlsKeyProviderType
-instance ToByteString HlsKeyProviderType
-instance ToQuery      HlsKeyProviderType
-instance ToHeader     HlsKeyProviderType
-
-instance ToJSON HlsKeyProviderType where
-    toJSON = toJSONText
-
-instance FromJSON HlsKeyProviderType where
-    parseJSON = parseJSONText "HlsKeyProviderType"
-
--- | When set to GZIP, compresses HLS playlist.
-data HlsManifestCompression
-  = HMCGzip
-  | HMCNone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsManifestCompression where
-    parser = takeLowerText >>= \case
-        "gzip" -> pure HMCGzip
-        "none" -> pure HMCNone
-        e -> fromTextError $ "Failure parsing HlsManifestCompression from value: '" <> e
-           <> "'. Accepted values: gzip, none"
-
-instance ToText HlsManifestCompression where
-    toText = \case
-        HMCGzip -> "GZIP"
-        HMCNone -> "NONE"
-
-instance Hashable     HlsManifestCompression
-instance NFData       HlsManifestCompression
-instance ToByteString HlsManifestCompression
-instance ToQuery      HlsManifestCompression
-instance ToHeader     HlsManifestCompression
-
-instance ToJSON HlsManifestCompression where
-    toJSON = toJSONText
-
-instance FromJSON HlsManifestCompression where
-    parseJSON = parseJSONText "HlsManifestCompression"
-
--- | Indicates whether the output manifest should use floating point values for segment duration.
-data HlsManifestDurationFormat
-  = FloatingPoint
-  | Integer
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsManifestDurationFormat where
-    parser = takeLowerText >>= \case
-        "floating_point" -> pure FloatingPoint
-        "integer" -> pure Integer
-        e -> fromTextError $ "Failure parsing HlsManifestDurationFormat from value: '" <> e
-           <> "'. Accepted values: floating_point, integer"
-
-instance ToText HlsManifestDurationFormat where
-    toText = \case
-        FloatingPoint -> "FLOATING_POINT"
-        Integer -> "INTEGER"
-
-instance Hashable     HlsManifestDurationFormat
-instance NFData       HlsManifestDurationFormat
-instance ToByteString HlsManifestDurationFormat
-instance ToQuery      HlsManifestDurationFormat
-instance ToHeader     HlsManifestDurationFormat
-
-instance ToJSON HlsManifestDurationFormat where
-    toJSON = toJSONText
-
-instance FromJSON HlsManifestDurationFormat where
-    parseJSON = parseJSONText "HlsManifestDurationFormat"
-
--- | Indicates whether the .m3u8 manifest file should be generated for this HLS output group.
-data HlsOutputSelection
-  = ManifestsAndSegments
-  | SegmentsOnly
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsOutputSelection where
-    parser = takeLowerText >>= \case
-        "manifests_and_segments" -> pure ManifestsAndSegments
-        "segments_only" -> pure SegmentsOnly
-        e -> fromTextError $ "Failure parsing HlsOutputSelection from value: '" <> e
-           <> "'. Accepted values: manifests_and_segments, segments_only"
-
-instance ToText HlsOutputSelection where
-    toText = \case
-        ManifestsAndSegments -> "MANIFESTS_AND_SEGMENTS"
-        SegmentsOnly -> "SEGMENTS_ONLY"
-
-instance Hashable     HlsOutputSelection
-instance NFData       HlsOutputSelection
-instance ToByteString HlsOutputSelection
-instance ToQuery      HlsOutputSelection
-instance ToHeader     HlsOutputSelection
-
-instance ToJSON HlsOutputSelection where
-    toJSON = toJSONText
-
-instance FromJSON HlsOutputSelection where
-    parseJSON = parseJSONText "HlsOutputSelection"
-
--- | Includes or excludes EXT-X-PROGRAM-DATE-TIME tag in .m3u8 manifest files. The value is calculated as follows: either the program date and time are initialized using the input timecode source, or the time is initialized using the input timecode source and the date is initialized using the timestamp_offset.
-data HlsProgramDateTime
-  = Exclude
-  | Include
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsProgramDateTime where
-    parser = takeLowerText >>= \case
-        "exclude" -> pure Exclude
-        "include" -> pure Include
-        e -> fromTextError $ "Failure parsing HlsProgramDateTime from value: '" <> e
-           <> "'. Accepted values: exclude, include"
-
-instance ToText HlsProgramDateTime where
-    toText = \case
-        Exclude -> "EXCLUDE"
-        Include -> "INCLUDE"
-
-instance Hashable     HlsProgramDateTime
-instance NFData       HlsProgramDateTime
-instance ToByteString HlsProgramDateTime
-instance ToQuery      HlsProgramDateTime
-instance ToHeader     HlsProgramDateTime
-
-instance ToJSON HlsProgramDateTime where
-    toJSON = toJSONText
-
-instance FromJSON HlsProgramDateTime where
-    parseJSON = parseJSONText "HlsProgramDateTime"
-
--- | When set to SINGLE_FILE, emits program as a single media resource (.ts) file, uses #EXT-X-BYTERANGE tags to index segment for playback.
-data HlsSegmentControl
-  = SegmentedFiles
-  | SingleFile
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsSegmentControl where
-    parser = takeLowerText >>= \case
-        "segmented_files" -> pure SegmentedFiles
-        "single_file" -> pure SingleFile
-        e -> fromTextError $ "Failure parsing HlsSegmentControl from value: '" <> e
-           <> "'. Accepted values: segmented_files, single_file"
-
-instance ToText HlsSegmentControl where
-    toText = \case
-        SegmentedFiles -> "SEGMENTED_FILES"
-        SingleFile -> "SINGLE_FILE"
-
-instance Hashable     HlsSegmentControl
-instance NFData       HlsSegmentControl
-instance ToByteString HlsSegmentControl
-instance ToQuery      HlsSegmentControl
-instance ToHeader     HlsSegmentControl
-
-instance ToJSON HlsSegmentControl where
-    toJSON = toJSONText
-
-instance FromJSON HlsSegmentControl where
-    parseJSON = parseJSONText "HlsSegmentControl"
-
--- | Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF tag of variant manifest.
-data HlsStreamInfResolution
-  = HSIRExclude
-  | HSIRInclude
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsStreamInfResolution where
-    parser = takeLowerText >>= \case
-        "exclude" -> pure HSIRExclude
-        "include" -> pure HSIRInclude
-        e -> fromTextError $ "Failure parsing HlsStreamInfResolution from value: '" <> e
-           <> "'. Accepted values: exclude, include"
-
-instance ToText HlsStreamInfResolution where
-    toText = \case
-        HSIRExclude -> "EXCLUDE"
-        HSIRInclude -> "INCLUDE"
-
-instance Hashable     HlsStreamInfResolution
-instance NFData       HlsStreamInfResolution
-instance ToByteString HlsStreamInfResolution
-instance ToQuery      HlsStreamInfResolution
-instance ToHeader     HlsStreamInfResolution
-
-instance ToJSON HlsStreamInfResolution where
-    toJSON = toJSONText
-
-instance FromJSON HlsStreamInfResolution where
-    parseJSON = parseJSONText "HlsStreamInfResolution"
-
--- | Indicates ID3 frame that has the timecode.
-data HlsTimedMetadataId3Frame
-  = HTMIFNone
-  | HTMIFPriv
-  | HTMIFTdrl
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText HlsTimedMetadataId3Frame where
-    parser = takeLowerText >>= \case
-        "none" -> pure HTMIFNone
-        "priv" -> pure HTMIFPriv
-        "tdrl" -> pure HTMIFTdrl
-        e -> fromTextError $ "Failure parsing HlsTimedMetadataId3Frame from value: '" <> e
-           <> "'. Accepted values: none, priv, tdrl"
-
-instance ToText HlsTimedMetadataId3Frame where
-    toText = \case
-        HTMIFNone -> "NONE"
-        HTMIFPriv -> "PRIV"
-        HTMIFTdrl -> "TDRL"
-
-instance Hashable     HlsTimedMetadataId3Frame
-instance NFData       HlsTimedMetadataId3Frame
-instance ToByteString HlsTimedMetadataId3Frame
-instance ToQuery      HlsTimedMetadataId3Frame
-instance ToHeader     HlsTimedMetadataId3Frame
-
-instance ToJSON HlsTimedMetadataId3Frame where
-    toJSON = toJSONText
-
-instance FromJSON HlsTimedMetadataId3Frame where
-    parseJSON = parseJSONText "HlsTimedMetadataId3Frame"
-
--- | Enable Deblock (InputDeblockFilter) to produce smoother motion in the output. Default is disabled. Only manaully controllable for MPEG2 and uncompressed video inputs.
-data InputDeblockFilter
-  = Disabled
-  | Enabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText InputDeblockFilter where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure Disabled
-        "enabled" -> pure Enabled
-        e -> fromTextError $ "Failure parsing InputDeblockFilter from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText InputDeblockFilter where
-    toText = \case
-        Disabled -> "DISABLED"
-        Enabled -> "ENABLED"
-
-instance Hashable     InputDeblockFilter
-instance NFData       InputDeblockFilter
-instance ToByteString InputDeblockFilter
-instance ToQuery      InputDeblockFilter
-instance ToHeader     InputDeblockFilter
-
-instance ToJSON InputDeblockFilter where
-    toJSON = toJSONText
-
-instance FromJSON InputDeblockFilter where
-    parseJSON = parseJSONText "InputDeblockFilter"
-
--- | Enable Denoise (InputDenoiseFilter) to filter noise from the input.  Default is disabled. Only applicable to MPEG2, H.264, H.265, and uncompressed video inputs.
-data InputDenoiseFilter
-  = IDFDisabled
-  | IDFEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText InputDenoiseFilter where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure IDFDisabled
-        "enabled" -> pure IDFEnabled
-        e -> fromTextError $ "Failure parsing InputDenoiseFilter from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText InputDenoiseFilter where
-    toText = \case
-        IDFDisabled -> "DISABLED"
-        IDFEnabled -> "ENABLED"
-
-instance Hashable     InputDenoiseFilter
-instance NFData       InputDenoiseFilter
-instance ToByteString InputDenoiseFilter
-instance ToQuery      InputDenoiseFilter
-instance ToHeader     InputDenoiseFilter
-
-instance ToJSON InputDenoiseFilter where
-    toJSON = toJSONText
-
-instance FromJSON InputDenoiseFilter where
-    parseJSON = parseJSONText "InputDenoiseFilter"
-
--- | Use Filter enable (InputFilterEnable) to specify how the transcoding service applies the denoise and deblock filters. You must also enable the filters separately, with Denoise (InputDenoiseFilter) and Deblock (InputDeblockFilter). * Auto - The transcoding service determines whether to apply filtering, depending on input type and quality. * Disable - The input is not filtered. This is true even if you use the API to enable them in (InputDeblockFilter) and (InputDeblockFilter). * Force - The in put is filtered regardless of input type.
-data InputFilterEnable
-  = IFEAuto
-  | IFEDisable
-  | IFEForce
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText InputFilterEnable where
-    parser = takeLowerText >>= \case
-        "auto" -> pure IFEAuto
-        "disable" -> pure IFEDisable
-        "force" -> pure IFEForce
-        e -> fromTextError $ "Failure parsing InputFilterEnable from value: '" <> e
-           <> "'. Accepted values: auto, disable, force"
-
-instance ToText InputFilterEnable where
-    toText = \case
-        IFEAuto -> "AUTO"
-        IFEDisable -> "DISABLE"
-        IFEForce -> "FORCE"
-
-instance Hashable     InputFilterEnable
-instance NFData       InputFilterEnable
-instance ToByteString InputFilterEnable
-instance ToQuery      InputFilterEnable
-instance ToHeader     InputFilterEnable
-
-instance ToJSON InputFilterEnable where
-    toJSON = toJSONText
-
-instance FromJSON InputFilterEnable where
-    parseJSON = parseJSONText "InputFilterEnable"
-
--- | Set PSI control (InputPsiControl) for transport stream inputs to specify which data the demux process to scans. * Ignore PSI - Scan all PIDs for audio and video. * Use PSI - Scan only PSI data.
-data InputPsiControl
-  = IgnorePsi
-  | UsePsi
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText InputPsiControl where
-    parser = takeLowerText >>= \case
-        "ignore_psi" -> pure IgnorePsi
-        "use_psi" -> pure UsePsi
-        e -> fromTextError $ "Failure parsing InputPsiControl from value: '" <> e
-           <> "'. Accepted values: ignore_psi, use_psi"
-
-instance ToText InputPsiControl where
-    toText = \case
-        IgnorePsi -> "IGNORE_PSI"
-        UsePsi -> "USE_PSI"
-
-instance Hashable     InputPsiControl
-instance NFData       InputPsiControl
-instance ToByteString InputPsiControl
-instance ToQuery      InputPsiControl
-instance ToHeader     InputPsiControl
-
-instance ToJSON InputPsiControl where
-    toJSON = toJSONText
-
-instance FromJSON InputPsiControl where
-    parseJSON = parseJSONText "InputPsiControl"
-
--- | Use Timecode source (InputTimecodeSource) to specify how timecode information from your input is adjusted and encoded in all outputs for the job. Default is embedded. Set to Embedded (EMBEDDED) to use the timecode that is in the input video. If no embedded timecode is in the source, will set the timecode for the first frame to 00:00:00:00. Set to Start at 0 (ZEROBASED) to set the timecode of the initial frame to 00:00:00:00. Set to Specified start (SPECIFIEDSTART) to provide the initial timecode yourself the setting (Start).
-data InputTimecodeSource
-  = Embedded
-  | Specifiedstart
-  | Zerobased
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText InputTimecodeSource where
-    parser = takeLowerText >>= \case
-        "embedded" -> pure Embedded
-        "specifiedstart" -> pure Specifiedstart
-        "zerobased" -> pure Zerobased
-        e -> fromTextError $ "Failure parsing InputTimecodeSource from value: '" <> e
-           <> "'. Accepted values: embedded, specifiedstart, zerobased"
-
-instance ToText InputTimecodeSource where
-    toText = \case
-        Embedded -> "EMBEDDED"
-        Specifiedstart -> "SPECIFIEDSTART"
-        Zerobased -> "ZEROBASED"
-
-instance Hashable     InputTimecodeSource
-instance NFData       InputTimecodeSource
-instance ToByteString InputTimecodeSource
-instance ToQuery      InputTimecodeSource
-instance ToHeader     InputTimecodeSource
-
-instance ToJSON InputTimecodeSource where
-    toJSON = toJSONText
-
-instance FromJSON InputTimecodeSource where
-    parseJSON = parseJSONText "InputTimecodeSource"
-
--- | A job's status can be SUBMITTED, PROGRESSING, COMPLETE, CANCELED, or ERROR.
-data JobStatus
-  = Canceled
-  | Complete
-  | Error'
-  | Progressing
-  | Submitted
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText JobStatus where
-    parser = takeLowerText >>= \case
-        "canceled" -> pure Canceled
-        "complete" -> pure Complete
-        "error" -> pure Error'
-        "progressing" -> pure Progressing
-        "submitted" -> pure Submitted
-        e -> fromTextError $ "Failure parsing JobStatus from value: '" <> e
-           <> "'. Accepted values: canceled, complete, error, progressing, submitted"
-
-instance ToText JobStatus where
-    toText = \case
-        Canceled -> "CANCELED"
-        Complete -> "COMPLETE"
-        Error' -> "ERROR"
-        Progressing -> "PROGRESSING"
-        Submitted -> "SUBMITTED"
-
-instance Hashable     JobStatus
-instance NFData       JobStatus
-instance ToByteString JobStatus
-instance ToQuery      JobStatus
-instance ToHeader     JobStatus
-
-instance ToJSON JobStatus where
-    toJSON = toJSONText
-
-instance FromJSON JobStatus where
-    parseJSON = parseJSONText "JobStatus"
-
--- | Optional. When you request a list of job templates, you can choose to list them alphabetically by NAME or chronologically by CREATION_DATE. If you don't specify, the service will list them by name.
-data JobTemplateListBy
-  = JTLBCreationDate
-  | JTLBName
-  | JTLBSystem
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText JobTemplateListBy where
-    parser = takeLowerText >>= \case
-        "creation_date" -> pure JTLBCreationDate
-        "name" -> pure JTLBName
-        "system" -> pure JTLBSystem
-        e -> fromTextError $ "Failure parsing JobTemplateListBy from value: '" <> e
-           <> "'. Accepted values: creation_date, name, system"
-
-instance ToText JobTemplateListBy where
-    toText = \case
-        JTLBCreationDate -> "CREATION_DATE"
-        JTLBName -> "NAME"
-        JTLBSystem -> "SYSTEM"
-
-instance Hashable     JobTemplateListBy
-instance NFData       JobTemplateListBy
-instance ToByteString JobTemplateListBy
-instance ToQuery      JobTemplateListBy
-instance ToHeader     JobTemplateListBy
-
-instance ToJSON JobTemplateListBy where
-    toJSON = toJSONText
-
--- | Code to specify the language, following the specification "ISO 639-2 three-digit code":http://www.loc.gov/standards/iso639-2/
-data LanguageCode
-  = Aar
-  | Abk
-  | Afr
-  | Aka
-  | Amh
-  | Ara
-  | Arg
-  | Asm
-  | Ava
-  | Ave
-  | Aym
-  | Aze
-  | Bak
-  | Bam
-  | Bel
-  | Ben
-  | Bih
-  | Bis
-  | Bod
-  | Bos
-  | Bre
-  | Bul
-  | Cat
-  | Ces
-  | Cha
-  | Che
-  | Chu
-  | Chv
-  | Cor
-  | Cos
-  | Cre
-  | Cym
-  | Dan
-  | Deu
-  | Div
-  | Dzo
-  | Ell
-  | Eng
-  | Enm
-  | Epo
-  | Est
-  | Eus
-  | Ewe
-  | Fao
-  | Fas
-  | Fij
-  | Fin
-  | Fra
-  | Frm
-  | Fry
-  | Ful
-  | Ger
-  | Gla
-  | Gle
-  | Glg
-  | Glv
-  | Grn
-  | Guj
-  | Hat
-  | Hau
-  | Heb
-  | Her
-  | Hin
-  | Hmo
-  | Hrv
-  | Hun
-  | Hye
-  | IPk
-  | Ibo
-  | Ido
-  | Iii
-  | Iku
-  | Ile
-  | Ina
-  | Ind
-  | Isl
-  | Ita
-  | Jav
-  | Jpn
-  | Kal
-  | Kan
-  | Kas
-  | Kat
-  | Kau
-  | Kaz
-  | Khm
-  | Kik
-  | Kin
-  | Kir
-  | Kom
-  | Kon
-  | Kor
-  | Kua
-  | Kur
-  | Lao
-  | Lat
-  | Lav
-  | Lim
-  | Lin
-  | Lit
-  | Ltz
-  | Lub
-  | Lug
-  | Mah
-  | Mal
-  | Mar
-  | Mkd
-  | Mlg
-  | Mlt
-  | Mon
-  | Mri
-  | Msa
-  | Mya
-  | Nau
-  | Nav
-  | Nbl
-  | Nde
-  | Ndo
-  | Nep
-  | Nld
-  | Nno
-  | Nob
-  | Nor
-  | Nya
-  | OSs
-  | Oci
-  | Oji
-  | Ori
-  | Orj
-  | Orm
-  | Pan
-  | Pli
-  | Pol
-  | Por
-  | Pus
-  | Qaa
-  | Qpc
-  | Que
-  | Roh
-  | Ron
-  | Run
-  | Rus
-  | Sag
-  | San
-  | Sin
-  | Slk
-  | Slv
-  | Sme
-  | Smo
-  | Sna
-  | Snd
-  | Som
-  | Sot
-  | Spa
-  | Sqi
-  | Srb
-  | Srd
-  | Ssw
-  | Sun
-  | Swa
-  | Swe
-  | Tah
-  | Tam
-  | Tat
-  | Tel
-  | Tgk
-  | Tgl
-  | Tha
-  | Tir
-  | Tng
-  | Ton
-  | Tsn
-  | Tso
-  | Tuk
-  | Tur
-  | Twi
-  | Uig
-  | Ukr
-  | Urd
-  | Uzb
-  | Ven
-  | Vie
-  | Vol
-  | Wln
-  | Wol
-  | Xho
-  | Yid
-  | Yor
-  | Zha
-  | Zho
-  | Zul
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText LanguageCode where
-    parser = takeLowerText >>= \case
-        "aar" -> pure Aar
-        "abk" -> pure Abk
-        "afr" -> pure Afr
-        "aka" -> pure Aka
-        "amh" -> pure Amh
-        "ara" -> pure Ara
-        "arg" -> pure Arg
-        "asm" -> pure Asm
-        "ava" -> pure Ava
-        "ave" -> pure Ave
-        "aym" -> pure Aym
-        "aze" -> pure Aze
-        "bak" -> pure Bak
-        "bam" -> pure Bam
-        "bel" -> pure Bel
-        "ben" -> pure Ben
-        "bih" -> pure Bih
-        "bis" -> pure Bis
-        "bod" -> pure Bod
-        "bos" -> pure Bos
-        "bre" -> pure Bre
-        "bul" -> pure Bul
-        "cat" -> pure Cat
-        "ces" -> pure Ces
-        "cha" -> pure Cha
-        "che" -> pure Che
-        "chu" -> pure Chu
-        "chv" -> pure Chv
-        "cor" -> pure Cor
-        "cos" -> pure Cos
-        "cre" -> pure Cre
-        "cym" -> pure Cym
-        "dan" -> pure Dan
-        "deu" -> pure Deu
-        "div" -> pure Div
-        "dzo" -> pure Dzo
-        "ell" -> pure Ell
-        "eng" -> pure Eng
-        "enm" -> pure Enm
-        "epo" -> pure Epo
-        "est" -> pure Est
-        "eus" -> pure Eus
-        "ewe" -> pure Ewe
-        "fao" -> pure Fao
-        "fas" -> pure Fas
-        "fij" -> pure Fij
-        "fin" -> pure Fin
-        "fra" -> pure Fra
-        "frm" -> pure Frm
-        "fry" -> pure Fry
-        "ful" -> pure Ful
-        "ger" -> pure Ger
-        "gla" -> pure Gla
-        "gle" -> pure Gle
-        "glg" -> pure Glg
-        "glv" -> pure Glv
-        "grn" -> pure Grn
-        "guj" -> pure Guj
-        "hat" -> pure Hat
-        "hau" -> pure Hau
-        "heb" -> pure Heb
-        "her" -> pure Her
-        "hin" -> pure Hin
-        "hmo" -> pure Hmo
-        "hrv" -> pure Hrv
-        "hun" -> pure Hun
-        "hye" -> pure Hye
-        "ipk" -> pure IPk
-        "ibo" -> pure Ibo
-        "ido" -> pure Ido
-        "iii" -> pure Iii
-        "iku" -> pure Iku
-        "ile" -> pure Ile
-        "ina" -> pure Ina
-        "ind" -> pure Ind
-        "isl" -> pure Isl
-        "ita" -> pure Ita
-        "jav" -> pure Jav
-        "jpn" -> pure Jpn
-        "kal" -> pure Kal
-        "kan" -> pure Kan
-        "kas" -> pure Kas
-        "kat" -> pure Kat
-        "kau" -> pure Kau
-        "kaz" -> pure Kaz
-        "khm" -> pure Khm
-        "kik" -> pure Kik
-        "kin" -> pure Kin
-        "kir" -> pure Kir
-        "kom" -> pure Kom
-        "kon" -> pure Kon
-        "kor" -> pure Kor
-        "kua" -> pure Kua
-        "kur" -> pure Kur
-        "lao" -> pure Lao
-        "lat" -> pure Lat
-        "lav" -> pure Lav
-        "lim" -> pure Lim
-        "lin" -> pure Lin
-        "lit" -> pure Lit
-        "ltz" -> pure Ltz
-        "lub" -> pure Lub
-        "lug" -> pure Lug
-        "mah" -> pure Mah
-        "mal" -> pure Mal
-        "mar" -> pure Mar
-        "mkd" -> pure Mkd
-        "mlg" -> pure Mlg
-        "mlt" -> pure Mlt
-        "mon" -> pure Mon
-        "mri" -> pure Mri
-        "msa" -> pure Msa
-        "mya" -> pure Mya
-        "nau" -> pure Nau
-        "nav" -> pure Nav
-        "nbl" -> pure Nbl
-        "nde" -> pure Nde
-        "ndo" -> pure Ndo
-        "nep" -> pure Nep
-        "nld" -> pure Nld
-        "nno" -> pure Nno
-        "nob" -> pure Nob
-        "nor" -> pure Nor
-        "nya" -> pure Nya
-        "oss" -> pure OSs
-        "oci" -> pure Oci
-        "oji" -> pure Oji
-        "ori" -> pure Ori
-        "orj" -> pure Orj
-        "orm" -> pure Orm
-        "pan" -> pure Pan
-        "pli" -> pure Pli
-        "pol" -> pure Pol
-        "por" -> pure Por
-        "pus" -> pure Pus
-        "qaa" -> pure Qaa
-        "qpc" -> pure Qpc
-        "que" -> pure Que
-        "roh" -> pure Roh
-        "ron" -> pure Ron
-        "run" -> pure Run
-        "rus" -> pure Rus
-        "sag" -> pure Sag
-        "san" -> pure San
-        "sin" -> pure Sin
-        "slk" -> pure Slk
-        "slv" -> pure Slv
-        "sme" -> pure Sme
-        "smo" -> pure Smo
-        "sna" -> pure Sna
-        "snd" -> pure Snd
-        "som" -> pure Som
-        "sot" -> pure Sot
-        "spa" -> pure Spa
-        "sqi" -> pure Sqi
-        "srb" -> pure Srb
-        "srd" -> pure Srd
-        "ssw" -> pure Ssw
-        "sun" -> pure Sun
-        "swa" -> pure Swa
-        "swe" -> pure Swe
-        "tah" -> pure Tah
-        "tam" -> pure Tam
-        "tat" -> pure Tat
-        "tel" -> pure Tel
-        "tgk" -> pure Tgk
-        "tgl" -> pure Tgl
-        "tha" -> pure Tha
-        "tir" -> pure Tir
-        "tng" -> pure Tng
-        "ton" -> pure Ton
-        "tsn" -> pure Tsn
-        "tso" -> pure Tso
-        "tuk" -> pure Tuk
-        "tur" -> pure Tur
-        "twi" -> pure Twi
-        "uig" -> pure Uig
-        "ukr" -> pure Ukr
-        "urd" -> pure Urd
-        "uzb" -> pure Uzb
-        "ven" -> pure Ven
-        "vie" -> pure Vie
-        "vol" -> pure Vol
-        "wln" -> pure Wln
-        "wol" -> pure Wol
-        "xho" -> pure Xho
-        "yid" -> pure Yid
-        "yor" -> pure Yor
-        "zha" -> pure Zha
-        "zho" -> pure Zho
-        "zul" -> pure Zul
-        e -> fromTextError $ "Failure parsing LanguageCode from value: '" <> e
-           <> "'. Accepted values: aar, abk, afr, aka, amh, ara, arg, asm, ava, ave, aym, aze, bak, bam, bel, ben, bih, bis, bod, bos, bre, bul, cat, ces, cha, che, chu, chv, cor, cos, cre, cym, dan, deu, div, dzo, ell, eng, enm, epo, est, eus, ewe, fao, fas, fij, fin, fra, frm, fry, ful, ger, gla, gle, glg, glv, grn, guj, hat, hau, heb, her, hin, hmo, hrv, hun, hye, ipk, ibo, ido, iii, iku, ile, ina, ind, isl, ita, jav, jpn, kal, kan, kas, kat, kau, kaz, khm, kik, kin, kir, kom, kon, kor, kua, kur, lao, lat, lav, lim, lin, lit, ltz, lub, lug, mah, mal, mar, mkd, mlg, mlt, mon, mri, msa, mya, nau, nav, nbl, nde, ndo, nep, nld, nno, nob, nor, nya, oss, oci, oji, ori, orj, orm, pan, pli, pol, por, pus, qaa, qpc, que, roh, ron, run, rus, sag, san, sin, slk, slv, sme, smo, sna, snd, som, sot, spa, sqi, srb, srd, ssw, sun, swa, swe, tah, tam, tat, tel, tgk, tgl, tha, tir, tng, ton, tsn, tso, tuk, tur, twi, uig, ukr, urd, uzb, ven, vie, vol, wln, wol, xho, yid, yor, zha, zho, zul"
-
-instance ToText LanguageCode where
-    toText = \case
-        Aar -> "AAR"
-        Abk -> "ABK"
-        Afr -> "AFR"
-        Aka -> "AKA"
-        Amh -> "AMH"
-        Ara -> "ARA"
-        Arg -> "ARG"
-        Asm -> "ASM"
-        Ava -> "AVA"
-        Ave -> "AVE"
-        Aym -> "AYM"
-        Aze -> "AZE"
-        Bak -> "BAK"
-        Bam -> "BAM"
-        Bel -> "BEL"
-        Ben -> "BEN"
-        Bih -> "BIH"
-        Bis -> "BIS"
-        Bod -> "BOD"
-        Bos -> "BOS"
-        Bre -> "BRE"
-        Bul -> "BUL"
-        Cat -> "CAT"
-        Ces -> "CES"
-        Cha -> "CHA"
-        Che -> "CHE"
-        Chu -> "CHU"
-        Chv -> "CHV"
-        Cor -> "COR"
-        Cos -> "COS"
-        Cre -> "CRE"
-        Cym -> "CYM"
-        Dan -> "DAN"
-        Deu -> "DEU"
-        Div -> "DIV"
-        Dzo -> "DZO"
-        Ell -> "ELL"
-        Eng -> "ENG"
-        Enm -> "ENM"
-        Epo -> "EPO"
-        Est -> "EST"
-        Eus -> "EUS"
-        Ewe -> "EWE"
-        Fao -> "FAO"
-        Fas -> "FAS"
-        Fij -> "FIJ"
-        Fin -> "FIN"
-        Fra -> "FRA"
-        Frm -> "FRM"
-        Fry -> "FRY"
-        Ful -> "FUL"
-        Ger -> "GER"
-        Gla -> "GLA"
-        Gle -> "GLE"
-        Glg -> "GLG"
-        Glv -> "GLV"
-        Grn -> "GRN"
-        Guj -> "GUJ"
-        Hat -> "HAT"
-        Hau -> "HAU"
-        Heb -> "HEB"
-        Her -> "HER"
-        Hin -> "HIN"
-        Hmo -> "HMO"
-        Hrv -> "HRV"
-        Hun -> "HUN"
-        Hye -> "HYE"
-        IPk -> "IPK"
-        Ibo -> "IBO"
-        Ido -> "IDO"
-        Iii -> "III"
-        Iku -> "IKU"
-        Ile -> "ILE"
-        Ina -> "INA"
-        Ind -> "IND"
-        Isl -> "ISL"
-        Ita -> "ITA"
-        Jav -> "JAV"
-        Jpn -> "JPN"
-        Kal -> "KAL"
-        Kan -> "KAN"
-        Kas -> "KAS"
-        Kat -> "KAT"
-        Kau -> "KAU"
-        Kaz -> "KAZ"
-        Khm -> "KHM"
-        Kik -> "KIK"
-        Kin -> "KIN"
-        Kir -> "KIR"
-        Kom -> "KOM"
-        Kon -> "KON"
-        Kor -> "KOR"
-        Kua -> "KUA"
-        Kur -> "KUR"
-        Lao -> "LAO"
-        Lat -> "LAT"
-        Lav -> "LAV"
-        Lim -> "LIM"
-        Lin -> "LIN"
-        Lit -> "LIT"
-        Ltz -> "LTZ"
-        Lub -> "LUB"
-        Lug -> "LUG"
-        Mah -> "MAH"
-        Mal -> "MAL"
-        Mar -> "MAR"
-        Mkd -> "MKD"
-        Mlg -> "MLG"
-        Mlt -> "MLT"
-        Mon -> "MON"
-        Mri -> "MRI"
-        Msa -> "MSA"
-        Mya -> "MYA"
-        Nau -> "NAU"
-        Nav -> "NAV"
-        Nbl -> "NBL"
-        Nde -> "NDE"
-        Ndo -> "NDO"
-        Nep -> "NEP"
-        Nld -> "NLD"
-        Nno -> "NNO"
-        Nob -> "NOB"
-        Nor -> "NOR"
-        Nya -> "NYA"
-        OSs -> "OSS"
-        Oci -> "OCI"
-        Oji -> "OJI"
-        Ori -> "ORI"
-        Orj -> "ORJ"
-        Orm -> "ORM"
-        Pan -> "PAN"
-        Pli -> "PLI"
-        Pol -> "POL"
-        Por -> "POR"
-        Pus -> "PUS"
-        Qaa -> "QAA"
-        Qpc -> "QPC"
-        Que -> "QUE"
-        Roh -> "ROH"
-        Ron -> "RON"
-        Run -> "RUN"
-        Rus -> "RUS"
-        Sag -> "SAG"
-        San -> "SAN"
-        Sin -> "SIN"
-        Slk -> "SLK"
-        Slv -> "SLV"
-        Sme -> "SME"
-        Smo -> "SMO"
-        Sna -> "SNA"
-        Snd -> "SND"
-        Som -> "SOM"
-        Sot -> "SOT"
-        Spa -> "SPA"
-        Sqi -> "SQI"
-        Srb -> "SRB"
-        Srd -> "SRD"
-        Ssw -> "SSW"
-        Sun -> "SUN"
-        Swa -> "SWA"
-        Swe -> "SWE"
-        Tah -> "TAH"
-        Tam -> "TAM"
-        Tat -> "TAT"
-        Tel -> "TEL"
-        Tgk -> "TGK"
-        Tgl -> "TGL"
-        Tha -> "THA"
-        Tir -> "TIR"
-        Tng -> "TNG"
-        Ton -> "TON"
-        Tsn -> "TSN"
-        Tso -> "TSO"
-        Tuk -> "TUK"
-        Tur -> "TUR"
-        Twi -> "TWI"
-        Uig -> "UIG"
-        Ukr -> "UKR"
-        Urd -> "URD"
-        Uzb -> "UZB"
-        Ven -> "VEN"
-        Vie -> "VIE"
-        Vol -> "VOL"
-        Wln -> "WLN"
-        Wol -> "WOL"
-        Xho -> "XHO"
-        Yid -> "YID"
-        Yor -> "YOR"
-        Zha -> "ZHA"
-        Zho -> "ZHO"
-        Zul -> "ZUL"
-
-instance Hashable     LanguageCode
-instance NFData       LanguageCode
-instance ToByteString LanguageCode
-instance ToQuery      LanguageCode
-instance ToHeader     LanguageCode
-
-instance ToJSON LanguageCode where
-    toJSON = toJSONText
-
-instance FromJSON LanguageCode where
-    parseJSON = parseJSONText "LanguageCode"
-
--- | Selects between the DVB and ATSC buffer models for Dolby Digital audio.
-data M2tsAudioBufferModel
-  = Atsc
-  | Dvb
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M2tsAudioBufferModel where
-    parser = takeLowerText >>= \case
-        "atsc" -> pure Atsc
-        "dvb" -> pure Dvb
-        e -> fromTextError $ "Failure parsing M2tsAudioBufferModel from value: '" <> e
-           <> "'. Accepted values: atsc, dvb"
-
-instance ToText M2tsAudioBufferModel where
-    toText = \case
-        Atsc -> "ATSC"
-        Dvb -> "DVB"
-
-instance Hashable     M2tsAudioBufferModel
-instance NFData       M2tsAudioBufferModel
-instance ToByteString M2tsAudioBufferModel
-instance ToQuery      M2tsAudioBufferModel
-instance ToHeader     M2tsAudioBufferModel
-
-instance ToJSON M2tsAudioBufferModel where
-    toJSON = toJSONText
-
-instance FromJSON M2tsAudioBufferModel where
-    parseJSON = parseJSONText "M2tsAudioBufferModel"
-
--- | Controls what buffer model to use for accurate interleaving. If set to MULTIPLEX, use multiplex  buffer model. If set to NONE, this can lead to lower latency, but low-memory devices may not be able to play back the stream without interruptions.
-data M2tsBufferModel
-  = MBMMultiplex
-  | MBMNone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M2tsBufferModel where
-    parser = takeLowerText >>= \case
-        "multiplex" -> pure MBMMultiplex
-        "none" -> pure MBMNone
-        e -> fromTextError $ "Failure parsing M2tsBufferModel from value: '" <> e
-           <> "'. Accepted values: multiplex, none"
-
-instance ToText M2tsBufferModel where
-    toText = \case
-        MBMMultiplex -> "MULTIPLEX"
-        MBMNone -> "NONE"
-
-instance Hashable     M2tsBufferModel
-instance NFData       M2tsBufferModel
-instance ToByteString M2tsBufferModel
-instance ToQuery      M2tsBufferModel
-instance ToHeader     M2tsBufferModel
-
-instance ToJSON M2tsBufferModel where
-    toJSON = toJSONText
-
-instance FromJSON M2tsBufferModel where
-    parseJSON = parseJSONText "M2tsBufferModel"
-
--- | When set to VIDEO_AND_FIXED_INTERVALS, audio EBP markers will be added to partitions 3 and 4. The interval between these additional markers will be fixed, and will be slightly shorter than the video EBP marker interval. When set to VIDEO_INTERVAL, these additional markers will not be inserted. Only applicable when EBP segmentation markers are is selected (segmentationMarkers is EBP or EBP_LEGACY).
-data M2tsEbpAudioInterval
-  = VideoAndFixedIntervals
-  | VideoInterval
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M2tsEbpAudioInterval where
-    parser = takeLowerText >>= \case
-        "video_and_fixed_intervals" -> pure VideoAndFixedIntervals
-        "video_interval" -> pure VideoInterval
-        e -> fromTextError $ "Failure parsing M2tsEbpAudioInterval from value: '" <> e
-           <> "'. Accepted values: video_and_fixed_intervals, video_interval"
-
-instance ToText M2tsEbpAudioInterval where
-    toText = \case
-        VideoAndFixedIntervals -> "VIDEO_AND_FIXED_INTERVALS"
-        VideoInterval -> "VIDEO_INTERVAL"
-
-instance Hashable     M2tsEbpAudioInterval
-instance NFData       M2tsEbpAudioInterval
-instance ToByteString M2tsEbpAudioInterval
-instance ToQuery      M2tsEbpAudioInterval
-instance ToHeader     M2tsEbpAudioInterval
-
-instance ToJSON M2tsEbpAudioInterval where
-    toJSON = toJSONText
-
-instance FromJSON M2tsEbpAudioInterval where
-    parseJSON = parseJSONText "M2tsEbpAudioInterval"
-
--- | Selects which PIDs to place EBP markers on. They can either be placed only on the video PID, or on both the video PID and all audio PIDs. Only applicable when EBP segmentation markers are is selected (segmentationMarkers is EBP or EBP_LEGACY).
-data M2tsEbpPlacement
-  = VideoAndAudioPids
-  | VideoPid
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M2tsEbpPlacement where
-    parser = takeLowerText >>= \case
-        "video_and_audio_pids" -> pure VideoAndAudioPids
-        "video_pid" -> pure VideoPid
-        e -> fromTextError $ "Failure parsing M2tsEbpPlacement from value: '" <> e
-           <> "'. Accepted values: video_and_audio_pids, video_pid"
-
-instance ToText M2tsEbpPlacement where
-    toText = \case
-        VideoAndAudioPids -> "VIDEO_AND_AUDIO_PIDS"
-        VideoPid -> "VIDEO_PID"
-
-instance Hashable     M2tsEbpPlacement
-instance NFData       M2tsEbpPlacement
-instance ToByteString M2tsEbpPlacement
-instance ToQuery      M2tsEbpPlacement
-instance ToHeader     M2tsEbpPlacement
-
-instance ToJSON M2tsEbpPlacement where
-    toJSON = toJSONText
-
-instance FromJSON M2tsEbpPlacement where
-    parseJSON = parseJSONText "M2tsEbpPlacement"
-
--- | Controls whether to include the ES Rate field in the PES header.
-data M2tsEsRateInPes
-  = MERIPExclude
-  | MERIPInclude
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M2tsEsRateInPes where
-    parser = takeLowerText >>= \case
-        "exclude" -> pure MERIPExclude
-        "include" -> pure MERIPInclude
-        e -> fromTextError $ "Failure parsing M2tsEsRateInPes from value: '" <> e
-           <> "'. Accepted values: exclude, include"
-
-instance ToText M2tsEsRateInPes where
-    toText = \case
-        MERIPExclude -> "EXCLUDE"
-        MERIPInclude -> "INCLUDE"
-
-instance Hashable     M2tsEsRateInPes
-instance NFData       M2tsEsRateInPes
-instance ToByteString M2tsEsRateInPes
-instance ToQuery      M2tsEsRateInPes
-instance ToHeader     M2tsEsRateInPes
-
-instance ToJSON M2tsEsRateInPes where
-    toJSON = toJSONText
-
-instance FromJSON M2tsEsRateInPes where
-    parseJSON = parseJSONText "M2tsEsRateInPes"
-
--- | If INSERT, Nielsen inaudible tones for media tracking will be detected in the input audio and an equivalent ID3 tag will be inserted in the output.
-data M2tsNielsenId3
-  = MNIInsert
-  | MNINone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M2tsNielsenId3 where
-    parser = takeLowerText >>= \case
-        "insert" -> pure MNIInsert
-        "none" -> pure MNINone
-        e -> fromTextError $ "Failure parsing M2tsNielsenId3 from value: '" <> e
-           <> "'. Accepted values: insert, none"
-
-instance ToText M2tsNielsenId3 where
-    toText = \case
-        MNIInsert -> "INSERT"
-        MNINone -> "NONE"
-
-instance Hashable     M2tsNielsenId3
-instance NFData       M2tsNielsenId3
-instance ToByteString M2tsNielsenId3
-instance ToQuery      M2tsNielsenId3
-instance ToHeader     M2tsNielsenId3
-
-instance ToJSON M2tsNielsenId3 where
-    toJSON = toJSONText
-
-instance FromJSON M2tsNielsenId3 where
-    parseJSON = parseJSONText "M2tsNielsenId3"
-
--- | When set to PCR_EVERY_PES_PACKET, a Program Clock Reference value is inserted for every Packetized Elementary Stream (PES) header. This is effective only when the PCR PID is the same as the video or audio elementary stream.
-data M2tsPcrControl
-  = ConfiguredPcrPeriod
-  | PcrEveryPesPacket
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M2tsPcrControl where
-    parser = takeLowerText >>= \case
-        "configured_pcr_period" -> pure ConfiguredPcrPeriod
-        "pcr_every_pes_packet" -> pure PcrEveryPesPacket
-        e -> fromTextError $ "Failure parsing M2tsPcrControl from value: '" <> e
-           <> "'. Accepted values: configured_pcr_period, pcr_every_pes_packet"
-
-instance ToText M2tsPcrControl where
-    toText = \case
-        ConfiguredPcrPeriod -> "CONFIGURED_PCR_PERIOD"
-        PcrEveryPesPacket -> "PCR_EVERY_PES_PACKET"
-
-instance Hashable     M2tsPcrControl
-instance NFData       M2tsPcrControl
-instance ToByteString M2tsPcrControl
-instance ToQuery      M2tsPcrControl
-instance ToHeader     M2tsPcrControl
-
-instance ToJSON M2tsPcrControl where
-    toJSON = toJSONText
-
-instance FromJSON M2tsPcrControl where
-    parseJSON = parseJSONText "M2tsPcrControl"
-
--- | When set to CBR, inserts null packets into transport stream to fill specified bitrate. When set to VBR, the bitrate setting acts as the maximum bitrate, but the output will not be padded up to that bitrate.
-data M2tsRateMode
-  = MRMCbr
-  | MRMVbr
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M2tsRateMode where
-    parser = takeLowerText >>= \case
-        "cbr" -> pure MRMCbr
-        "vbr" -> pure MRMVbr
-        e -> fromTextError $ "Failure parsing M2tsRateMode from value: '" <> e
-           <> "'. Accepted values: cbr, vbr"
-
-instance ToText M2tsRateMode where
-    toText = \case
-        MRMCbr -> "CBR"
-        MRMVbr -> "VBR"
-
-instance Hashable     M2tsRateMode
-instance NFData       M2tsRateMode
-instance ToByteString M2tsRateMode
-instance ToQuery      M2tsRateMode
-instance ToHeader     M2tsRateMode
-
-instance ToJSON M2tsRateMode where
-    toJSON = toJSONText
-
-instance FromJSON M2tsRateMode where
-    parseJSON = parseJSONText "M2tsRateMode"
-
--- | Enables SCTE-35 passthrough (scte35Source) to pass any SCTE-35 signals from input to output.
-data M2tsScte35Source
-  = MSSNone
-  | MSSPassthrough
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M2tsScte35Source where
-    parser = takeLowerText >>= \case
-        "none" -> pure MSSNone
-        "passthrough" -> pure MSSPassthrough
-        e -> fromTextError $ "Failure parsing M2tsScte35Source from value: '" <> e
-           <> "'. Accepted values: none, passthrough"
-
-instance ToText M2tsScte35Source where
-    toText = \case
-        MSSNone -> "NONE"
-        MSSPassthrough -> "PASSTHROUGH"
-
-instance Hashable     M2tsScte35Source
-instance NFData       M2tsScte35Source
-instance ToByteString M2tsScte35Source
-instance ToQuery      M2tsScte35Source
-instance ToHeader     M2tsScte35Source
-
-instance ToJSON M2tsScte35Source where
-    toJSON = toJSONText
-
-instance FromJSON M2tsScte35Source where
-    parseJSON = parseJSONText "M2tsScte35Source"
-
--- | Inserts segmentation markers at each segmentation_time period. rai_segstart sets the Random Access Indicator bit in the adaptation field. rai_adapt sets the RAI bit and adds the current timecode in the private data bytes. psi_segstart inserts PAT and PMT tables at the start of segments. ebp adds Encoder Boundary Point information to the adaptation field as per OpenCable specification OC-SP-EBP-I01-130118. ebp_legacy adds Encoder Boundary Point information to the adaptation field using a legacy proprietary format.
-data M2tsSegmentationMarkers
-  = MSMEbp
-  | MSMEbpLegacy
-  | MSMNone
-  | MSMPsiSegstart
-  | MSMRaiAdapt
-  | MSMRaiSegstart
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M2tsSegmentationMarkers where
-    parser = takeLowerText >>= \case
-        "ebp" -> pure MSMEbp
-        "ebp_legacy" -> pure MSMEbpLegacy
-        "none" -> pure MSMNone
-        "psi_segstart" -> pure MSMPsiSegstart
-        "rai_adapt" -> pure MSMRaiAdapt
-        "rai_segstart" -> pure MSMRaiSegstart
-        e -> fromTextError $ "Failure parsing M2tsSegmentationMarkers from value: '" <> e
-           <> "'. Accepted values: ebp, ebp_legacy, none, psi_segstart, rai_adapt, rai_segstart"
-
-instance ToText M2tsSegmentationMarkers where
-    toText = \case
-        MSMEbp -> "EBP"
-        MSMEbpLegacy -> "EBP_LEGACY"
-        MSMNone -> "NONE"
-        MSMPsiSegstart -> "PSI_SEGSTART"
-        MSMRaiAdapt -> "RAI_ADAPT"
-        MSMRaiSegstart -> "RAI_SEGSTART"
-
-instance Hashable     M2tsSegmentationMarkers
-instance NFData       M2tsSegmentationMarkers
-instance ToByteString M2tsSegmentationMarkers
-instance ToQuery      M2tsSegmentationMarkers
-instance ToHeader     M2tsSegmentationMarkers
-
-instance ToJSON M2tsSegmentationMarkers where
-    toJSON = toJSONText
-
-instance FromJSON M2tsSegmentationMarkers where
-    parseJSON = parseJSONText "M2tsSegmentationMarkers"
-
--- | The segmentation style parameter controls how segmentation markers are inserted into the transport stream. With avails, it is possible that segments may be truncated, which can influence where future segmentation markers are inserted. When a segmentation style of "reset_cadence" is selected and a segment is truncated due to an avail, we will reset the segmentation cadence. This means the subsequent segment will have a duration of of $segmentation_time seconds. When a segmentation style of "maintain_cadence" is selected and a segment is truncated due to an avail, we will not reset the segmentation cadence. This means the subsequent segment will likely be truncated as well. However, all segments after that will have a duration of $segmentation_time seconds. Note that EBP lookahead is a slight exception to this rule.
-data M2tsSegmentationStyle
-  = MaintainCadence
-  | ResetCadence
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M2tsSegmentationStyle where
-    parser = takeLowerText >>= \case
-        "maintain_cadence" -> pure MaintainCadence
-        "reset_cadence" -> pure ResetCadence
-        e -> fromTextError $ "Failure parsing M2tsSegmentationStyle from value: '" <> e
-           <> "'. Accepted values: maintain_cadence, reset_cadence"
-
-instance ToText M2tsSegmentationStyle where
-    toText = \case
-        MaintainCadence -> "MAINTAIN_CADENCE"
-        ResetCadence -> "RESET_CADENCE"
-
-instance Hashable     M2tsSegmentationStyle
-instance NFData       M2tsSegmentationStyle
-instance ToByteString M2tsSegmentationStyle
-instance ToQuery      M2tsSegmentationStyle
-instance ToHeader     M2tsSegmentationStyle
-
-instance ToJSON M2tsSegmentationStyle where
-    toJSON = toJSONText
-
-instance FromJSON M2tsSegmentationStyle where
-    parseJSON = parseJSONText "M2tsSegmentationStyle"
-
--- | If INSERT, Nielsen inaudible tones for media tracking will be detected in the input audio and an equivalent ID3 tag will be inserted in the output.
-data M3u8NielsenId3
-  = M3uInsert
-  | M3uNone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M3u8NielsenId3 where
-    parser = takeLowerText >>= \case
-        "insert" -> pure M3uInsert
-        "none" -> pure M3uNone
-        e -> fromTextError $ "Failure parsing M3u8NielsenId3 from value: '" <> e
-           <> "'. Accepted values: insert, none"
-
-instance ToText M3u8NielsenId3 where
-    toText = \case
-        M3uInsert -> "INSERT"
-        M3uNone -> "NONE"
-
-instance Hashable     M3u8NielsenId3
-instance NFData       M3u8NielsenId3
-instance ToByteString M3u8NielsenId3
-instance ToQuery      M3u8NielsenId3
-instance ToHeader     M3u8NielsenId3
-
-instance ToJSON M3u8NielsenId3 where
-    toJSON = toJSONText
-
-instance FromJSON M3u8NielsenId3 where
-    parseJSON = parseJSONText "M3u8NielsenId3"
-
--- | When set to PCR_EVERY_PES_PACKET a Program Clock Reference value is inserted for every Packetized Elementary Stream (PES) header. This parameter is effective only when the PCR PID is the same as the video or audio elementary stream.
-data M3u8PcrControl
-  = MPCConfiguredPcrPeriod
-  | MPCPcrEveryPesPacket
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M3u8PcrControl where
-    parser = takeLowerText >>= \case
-        "configured_pcr_period" -> pure MPCConfiguredPcrPeriod
-        "pcr_every_pes_packet" -> pure MPCPcrEveryPesPacket
-        e -> fromTextError $ "Failure parsing M3u8PcrControl from value: '" <> e
-           <> "'. Accepted values: configured_pcr_period, pcr_every_pes_packet"
-
-instance ToText M3u8PcrControl where
-    toText = \case
-        MPCConfiguredPcrPeriod -> "CONFIGURED_PCR_PERIOD"
-        MPCPcrEveryPesPacket -> "PCR_EVERY_PES_PACKET"
-
-instance Hashable     M3u8PcrControl
-instance NFData       M3u8PcrControl
-instance ToByteString M3u8PcrControl
-instance ToQuery      M3u8PcrControl
-instance ToHeader     M3u8PcrControl
-
-instance ToJSON M3u8PcrControl where
-    toJSON = toJSONText
-
-instance FromJSON M3u8PcrControl where
-    parseJSON = parseJSONText "M3u8PcrControl"
-
--- | Enables SCTE-35 passthrough (scte35Source) to pass any SCTE-35 signals from input to output.
-data M3u8Scte35Source
-  = MNone
-  | MPassthrough
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText M3u8Scte35Source where
-    parser = takeLowerText >>= \case
-        "none" -> pure MNone
-        "passthrough" -> pure MPassthrough
-        e -> fromTextError $ "Failure parsing M3u8Scte35Source from value: '" <> e
-           <> "'. Accepted values: none, passthrough"
-
-instance ToText M3u8Scte35Source where
-    toText = \case
-        MNone -> "NONE"
-        MPassthrough -> "PASSTHROUGH"
-
-instance Hashable     M3u8Scte35Source
-instance NFData       M3u8Scte35Source
-instance ToByteString M3u8Scte35Source
-instance ToQuery      M3u8Scte35Source
-instance ToHeader     M3u8Scte35Source
-
-instance ToJSON M3u8Scte35Source where
-    toJSON = toJSONText
-
-instance FromJSON M3u8Scte35Source where
-    parseJSON = parseJSONText "M3u8Scte35Source"
-
--- | When enabled, include 'clap' atom if appropriate for the video output settings.
-data MovClapAtom
-  = MExclude
-  | MInclude
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText MovClapAtom where
-    parser = takeLowerText >>= \case
-        "exclude" -> pure MExclude
-        "include" -> pure MInclude
-        e -> fromTextError $ "Failure parsing MovClapAtom from value: '" <> e
-           <> "'. Accepted values: exclude, include"
-
-instance ToText MovClapAtom where
-    toText = \case
-        MExclude -> "EXCLUDE"
-        MInclude -> "INCLUDE"
-
-instance Hashable     MovClapAtom
-instance NFData       MovClapAtom
-instance ToByteString MovClapAtom
-instance ToQuery      MovClapAtom
-instance ToHeader     MovClapAtom
-
-instance ToJSON MovClapAtom where
-    toJSON = toJSONText
-
-instance FromJSON MovClapAtom where
-    parseJSON = parseJSONText "MovClapAtom"
-
--- | When enabled, file composition times will start at zero, composition times in the 'ctts' (composition time to sample) box for B-frames will be negative, and a 'cslg' (composition shift least greatest) box will be included per 14496-1 amendment 1. This improves compatibility with Apple players and tools.
-data MovCslgAtom
-  = MCAExclude
-  | MCAInclude
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText MovCslgAtom where
-    parser = takeLowerText >>= \case
-        "exclude" -> pure MCAExclude
-        "include" -> pure MCAInclude
-        e -> fromTextError $ "Failure parsing MovCslgAtom from value: '" <> e
-           <> "'. Accepted values: exclude, include"
-
-instance ToText MovCslgAtom where
-    toText = \case
-        MCAExclude -> "EXCLUDE"
-        MCAInclude -> "INCLUDE"
-
-instance Hashable     MovCslgAtom
-instance NFData       MovCslgAtom
-instance ToByteString MovCslgAtom
-instance ToQuery      MovCslgAtom
-instance ToHeader     MovCslgAtom
-
-instance ToJSON MovCslgAtom where
-    toJSON = toJSONText
-
-instance FromJSON MovCslgAtom where
-    parseJSON = parseJSONText "MovCslgAtom"
-
--- | When set to XDCAM, writes MPEG2 video streams into the QuickTime file using XDCAM fourcc codes. This increases compatibility with Apple editors and players, but may decrease compatibility with other players. Only applicable when the video codec is MPEG2.
-data MovMpeg2FourCCControl
-  = Mpeg
-  | Xdcam
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText MovMpeg2FourCCControl where
-    parser = takeLowerText >>= \case
-        "mpeg" -> pure Mpeg
-        "xdcam" -> pure Xdcam
-        e -> fromTextError $ "Failure parsing MovMpeg2FourCCControl from value: '" <> e
-           <> "'. Accepted values: mpeg, xdcam"
-
-instance ToText MovMpeg2FourCCControl where
-    toText = \case
-        Mpeg -> "MPEG"
-        Xdcam -> "XDCAM"
-
-instance Hashable     MovMpeg2FourCCControl
-instance NFData       MovMpeg2FourCCControl
-instance ToByteString MovMpeg2FourCCControl
-instance ToQuery      MovMpeg2FourCCControl
-instance ToHeader     MovMpeg2FourCCControl
-
-instance ToJSON MovMpeg2FourCCControl where
-    toJSON = toJSONText
-
-instance FromJSON MovMpeg2FourCCControl where
-    parseJSON = parseJSONText "MovMpeg2FourCCControl"
-
--- | If set to OMNEON, inserts Omneon-compatible padding
-data MovPaddingControl
-  = MPCNone
-  | MPCOmneon
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText MovPaddingControl where
-    parser = takeLowerText >>= \case
-        "none" -> pure MPCNone
-        "omneon" -> pure MPCOmneon
-        e -> fromTextError $ "Failure parsing MovPaddingControl from value: '" <> e
-           <> "'. Accepted values: none, omneon"
-
-instance ToText MovPaddingControl where
-    toText = \case
-        MPCNone -> "NONE"
-        MPCOmneon -> "OMNEON"
-
-instance Hashable     MovPaddingControl
-instance NFData       MovPaddingControl
-instance ToByteString MovPaddingControl
-instance ToQuery      MovPaddingControl
-instance ToHeader     MovPaddingControl
-
-instance ToJSON MovPaddingControl where
-    toJSON = toJSONText
-
-instance FromJSON MovPaddingControl where
-    parseJSON = parseJSONText "MovPaddingControl"
-
--- | A value of 'external' creates separate media files and the wrapper file (.mov) contains references to these media files. A value of 'self_contained' creates only a wrapper (.mov) file and this file contains all of the media.
-data MovReference
-  = External
-  | SelfContained
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText MovReference where
-    parser = takeLowerText >>= \case
-        "external" -> pure External
-        "self_contained" -> pure SelfContained
-        e -> fromTextError $ "Failure parsing MovReference from value: '" <> e
-           <> "'. Accepted values: external, self_contained"
-
-instance ToText MovReference where
-    toText = \case
-        External -> "EXTERNAL"
-        SelfContained -> "SELF_CONTAINED"
-
-instance Hashable     MovReference
-instance NFData       MovReference
-instance ToByteString MovReference
-instance ToQuery      MovReference
-instance ToHeader     MovReference
-
-instance ToJSON MovReference where
-    toJSON = toJSONText
-
-instance FromJSON MovReference where
-    parseJSON = parseJSONText "MovReference"
-
--- | When enabled, file composition times will start at zero, composition times in the 'ctts' (composition time to sample) box for B-frames will be negative, and a 'cslg' (composition shift least greatest) box will be included per 14496-1 amendment 1. This improves compatibility with Apple players and tools.
-data Mp4CslgAtom
-  = Mp4Exclude
-  | Mp4Include
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mp4CslgAtom where
-    parser = takeLowerText >>= \case
-        "exclude" -> pure Mp4Exclude
-        "include" -> pure Mp4Include
-        e -> fromTextError $ "Failure parsing Mp4CslgAtom from value: '" <> e
-           <> "'. Accepted values: exclude, include"
-
-instance ToText Mp4CslgAtom where
-    toText = \case
-        Mp4Exclude -> "EXCLUDE"
-        Mp4Include -> "INCLUDE"
-
-instance Hashable     Mp4CslgAtom
-instance NFData       Mp4CslgAtom
-instance ToByteString Mp4CslgAtom
-instance ToQuery      Mp4CslgAtom
-instance ToHeader     Mp4CslgAtom
-
-instance ToJSON Mp4CslgAtom where
-    toJSON = toJSONText
-
-instance FromJSON Mp4CslgAtom where
-    parseJSON = parseJSONText "Mp4CslgAtom"
-
--- | Inserts a free-space box immediately after the moov box.
-data Mp4FreeSpaceBox
-  = MFSBExclude
-  | MFSBInclude
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mp4FreeSpaceBox where
-    parser = takeLowerText >>= \case
-        "exclude" -> pure MFSBExclude
-        "include" -> pure MFSBInclude
-        e -> fromTextError $ "Failure parsing Mp4FreeSpaceBox from value: '" <> e
-           <> "'. Accepted values: exclude, include"
-
-instance ToText Mp4FreeSpaceBox where
-    toText = \case
-        MFSBExclude -> "EXCLUDE"
-        MFSBInclude -> "INCLUDE"
-
-instance Hashable     Mp4FreeSpaceBox
-instance NFData       Mp4FreeSpaceBox
-instance ToByteString Mp4FreeSpaceBox
-instance ToQuery      Mp4FreeSpaceBox
-instance ToHeader     Mp4FreeSpaceBox
-
-instance ToJSON Mp4FreeSpaceBox where
-    toJSON = toJSONText
-
-instance FromJSON Mp4FreeSpaceBox where
-    parseJSON = parseJSONText "Mp4FreeSpaceBox"
-
--- | If set to PROGRESSIVE_DOWNLOAD, the MOOV atom is relocated to the beginning of the archive as required for progressive downloading. Otherwise it is placed normally at the end.
-data Mp4MoovPlacement
-  = MMPNormal
-  | MMPProgressiveDownload
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mp4MoovPlacement where
-    parser = takeLowerText >>= \case
-        "normal" -> pure MMPNormal
-        "progressive_download" -> pure MMPProgressiveDownload
-        e -> fromTextError $ "Failure parsing Mp4MoovPlacement from value: '" <> e
-           <> "'. Accepted values: normal, progressive_download"
-
-instance ToText Mp4MoovPlacement where
-    toText = \case
-        MMPNormal -> "NORMAL"
-        MMPProgressiveDownload -> "PROGRESSIVE_DOWNLOAD"
-
-instance Hashable     Mp4MoovPlacement
-instance NFData       Mp4MoovPlacement
-instance ToByteString Mp4MoovPlacement
-instance ToQuery      Mp4MoovPlacement
-instance ToHeader     Mp4MoovPlacement
-
-instance ToJSON Mp4MoovPlacement where
-    toJSON = toJSONText
-
-instance FromJSON Mp4MoovPlacement where
-    parseJSON = parseJSONText "Mp4MoovPlacement"
-
--- | Adaptive quantization. Allows intra-frame quantizers to vary to improve visual quality.
-data Mpeg2AdaptiveQuantization
-  = MAQHigh
-  | MAQLow
-  | MAQMedium
-  | MAQOff
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2AdaptiveQuantization where
-    parser = takeLowerText >>= \case
-        "high" -> pure MAQHigh
-        "low" -> pure MAQLow
-        "medium" -> pure MAQMedium
-        "off" -> pure MAQOff
-        e -> fromTextError $ "Failure parsing Mpeg2AdaptiveQuantization from value: '" <> e
-           <> "'. Accepted values: high, low, medium, off"
-
-instance ToText Mpeg2AdaptiveQuantization where
-    toText = \case
-        MAQHigh -> "HIGH"
-        MAQLow -> "LOW"
-        MAQMedium -> "MEDIUM"
-        MAQOff -> "OFF"
-
-instance Hashable     Mpeg2AdaptiveQuantization
-instance NFData       Mpeg2AdaptiveQuantization
-instance ToByteString Mpeg2AdaptiveQuantization
-instance ToQuery      Mpeg2AdaptiveQuantization
-instance ToHeader     Mpeg2AdaptiveQuantization
-
-instance ToJSON Mpeg2AdaptiveQuantization where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2AdaptiveQuantization where
-    parseJSON = parseJSONText "Mpeg2AdaptiveQuantization"
-
--- | Use Level (Mpeg2CodecLevel) to set the MPEG-2 level for the video output.
-data Mpeg2CodecLevel
-  = MCLAuto
-  | MCLHIGH1440
-  | MCLHigh
-  | MCLLow
-  | MCLMain
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2CodecLevel where
-    parser = takeLowerText >>= \case
-        "auto" -> pure MCLAuto
-        "high1440" -> pure MCLHIGH1440
-        "high" -> pure MCLHigh
-        "low" -> pure MCLLow
-        "main" -> pure MCLMain
-        e -> fromTextError $ "Failure parsing Mpeg2CodecLevel from value: '" <> e
-           <> "'. Accepted values: auto, high1440, high, low, main"
-
-instance ToText Mpeg2CodecLevel where
-    toText = \case
-        MCLAuto -> "AUTO"
-        MCLHIGH1440 -> "HIGH1440"
-        MCLHigh -> "HIGH"
-        MCLLow -> "LOW"
-        MCLMain -> "MAIN"
-
-instance Hashable     Mpeg2CodecLevel
-instance NFData       Mpeg2CodecLevel
-instance ToByteString Mpeg2CodecLevel
-instance ToQuery      Mpeg2CodecLevel
-instance ToHeader     Mpeg2CodecLevel
-
-instance ToJSON Mpeg2CodecLevel where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2CodecLevel where
-    parseJSON = parseJSONText "Mpeg2CodecLevel"
-
--- | Use Profile (Mpeg2CodecProfile) to set the MPEG-2 profile for the video output.
-data Mpeg2CodecProfile
-  = Main
-  | Profile422
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2CodecProfile where
-    parser = takeLowerText >>= \case
-        "main" -> pure Main
-        "profile_422" -> pure Profile422
-        e -> fromTextError $ "Failure parsing Mpeg2CodecProfile from value: '" <> e
-           <> "'. Accepted values: main, profile_422"
-
-instance ToText Mpeg2CodecProfile where
-    toText = \case
-        Main -> "MAIN"
-        Profile422 -> "PROFILE_422"
-
-instance Hashable     Mpeg2CodecProfile
-instance NFData       Mpeg2CodecProfile
-instance ToByteString Mpeg2CodecProfile
-instance ToQuery      Mpeg2CodecProfile
-instance ToHeader     Mpeg2CodecProfile
-
-instance ToJSON Mpeg2CodecProfile where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2CodecProfile where
-    parseJSON = parseJSONText "Mpeg2CodecProfile"
-
--- | Using the API, set FramerateControl to INITIALIZE_FROM_SOURCE if you want the service to use the framerate from the input. Using the console, do this by choosing INITIALIZE_FROM_SOURCE for Framerate.
-data Mpeg2FramerateControl
-  = MFCInitializeFromSource
-  | MFCSpecified
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2FramerateControl where
-    parser = takeLowerText >>= \case
-        "initialize_from_source" -> pure MFCInitializeFromSource
-        "specified" -> pure MFCSpecified
-        e -> fromTextError $ "Failure parsing Mpeg2FramerateControl from value: '" <> e
-           <> "'. Accepted values: initialize_from_source, specified"
-
-instance ToText Mpeg2FramerateControl where
-    toText = \case
-        MFCInitializeFromSource -> "INITIALIZE_FROM_SOURCE"
-        MFCSpecified -> "SPECIFIED"
-
-instance Hashable     Mpeg2FramerateControl
-instance NFData       Mpeg2FramerateControl
-instance ToByteString Mpeg2FramerateControl
-instance ToQuery      Mpeg2FramerateControl
-instance ToHeader     Mpeg2FramerateControl
-
-instance ToJSON Mpeg2FramerateControl where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2FramerateControl where
-    parseJSON = parseJSONText "Mpeg2FramerateControl"
-
--- | When set to INTERPOLATE, produces smoother motion during framerate conversion.
-data Mpeg2FramerateConversionAlgorithm
-  = MFCADuplicateDrop
-  | MFCAInterpolate
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2FramerateConversionAlgorithm where
-    parser = takeLowerText >>= \case
-        "duplicate_drop" -> pure MFCADuplicateDrop
-        "interpolate" -> pure MFCAInterpolate
-        e -> fromTextError $ "Failure parsing Mpeg2FramerateConversionAlgorithm from value: '" <> e
-           <> "'. Accepted values: duplicate_drop, interpolate"
-
-instance ToText Mpeg2FramerateConversionAlgorithm where
-    toText = \case
-        MFCADuplicateDrop -> "DUPLICATE_DROP"
-        MFCAInterpolate -> "INTERPOLATE"
-
-instance Hashable     Mpeg2FramerateConversionAlgorithm
-instance NFData       Mpeg2FramerateConversionAlgorithm
-instance ToByteString Mpeg2FramerateConversionAlgorithm
-instance ToQuery      Mpeg2FramerateConversionAlgorithm
-instance ToHeader     Mpeg2FramerateConversionAlgorithm
-
-instance ToJSON Mpeg2FramerateConversionAlgorithm where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2FramerateConversionAlgorithm where
-    parseJSON = parseJSONText "Mpeg2FramerateConversionAlgorithm"
-
--- | Indicates if the GOP Size in MPEG2 is specified in frames or seconds. If seconds the system will convert the GOP Size into a frame count at run time.
-data Mpeg2GopSizeUnits
-  = MGSUFrames
-  | MGSUSeconds
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2GopSizeUnits where
-    parser = takeLowerText >>= \case
-        "frames" -> pure MGSUFrames
-        "seconds" -> pure MGSUSeconds
-        e -> fromTextError $ "Failure parsing Mpeg2GopSizeUnits from value: '" <> e
-           <> "'. Accepted values: frames, seconds"
-
-instance ToText Mpeg2GopSizeUnits where
-    toText = \case
-        MGSUFrames -> "FRAMES"
-        MGSUSeconds -> "SECONDS"
-
-instance Hashable     Mpeg2GopSizeUnits
-instance NFData       Mpeg2GopSizeUnits
-instance ToByteString Mpeg2GopSizeUnits
-instance ToQuery      Mpeg2GopSizeUnits
-instance ToHeader     Mpeg2GopSizeUnits
-
-instance ToJSON Mpeg2GopSizeUnits where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2GopSizeUnits where
-    parseJSON = parseJSONText "Mpeg2GopSizeUnits"
-
--- | Use Interlace mode (InterlaceMode) to choose the scan line type for the output. * Top Field First (TOP_FIELD) and Bottom Field First (BOTTOM_FIELD) produce interlaced output with the entire output having the same field polarity (top or bottom first). * Follow, Default Top (FOLLOw_TOP_FIELD) and Follow, Default Bottom (FOLLOW_BOTTOM_FIELD) use the same  field polarity as the source. Therefore, behavior depends on the input scan type. - If the source is interlaced, the output will be interlaced with the same polarity as the source (it will follow the source). The output could therefore be a mix of "top field first" and "bottom field first". - If the source is progressive, the output will be interlaced with "top field first" or "bottom field first" polarity, depending on which of the Follow options you chose.
-data Mpeg2InterlaceMode
-  = MIMBottomField
-  | MIMFollowBottomField
-  | MIMFollowTopField
-  | MIMProgressive
-  | MIMTopField
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2InterlaceMode where
-    parser = takeLowerText >>= \case
-        "bottom_field" -> pure MIMBottomField
-        "follow_bottom_field" -> pure MIMFollowBottomField
-        "follow_top_field" -> pure MIMFollowTopField
-        "progressive" -> pure MIMProgressive
-        "top_field" -> pure MIMTopField
-        e -> fromTextError $ "Failure parsing Mpeg2InterlaceMode from value: '" <> e
-           <> "'. Accepted values: bottom_field, follow_bottom_field, follow_top_field, progressive, top_field"
-
-instance ToText Mpeg2InterlaceMode where
-    toText = \case
-        MIMBottomField -> "BOTTOM_FIELD"
-        MIMFollowBottomField -> "FOLLOW_BOTTOM_FIELD"
-        MIMFollowTopField -> "FOLLOW_TOP_FIELD"
-        MIMProgressive -> "PROGRESSIVE"
-        MIMTopField -> "TOP_FIELD"
-
-instance Hashable     Mpeg2InterlaceMode
-instance NFData       Mpeg2InterlaceMode
-instance ToByteString Mpeg2InterlaceMode
-instance ToQuery      Mpeg2InterlaceMode
-instance ToHeader     Mpeg2InterlaceMode
-
-instance ToJSON Mpeg2InterlaceMode where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2InterlaceMode where
-    parseJSON = parseJSONText "Mpeg2InterlaceMode"
-
--- | Use Intra DC precision (Mpeg2IntraDcPrecision) to set quantization precision for intra-block DC coefficients. If you choose the value auto, the service will automatically select the precision based on the per-frame compression ratio.
-data Mpeg2IntraDcPrecision
-  = MIDPAuto
-  | MIDPIntraDcPrecision10
-  | MIDPIntraDcPrecision11
-  | MIDPIntraDcPrecision8
-  | MIDPIntraDcPrecision9
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2IntraDcPrecision where
-    parser = takeLowerText >>= \case
-        "auto" -> pure MIDPAuto
-        "intra_dc_precision_10" -> pure MIDPIntraDcPrecision10
-        "intra_dc_precision_11" -> pure MIDPIntraDcPrecision11
-        "intra_dc_precision_8" -> pure MIDPIntraDcPrecision8
-        "intra_dc_precision_9" -> pure MIDPIntraDcPrecision9
-        e -> fromTextError $ "Failure parsing Mpeg2IntraDcPrecision from value: '" <> e
-           <> "'. Accepted values: auto, intra_dc_precision_10, intra_dc_precision_11, intra_dc_precision_8, intra_dc_precision_9"
-
-instance ToText Mpeg2IntraDcPrecision where
-    toText = \case
-        MIDPAuto -> "AUTO"
-        MIDPIntraDcPrecision10 -> "INTRA_DC_PRECISION_10"
-        MIDPIntraDcPrecision11 -> "INTRA_DC_PRECISION_11"
-        MIDPIntraDcPrecision8 -> "INTRA_DC_PRECISION_8"
-        MIDPIntraDcPrecision9 -> "INTRA_DC_PRECISION_9"
-
-instance Hashable     Mpeg2IntraDcPrecision
-instance NFData       Mpeg2IntraDcPrecision
-instance ToByteString Mpeg2IntraDcPrecision
-instance ToQuery      Mpeg2IntraDcPrecision
-instance ToHeader     Mpeg2IntraDcPrecision
-
-instance ToJSON Mpeg2IntraDcPrecision where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2IntraDcPrecision where
-    parseJSON = parseJSONText "Mpeg2IntraDcPrecision"
-
--- | Using the API, enable ParFollowSource if you want the service to use the pixel aspect ratio from the input. Using the console, do this by choosing Follow source for Pixel aspect ratio.
-data Mpeg2ParControl
-  = MPCInitializeFromSource
-  | MPCSpecified
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2ParControl where
-    parser = takeLowerText >>= \case
-        "initialize_from_source" -> pure MPCInitializeFromSource
-        "specified" -> pure MPCSpecified
-        e -> fromTextError $ "Failure parsing Mpeg2ParControl from value: '" <> e
-           <> "'. Accepted values: initialize_from_source, specified"
-
-instance ToText Mpeg2ParControl where
-    toText = \case
-        MPCInitializeFromSource -> "INITIALIZE_FROM_SOURCE"
-        MPCSpecified -> "SPECIFIED"
-
-instance Hashable     Mpeg2ParControl
-instance NFData       Mpeg2ParControl
-instance ToByteString Mpeg2ParControl
-instance ToQuery      Mpeg2ParControl
-instance ToHeader     Mpeg2ParControl
-
-instance ToJSON Mpeg2ParControl where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2ParControl where
-    parseJSON = parseJSONText "Mpeg2ParControl"
-
--- | Use Quality tuning level (Mpeg2QualityTuningLevel) to specifiy whether to use single-pass or multipass video encoding.
-data Mpeg2QualityTuningLevel
-  = MQTLMultiPass
-  | MQTLSinglePass
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2QualityTuningLevel where
-    parser = takeLowerText >>= \case
-        "multi_pass" -> pure MQTLMultiPass
-        "single_pass" -> pure MQTLSinglePass
-        e -> fromTextError $ "Failure parsing Mpeg2QualityTuningLevel from value: '" <> e
-           <> "'. Accepted values: multi_pass, single_pass"
-
-instance ToText Mpeg2QualityTuningLevel where
-    toText = \case
-        MQTLMultiPass -> "MULTI_PASS"
-        MQTLSinglePass -> "SINGLE_PASS"
-
-instance Hashable     Mpeg2QualityTuningLevel
-instance NFData       Mpeg2QualityTuningLevel
-instance ToByteString Mpeg2QualityTuningLevel
-instance ToQuery      Mpeg2QualityTuningLevel
-instance ToHeader     Mpeg2QualityTuningLevel
-
-instance ToJSON Mpeg2QualityTuningLevel where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2QualityTuningLevel where
-    parseJSON = parseJSONText "Mpeg2QualityTuningLevel"
-
--- | Use Rate control mode (Mpeg2RateControlMode) to specifiy whether the bitrate is variable (vbr) or constant (cbr).
-data Mpeg2RateControlMode
-  = MRCMCbr
-  | MRCMVbr
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2RateControlMode where
-    parser = takeLowerText >>= \case
-        "cbr" -> pure MRCMCbr
-        "vbr" -> pure MRCMVbr
-        e -> fromTextError $ "Failure parsing Mpeg2RateControlMode from value: '" <> e
-           <> "'. Accepted values: cbr, vbr"
-
-instance ToText Mpeg2RateControlMode where
-    toText = \case
-        MRCMCbr -> "CBR"
-        MRCMVbr -> "VBR"
-
-instance Hashable     Mpeg2RateControlMode
-instance NFData       Mpeg2RateControlMode
-instance ToByteString Mpeg2RateControlMode
-instance ToQuery      Mpeg2RateControlMode
-instance ToHeader     Mpeg2RateControlMode
-
-instance ToJSON Mpeg2RateControlMode where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2RateControlMode where
-    parseJSON = parseJSONText "Mpeg2RateControlMode"
-
--- | Scene change detection (inserts I-frames on scene changes).
-data Mpeg2SceneChangeDetect
-  = MSCDDisabled
-  | MSCDEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2SceneChangeDetect where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure MSCDDisabled
-        "enabled" -> pure MSCDEnabled
-        e -> fromTextError $ "Failure parsing Mpeg2SceneChangeDetect from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText Mpeg2SceneChangeDetect where
-    toText = \case
-        MSCDDisabled -> "DISABLED"
-        MSCDEnabled -> "ENABLED"
-
-instance Hashable     Mpeg2SceneChangeDetect
-instance NFData       Mpeg2SceneChangeDetect
-instance ToByteString Mpeg2SceneChangeDetect
-instance ToQuery      Mpeg2SceneChangeDetect
-instance ToHeader     Mpeg2SceneChangeDetect
-
-instance ToJSON Mpeg2SceneChangeDetect where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2SceneChangeDetect where
-    parseJSON = parseJSONText "Mpeg2SceneChangeDetect"
-
--- | Enables Slow PAL rate conversion. 23.976fps and 24fps input is relabeled as 25fps, and audio is sped up correspondingly.
-data Mpeg2SlowPal
-  = MSPDisabled
-  | MSPEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2SlowPal where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure MSPDisabled
-        "enabled" -> pure MSPEnabled
-        e -> fromTextError $ "Failure parsing Mpeg2SlowPal from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText Mpeg2SlowPal where
-    toText = \case
-        MSPDisabled -> "DISABLED"
-        MSPEnabled -> "ENABLED"
-
-instance Hashable     Mpeg2SlowPal
-instance NFData       Mpeg2SlowPal
-instance ToByteString Mpeg2SlowPal
-instance ToQuery      Mpeg2SlowPal
-instance ToHeader     Mpeg2SlowPal
-
-instance ToJSON Mpeg2SlowPal where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2SlowPal where
-    parseJSON = parseJSONText "Mpeg2SlowPal"
-
--- | Adjust quantization within each frame based on spatial variation of content complexity.
-data Mpeg2SpatialAdaptiveQuantization
-  = MSAQDisabled
-  | MSAQEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2SpatialAdaptiveQuantization where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure MSAQDisabled
-        "enabled" -> pure MSAQEnabled
-        e -> fromTextError $ "Failure parsing Mpeg2SpatialAdaptiveQuantization from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText Mpeg2SpatialAdaptiveQuantization where
-    toText = \case
-        MSAQDisabled -> "DISABLED"
-        MSAQEnabled -> "ENABLED"
-
-instance Hashable     Mpeg2SpatialAdaptiveQuantization
-instance NFData       Mpeg2SpatialAdaptiveQuantization
-instance ToByteString Mpeg2SpatialAdaptiveQuantization
-instance ToQuery      Mpeg2SpatialAdaptiveQuantization
-instance ToHeader     Mpeg2SpatialAdaptiveQuantization
-
-instance ToJSON Mpeg2SpatialAdaptiveQuantization where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2SpatialAdaptiveQuantization where
-    parseJSON = parseJSONText "Mpeg2SpatialAdaptiveQuantization"
-
--- | Produces a Type D-10 compatible bitstream (SMPTE 356M-2001).
-data Mpeg2Syntax
-  = MSD10
-  | MSDefault
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2Syntax where
-    parser = takeLowerText >>= \case
-        "d_10" -> pure MSD10
-        "default" -> pure MSDefault
-        e -> fromTextError $ "Failure parsing Mpeg2Syntax from value: '" <> e
-           <> "'. Accepted values: d_10, default"
-
-instance ToText Mpeg2Syntax where
-    toText = \case
-        MSD10 -> "D_10"
-        MSDefault -> "DEFAULT"
-
-instance Hashable     Mpeg2Syntax
-instance NFData       Mpeg2Syntax
-instance ToByteString Mpeg2Syntax
-instance ToQuery      Mpeg2Syntax
-instance ToHeader     Mpeg2Syntax
-
-instance ToJSON Mpeg2Syntax where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2Syntax where
-    parseJSON = parseJSONText "Mpeg2Syntax"
-
--- | Only use Telecine (Mpeg2Telecine) when you set Framerate (Framerate) to 29.970. Set Telecine (Mpeg2Telecine) to Hard (hard) to produce a 29.97i output from a 23.976 input. Set it to Soft (soft) to produce 23.976 output and leave converstion to the player.
-data Mpeg2Telecine
-  = MTHard
-  | MTNone
-  | MTSoft
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2Telecine where
-    parser = takeLowerText >>= \case
-        "hard" -> pure MTHard
-        "none" -> pure MTNone
-        "soft" -> pure MTSoft
-        e -> fromTextError $ "Failure parsing Mpeg2Telecine from value: '" <> e
-           <> "'. Accepted values: hard, none, soft"
-
-instance ToText Mpeg2Telecine where
-    toText = \case
-        MTHard -> "HARD"
-        MTNone -> "NONE"
-        MTSoft -> "SOFT"
-
-instance Hashable     Mpeg2Telecine
-instance NFData       Mpeg2Telecine
-instance ToByteString Mpeg2Telecine
-instance ToQuery      Mpeg2Telecine
-instance ToHeader     Mpeg2Telecine
-
-instance ToJSON Mpeg2Telecine where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2Telecine where
-    parseJSON = parseJSONText "Mpeg2Telecine"
-
--- | Adjust quantization within each frame based on temporal variation of content complexity.
-data Mpeg2TemporalAdaptiveQuantization
-  = MTAQDisabled
-  | MTAQEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Mpeg2TemporalAdaptiveQuantization where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure MTAQDisabled
-        "enabled" -> pure MTAQEnabled
-        e -> fromTextError $ "Failure parsing Mpeg2TemporalAdaptiveQuantization from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText Mpeg2TemporalAdaptiveQuantization where
-    toText = \case
-        MTAQDisabled -> "DISABLED"
-        MTAQEnabled -> "ENABLED"
-
-instance Hashable     Mpeg2TemporalAdaptiveQuantization
-instance NFData       Mpeg2TemporalAdaptiveQuantization
-instance ToByteString Mpeg2TemporalAdaptiveQuantization
-instance ToQuery      Mpeg2TemporalAdaptiveQuantization
-instance ToHeader     Mpeg2TemporalAdaptiveQuantization
-
-instance ToJSON Mpeg2TemporalAdaptiveQuantization where
-    toJSON = toJSONText
-
-instance FromJSON Mpeg2TemporalAdaptiveQuantization where
-    parseJSON = parseJSONText "Mpeg2TemporalAdaptiveQuantization"
-
--- | COMBINE_DUPLICATE_STREAMS combines identical audio encoding settings across a Microsoft Smooth output group into a single audio stream.
-data MsSmoothAudioDeduplication
-  = CombineDuplicateStreams
-  | None
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText MsSmoothAudioDeduplication where
-    parser = takeLowerText >>= \case
-        "combine_duplicate_streams" -> pure CombineDuplicateStreams
-        "none" -> pure None
-        e -> fromTextError $ "Failure parsing MsSmoothAudioDeduplication from value: '" <> e
-           <> "'. Accepted values: combine_duplicate_streams, none"
-
-instance ToText MsSmoothAudioDeduplication where
-    toText = \case
-        CombineDuplicateStreams -> "COMBINE_DUPLICATE_STREAMS"
-        None -> "NONE"
-
-instance Hashable     MsSmoothAudioDeduplication
-instance NFData       MsSmoothAudioDeduplication
-instance ToByteString MsSmoothAudioDeduplication
-instance ToQuery      MsSmoothAudioDeduplication
-instance ToHeader     MsSmoothAudioDeduplication
-
-instance ToJSON MsSmoothAudioDeduplication where
-    toJSON = toJSONText
-
-instance FromJSON MsSmoothAudioDeduplication where
-    parseJSON = parseJSONText "MsSmoothAudioDeduplication"
-
--- | Use Manifest encoding (MsSmoothManifestEncoding) to specify the encoding format for the server and client manifest. Valid options are utf8 and utf16.
-data MsSmoothManifestEncoding
-  = UTF16
-  | UTF8
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText MsSmoothManifestEncoding where
-    parser = takeLowerText >>= \case
-        "utf16" -> pure UTF16
-        "utf8" -> pure UTF8
-        e -> fromTextError $ "Failure parsing MsSmoothManifestEncoding from value: '" <> e
-           <> "'. Accepted values: utf16, utf8"
-
-instance ToText MsSmoothManifestEncoding where
-    toText = \case
-        UTF16 -> "UTF16"
-        UTF8 -> "UTF8"
-
-instance Hashable     MsSmoothManifestEncoding
-instance NFData       MsSmoothManifestEncoding
-instance ToByteString MsSmoothManifestEncoding
-instance ToQuery      MsSmoothManifestEncoding
-instance ToHeader     MsSmoothManifestEncoding
-
-instance ToJSON MsSmoothManifestEncoding where
-    toJSON = toJSONText
-
-instance FromJSON MsSmoothManifestEncoding where
-    parseJSON = parseJSONText "MsSmoothManifestEncoding"
-
--- | Use Noise reducer filter (NoiseReducerFilter) to select one of the following spatial image filtering functions. To use this setting, you must also enable Noise reducer (NoiseReducer). * Bilateral is an edge preserving noise reduction filter * Mean (softest), Gaussian, Lanczos, and Sharpen (sharpest) are convolution filters * Conserve is a min/max noise reduction filter * Spatial is frequency-domain filter based on JND principles.
-data NoiseReducerFilter
-  = Bilateral
-  | Conserve
-  | Gaussian
-  | Lanczos
-  | Mean
-  | Sharpen
-  | Spatial
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText NoiseReducerFilter where
-    parser = takeLowerText >>= \case
-        "bilateral" -> pure Bilateral
-        "conserve" -> pure Conserve
-        "gaussian" -> pure Gaussian
-        "lanczos" -> pure Lanczos
-        "mean" -> pure Mean
-        "sharpen" -> pure Sharpen
-        "spatial" -> pure Spatial
-        e -> fromTextError $ "Failure parsing NoiseReducerFilter from value: '" <> e
-           <> "'. Accepted values: bilateral, conserve, gaussian, lanczos, mean, sharpen, spatial"
-
-instance ToText NoiseReducerFilter where
-    toText = \case
-        Bilateral -> "BILATERAL"
-        Conserve -> "CONSERVE"
-        Gaussian -> "GAUSSIAN"
-        Lanczos -> "LANCZOS"
-        Mean -> "MEAN"
-        Sharpen -> "SHARPEN"
-        Spatial -> "SPATIAL"
-
-instance Hashable     NoiseReducerFilter
-instance NFData       NoiseReducerFilter
-instance ToByteString NoiseReducerFilter
-instance ToQuery      NoiseReducerFilter
-instance ToHeader     NoiseReducerFilter
-
-instance ToJSON NoiseReducerFilter where
-    toJSON = toJSONText
-
-instance FromJSON NoiseReducerFilter where
-    parseJSON = parseJSONText "NoiseReducerFilter"
-
--- | When you request lists of resources, you can optionally specify whether they are sorted in ASCENDING or DESCENDING order. Default varies by resource.
-data Order
-  = Ascending
-  | Descending
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Order where
-    parser = takeLowerText >>= \case
-        "ascending" -> pure Ascending
-        "descending" -> pure Descending
-        e -> fromTextError $ "Failure parsing Order from value: '" <> e
-           <> "'. Accepted values: ascending, descending"
-
-instance ToText Order where
-    toText = \case
-        Ascending -> "ASCENDING"
-        Descending -> "DESCENDING"
-
-instance Hashable     Order
-instance NFData       Order
-instance ToByteString Order
-instance ToQuery      Order
-instance ToHeader     Order
-
-instance ToJSON Order where
-    toJSON = toJSONText
-
--- | Type of output group (File group, Apple HLS, DASH ISO, Microsoft Smooth Streaming)
-data OutputGroupType
-  = DashIsoGroupSettings
-  | FileGroupSettings
-  | HlsGroupSettings
-  | MsSmoothGroupSettings
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText OutputGroupType where
-    parser = takeLowerText >>= \case
-        "dash_iso_group_settings" -> pure DashIsoGroupSettings
-        "file_group_settings" -> pure FileGroupSettings
-        "hls_group_settings" -> pure HlsGroupSettings
-        "ms_smooth_group_settings" -> pure MsSmoothGroupSettings
-        e -> fromTextError $ "Failure parsing OutputGroupType from value: '" <> e
-           <> "'. Accepted values: dash_iso_group_settings, file_group_settings, hls_group_settings, ms_smooth_group_settings"
-
-instance ToText OutputGroupType where
-    toText = \case
-        DashIsoGroupSettings -> "DASH_ISO_GROUP_SETTINGS"
-        FileGroupSettings -> "FILE_GROUP_SETTINGS"
-        HlsGroupSettings -> "HLS_GROUP_SETTINGS"
-        MsSmoothGroupSettings -> "MS_SMOOTH_GROUP_SETTINGS"
-
-instance Hashable     OutputGroupType
-instance NFData       OutputGroupType
-instance ToByteString OutputGroupType
-instance ToQuery      OutputGroupType
-instance ToHeader     OutputGroupType
-
-instance ToJSON OutputGroupType where
-    toJSON = toJSONText
-
-instance FromJSON OutputGroupType where
-    parseJSON = parseJSONText "OutputGroupType"
-
--- | Selects method of inserting SDT information into output stream.  "Follow input SDT" copies SDT information from input stream to  output stream. "Follow input SDT if present" copies SDT information from  input stream to output stream if SDT information is present in the input, otherwise it will fall back on the user-defined values. Enter "SDT  Manually" means user will enter the SDT information. "No SDT" means output  stream will not contain SDT information.
-data OutputSdt
-  = SdtFollow
-  | SdtFollowIfPresent
-  | SdtManual
-  | SdtNone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText OutputSdt where
-    parser = takeLowerText >>= \case
-        "sdt_follow" -> pure SdtFollow
-        "sdt_follow_if_present" -> pure SdtFollowIfPresent
-        "sdt_manual" -> pure SdtManual
-        "sdt_none" -> pure SdtNone
-        e -> fromTextError $ "Failure parsing OutputSdt from value: '" <> e
-           <> "'. Accepted values: sdt_follow, sdt_follow_if_present, sdt_manual, sdt_none"
-
-instance ToText OutputSdt where
-    toText = \case
-        SdtFollow -> "SDT_FOLLOW"
-        SdtFollowIfPresent -> "SDT_FOLLOW_IF_PRESENT"
-        SdtManual -> "SDT_MANUAL"
-        SdtNone -> "SDT_NONE"
-
-instance Hashable     OutputSdt
-instance NFData       OutputSdt
-instance ToByteString OutputSdt
-instance ToQuery      OutputSdt
-instance ToHeader     OutputSdt
-
-instance ToJSON OutputSdt where
-    toJSON = toJSONText
-
-instance FromJSON OutputSdt where
-    parseJSON = parseJSONText "OutputSdt"
-
--- | Optional. When you request a list of presets, you can choose to list them alphabetically by NAME or chronologically by CREATION_DATE. If you don't specify, the service will list them by name.
-data PresetListBy
-  = PLBCreationDate
-  | PLBName
-  | PLBSystem
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText PresetListBy where
-    parser = takeLowerText >>= \case
-        "creation_date" -> pure PLBCreationDate
-        "name" -> pure PLBName
-        "system" -> pure PLBSystem
-        e -> fromTextError $ "Failure parsing PresetListBy from value: '" <> e
-           <> "'. Accepted values: creation_date, name, system"
-
-instance ToText PresetListBy where
-    toText = \case
-        PLBCreationDate -> "CREATION_DATE"
-        PLBName -> "NAME"
-        PLBSystem -> "SYSTEM"
-
-instance Hashable     PresetListBy
-instance NFData       PresetListBy
-instance ToByteString PresetListBy
-instance ToQuery      PresetListBy
-instance ToHeader     PresetListBy
-
-instance ToJSON PresetListBy where
-    toJSON = toJSONText
-
--- | Use Profile (ProResCodecProfile) to specifiy the type of Apple ProRes codec to use for this output.
-data ProresCodecProfile
-  = AppleProres422
-  | AppleProres422Hq
-  | AppleProres422LT
-  | AppleProres422Proxy
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ProresCodecProfile where
-    parser = takeLowerText >>= \case
-        "apple_prores_422" -> pure AppleProres422
-        "apple_prores_422_hq" -> pure AppleProres422Hq
-        "apple_prores_422_lt" -> pure AppleProres422LT
-        "apple_prores_422_proxy" -> pure AppleProres422Proxy
-        e -> fromTextError $ "Failure parsing ProresCodecProfile from value: '" <> e
-           <> "'. Accepted values: apple_prores_422, apple_prores_422_hq, apple_prores_422_lt, apple_prores_422_proxy"
-
-instance ToText ProresCodecProfile where
-    toText = \case
-        AppleProres422 -> "APPLE_PRORES_422"
-        AppleProres422Hq -> "APPLE_PRORES_422_HQ"
-        AppleProres422LT -> "APPLE_PRORES_422_LT"
-        AppleProres422Proxy -> "APPLE_PRORES_422_PROXY"
-
-instance Hashable     ProresCodecProfile
-instance NFData       ProresCodecProfile
-instance ToByteString ProresCodecProfile
-instance ToQuery      ProresCodecProfile
-instance ToHeader     ProresCodecProfile
-
-instance ToJSON ProresCodecProfile where
-    toJSON = toJSONText
-
-instance FromJSON ProresCodecProfile where
-    parseJSON = parseJSONText "ProresCodecProfile"
-
--- | Using the API, set FramerateControl to INITIALIZE_FROM_SOURCE if you want the service to use the framerate from the input. Using the console, do this by choosing INITIALIZE_FROM_SOURCE for Framerate.
-data ProresFramerateControl
-  = PFCInitializeFromSource
-  | PFCSpecified
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ProresFramerateControl where
-    parser = takeLowerText >>= \case
-        "initialize_from_source" -> pure PFCInitializeFromSource
-        "specified" -> pure PFCSpecified
-        e -> fromTextError $ "Failure parsing ProresFramerateControl from value: '" <> e
-           <> "'. Accepted values: initialize_from_source, specified"
-
-instance ToText ProresFramerateControl where
-    toText = \case
-        PFCInitializeFromSource -> "INITIALIZE_FROM_SOURCE"
-        PFCSpecified -> "SPECIFIED"
-
-instance Hashable     ProresFramerateControl
-instance NFData       ProresFramerateControl
-instance ToByteString ProresFramerateControl
-instance ToQuery      ProresFramerateControl
-instance ToHeader     ProresFramerateControl
-
-instance ToJSON ProresFramerateControl where
-    toJSON = toJSONText
-
-instance FromJSON ProresFramerateControl where
-    parseJSON = parseJSONText "ProresFramerateControl"
-
--- | When set to INTERPOLATE, produces smoother motion during framerate conversion.
-data ProresFramerateConversionAlgorithm
-  = PFCADuplicateDrop
-  | PFCAInterpolate
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ProresFramerateConversionAlgorithm where
-    parser = takeLowerText >>= \case
-        "duplicate_drop" -> pure PFCADuplicateDrop
-        "interpolate" -> pure PFCAInterpolate
-        e -> fromTextError $ "Failure parsing ProresFramerateConversionAlgorithm from value: '" <> e
-           <> "'. Accepted values: duplicate_drop, interpolate"
-
-instance ToText ProresFramerateConversionAlgorithm where
-    toText = \case
-        PFCADuplicateDrop -> "DUPLICATE_DROP"
-        PFCAInterpolate -> "INTERPOLATE"
-
-instance Hashable     ProresFramerateConversionAlgorithm
-instance NFData       ProresFramerateConversionAlgorithm
-instance ToByteString ProresFramerateConversionAlgorithm
-instance ToQuery      ProresFramerateConversionAlgorithm
-instance ToHeader     ProresFramerateConversionAlgorithm
-
-instance ToJSON ProresFramerateConversionAlgorithm where
-    toJSON = toJSONText
-
-instance FromJSON ProresFramerateConversionAlgorithm where
-    parseJSON = parseJSONText "ProresFramerateConversionAlgorithm"
-
--- | Use Interlace mode (InterlaceMode) to choose the scan line type for the output. * Top Field First (TOP_FIELD) and Bottom Field First (BOTTOM_FIELD) produce interlaced output with the entire output having the same field polarity (top or bottom first). * Follow, Default Top (FOLLOw_TOP_FIELD) and Follow, Default Bottom (FOLLOW_BOTTOM_FIELD) use the same  field polarity as the source. Therefore, behavior depends on the input scan type. - If the source is interlaced, the output will be interlaced with the same polarity as the source (it will follow the source). The output could therefore be a mix of "top field first" and "bottom field first". - If the source is progressive, the output will be interlaced with "top field first" or "bottom field first" polarity, depending on which of the Follow options you chose.
-data ProresInterlaceMode
-  = PIMBottomField
-  | PIMFollowBottomField
-  | PIMFollowTopField
-  | PIMProgressive
-  | PIMTopField
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ProresInterlaceMode where
-    parser = takeLowerText >>= \case
-        "bottom_field" -> pure PIMBottomField
-        "follow_bottom_field" -> pure PIMFollowBottomField
-        "follow_top_field" -> pure PIMFollowTopField
-        "progressive" -> pure PIMProgressive
-        "top_field" -> pure PIMTopField
-        e -> fromTextError $ "Failure parsing ProresInterlaceMode from value: '" <> e
-           <> "'. Accepted values: bottom_field, follow_bottom_field, follow_top_field, progressive, top_field"
-
-instance ToText ProresInterlaceMode where
-    toText = \case
-        PIMBottomField -> "BOTTOM_FIELD"
-        PIMFollowBottomField -> "FOLLOW_BOTTOM_FIELD"
-        PIMFollowTopField -> "FOLLOW_TOP_FIELD"
-        PIMProgressive -> "PROGRESSIVE"
-        PIMTopField -> "TOP_FIELD"
-
-instance Hashable     ProresInterlaceMode
-instance NFData       ProresInterlaceMode
-instance ToByteString ProresInterlaceMode
-instance ToQuery      ProresInterlaceMode
-instance ToHeader     ProresInterlaceMode
-
-instance ToJSON ProresInterlaceMode where
-    toJSON = toJSONText
-
-instance FromJSON ProresInterlaceMode where
-    parseJSON = parseJSONText "ProresInterlaceMode"
-
--- | Use (ProresParControl) to specify how the service determines the pixel aspect ratio. Set to Follow source (INITIALIZE_FROM_SOURCE) to use the pixel aspect ratio from the input.  To specify a different pixel aspect ratio: Using the console, choose it from the dropdown menu. Using the API, set ProresParControl to (SPECIFIED) and provide  for (ParNumerator) and (ParDenominator).
-data ProresParControl
-  = PPCInitializeFromSource
-  | PPCSpecified
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ProresParControl where
-    parser = takeLowerText >>= \case
-        "initialize_from_source" -> pure PPCInitializeFromSource
-        "specified" -> pure PPCSpecified
-        e -> fromTextError $ "Failure parsing ProresParControl from value: '" <> e
-           <> "'. Accepted values: initialize_from_source, specified"
-
-instance ToText ProresParControl where
-    toText = \case
-        PPCInitializeFromSource -> "INITIALIZE_FROM_SOURCE"
-        PPCSpecified -> "SPECIFIED"
-
-instance Hashable     ProresParControl
-instance NFData       ProresParControl
-instance ToByteString ProresParControl
-instance ToQuery      ProresParControl
-instance ToHeader     ProresParControl
-
-instance ToJSON ProresParControl where
-    toJSON = toJSONText
-
-instance FromJSON ProresParControl where
-    parseJSON = parseJSONText "ProresParControl"
-
--- | Enables Slow PAL rate conversion. 23.976fps and 24fps input is relabeled as 25fps, and audio is sped up correspondingly.
-data ProresSlowPal
-  = PSPDisabled
-  | PSPEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ProresSlowPal where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure PSPDisabled
-        "enabled" -> pure PSPEnabled
-        e -> fromTextError $ "Failure parsing ProresSlowPal from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText ProresSlowPal where
-    toText = \case
-        PSPDisabled -> "DISABLED"
-        PSPEnabled -> "ENABLED"
-
-instance Hashable     ProresSlowPal
-instance NFData       ProresSlowPal
-instance ToByteString ProresSlowPal
-instance ToQuery      ProresSlowPal
-instance ToHeader     ProresSlowPal
-
-instance ToJSON ProresSlowPal where
-    toJSON = toJSONText
-
-instance FromJSON ProresSlowPal where
-    parseJSON = parseJSONText "ProresSlowPal"
-
--- | Only use Telecine (ProresTelecine) when you set Framerate (Framerate) to 29.970. Set Telecine (ProresTelecine) to Hard (hard) to produce a 29.97i output from a 23.976 input. Set it to Soft (soft) to produce 23.976 output and leave converstion to the player.
-data ProresTelecine
-  = PTHard
-  | PTNone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ProresTelecine where
-    parser = takeLowerText >>= \case
-        "hard" -> pure PTHard
-        "none" -> pure PTNone
-        e -> fromTextError $ "Failure parsing ProresTelecine from value: '" <> e
-           <> "'. Accepted values: hard, none"
-
-instance ToText ProresTelecine where
-    toText = \case
-        PTHard -> "HARD"
-        PTNone -> "NONE"
-
-instance Hashable     ProresTelecine
-instance NFData       ProresTelecine
-instance ToByteString ProresTelecine
-instance ToQuery      ProresTelecine
-instance ToHeader     ProresTelecine
-
-instance ToJSON ProresTelecine where
-    toJSON = toJSONText
-
-instance FromJSON ProresTelecine where
-    parseJSON = parseJSONText "ProresTelecine"
-
--- | Optional. When you request a list of queues, you can choose to list them alphabetically by NAME or chronologically by CREATION_DATE. If you don't specify, the service will list them by creation date.
-data QueueListBy
-  = CreationDate
-  | Name
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText QueueListBy where
-    parser = takeLowerText >>= \case
-        "creation_date" -> pure CreationDate
-        "name" -> pure Name
-        e -> fromTextError $ "Failure parsing QueueListBy from value: '" <> e
-           <> "'. Accepted values: creation_date, name"
-
-instance ToText QueueListBy where
-    toText = \case
-        CreationDate -> "CREATION_DATE"
-        Name -> "NAME"
-
-instance Hashable     QueueListBy
-instance NFData       QueueListBy
-instance ToByteString QueueListBy
-instance ToQuery      QueueListBy
-instance ToHeader     QueueListBy
-
-instance ToJSON QueueListBy where
-    toJSON = toJSONText
-
--- | Queues can be ACTIVE or PAUSED. If you pause a queue, jobs in that queue will not begin. Jobs running when a queue is paused continue to run until they finish or error out.
-data QueueStatus
-  = Active
-  | Paused
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText QueueStatus where
-    parser = takeLowerText >>= \case
-        "active" -> pure Active
-        "paused" -> pure Paused
-        e -> fromTextError $ "Failure parsing QueueStatus from value: '" <> e
-           <> "'. Accepted values: active, paused"
-
-instance ToText QueueStatus where
-    toText = \case
-        Active -> "ACTIVE"
-        Paused -> "PAUSED"
-
-instance Hashable     QueueStatus
-instance NFData       QueueStatus
-instance ToByteString QueueStatus
-instance ToQuery      QueueStatus
-instance ToHeader     QueueStatus
-
-instance ToJSON QueueStatus where
-    toJSON = toJSONText
-
-instance FromJSON QueueStatus where
-    parseJSON = parseJSONText "QueueStatus"
-
--- | Use Respond to AFD (RespondToAfd) to specify how the service changes the video itself in response to AFD values in the input. * Choose Respond to clip the input video frame according to the AFD value, input display aspect ratio, and output display aspect ratio. * Choose Passthrough to include the input AFD values. Do not choose this when AfdSignaling is set to (NONE). A preferred implementation of this workflow is to set RespondToAfd to (NONE) and set AfdSignaling to (AUTO). * Choose None to remove all input AFD values from this output.
-data RespondToAfd
-  = RTANone
-  | RTAPassthrough
-  | RTARespond
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText RespondToAfd where
-    parser = takeLowerText >>= \case
-        "none" -> pure RTANone
-        "passthrough" -> pure RTAPassthrough
-        "respond" -> pure RTARespond
-        e -> fromTextError $ "Failure parsing RespondToAfd from value: '" <> e
-           <> "'. Accepted values: none, passthrough, respond"
-
-instance ToText RespondToAfd where
-    toText = \case
-        RTANone -> "NONE"
-        RTAPassthrough -> "PASSTHROUGH"
-        RTARespond -> "RESPOND"
-
-instance Hashable     RespondToAfd
-instance NFData       RespondToAfd
-instance ToByteString RespondToAfd
-instance ToQuery      RespondToAfd
-instance ToHeader     RespondToAfd
-
-instance ToJSON RespondToAfd where
-    toJSON = toJSONText
-
-instance FromJSON RespondToAfd where
-    parseJSON = parseJSONText "RespondToAfd"
-
--- | Applies only if your input aspect ratio is different from your output aspect ratio. Enable Stretch to output (StretchToOutput) to have the service stretch your video image to fit. Leave this setting disabled to allow the service to letterbox your video instead. This setting overrides any positioning value you specify elsewhere in the job.
-data ScalingBehavior
-  = SBDefault
-  | SBStretchToOutput
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ScalingBehavior where
-    parser = takeLowerText >>= \case
-        "default" -> pure SBDefault
-        "stretch_to_output" -> pure SBStretchToOutput
-        e -> fromTextError $ "Failure parsing ScalingBehavior from value: '" <> e
-           <> "'. Accepted values: default, stretch_to_output"
-
-instance ToText ScalingBehavior where
-    toText = \case
-        SBDefault -> "DEFAULT"
-        SBStretchToOutput -> "STRETCH_TO_OUTPUT"
-
-instance Hashable     ScalingBehavior
-instance NFData       ScalingBehavior
-instance ToByteString ScalingBehavior
-instance ToQuery      ScalingBehavior
-instance ToHeader     ScalingBehavior
-
-instance ToJSON ScalingBehavior where
-    toJSON = toJSONText
-
-instance FromJSON ScalingBehavior where
-    parseJSON = parseJSONText "ScalingBehavior"
-
--- | Set Framerate (SccDestinationFramerate) to make sure that the captions and the video are synchronized in the output. Specify a framerate that matches the framerate of the associated video. If the video framerate is 29.97, choose 29.97 dropframe (FRAMERATE_29_97_DROPFRAME) only if the video has video_insertion=true and drop_frame_timecode=true; otherwise, choose 29.97 non-dropframe (FRAMERATE_29_97_NON_DROPFRAME).
-data SccDestinationFramerate
-  = Framerate2397
-  | Framerate24
-  | Framerate2997Dropframe
-  | Framerate2997NonDropframe
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText SccDestinationFramerate where
-    parser = takeLowerText >>= \case
-        "framerate_23_97" -> pure Framerate2397
-        "framerate_24" -> pure Framerate24
-        "framerate_29_97_dropframe" -> pure Framerate2997Dropframe
-        "framerate_29_97_non_dropframe" -> pure Framerate2997NonDropframe
-        e -> fromTextError $ "Failure parsing SccDestinationFramerate from value: '" <> e
-           <> "'. Accepted values: framerate_23_97, framerate_24, framerate_29_97_dropframe, framerate_29_97_non_dropframe"
-
-instance ToText SccDestinationFramerate where
-    toText = \case
-        Framerate2397 -> "FRAMERATE_23_97"
-        Framerate24 -> "FRAMERATE_24"
-        Framerate2997Dropframe -> "FRAMERATE_29_97_DROPFRAME"
-        Framerate2997NonDropframe -> "FRAMERATE_29_97_NON_DROPFRAME"
-
-instance Hashable     SccDestinationFramerate
-instance NFData       SccDestinationFramerate
-instance ToByteString SccDestinationFramerate
-instance ToQuery      SccDestinationFramerate
-instance ToHeader     SccDestinationFramerate
-
-instance ToJSON SccDestinationFramerate where
-    toJSON = toJSONText
-
-instance FromJSON SccDestinationFramerate where
-    parseJSON = parseJSONText "SccDestinationFramerate"
-
--- | Use Position (Position) under under Timecode burn-in (TimecodeBurnIn) to specify the location the burned-in timecode on output video.
-data TimecodeBurninPosition
-  = BottomCenter
-  | BottomLeft
-  | BottomRight
-  | MiddleCenter
-  | MiddleLeft
-  | MiddleRight
-  | TopCenter
-  | TopLeft
-  | TopRight
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText TimecodeBurninPosition where
-    parser = takeLowerText >>= \case
-        "bottom_center" -> pure BottomCenter
-        "bottom_left" -> pure BottomLeft
-        "bottom_right" -> pure BottomRight
-        "middle_center" -> pure MiddleCenter
-        "middle_left" -> pure MiddleLeft
-        "middle_right" -> pure MiddleRight
-        "top_center" -> pure TopCenter
-        "top_left" -> pure TopLeft
-        "top_right" -> pure TopRight
-        e -> fromTextError $ "Failure parsing TimecodeBurninPosition from value: '" <> e
-           <> "'. Accepted values: bottom_center, bottom_left, bottom_right, middle_center, middle_left, middle_right, top_center, top_left, top_right"
-
-instance ToText TimecodeBurninPosition where
-    toText = \case
-        BottomCenter -> "BOTTOM_CENTER"
-        BottomLeft -> "BOTTOM_LEFT"
-        BottomRight -> "BOTTOM_RIGHT"
-        MiddleCenter -> "MIDDLE_CENTER"
-        MiddleLeft -> "MIDDLE_LEFT"
-        MiddleRight -> "MIDDLE_RIGHT"
-        TopCenter -> "TOP_CENTER"
-        TopLeft -> "TOP_LEFT"
-        TopRight -> "TOP_RIGHT"
-
-instance Hashable     TimecodeBurninPosition
-instance NFData       TimecodeBurninPosition
-instance ToByteString TimecodeBurninPosition
-instance ToQuery      TimecodeBurninPosition
-instance ToHeader     TimecodeBurninPosition
-
-instance ToJSON TimecodeBurninPosition where
-    toJSON = toJSONText
-
-instance FromJSON TimecodeBurninPosition where
-    parseJSON = parseJSONText "TimecodeBurninPosition"
-
--- | Use Timecode source (TimecodeSource) to set how timecodes are handled within this input. To make sure that your video, audio, captions, and markers are synchronized and that time-based features, such as image inserter, work correctly, choose the Timecode source option that matches your assets. All timecodes are in a 24-hour format with frame number (HH:MM:SS:FF). * Embedded (EMBEDDED) - Use the timecode that is in the input video. If no embedded timecode is in the source, the service will use Start at 0 (ZEROBASED) instead. * Start at 0 (ZEROBASED) - Set the timecode of the initial frame to 00:00:00:00. * Specified Start (SPECIFIEDSTART) - Set the timecode of the initial frame to a value other than zero. You use Start timecode (Start) to provide this value.
-data TimecodeSource
-  = TSEmbedded
-  | TSSpecifiedstart
-  | TSZerobased
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText TimecodeSource where
-    parser = takeLowerText >>= \case
-        "embedded" -> pure TSEmbedded
-        "specifiedstart" -> pure TSSpecifiedstart
-        "zerobased" -> pure TSZerobased
-        e -> fromTextError $ "Failure parsing TimecodeSource from value: '" <> e
-           <> "'. Accepted values: embedded, specifiedstart, zerobased"
-
-instance ToText TimecodeSource where
-    toText = \case
-        TSEmbedded -> "EMBEDDED"
-        TSSpecifiedstart -> "SPECIFIEDSTART"
-        TSZerobased -> "ZEROBASED"
-
-instance Hashable     TimecodeSource
-instance NFData       TimecodeSource
-instance ToByteString TimecodeSource
-instance ToQuery      TimecodeSource
-instance ToHeader     TimecodeSource
-
-instance ToJSON TimecodeSource where
-    toJSON = toJSONText
-
-instance FromJSON TimecodeSource where
-    parseJSON = parseJSONText "TimecodeSource"
-
--- | If PASSTHROUGH, inserts ID3 timed metadata from the timed_metadata REST command into this output.
-data TimedMetadata
-  = TMNone
-  | TMPassthrough
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText TimedMetadata where
-    parser = takeLowerText >>= \case
-        "none" -> pure TMNone
-        "passthrough" -> pure TMPassthrough
-        e -> fromTextError $ "Failure parsing TimedMetadata from value: '" <> e
-           <> "'. Accepted values: none, passthrough"
-
-instance ToText TimedMetadata where
-    toText = \case
-        TMNone -> "NONE"
-        TMPassthrough -> "PASSTHROUGH"
-
-instance Hashable     TimedMetadata
-instance NFData       TimedMetadata
-instance ToByteString TimedMetadata
-instance ToQuery      TimedMetadata
-instance ToHeader     TimedMetadata
-
-instance ToJSON TimedMetadata where
-    toJSON = toJSONText
-
-instance FromJSON TimedMetadata where
-    parseJSON = parseJSONText "TimedMetadata"
-
--- | Pass through style and position information from a TTML-like input source (TTML, SMPTE-TT, CFF-TT) to the CFF-TT output or TTML output.
-data TtmlStylePassthrough
-  = TSPDisabled
-  | TSPEnabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText TtmlStylePassthrough where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure TSPDisabled
-        "enabled" -> pure TSPEnabled
-        e -> fromTextError $ "Failure parsing TtmlStylePassthrough from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText TtmlStylePassthrough where
-    toText = \case
-        TSPDisabled -> "DISABLED"
-        TSPEnabled -> "ENABLED"
-
-instance Hashable     TtmlStylePassthrough
-instance NFData       TtmlStylePassthrough
-instance ToByteString TtmlStylePassthrough
-instance ToQuery      TtmlStylePassthrough
-instance ToHeader     TtmlStylePassthrough
-
-instance ToJSON TtmlStylePassthrough where
-    toJSON = toJSONText
-
-instance FromJSON TtmlStylePassthrough where
-    parseJSON = parseJSONText "TtmlStylePassthrough"
-
-data Type
-  = Custom
-  | System
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Type where
-    parser = takeLowerText >>= \case
-        "custom" -> pure Custom
-        "system" -> pure System
-        e -> fromTextError $ "Failure parsing Type from value: '" <> e
-           <> "'. Accepted values: custom, system"
-
-instance ToText Type where
-    toText = \case
-        Custom -> "CUSTOM"
-        System -> "SYSTEM"
-
-instance Hashable     Type
-instance NFData       Type
-instance ToByteString Type
-instance ToQuery      Type
-instance ToHeader     Type
-
-instance FromJSON Type where
-    parseJSON = parseJSONText "Type"
-
--- | Type of video codec
-data VideoCodec
-  = FrameCapture
-  | H264
-  | H265
-  | MPEG2
-  | Prores
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText VideoCodec where
-    parser = takeLowerText >>= \case
-        "frame_capture" -> pure FrameCapture
-        "h_264" -> pure H264
-        "h_265" -> pure H265
-        "mpeg2" -> pure MPEG2
-        "prores" -> pure Prores
-        e -> fromTextError $ "Failure parsing VideoCodec from value: '" <> e
-           <> "'. Accepted values: frame_capture, h_264, h_265, mpeg2, prores"
-
-instance ToText VideoCodec where
-    toText = \case
-        FrameCapture -> "FRAME_CAPTURE"
-        H264 -> "H_264"
-        H265 -> "H_265"
-        MPEG2 -> "MPEG2"
-        Prores -> "PRORES"
-
-instance Hashable     VideoCodec
-instance NFData       VideoCodec
-instance ToByteString VideoCodec
-instance ToQuery      VideoCodec
-instance ToHeader     VideoCodec
-
-instance ToJSON VideoCodec where
-    toJSON = toJSONText
-
-instance FromJSON VideoCodec where
-    parseJSON = parseJSONText "VideoCodec"
-
--- | Enable Timecode insertion to include timecode information in this output. Do this in the API by setting (VideoTimecodeInsertion) to (PIC_TIMING_SEI). To get timecodes to appear correctly in your output, also set up the timecode configuration for your job in the input settings. Only enable Timecode insertion when the input framerate is identical to output framerate. Disable this setting to remove the timecode from the output. Default is disabled.
-data VideoTimecodeInsertion
-  = VTIDisabled
-  | VTIPicTimingSei
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText VideoTimecodeInsertion where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure VTIDisabled
-        "pic_timing_sei" -> pure VTIPicTimingSei
-        e -> fromTextError $ "Failure parsing VideoTimecodeInsertion from value: '" <> e
-           <> "'. Accepted values: disabled, pic_timing_sei"
-
-instance ToText VideoTimecodeInsertion where
-    toText = \case
-        VTIDisabled -> "DISABLED"
-        VTIPicTimingSei -> "PIC_TIMING_SEI"
-
-instance Hashable     VideoTimecodeInsertion
-instance NFData       VideoTimecodeInsertion
-instance ToByteString VideoTimecodeInsertion
-instance ToQuery      VideoTimecodeInsertion
-instance ToHeader     VideoTimecodeInsertion
-
-instance ToJSON VideoTimecodeInsertion where
-    toJSON = toJSONText
-
-instance FromJSON VideoTimecodeInsertion where
-    parseJSON = parseJSONText "VideoTimecodeInsertion"
diff --git a/gen/Network/AWS/MediaConvert/UpdateJobTemplate.hs b/gen/Network/AWS/MediaConvert/UpdateJobTemplate.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/UpdateJobTemplate.hs
+++ /dev/null
@@ -1,172 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.UpdateJobTemplate
--- Copyright   : (c) 2013-2018 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)
---
--- Modify one of your existing job templates.
-module Network.AWS.MediaConvert.UpdateJobTemplate
-    (
-    -- * Creating a Request
-      updateJobTemplate
-    , UpdateJobTemplate
-    -- * Request Lenses
-    , ujtSettings
-    , ujtCategory
-    , ujtQueue
-    , ujtDescription
-    , ujtName
-
-    -- * Destructuring the Response
-    , updateJobTemplateResponse
-    , UpdateJobTemplateResponse
-    -- * Response Lenses
-    , ujtrsJobTemplate
-    , ujtrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'updateJobTemplate' smart constructor.
-data UpdateJobTemplate = UpdateJobTemplate'
-  { _ujtSettings    :: !(Maybe JobTemplateSettings)
-  , _ujtCategory    :: !(Maybe Text)
-  , _ujtQueue       :: !(Maybe Text)
-  , _ujtDescription :: !(Maybe Text)
-  , _ujtName        :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateJobTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ujtSettings' - Undocumented member.
---
--- * 'ujtCategory' - The new category for the job template, if you are changing it.
---
--- * 'ujtQueue' - The new queue for the job template, if you are changing it.
---
--- * 'ujtDescription' - The new description for the job template, if you are changing it.
---
--- * 'ujtName' - The name of the job template you are modifying
-updateJobTemplate
-    :: Text -- ^ 'ujtName'
-    -> UpdateJobTemplate
-updateJobTemplate pName_ =
-  UpdateJobTemplate'
-    { _ujtSettings = Nothing
-    , _ujtCategory = Nothing
-    , _ujtQueue = Nothing
-    , _ujtDescription = Nothing
-    , _ujtName = pName_
-    }
-
-
--- | Undocumented member.
-ujtSettings :: Lens' UpdateJobTemplate (Maybe JobTemplateSettings)
-ujtSettings = lens _ujtSettings (\ s a -> s{_ujtSettings = a})
-
--- | The new category for the job template, if you are changing it.
-ujtCategory :: Lens' UpdateJobTemplate (Maybe Text)
-ujtCategory = lens _ujtCategory (\ s a -> s{_ujtCategory = a})
-
--- | The new queue for the job template, if you are changing it.
-ujtQueue :: Lens' UpdateJobTemplate (Maybe Text)
-ujtQueue = lens _ujtQueue (\ s a -> s{_ujtQueue = a})
-
--- | The new description for the job template, if you are changing it.
-ujtDescription :: Lens' UpdateJobTemplate (Maybe Text)
-ujtDescription = lens _ujtDescription (\ s a -> s{_ujtDescription = a})
-
--- | The name of the job template you are modifying
-ujtName :: Lens' UpdateJobTemplate Text
-ujtName = lens _ujtName (\ s a -> s{_ujtName = a})
-
-instance AWSRequest UpdateJobTemplate where
-        type Rs UpdateJobTemplate = UpdateJobTemplateResponse
-        request = putJSON mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 UpdateJobTemplateResponse' <$>
-                   (x .?> "jobTemplate") <*> (pure (fromEnum s)))
-
-instance Hashable UpdateJobTemplate where
-
-instance NFData UpdateJobTemplate where
-
-instance ToHeaders UpdateJobTemplate where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON UpdateJobTemplate where
-        toJSON UpdateJobTemplate'{..}
-          = object
-              (catMaybes
-                 [("settings" .=) <$> _ujtSettings,
-                  ("category" .=) <$> _ujtCategory,
-                  ("queue" .=) <$> _ujtQueue,
-                  ("description" .=) <$> _ujtDescription])
-
-instance ToPath UpdateJobTemplate where
-        toPath UpdateJobTemplate'{..}
-          = mconcat
-              ["/2017-08-29/jobTemplates/", toBS _ujtName]
-
-instance ToQuery UpdateJobTemplate where
-        toQuery = const mempty
-
--- | /See:/ 'updateJobTemplateResponse' smart constructor.
-data UpdateJobTemplateResponse = UpdateJobTemplateResponse'
-  { _ujtrsJobTemplate    :: !(Maybe JobTemplate)
-  , _ujtrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateJobTemplateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ujtrsJobTemplate' - Undocumented member.
---
--- * 'ujtrsResponseStatus' - -- | The response status code.
-updateJobTemplateResponse
-    :: Int -- ^ 'ujtrsResponseStatus'
-    -> UpdateJobTemplateResponse
-updateJobTemplateResponse pResponseStatus_ =
-  UpdateJobTemplateResponse'
-    {_ujtrsJobTemplate = Nothing, _ujtrsResponseStatus = pResponseStatus_}
-
-
--- | Undocumented member.
-ujtrsJobTemplate :: Lens' UpdateJobTemplateResponse (Maybe JobTemplate)
-ujtrsJobTemplate = lens _ujtrsJobTemplate (\ s a -> s{_ujtrsJobTemplate = a})
-
--- | -- | The response status code.
-ujtrsResponseStatus :: Lens' UpdateJobTemplateResponse Int
-ujtrsResponseStatus = lens _ujtrsResponseStatus (\ s a -> s{_ujtrsResponseStatus = a})
-
-instance NFData UpdateJobTemplateResponse where
diff --git a/gen/Network/AWS/MediaConvert/UpdatePreset.hs b/gen/Network/AWS/MediaConvert/UpdatePreset.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/UpdatePreset.hs
+++ /dev/null
@@ -1,161 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.UpdatePreset
--- Copyright   : (c) 2013-2018 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)
---
--- Modify one of your existing presets.
-module Network.AWS.MediaConvert.UpdatePreset
-    (
-    -- * Creating a Request
-      updatePreset
-    , UpdatePreset
-    -- * Request Lenses
-    , upSettings
-    , upCategory
-    , upDescription
-    , upName
-
-    -- * Destructuring the Response
-    , updatePresetResponse
-    , UpdatePresetResponse
-    -- * Response Lenses
-    , uprsPreset
-    , uprsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'updatePreset' smart constructor.
-data UpdatePreset = UpdatePreset'
-  { _upSettings    :: !(Maybe PresetSettings)
-  , _upCategory    :: !(Maybe Text)
-  , _upDescription :: !(Maybe Text)
-  , _upName        :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdatePreset' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'upSettings' - Undocumented member.
---
--- * 'upCategory' - The new category for the preset, if you are changing it.
---
--- * 'upDescription' - The new description for the preset, if you are changing it.
---
--- * 'upName' - The name of the preset you are modifying.
-updatePreset
-    :: Text -- ^ 'upName'
-    -> UpdatePreset
-updatePreset pName_ =
-  UpdatePreset'
-    { _upSettings = Nothing
-    , _upCategory = Nothing
-    , _upDescription = Nothing
-    , _upName = pName_
-    }
-
-
--- | Undocumented member.
-upSettings :: Lens' UpdatePreset (Maybe PresetSettings)
-upSettings = lens _upSettings (\ s a -> s{_upSettings = a})
-
--- | The new category for the preset, if you are changing it.
-upCategory :: Lens' UpdatePreset (Maybe Text)
-upCategory = lens _upCategory (\ s a -> s{_upCategory = a})
-
--- | The new description for the preset, if you are changing it.
-upDescription :: Lens' UpdatePreset (Maybe Text)
-upDescription = lens _upDescription (\ s a -> s{_upDescription = a})
-
--- | The name of the preset you are modifying.
-upName :: Lens' UpdatePreset Text
-upName = lens _upName (\ s a -> s{_upName = a})
-
-instance AWSRequest UpdatePreset where
-        type Rs UpdatePreset = UpdatePresetResponse
-        request = putJSON mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 UpdatePresetResponse' <$>
-                   (x .?> "preset") <*> (pure (fromEnum s)))
-
-instance Hashable UpdatePreset where
-
-instance NFData UpdatePreset where
-
-instance ToHeaders UpdatePreset where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON UpdatePreset where
-        toJSON UpdatePreset'{..}
-          = object
-              (catMaybes
-                 [("settings" .=) <$> _upSettings,
-                  ("category" .=) <$> _upCategory,
-                  ("description" .=) <$> _upDescription])
-
-instance ToPath UpdatePreset where
-        toPath UpdatePreset'{..}
-          = mconcat ["/2017-08-29/presets/", toBS _upName]
-
-instance ToQuery UpdatePreset where
-        toQuery = const mempty
-
--- | /See:/ 'updatePresetResponse' smart constructor.
-data UpdatePresetResponse = UpdatePresetResponse'
-  { _uprsPreset         :: !(Maybe Preset)
-  , _uprsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdatePresetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uprsPreset' - Undocumented member.
---
--- * 'uprsResponseStatus' - -- | The response status code.
-updatePresetResponse
-    :: Int -- ^ 'uprsResponseStatus'
-    -> UpdatePresetResponse
-updatePresetResponse pResponseStatus_ =
-  UpdatePresetResponse'
-    {_uprsPreset = Nothing, _uprsResponseStatus = pResponseStatus_}
-
-
--- | Undocumented member.
-uprsPreset :: Lens' UpdatePresetResponse (Maybe Preset)
-uprsPreset = lens _uprsPreset (\ s a -> s{_uprsPreset = a})
-
--- | -- | The response status code.
-uprsResponseStatus :: Lens' UpdatePresetResponse Int
-uprsResponseStatus = lens _uprsResponseStatus (\ s a -> s{_uprsResponseStatus = a})
-
-instance NFData UpdatePresetResponse where
diff --git a/gen/Network/AWS/MediaConvert/UpdateQueue.hs b/gen/Network/AWS/MediaConvert/UpdateQueue.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/UpdateQueue.hs
+++ /dev/null
@@ -1,147 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.UpdateQueue
--- Copyright   : (c) 2013-2018 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)
---
--- Modify one of your existing queues.
-module Network.AWS.MediaConvert.UpdateQueue
-    (
-    -- * Creating a Request
-      updateQueue
-    , UpdateQueue
-    -- * Request Lenses
-    , uqStatus
-    , uqDescription
-    , uqName
-
-    -- * Destructuring the Response
-    , updateQueueResponse
-    , UpdateQueueResponse
-    -- * Response Lenses
-    , uqrsQueue
-    , uqrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.MediaConvert.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'updateQueue' smart constructor.
-data UpdateQueue = UpdateQueue'
-  { _uqStatus      :: !(Maybe QueueStatus)
-  , _uqDescription :: !(Maybe Text)
-  , _uqName        :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateQueue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uqStatus' - Undocumented member.
---
--- * 'uqDescription' - The new description for the queue, if you are changing it.
---
--- * 'uqName' - The name of the queue you are modifying.
-updateQueue
-    :: Text -- ^ 'uqName'
-    -> UpdateQueue
-updateQueue pName_ =
-  UpdateQueue' {_uqStatus = Nothing, _uqDescription = Nothing, _uqName = pName_}
-
-
--- | Undocumented member.
-uqStatus :: Lens' UpdateQueue (Maybe QueueStatus)
-uqStatus = lens _uqStatus (\ s a -> s{_uqStatus = a})
-
--- | The new description for the queue, if you are changing it.
-uqDescription :: Lens' UpdateQueue (Maybe Text)
-uqDescription = lens _uqDescription (\ s a -> s{_uqDescription = a})
-
--- | The name of the queue you are modifying.
-uqName :: Lens' UpdateQueue Text
-uqName = lens _uqName (\ s a -> s{_uqName = a})
-
-instance AWSRequest UpdateQueue where
-        type Rs UpdateQueue = UpdateQueueResponse
-        request = putJSON mediaConvert
-        response
-          = receiveJSON
-              (\ s h x ->
-                 UpdateQueueResponse' <$>
-                   (x .?> "queue") <*> (pure (fromEnum s)))
-
-instance Hashable UpdateQueue where
-
-instance NFData UpdateQueue where
-
-instance ToHeaders UpdateQueue where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON UpdateQueue where
-        toJSON UpdateQueue'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _uqStatus,
-                  ("description" .=) <$> _uqDescription])
-
-instance ToPath UpdateQueue where
-        toPath UpdateQueue'{..}
-          = mconcat ["/2017-08-29/queues/", toBS _uqName]
-
-instance ToQuery UpdateQueue where
-        toQuery = const mempty
-
--- | /See:/ 'updateQueueResponse' smart constructor.
-data UpdateQueueResponse = UpdateQueueResponse'
-  { _uqrsQueue          :: !(Maybe Queue)
-  , _uqrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateQueueResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uqrsQueue' - Undocumented member.
---
--- * 'uqrsResponseStatus' - -- | The response status code.
-updateQueueResponse
-    :: Int -- ^ 'uqrsResponseStatus'
-    -> UpdateQueueResponse
-updateQueueResponse pResponseStatus_ =
-  UpdateQueueResponse'
-    {_uqrsQueue = Nothing, _uqrsResponseStatus = pResponseStatus_}
-
-
--- | Undocumented member.
-uqrsQueue :: Lens' UpdateQueueResponse (Maybe Queue)
-uqrsQueue = lens _uqrsQueue (\ s a -> s{_uqrsQueue = a})
-
--- | -- | The response status code.
-uqrsResponseStatus :: Lens' UpdateQueueResponse Int
-uqrsResponseStatus = lens _uqrsResponseStatus (\ s a -> s{_uqrsResponseStatus = a})
-
-instance NFData UpdateQueueResponse where
diff --git a/gen/Network/AWS/MediaConvert/Waiters.hs b/gen/Network/AWS/MediaConvert/Waiters.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaConvert/Waiters.hs
+++ /dev/null
@@ -1,21 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE TypeFamilies      #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaConvert.Waiters
--- Copyright   : (c) 2013-2018 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 Network.AWS.MediaConvert.Waiters where
-
-import Network.AWS.Lens
-import Network.AWS.MediaConvert.Types
-import Network.AWS.Prelude
-import Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,20 +2,22 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2018 Brendan Hay
+-- Copyright   : (c) 2013-2023 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Maintainer  : Brendan Hay
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
---
 module Main (main) where
 
+import Test.Amazonka.MediaConvert
+import Test.Amazonka.MediaConvert.Internal
 import Test.Tasty
-import Test.AWS.MediaConvert
-import Test.AWS.MediaConvert.Internal
 
 main :: IO ()
-main = defaultMain $ testGroup "MediaConvert"
-    [ testGroup "tests"    tests
-    , testGroup "fixtures" fixtures
-    ]
+main =
+  defaultMain $
+    testGroup
+      "MediaConvert"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/AWS/Gen/MediaConvert.hs b/test/Test/AWS/Gen/MediaConvert.hs
deleted file mode 100644
--- a/test/Test/AWS/Gen/MediaConvert.hs
+++ /dev/null
@@ -1,399 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-orphans        #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Test.AWS.Gen.MediaConvert
--- Copyright   : (c) 2013-2018 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 Test.AWS.Gen.MediaConvert where
-
-import Data.Proxy
-import Network.AWS.MediaConvert
-import Test.AWS.Fixture
-import Test.AWS.MediaConvert.Internal
-import Test.AWS.Prelude
-import Test.Tasty
-
--- Auto-generated: the actual test selection needs to be manually placed into
--- the top-level so that real test data can be incrementally added.
---
--- This commented snippet is what the entire set should look like:
-
--- fixtures :: TestTree
--- fixtures =
---     [ testGroup "request"
---         [ requestDeletePreset $
---             deletePreset
---
---         , requestUpdatePreset $
---             updatePreset
---
---         , requestListQueues $
---             listQueues
---
---         , requestDeleteQueue $
---             deleteQueue
---
---         , requestUpdateQueue $
---             updateQueue
---
---         , requestGetPreset $
---             getPreset
---
---         , requestCreateJob $
---             createJob
---
---         , requestListJobs $
---             listJobs
---
---         , requestGetJob $
---             getJob
---
---         , requestCreatePreset $
---             createPreset
---
---         , requestListPresets $
---             listPresets
---
---         , requestGetQueue $
---             getQueue
---
---         , requestDescribeEndpoints $
---             describeEndpoints
---
---         , requestCreateQueue $
---             createQueue
---
---         , requestCreateJobTemplate $
---             createJobTemplate
---
---         , requestDeleteJobTemplate $
---             deleteJobTemplate
---
---         , requestUpdateJobTemplate $
---             updateJobTemplate
---
---         , requestListJobTemplates $
---             listJobTemplates
---
---         , requestGetJobTemplate $
---             getJobTemplate
---
---         , requestCancelJob $
---             cancelJob
---
---           ]
-
---     , testGroup "response"
---         [ responseDeletePreset $
---             deletePresetResponse
---
---         , responseUpdatePreset $
---             updatePresetResponse
---
---         , responseListQueues $
---             listQueuesResponse
---
---         , responseDeleteQueue $
---             deleteQueueResponse
---
---         , responseUpdateQueue $
---             updateQueueResponse
---
---         , responseGetPreset $
---             getPresetResponse
---
---         , responseCreateJob $
---             createJobResponse
---
---         , responseListJobs $
---             listJobsResponse
---
---         , responseGetJob $
---             getJobResponse
---
---         , responseCreatePreset $
---             createPresetResponse
---
---         , responseListPresets $
---             listPresetsResponse
---
---         , responseGetQueue $
---             getQueueResponse
---
---         , responseDescribeEndpoints $
---             describeEndpointsResponse
---
---         , responseCreateQueue $
---             createQueueResponse
---
---         , responseCreateJobTemplate $
---             createJobTemplateResponse
---
---         , responseDeleteJobTemplate $
---             deleteJobTemplateResponse
---
---         , responseUpdateJobTemplate $
---             updateJobTemplateResponse
---
---         , responseListJobTemplates $
---             listJobTemplatesResponse
---
---         , responseGetJobTemplate $
---             getJobTemplateResponse
---
---         , responseCancelJob $
---             cancelJobResponse
---
---           ]
---     ]
-
--- Requests
-
-requestDeletePreset :: DeletePreset -> TestTree
-requestDeletePreset = req
-    "DeletePreset"
-    "fixture/DeletePreset.yaml"
-
-requestUpdatePreset :: UpdatePreset -> TestTree
-requestUpdatePreset = req
-    "UpdatePreset"
-    "fixture/UpdatePreset.yaml"
-
-requestListQueues :: ListQueues -> TestTree
-requestListQueues = req
-    "ListQueues"
-    "fixture/ListQueues.yaml"
-
-requestDeleteQueue :: DeleteQueue -> TestTree
-requestDeleteQueue = req
-    "DeleteQueue"
-    "fixture/DeleteQueue.yaml"
-
-requestUpdateQueue :: UpdateQueue -> TestTree
-requestUpdateQueue = req
-    "UpdateQueue"
-    "fixture/UpdateQueue.yaml"
-
-requestGetPreset :: GetPreset -> TestTree
-requestGetPreset = req
-    "GetPreset"
-    "fixture/GetPreset.yaml"
-
-requestCreateJob :: CreateJob -> TestTree
-requestCreateJob = req
-    "CreateJob"
-    "fixture/CreateJob.yaml"
-
-requestListJobs :: ListJobs -> TestTree
-requestListJobs = req
-    "ListJobs"
-    "fixture/ListJobs.yaml"
-
-requestGetJob :: GetJob -> TestTree
-requestGetJob = req
-    "GetJob"
-    "fixture/GetJob.yaml"
-
-requestCreatePreset :: CreatePreset -> TestTree
-requestCreatePreset = req
-    "CreatePreset"
-    "fixture/CreatePreset.yaml"
-
-requestListPresets :: ListPresets -> TestTree
-requestListPresets = req
-    "ListPresets"
-    "fixture/ListPresets.yaml"
-
-requestGetQueue :: GetQueue -> TestTree
-requestGetQueue = req
-    "GetQueue"
-    "fixture/GetQueue.yaml"
-
-requestDescribeEndpoints :: DescribeEndpoints -> TestTree
-requestDescribeEndpoints = req
-    "DescribeEndpoints"
-    "fixture/DescribeEndpoints.yaml"
-
-requestCreateQueue :: CreateQueue -> TestTree
-requestCreateQueue = req
-    "CreateQueue"
-    "fixture/CreateQueue.yaml"
-
-requestCreateJobTemplate :: CreateJobTemplate -> TestTree
-requestCreateJobTemplate = req
-    "CreateJobTemplate"
-    "fixture/CreateJobTemplate.yaml"
-
-requestDeleteJobTemplate :: DeleteJobTemplate -> TestTree
-requestDeleteJobTemplate = req
-    "DeleteJobTemplate"
-    "fixture/DeleteJobTemplate.yaml"
-
-requestUpdateJobTemplate :: UpdateJobTemplate -> TestTree
-requestUpdateJobTemplate = req
-    "UpdateJobTemplate"
-    "fixture/UpdateJobTemplate.yaml"
-
-requestListJobTemplates :: ListJobTemplates -> TestTree
-requestListJobTemplates = req
-    "ListJobTemplates"
-    "fixture/ListJobTemplates.yaml"
-
-requestGetJobTemplate :: GetJobTemplate -> TestTree
-requestGetJobTemplate = req
-    "GetJobTemplate"
-    "fixture/GetJobTemplate.yaml"
-
-requestCancelJob :: CancelJob -> TestTree
-requestCancelJob = req
-    "CancelJob"
-    "fixture/CancelJob.yaml"
-
--- Responses
-
-responseDeletePreset :: DeletePresetResponse -> TestTree
-responseDeletePreset = res
-    "DeletePresetResponse"
-    "fixture/DeletePresetResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy DeletePreset)
-
-responseUpdatePreset :: UpdatePresetResponse -> TestTree
-responseUpdatePreset = res
-    "UpdatePresetResponse"
-    "fixture/UpdatePresetResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy UpdatePreset)
-
-responseListQueues :: ListQueuesResponse -> TestTree
-responseListQueues = res
-    "ListQueuesResponse"
-    "fixture/ListQueuesResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy ListQueues)
-
-responseDeleteQueue :: DeleteQueueResponse -> TestTree
-responseDeleteQueue = res
-    "DeleteQueueResponse"
-    "fixture/DeleteQueueResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy DeleteQueue)
-
-responseUpdateQueue :: UpdateQueueResponse -> TestTree
-responseUpdateQueue = res
-    "UpdateQueueResponse"
-    "fixture/UpdateQueueResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy UpdateQueue)
-
-responseGetPreset :: GetPresetResponse -> TestTree
-responseGetPreset = res
-    "GetPresetResponse"
-    "fixture/GetPresetResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy GetPreset)
-
-responseCreateJob :: CreateJobResponse -> TestTree
-responseCreateJob = res
-    "CreateJobResponse"
-    "fixture/CreateJobResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy CreateJob)
-
-responseListJobs :: ListJobsResponse -> TestTree
-responseListJobs = res
-    "ListJobsResponse"
-    "fixture/ListJobsResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy ListJobs)
-
-responseGetJob :: GetJobResponse -> TestTree
-responseGetJob = res
-    "GetJobResponse"
-    "fixture/GetJobResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy GetJob)
-
-responseCreatePreset :: CreatePresetResponse -> TestTree
-responseCreatePreset = res
-    "CreatePresetResponse"
-    "fixture/CreatePresetResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy CreatePreset)
-
-responseListPresets :: ListPresetsResponse -> TestTree
-responseListPresets = res
-    "ListPresetsResponse"
-    "fixture/ListPresetsResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy ListPresets)
-
-responseGetQueue :: GetQueueResponse -> TestTree
-responseGetQueue = res
-    "GetQueueResponse"
-    "fixture/GetQueueResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy GetQueue)
-
-responseDescribeEndpoints :: DescribeEndpointsResponse -> TestTree
-responseDescribeEndpoints = res
-    "DescribeEndpointsResponse"
-    "fixture/DescribeEndpointsResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy DescribeEndpoints)
-
-responseCreateQueue :: CreateQueueResponse -> TestTree
-responseCreateQueue = res
-    "CreateQueueResponse"
-    "fixture/CreateQueueResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy CreateQueue)
-
-responseCreateJobTemplate :: CreateJobTemplateResponse -> TestTree
-responseCreateJobTemplate = res
-    "CreateJobTemplateResponse"
-    "fixture/CreateJobTemplateResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy CreateJobTemplate)
-
-responseDeleteJobTemplate :: DeleteJobTemplateResponse -> TestTree
-responseDeleteJobTemplate = res
-    "DeleteJobTemplateResponse"
-    "fixture/DeleteJobTemplateResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy DeleteJobTemplate)
-
-responseUpdateJobTemplate :: UpdateJobTemplateResponse -> TestTree
-responseUpdateJobTemplate = res
-    "UpdateJobTemplateResponse"
-    "fixture/UpdateJobTemplateResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy UpdateJobTemplate)
-
-responseListJobTemplates :: ListJobTemplatesResponse -> TestTree
-responseListJobTemplates = res
-    "ListJobTemplatesResponse"
-    "fixture/ListJobTemplatesResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy ListJobTemplates)
-
-responseGetJobTemplate :: GetJobTemplateResponse -> TestTree
-responseGetJobTemplate = res
-    "GetJobTemplateResponse"
-    "fixture/GetJobTemplateResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy GetJobTemplate)
-
-responseCancelJob :: CancelJobResponse -> TestTree
-responseCancelJob = res
-    "CancelJobResponse"
-    "fixture/CancelJobResponse.proto"
-    mediaConvert
-    (Proxy :: Proxy CancelJob)
diff --git a/test/Test/AWS/MediaConvert.hs b/test/Test/AWS/MediaConvert.hs
deleted file mode 100644
--- a/test/Test/AWS/MediaConvert.hs
+++ /dev/null
@@ -1,20 +0,0 @@
--- |
--- Module      : Test.AWS.MediaConvert
--- Copyright   : (c) 2013-2018 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 Test.AWS.MediaConvert
-    ( tests
-    , fixtures
-    ) where
-
-import Test.Tasty (TestTree)
-
-tests :: [TestTree]
-tests = []
-
-fixtures :: [TestTree]
-fixtures = []
diff --git a/test/Test/AWS/MediaConvert/Internal.hs b/test/Test/AWS/MediaConvert/Internal.hs
deleted file mode 100644
--- a/test/Test/AWS/MediaConvert/Internal.hs
+++ /dev/null
@@ -1,9 +0,0 @@
--- |
--- Module      : Test.AWS.MediaConvert.Internal
--- Copyright   : (c) 2013-2018 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 Test.AWS.MediaConvert.Internal where
diff --git a/test/Test/Amazonka/Gen/MediaConvert.hs b/test/Test/Amazonka/Gen/MediaConvert.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/MediaConvert.hs
@@ -0,0 +1,598 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.Amazonka.Gen.MediaConvert
+-- 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 Test.Amazonka.Gen.MediaConvert where
+
+import Amazonka.MediaConvert
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.MediaConvert.Internal
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestAssociateCertificate $
+--             newAssociateCertificate
+--
+--         , requestCancelJob $
+--             newCancelJob
+--
+--         , requestCreateJob $
+--             newCreateJob
+--
+--         , requestCreateJobTemplate $
+--             newCreateJobTemplate
+--
+--         , requestCreatePreset $
+--             newCreatePreset
+--
+--         , requestCreateQueue $
+--             newCreateQueue
+--
+--         , requestDeleteJobTemplate $
+--             newDeleteJobTemplate
+--
+--         , requestDeletePolicy $
+--             newDeletePolicy
+--
+--         , requestDeletePreset $
+--             newDeletePreset
+--
+--         , requestDeleteQueue $
+--             newDeleteQueue
+--
+--         , requestDescribeEndpoints $
+--             newDescribeEndpoints
+--
+--         , requestDisassociateCertificate $
+--             newDisassociateCertificate
+--
+--         , requestGetJob $
+--             newGetJob
+--
+--         , requestGetJobTemplate $
+--             newGetJobTemplate
+--
+--         , requestGetPolicy $
+--             newGetPolicy
+--
+--         , requestGetPreset $
+--             newGetPreset
+--
+--         , requestGetQueue $
+--             newGetQueue
+--
+--         , requestListJobTemplates $
+--             newListJobTemplates
+--
+--         , requestListJobs $
+--             newListJobs
+--
+--         , requestListPresets $
+--             newListPresets
+--
+--         , requestListQueues $
+--             newListQueues
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestPutPolicy $
+--             newPutPolicy
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateJobTemplate $
+--             newUpdateJobTemplate
+--
+--         , requestUpdatePreset $
+--             newUpdatePreset
+--
+--         , requestUpdateQueue $
+--             newUpdateQueue
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAssociateCertificate $
+--             newAssociateCertificateResponse
+--
+--         , responseCancelJob $
+--             newCancelJobResponse
+--
+--         , responseCreateJob $
+--             newCreateJobResponse
+--
+--         , responseCreateJobTemplate $
+--             newCreateJobTemplateResponse
+--
+--         , responseCreatePreset $
+--             newCreatePresetResponse
+--
+--         , responseCreateQueue $
+--             newCreateQueueResponse
+--
+--         , responseDeleteJobTemplate $
+--             newDeleteJobTemplateResponse
+--
+--         , responseDeletePolicy $
+--             newDeletePolicyResponse
+--
+--         , responseDeletePreset $
+--             newDeletePresetResponse
+--
+--         , responseDeleteQueue $
+--             newDeleteQueueResponse
+--
+--         , responseDescribeEndpoints $
+--             newDescribeEndpointsResponse
+--
+--         , responseDisassociateCertificate $
+--             newDisassociateCertificateResponse
+--
+--         , responseGetJob $
+--             newGetJobResponse
+--
+--         , responseGetJobTemplate $
+--             newGetJobTemplateResponse
+--
+--         , responseGetPolicy $
+--             newGetPolicyResponse
+--
+--         , responseGetPreset $
+--             newGetPresetResponse
+--
+--         , responseGetQueue $
+--             newGetQueueResponse
+--
+--         , responseListJobTemplates $
+--             newListJobTemplatesResponse
+--
+--         , responseListJobs $
+--             newListJobsResponse
+--
+--         , responseListPresets $
+--             newListPresetsResponse
+--
+--         , responseListQueues $
+--             newListQueuesResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responsePutPolicy $
+--             newPutPolicyResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateJobTemplate $
+--             newUpdateJobTemplateResponse
+--
+--         , responseUpdatePreset $
+--             newUpdatePresetResponse
+--
+--         , responseUpdateQueue $
+--             newUpdateQueueResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAssociateCertificate :: AssociateCertificate -> TestTree
+requestAssociateCertificate =
+  req
+    "AssociateCertificate"
+    "fixture/AssociateCertificate.yaml"
+
+requestCancelJob :: CancelJob -> TestTree
+requestCancelJob =
+  req
+    "CancelJob"
+    "fixture/CancelJob.yaml"
+
+requestCreateJob :: CreateJob -> TestTree
+requestCreateJob =
+  req
+    "CreateJob"
+    "fixture/CreateJob.yaml"
+
+requestCreateJobTemplate :: CreateJobTemplate -> TestTree
+requestCreateJobTemplate =
+  req
+    "CreateJobTemplate"
+    "fixture/CreateJobTemplate.yaml"
+
+requestCreatePreset :: CreatePreset -> TestTree
+requestCreatePreset =
+  req
+    "CreatePreset"
+    "fixture/CreatePreset.yaml"
+
+requestCreateQueue :: CreateQueue -> TestTree
+requestCreateQueue =
+  req
+    "CreateQueue"
+    "fixture/CreateQueue.yaml"
+
+requestDeleteJobTemplate :: DeleteJobTemplate -> TestTree
+requestDeleteJobTemplate =
+  req
+    "DeleteJobTemplate"
+    "fixture/DeleteJobTemplate.yaml"
+
+requestDeletePolicy :: DeletePolicy -> TestTree
+requestDeletePolicy =
+  req
+    "DeletePolicy"
+    "fixture/DeletePolicy.yaml"
+
+requestDeletePreset :: DeletePreset -> TestTree
+requestDeletePreset =
+  req
+    "DeletePreset"
+    "fixture/DeletePreset.yaml"
+
+requestDeleteQueue :: DeleteQueue -> TestTree
+requestDeleteQueue =
+  req
+    "DeleteQueue"
+    "fixture/DeleteQueue.yaml"
+
+requestDescribeEndpoints :: DescribeEndpoints -> TestTree
+requestDescribeEndpoints =
+  req
+    "DescribeEndpoints"
+    "fixture/DescribeEndpoints.yaml"
+
+requestDisassociateCertificate :: DisassociateCertificate -> TestTree
+requestDisassociateCertificate =
+  req
+    "DisassociateCertificate"
+    "fixture/DisassociateCertificate.yaml"
+
+requestGetJob :: GetJob -> TestTree
+requestGetJob =
+  req
+    "GetJob"
+    "fixture/GetJob.yaml"
+
+requestGetJobTemplate :: GetJobTemplate -> TestTree
+requestGetJobTemplate =
+  req
+    "GetJobTemplate"
+    "fixture/GetJobTemplate.yaml"
+
+requestGetPolicy :: GetPolicy -> TestTree
+requestGetPolicy =
+  req
+    "GetPolicy"
+    "fixture/GetPolicy.yaml"
+
+requestGetPreset :: GetPreset -> TestTree
+requestGetPreset =
+  req
+    "GetPreset"
+    "fixture/GetPreset.yaml"
+
+requestGetQueue :: GetQueue -> TestTree
+requestGetQueue =
+  req
+    "GetQueue"
+    "fixture/GetQueue.yaml"
+
+requestListJobTemplates :: ListJobTemplates -> TestTree
+requestListJobTemplates =
+  req
+    "ListJobTemplates"
+    "fixture/ListJobTemplates.yaml"
+
+requestListJobs :: ListJobs -> TestTree
+requestListJobs =
+  req
+    "ListJobs"
+    "fixture/ListJobs.yaml"
+
+requestListPresets :: ListPresets -> TestTree
+requestListPresets =
+  req
+    "ListPresets"
+    "fixture/ListPresets.yaml"
+
+requestListQueues :: ListQueues -> TestTree
+requestListQueues =
+  req
+    "ListQueues"
+    "fixture/ListQueues.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestPutPolicy :: PutPolicy -> TestTree
+requestPutPolicy =
+  req
+    "PutPolicy"
+    "fixture/PutPolicy.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateJobTemplate :: UpdateJobTemplate -> TestTree
+requestUpdateJobTemplate =
+  req
+    "UpdateJobTemplate"
+    "fixture/UpdateJobTemplate.yaml"
+
+requestUpdatePreset :: UpdatePreset -> TestTree
+requestUpdatePreset =
+  req
+    "UpdatePreset"
+    "fixture/UpdatePreset.yaml"
+
+requestUpdateQueue :: UpdateQueue -> TestTree
+requestUpdateQueue =
+  req
+    "UpdateQueue"
+    "fixture/UpdateQueue.yaml"
+
+-- Responses
+
+responseAssociateCertificate :: AssociateCertificateResponse -> TestTree
+responseAssociateCertificate =
+  res
+    "AssociateCertificateResponse"
+    "fixture/AssociateCertificateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateCertificate)
+
+responseCancelJob :: CancelJobResponse -> TestTree
+responseCancelJob =
+  res
+    "CancelJobResponse"
+    "fixture/CancelJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CancelJob)
+
+responseCreateJob :: CreateJobResponse -> TestTree
+responseCreateJob =
+  res
+    "CreateJobResponse"
+    "fixture/CreateJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateJob)
+
+responseCreateJobTemplate :: CreateJobTemplateResponse -> TestTree
+responseCreateJobTemplate =
+  res
+    "CreateJobTemplateResponse"
+    "fixture/CreateJobTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateJobTemplate)
+
+responseCreatePreset :: CreatePresetResponse -> TestTree
+responseCreatePreset =
+  res
+    "CreatePresetResponse"
+    "fixture/CreatePresetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreatePreset)
+
+responseCreateQueue :: CreateQueueResponse -> TestTree
+responseCreateQueue =
+  res
+    "CreateQueueResponse"
+    "fixture/CreateQueueResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateQueue)
+
+responseDeleteJobTemplate :: DeleteJobTemplateResponse -> TestTree
+responseDeleteJobTemplate =
+  res
+    "DeleteJobTemplateResponse"
+    "fixture/DeleteJobTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteJobTemplate)
+
+responseDeletePolicy :: DeletePolicyResponse -> TestTree
+responseDeletePolicy =
+  res
+    "DeletePolicyResponse"
+    "fixture/DeletePolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeletePolicy)
+
+responseDeletePreset :: DeletePresetResponse -> TestTree
+responseDeletePreset =
+  res
+    "DeletePresetResponse"
+    "fixture/DeletePresetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeletePreset)
+
+responseDeleteQueue :: DeleteQueueResponse -> TestTree
+responseDeleteQueue =
+  res
+    "DeleteQueueResponse"
+    "fixture/DeleteQueueResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteQueue)
+
+responseDescribeEndpoints :: DescribeEndpointsResponse -> TestTree
+responseDescribeEndpoints =
+  res
+    "DescribeEndpointsResponse"
+    "fixture/DescribeEndpointsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeEndpoints)
+
+responseDisassociateCertificate :: DisassociateCertificateResponse -> TestTree
+responseDisassociateCertificate =
+  res
+    "DisassociateCertificateResponse"
+    "fixture/DisassociateCertificateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateCertificate)
+
+responseGetJob :: GetJobResponse -> TestTree
+responseGetJob =
+  res
+    "GetJobResponse"
+    "fixture/GetJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetJob)
+
+responseGetJobTemplate :: GetJobTemplateResponse -> TestTree
+responseGetJobTemplate =
+  res
+    "GetJobTemplateResponse"
+    "fixture/GetJobTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetJobTemplate)
+
+responseGetPolicy :: GetPolicyResponse -> TestTree
+responseGetPolicy =
+  res
+    "GetPolicyResponse"
+    "fixture/GetPolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetPolicy)
+
+responseGetPreset :: GetPresetResponse -> TestTree
+responseGetPreset =
+  res
+    "GetPresetResponse"
+    "fixture/GetPresetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetPreset)
+
+responseGetQueue :: GetQueueResponse -> TestTree
+responseGetQueue =
+  res
+    "GetQueueResponse"
+    "fixture/GetQueueResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetQueue)
+
+responseListJobTemplates :: ListJobTemplatesResponse -> TestTree
+responseListJobTemplates =
+  res
+    "ListJobTemplatesResponse"
+    "fixture/ListJobTemplatesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListJobTemplates)
+
+responseListJobs :: ListJobsResponse -> TestTree
+responseListJobs =
+  res
+    "ListJobsResponse"
+    "fixture/ListJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListJobs)
+
+responseListPresets :: ListPresetsResponse -> TestTree
+responseListPresets =
+  res
+    "ListPresetsResponse"
+    "fixture/ListPresetsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListPresets)
+
+responseListQueues :: ListQueuesResponse -> TestTree
+responseListQueues =
+  res
+    "ListQueuesResponse"
+    "fixture/ListQueuesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListQueues)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responsePutPolicy :: PutPolicyResponse -> TestTree
+responsePutPolicy =
+  res
+    "PutPolicyResponse"
+    "fixture/PutPolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutPolicy)
+
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource =
+  res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy TagResource)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource =
+  res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UntagResource)
+
+responseUpdateJobTemplate :: UpdateJobTemplateResponse -> TestTree
+responseUpdateJobTemplate =
+  res
+    "UpdateJobTemplateResponse"
+    "fixture/UpdateJobTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateJobTemplate)
+
+responseUpdatePreset :: UpdatePresetResponse -> TestTree
+responseUpdatePreset =
+  res
+    "UpdatePresetResponse"
+    "fixture/UpdatePresetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdatePreset)
+
+responseUpdateQueue :: UpdateQueueResponse -> TestTree
+responseUpdateQueue =
+  res
+    "UpdateQueueResponse"
+    "fixture/UpdateQueueResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateQueue)
diff --git a/test/Test/Amazonka/MediaConvert.hs b/test/Test/Amazonka/MediaConvert.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/MediaConvert.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.MediaConvert
+-- 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 Test.Amazonka.MediaConvert
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/MediaConvert/Internal.hs b/test/Test/Amazonka/MediaConvert/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/MediaConvert/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.MediaConvert.Internal
+-- 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 Test.Amazonka.MediaConvert.Internal where
