{-# 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.
    H265Settings -> Maybe H265AdaptiveQuantization
adaptiveQuantization :: Prelude.Maybe H265AdaptiveQuantization,
    -- | Enables Alternate Transfer Function SEI message for outputs using Hybrid
    -- Log Gamma (HLG) Electro-Optical Transfer Function (EOTF).
    H265Settings -> Maybe H265AlternateTransferFunctionSei
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.
    H265Settings -> Maybe Natural
bitrate :: Prelude.Maybe Prelude.Natural,
    -- | H.265 Level.
    H265Settings -> Maybe H265CodecLevel
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.
    H265Settings -> Maybe H265CodecProfile
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).
    H265Settings -> Maybe H265DynamicSubGop
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).
    H265Settings -> Maybe H265FlickerAdaptiveQuantization
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.
    H265Settings -> Maybe H265FramerateControl
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.
    H265Settings -> Maybe H265FramerateConversionAlgorithm
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.
    H265Settings -> Maybe Natural
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.
    H265Settings -> Maybe Natural
framerateNumerator :: Prelude.Maybe Prelude.Natural,
    -- | If enable, use reference B frames for GOP structures that have B frames
    -- > 1.
    H265Settings -> Maybe H265GopBReference
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.
    H265Settings -> Maybe Natural
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.
    H265Settings -> Maybe Double
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).
    H265Settings -> Maybe H265GopSizeUnits
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.
    H265Settings -> Maybe Natural
hrdBufferFinalFillPercentage :: Prelude.Maybe Prelude.Natural,
    -- | Percentage of the buffer that should initially be filled (HRD buffer
    -- model).
    H265Settings -> Maybe Natural
hrdBufferInitialFillPercentage :: Prelude.Maybe Prelude.Natural,
    -- | Size of buffer (HRD buffer model) in bits. For example, enter five
    -- megabits as 5000000.
    H265Settings -> Maybe Natural
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.
    H265Settings -> Maybe H265InterlaceMode
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.
    H265Settings -> Maybe Natural
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.
    H265Settings -> Maybe Natural
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.
    H265Settings -> Maybe Natural
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.
    H265Settings -> Maybe Natural
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.
    H265Settings -> Maybe H265ParControl
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.
    H265Settings -> Maybe Natural
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.
    H265Settings -> Maybe Natural
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.
    H265Settings -> Maybe H265QualityTuningLevel
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).
    H265Settings -> Maybe H265QvbrSettings
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).
    H265Settings -> Maybe H265RateControlMode
rateControlMode :: Prelude.Maybe H265RateControlMode,
    -- | Specify Sample Adaptive Offset (SAO) filter strength. Adaptive mode
    -- dynamically selects best strength based on content
    H265Settings -> Maybe H265SampleAdaptiveOffsetFilterMode
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).
    H265Settings -> Maybe H265ScanTypeConversionMode
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.
    H265Settings -> Maybe H265SceneChangeDetect
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.
    H265Settings -> Maybe Natural
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.
    H265Settings -> Maybe H265SlowPal
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.
    H265Settings -> Maybe H265SpatialAdaptiveQuantization
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.
    H265Settings -> Maybe H265Telecine
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).
    H265Settings -> Maybe H265TemporalAdaptiveQuantization
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.
    H265Settings -> Maybe H265TemporalIds
temporalIds :: Prelude.Maybe H265TemporalIds,
    -- | Enable use of tiles, allowing horizontal as well as vertical subdivision
    -- of the encoded pictures.
    H265Settings -> Maybe H265Tiles
tiles :: Prelude.Maybe H265Tiles,
    -- | Inserts timecode for each frame as 4 bytes of an unregistered SEI
    -- message.
    H265Settings -> Maybe H265UnregisteredSeiTimecode
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.
    H265Settings -> Maybe H265WriteMp4PackagingType
writeMp4PackagingType :: Prelude.Maybe H265WriteMp4PackagingType
  }
  deriving (H265Settings -> H265Settings -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: H265Settings -> H265Settings -> Bool
$c/= :: H265Settings -> H265Settings -> Bool
== :: H265Settings -> H265Settings -> Bool
$c== :: H265Settings -> H265Settings -> Bool
Prelude.Eq, ReadPrec [H265Settings]
ReadPrec H265Settings
Int -> ReadS H265Settings
ReadS [H265Settings]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [H265Settings]
$creadListPrec :: ReadPrec [H265Settings]
readPrec :: ReadPrec H265Settings
$creadPrec :: ReadPrec H265Settings
readList :: ReadS [H265Settings]
$creadList :: ReadS [H265Settings]
readsPrec :: Int -> ReadS H265Settings
$creadsPrec :: Int -> ReadS H265Settings
Prelude.Read, Int -> H265Settings -> ShowS
[H265Settings] -> ShowS
H265Settings -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [H265Settings] -> ShowS
$cshowList :: [H265Settings] -> ShowS
show :: H265Settings -> String
$cshow :: H265Settings -> String
showsPrec :: Int -> H265Settings -> ShowS
$cshowsPrec :: Int -> H265Settings -> ShowS
Prelude.Show, forall x. Rep H265Settings x -> H265Settings
forall x. H265Settings -> Rep H265Settings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep H265Settings x -> H265Settings
$cfrom :: forall x. H265Settings -> Rep H265Settings x
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
newH265Settings =
  H265Settings'
    { $sel:adaptiveQuantization:H265Settings' :: Maybe H265AdaptiveQuantization
adaptiveQuantization =
        forall a. Maybe a
Prelude.Nothing,
      $sel:alternateTransferFunctionSei:H265Settings' :: Maybe H265AlternateTransferFunctionSei
alternateTransferFunctionSei = forall a. Maybe a
Prelude.Nothing,
      $sel:bitrate:H265Settings' :: Maybe Natural
bitrate = forall a. Maybe a
Prelude.Nothing,
      $sel:codecLevel:H265Settings' :: Maybe H265CodecLevel
codecLevel = forall a. Maybe a
Prelude.Nothing,
      $sel:codecProfile:H265Settings' :: Maybe H265CodecProfile
codecProfile = forall a. Maybe a
Prelude.Nothing,
      $sel:dynamicSubGop:H265Settings' :: Maybe H265DynamicSubGop
dynamicSubGop = forall a. Maybe a
Prelude.Nothing,
      $sel:flickerAdaptiveQuantization:H265Settings' :: Maybe H265FlickerAdaptiveQuantization
flickerAdaptiveQuantization = forall a. Maybe a
Prelude.Nothing,
      $sel:framerateControl:H265Settings' :: Maybe H265FramerateControl
framerateControl = forall a. Maybe a
Prelude.Nothing,
      $sel:framerateConversionAlgorithm:H265Settings' :: Maybe H265FramerateConversionAlgorithm
framerateConversionAlgorithm = forall a. Maybe a
Prelude.Nothing,
      $sel:framerateDenominator:H265Settings' :: Maybe Natural
framerateDenominator = forall a. Maybe a
Prelude.Nothing,
      $sel:framerateNumerator:H265Settings' :: Maybe Natural
framerateNumerator = forall a. Maybe a
Prelude.Nothing,
      $sel:gopBReference:H265Settings' :: Maybe H265GopBReference
gopBReference = forall a. Maybe a
Prelude.Nothing,
      $sel:gopClosedCadence:H265Settings' :: Maybe Natural
gopClosedCadence = forall a. Maybe a
Prelude.Nothing,
      $sel:gopSize:H265Settings' :: Maybe Double
gopSize = forall a. Maybe a
Prelude.Nothing,
      $sel:gopSizeUnits:H265Settings' :: Maybe H265GopSizeUnits
gopSizeUnits = forall a. Maybe a
Prelude.Nothing,
      $sel:hrdBufferFinalFillPercentage:H265Settings' :: Maybe Natural
hrdBufferFinalFillPercentage = forall a. Maybe a
Prelude.Nothing,
      $sel:hrdBufferInitialFillPercentage:H265Settings' :: Maybe Natural
hrdBufferInitialFillPercentage = forall a. Maybe a
Prelude.Nothing,
      $sel:hrdBufferSize:H265Settings' :: Maybe Natural
hrdBufferSize = forall a. Maybe a
Prelude.Nothing,
      $sel:interlaceMode:H265Settings' :: Maybe H265InterlaceMode
interlaceMode = forall a. Maybe a
Prelude.Nothing,
      $sel:maxBitrate:H265Settings' :: Maybe Natural
maxBitrate = forall a. Maybe a
Prelude.Nothing,
      $sel:minIInterval:H265Settings' :: Maybe Natural
minIInterval = forall a. Maybe a
Prelude.Nothing,
      $sel:numberBFramesBetweenReferenceFrames:H265Settings' :: Maybe Natural
numberBFramesBetweenReferenceFrames =
        forall a. Maybe a
Prelude.Nothing,
      $sel:numberReferenceFrames:H265Settings' :: Maybe Natural
numberReferenceFrames = forall a. Maybe a
Prelude.Nothing,
      $sel:parControl:H265Settings' :: Maybe H265ParControl
parControl = forall a. Maybe a
Prelude.Nothing,
      $sel:parDenominator:H265Settings' :: Maybe Natural
parDenominator = forall a. Maybe a
Prelude.Nothing,
      $sel:parNumerator:H265Settings' :: Maybe Natural
parNumerator = forall a. Maybe a
Prelude.Nothing,
      $sel:qualityTuningLevel:H265Settings' :: Maybe H265QualityTuningLevel
qualityTuningLevel = forall a. Maybe a
Prelude.Nothing,
      $sel:qvbrSettings:H265Settings' :: Maybe H265QvbrSettings
qvbrSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:rateControlMode:H265Settings' :: Maybe H265RateControlMode
rateControlMode = forall a. Maybe a
Prelude.Nothing,
      $sel:sampleAdaptiveOffsetFilterMode:H265Settings' :: Maybe H265SampleAdaptiveOffsetFilterMode
sampleAdaptiveOffsetFilterMode = forall a. Maybe a
Prelude.Nothing,
      $sel:scanTypeConversionMode:H265Settings' :: Maybe H265ScanTypeConversionMode
scanTypeConversionMode = forall a. Maybe a
Prelude.Nothing,
      $sel:sceneChangeDetect:H265Settings' :: Maybe H265SceneChangeDetect
sceneChangeDetect = forall a. Maybe a
Prelude.Nothing,
      $sel:slices:H265Settings' :: Maybe Natural
slices = forall a. Maybe a
Prelude.Nothing,
      $sel:slowPal:H265Settings' :: Maybe H265SlowPal
slowPal = forall a. Maybe a
Prelude.Nothing,
      $sel:spatialAdaptiveQuantization:H265Settings' :: Maybe H265SpatialAdaptiveQuantization
spatialAdaptiveQuantization = forall a. Maybe a
Prelude.Nothing,
      $sel:telecine:H265Settings' :: Maybe H265Telecine
telecine = forall a. Maybe a
Prelude.Nothing,
      $sel:temporalAdaptiveQuantization:H265Settings' :: Maybe H265TemporalAdaptiveQuantization
temporalAdaptiveQuantization = forall a. Maybe a
Prelude.Nothing,
      $sel:temporalIds:H265Settings' :: Maybe H265TemporalIds
temporalIds = forall a. Maybe a
Prelude.Nothing,
      $sel:tiles:H265Settings' :: Maybe H265Tiles
tiles = forall a. Maybe a
Prelude.Nothing,
      $sel:unregisteredSeiTimecode:H265Settings' :: Maybe H265UnregisteredSeiTimecode
unregisteredSeiTimecode = forall a. Maybe a
Prelude.Nothing,
      $sel:writeMp4PackagingType:H265Settings' :: Maybe H265WriteMp4PackagingType
writeMp4PackagingType = forall a. Maybe a
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' H265Settings (Maybe H265AdaptiveQuantization)
h265Settings_adaptiveQuantization = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265AdaptiveQuantization
adaptiveQuantization :: Maybe H265AdaptiveQuantization
$sel:adaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265AdaptiveQuantization
adaptiveQuantization} -> Maybe H265AdaptiveQuantization
adaptiveQuantization) (\s :: H265Settings
s@H265Settings' {} Maybe H265AdaptiveQuantization
a -> H265Settings
s {$sel:adaptiveQuantization:H265Settings' :: Maybe H265AdaptiveQuantization
adaptiveQuantization = Maybe H265AdaptiveQuantization
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' H265Settings (Maybe H265AlternateTransferFunctionSei)
h265Settings_alternateTransferFunctionSei = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265AlternateTransferFunctionSei
alternateTransferFunctionSei :: Maybe H265AlternateTransferFunctionSei
$sel:alternateTransferFunctionSei:H265Settings' :: H265Settings -> Maybe H265AlternateTransferFunctionSei
alternateTransferFunctionSei} -> Maybe H265AlternateTransferFunctionSei
alternateTransferFunctionSei) (\s :: H265Settings
s@H265Settings' {} Maybe H265AlternateTransferFunctionSei
a -> H265Settings
s {$sel:alternateTransferFunctionSei:H265Settings' :: Maybe H265AlternateTransferFunctionSei
alternateTransferFunctionSei = Maybe H265AlternateTransferFunctionSei
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' H265Settings (Maybe Natural)
h265Settings_bitrate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
bitrate :: Maybe Natural
$sel:bitrate:H265Settings' :: H265Settings -> Maybe Natural
bitrate} -> Maybe Natural
bitrate) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:bitrate:H265Settings' :: Maybe Natural
bitrate = Maybe Natural
a} :: H265Settings)

-- | H.265 Level.
h265Settings_codecLevel :: Lens.Lens' H265Settings (Prelude.Maybe H265CodecLevel)
h265Settings_codecLevel :: Lens' H265Settings (Maybe H265CodecLevel)
h265Settings_codecLevel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265CodecLevel
codecLevel :: Maybe H265CodecLevel
$sel:codecLevel:H265Settings' :: H265Settings -> Maybe H265CodecLevel
codecLevel} -> Maybe H265CodecLevel
codecLevel) (\s :: H265Settings
s@H265Settings' {} Maybe H265CodecLevel
a -> H265Settings
s {$sel:codecLevel:H265Settings' :: Maybe H265CodecLevel
codecLevel = Maybe H265CodecLevel
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' H265Settings (Maybe H265CodecProfile)
h265Settings_codecProfile = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265CodecProfile
codecProfile :: Maybe H265CodecProfile
$sel:codecProfile:H265Settings' :: H265Settings -> Maybe H265CodecProfile
codecProfile} -> Maybe H265CodecProfile
codecProfile) (\s :: H265Settings
s@H265Settings' {} Maybe H265CodecProfile
a -> H265Settings
s {$sel:codecProfile:H265Settings' :: Maybe H265CodecProfile
codecProfile = Maybe H265CodecProfile
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' H265Settings (Maybe H265DynamicSubGop)
h265Settings_dynamicSubGop = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265DynamicSubGop
dynamicSubGop :: Maybe H265DynamicSubGop
$sel:dynamicSubGop:H265Settings' :: H265Settings -> Maybe H265DynamicSubGop
dynamicSubGop} -> Maybe H265DynamicSubGop
dynamicSubGop) (\s :: H265Settings
s@H265Settings' {} Maybe H265DynamicSubGop
a -> H265Settings
s {$sel:dynamicSubGop:H265Settings' :: Maybe H265DynamicSubGop
dynamicSubGop = Maybe H265DynamicSubGop
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' H265Settings (Maybe H265FlickerAdaptiveQuantization)
h265Settings_flickerAdaptiveQuantization = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265FlickerAdaptiveQuantization
flickerAdaptiveQuantization :: Maybe H265FlickerAdaptiveQuantization
$sel:flickerAdaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265FlickerAdaptiveQuantization
flickerAdaptiveQuantization} -> Maybe H265FlickerAdaptiveQuantization
flickerAdaptiveQuantization) (\s :: H265Settings
s@H265Settings' {} Maybe H265FlickerAdaptiveQuantization
a -> H265Settings
s {$sel:flickerAdaptiveQuantization:H265Settings' :: Maybe H265FlickerAdaptiveQuantization
flickerAdaptiveQuantization = Maybe H265FlickerAdaptiveQuantization
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' H265Settings (Maybe H265FramerateControl)
h265Settings_framerateControl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265FramerateControl
framerateControl :: Maybe H265FramerateControl
$sel:framerateControl:H265Settings' :: H265Settings -> Maybe H265FramerateControl
framerateControl} -> Maybe H265FramerateControl
framerateControl) (\s :: H265Settings
s@H265Settings' {} Maybe H265FramerateControl
a -> H265Settings
s {$sel:framerateControl:H265Settings' :: Maybe H265FramerateControl
framerateControl = Maybe H265FramerateControl
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' H265Settings (Maybe H265FramerateConversionAlgorithm)
h265Settings_framerateConversionAlgorithm = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265FramerateConversionAlgorithm
framerateConversionAlgorithm :: Maybe H265FramerateConversionAlgorithm
$sel:framerateConversionAlgorithm:H265Settings' :: H265Settings -> Maybe H265FramerateConversionAlgorithm
framerateConversionAlgorithm} -> Maybe H265FramerateConversionAlgorithm
framerateConversionAlgorithm) (\s :: H265Settings
s@H265Settings' {} Maybe H265FramerateConversionAlgorithm
a -> H265Settings
s {$sel:framerateConversionAlgorithm:H265Settings' :: Maybe H265FramerateConversionAlgorithm
framerateConversionAlgorithm = Maybe H265FramerateConversionAlgorithm
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' H265Settings (Maybe Natural)
h265Settings_framerateDenominator = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
framerateDenominator :: Maybe Natural
$sel:framerateDenominator:H265Settings' :: H265Settings -> Maybe Natural
framerateDenominator} -> Maybe Natural
framerateDenominator) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:framerateDenominator:H265Settings' :: Maybe Natural
framerateDenominator = Maybe Natural
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' H265Settings (Maybe Natural)
h265Settings_framerateNumerator = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
framerateNumerator :: Maybe Natural
$sel:framerateNumerator:H265Settings' :: H265Settings -> Maybe Natural
framerateNumerator} -> Maybe Natural
framerateNumerator) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:framerateNumerator:H265Settings' :: Maybe Natural
framerateNumerator = Maybe Natural
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' H265Settings (Maybe H265GopBReference)
h265Settings_gopBReference = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265GopBReference
gopBReference :: Maybe H265GopBReference
$sel:gopBReference:H265Settings' :: H265Settings -> Maybe H265GopBReference
gopBReference} -> Maybe H265GopBReference
gopBReference) (\s :: H265Settings
s@H265Settings' {} Maybe H265GopBReference
a -> H265Settings
s {$sel:gopBReference:H265Settings' :: Maybe H265GopBReference
gopBReference = Maybe H265GopBReference
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' H265Settings (Maybe Natural)
h265Settings_gopClosedCadence = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
gopClosedCadence :: Maybe Natural
$sel:gopClosedCadence:H265Settings' :: H265Settings -> Maybe Natural
gopClosedCadence} -> Maybe Natural
gopClosedCadence) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:gopClosedCadence:H265Settings' :: Maybe Natural
gopClosedCadence = Maybe Natural
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' H265Settings (Maybe Double)
h265Settings_gopSize = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Double
gopSize :: Maybe Double
$sel:gopSize:H265Settings' :: H265Settings -> Maybe Double
gopSize} -> Maybe Double
gopSize) (\s :: H265Settings
s@H265Settings' {} Maybe Double
a -> H265Settings
s {$sel:gopSize:H265Settings' :: Maybe Double
gopSize = Maybe Double
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' H265Settings (Maybe H265GopSizeUnits)
h265Settings_gopSizeUnits = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265GopSizeUnits
gopSizeUnits :: Maybe H265GopSizeUnits
$sel:gopSizeUnits:H265Settings' :: H265Settings -> Maybe H265GopSizeUnits
gopSizeUnits} -> Maybe H265GopSizeUnits
gopSizeUnits) (\s :: H265Settings
s@H265Settings' {} Maybe H265GopSizeUnits
a -> H265Settings
s {$sel:gopSizeUnits:H265Settings' :: Maybe H265GopSizeUnits
gopSizeUnits = Maybe H265GopSizeUnits
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' H265Settings (Maybe Natural)
h265Settings_hrdBufferFinalFillPercentage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
hrdBufferFinalFillPercentage :: Maybe Natural
$sel:hrdBufferFinalFillPercentage:H265Settings' :: H265Settings -> Maybe Natural
hrdBufferFinalFillPercentage} -> Maybe Natural
hrdBufferFinalFillPercentage) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:hrdBufferFinalFillPercentage:H265Settings' :: Maybe Natural
hrdBufferFinalFillPercentage = Maybe Natural
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' H265Settings (Maybe Natural)
h265Settings_hrdBufferInitialFillPercentage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
hrdBufferInitialFillPercentage :: Maybe Natural
$sel:hrdBufferInitialFillPercentage:H265Settings' :: H265Settings -> Maybe Natural
hrdBufferInitialFillPercentage} -> Maybe Natural
hrdBufferInitialFillPercentage) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:hrdBufferInitialFillPercentage:H265Settings' :: Maybe Natural
hrdBufferInitialFillPercentage = Maybe Natural
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' H265Settings (Maybe Natural)
h265Settings_hrdBufferSize = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
hrdBufferSize :: Maybe Natural
$sel:hrdBufferSize:H265Settings' :: H265Settings -> Maybe Natural
hrdBufferSize} -> Maybe Natural
hrdBufferSize) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:hrdBufferSize:H265Settings' :: Maybe Natural
hrdBufferSize = Maybe Natural
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' H265Settings (Maybe H265InterlaceMode)
h265Settings_interlaceMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265InterlaceMode
interlaceMode :: Maybe H265InterlaceMode
$sel:interlaceMode:H265Settings' :: H265Settings -> Maybe H265InterlaceMode
interlaceMode} -> Maybe H265InterlaceMode
interlaceMode) (\s :: H265Settings
s@H265Settings' {} Maybe H265InterlaceMode
a -> H265Settings
s {$sel:interlaceMode:H265Settings' :: Maybe H265InterlaceMode
interlaceMode = Maybe H265InterlaceMode
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' H265Settings (Maybe Natural)
h265Settings_maxBitrate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
maxBitrate :: Maybe Natural
$sel:maxBitrate:H265Settings' :: H265Settings -> Maybe Natural
maxBitrate} -> Maybe Natural
maxBitrate) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:maxBitrate:H265Settings' :: Maybe Natural
maxBitrate = Maybe Natural
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' H265Settings (Maybe Natural)
h265Settings_minIInterval = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
minIInterval :: Maybe Natural
$sel:minIInterval:H265Settings' :: H265Settings -> Maybe Natural
minIInterval} -> Maybe Natural
minIInterval) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:minIInterval:H265Settings' :: Maybe Natural
minIInterval = Maybe Natural
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' H265Settings (Maybe Natural)
h265Settings_numberBFramesBetweenReferenceFrames = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
numberBFramesBetweenReferenceFrames :: Maybe Natural
$sel:numberBFramesBetweenReferenceFrames:H265Settings' :: H265Settings -> Maybe Natural
numberBFramesBetweenReferenceFrames} -> Maybe Natural
numberBFramesBetweenReferenceFrames) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:numberBFramesBetweenReferenceFrames:H265Settings' :: Maybe Natural
numberBFramesBetweenReferenceFrames = Maybe Natural
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' H265Settings (Maybe Natural)
h265Settings_numberReferenceFrames = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
numberReferenceFrames :: Maybe Natural
$sel:numberReferenceFrames:H265Settings' :: H265Settings -> Maybe Natural
numberReferenceFrames} -> Maybe Natural
numberReferenceFrames) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:numberReferenceFrames:H265Settings' :: Maybe Natural
numberReferenceFrames = Maybe Natural
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' H265Settings (Maybe H265ParControl)
h265Settings_parControl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265ParControl
parControl :: Maybe H265ParControl
$sel:parControl:H265Settings' :: H265Settings -> Maybe H265ParControl
parControl} -> Maybe H265ParControl
parControl) (\s :: H265Settings
s@H265Settings' {} Maybe H265ParControl
a -> H265Settings
s {$sel:parControl:H265Settings' :: Maybe H265ParControl
parControl = Maybe H265ParControl
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' H265Settings (Maybe Natural)
h265Settings_parDenominator = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
parDenominator :: Maybe Natural
$sel:parDenominator:H265Settings' :: H265Settings -> Maybe Natural
parDenominator} -> Maybe Natural
parDenominator) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:parDenominator:H265Settings' :: Maybe Natural
parDenominator = Maybe Natural
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' H265Settings (Maybe Natural)
h265Settings_parNumerator = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
parNumerator :: Maybe Natural
$sel:parNumerator:H265Settings' :: H265Settings -> Maybe Natural
parNumerator} -> Maybe Natural
parNumerator) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:parNumerator:H265Settings' :: Maybe Natural
parNumerator = Maybe Natural
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' H265Settings (Maybe H265QualityTuningLevel)
h265Settings_qualityTuningLevel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265QualityTuningLevel
qualityTuningLevel :: Maybe H265QualityTuningLevel
$sel:qualityTuningLevel:H265Settings' :: H265Settings -> Maybe H265QualityTuningLevel
qualityTuningLevel} -> Maybe H265QualityTuningLevel
qualityTuningLevel) (\s :: H265Settings
s@H265Settings' {} Maybe H265QualityTuningLevel
a -> H265Settings
s {$sel:qualityTuningLevel:H265Settings' :: Maybe H265QualityTuningLevel
qualityTuningLevel = Maybe H265QualityTuningLevel
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' H265Settings (Maybe H265QvbrSettings)
h265Settings_qvbrSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265QvbrSettings
qvbrSettings :: Maybe H265QvbrSettings
$sel:qvbrSettings:H265Settings' :: H265Settings -> Maybe H265QvbrSettings
qvbrSettings} -> Maybe H265QvbrSettings
qvbrSettings) (\s :: H265Settings
s@H265Settings' {} Maybe H265QvbrSettings
a -> H265Settings
s {$sel:qvbrSettings:H265Settings' :: Maybe H265QvbrSettings
qvbrSettings = Maybe H265QvbrSettings
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' H265Settings (Maybe H265RateControlMode)
h265Settings_rateControlMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265RateControlMode
rateControlMode :: Maybe H265RateControlMode
$sel:rateControlMode:H265Settings' :: H265Settings -> Maybe H265RateControlMode
rateControlMode} -> Maybe H265RateControlMode
rateControlMode) (\s :: H265Settings
s@H265Settings' {} Maybe H265RateControlMode
a -> H265Settings
s {$sel:rateControlMode:H265Settings' :: Maybe H265RateControlMode
rateControlMode = Maybe H265RateControlMode
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' H265Settings (Maybe H265SampleAdaptiveOffsetFilterMode)
h265Settings_sampleAdaptiveOffsetFilterMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265SampleAdaptiveOffsetFilterMode
sampleAdaptiveOffsetFilterMode :: Maybe H265SampleAdaptiveOffsetFilterMode
$sel:sampleAdaptiveOffsetFilterMode:H265Settings' :: H265Settings -> Maybe H265SampleAdaptiveOffsetFilterMode
sampleAdaptiveOffsetFilterMode} -> Maybe H265SampleAdaptiveOffsetFilterMode
sampleAdaptiveOffsetFilterMode) (\s :: H265Settings
s@H265Settings' {} Maybe H265SampleAdaptiveOffsetFilterMode
a -> H265Settings
s {$sel:sampleAdaptiveOffsetFilterMode:H265Settings' :: Maybe H265SampleAdaptiveOffsetFilterMode
sampleAdaptiveOffsetFilterMode = Maybe H265SampleAdaptiveOffsetFilterMode
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' H265Settings (Maybe H265ScanTypeConversionMode)
h265Settings_scanTypeConversionMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265ScanTypeConversionMode
scanTypeConversionMode :: Maybe H265ScanTypeConversionMode
$sel:scanTypeConversionMode:H265Settings' :: H265Settings -> Maybe H265ScanTypeConversionMode
scanTypeConversionMode} -> Maybe H265ScanTypeConversionMode
scanTypeConversionMode) (\s :: H265Settings
s@H265Settings' {} Maybe H265ScanTypeConversionMode
a -> H265Settings
s {$sel:scanTypeConversionMode:H265Settings' :: Maybe H265ScanTypeConversionMode
scanTypeConversionMode = Maybe H265ScanTypeConversionMode
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' H265Settings (Maybe H265SceneChangeDetect)
h265Settings_sceneChangeDetect = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265SceneChangeDetect
sceneChangeDetect :: Maybe H265SceneChangeDetect
$sel:sceneChangeDetect:H265Settings' :: H265Settings -> Maybe H265SceneChangeDetect
sceneChangeDetect} -> Maybe H265SceneChangeDetect
sceneChangeDetect) (\s :: H265Settings
s@H265Settings' {} Maybe H265SceneChangeDetect
a -> H265Settings
s {$sel:sceneChangeDetect:H265Settings' :: Maybe H265SceneChangeDetect
sceneChangeDetect = Maybe H265SceneChangeDetect
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' H265Settings (Maybe Natural)
h265Settings_slices = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe Natural
slices :: Maybe Natural
$sel:slices:H265Settings' :: H265Settings -> Maybe Natural
slices} -> Maybe Natural
slices) (\s :: H265Settings
s@H265Settings' {} Maybe Natural
a -> H265Settings
s {$sel:slices:H265Settings' :: Maybe Natural
slices = Maybe Natural
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' H265Settings (Maybe H265SlowPal)
h265Settings_slowPal = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265SlowPal
slowPal :: Maybe H265SlowPal
$sel:slowPal:H265Settings' :: H265Settings -> Maybe H265SlowPal
slowPal} -> Maybe H265SlowPal
slowPal) (\s :: H265Settings
s@H265Settings' {} Maybe H265SlowPal
a -> H265Settings
s {$sel:slowPal:H265Settings' :: Maybe H265SlowPal
slowPal = Maybe H265SlowPal
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' H265Settings (Maybe H265SpatialAdaptiveQuantization)
h265Settings_spatialAdaptiveQuantization = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265SpatialAdaptiveQuantization
spatialAdaptiveQuantization :: Maybe H265SpatialAdaptiveQuantization
$sel:spatialAdaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265SpatialAdaptiveQuantization
spatialAdaptiveQuantization} -> Maybe H265SpatialAdaptiveQuantization
spatialAdaptiveQuantization) (\s :: H265Settings
s@H265Settings' {} Maybe H265SpatialAdaptiveQuantization
a -> H265Settings
s {$sel:spatialAdaptiveQuantization:H265Settings' :: Maybe H265SpatialAdaptiveQuantization
spatialAdaptiveQuantization = Maybe H265SpatialAdaptiveQuantization
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' H265Settings (Maybe H265Telecine)
h265Settings_telecine = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265Telecine
telecine :: Maybe H265Telecine
$sel:telecine:H265Settings' :: H265Settings -> Maybe H265Telecine
telecine} -> Maybe H265Telecine
telecine) (\s :: H265Settings
s@H265Settings' {} Maybe H265Telecine
a -> H265Settings
s {$sel:telecine:H265Settings' :: Maybe H265Telecine
telecine = Maybe H265Telecine
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' H265Settings (Maybe H265TemporalAdaptiveQuantization)
h265Settings_temporalAdaptiveQuantization = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265TemporalAdaptiveQuantization
temporalAdaptiveQuantization :: Maybe H265TemporalAdaptiveQuantization
$sel:temporalAdaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265TemporalAdaptiveQuantization
temporalAdaptiveQuantization} -> Maybe H265TemporalAdaptiveQuantization
temporalAdaptiveQuantization) (\s :: H265Settings
s@H265Settings' {} Maybe H265TemporalAdaptiveQuantization
a -> H265Settings
s {$sel:temporalAdaptiveQuantization:H265Settings' :: Maybe H265TemporalAdaptiveQuantization
temporalAdaptiveQuantization = Maybe H265TemporalAdaptiveQuantization
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' H265Settings (Maybe H265TemporalIds)
h265Settings_temporalIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265TemporalIds
temporalIds :: Maybe H265TemporalIds
$sel:temporalIds:H265Settings' :: H265Settings -> Maybe H265TemporalIds
temporalIds} -> Maybe H265TemporalIds
temporalIds) (\s :: H265Settings
s@H265Settings' {} Maybe H265TemporalIds
a -> H265Settings
s {$sel:temporalIds:H265Settings' :: Maybe H265TemporalIds
temporalIds = Maybe H265TemporalIds
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' H265Settings (Maybe H265Tiles)
h265Settings_tiles = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265Tiles
tiles :: Maybe H265Tiles
$sel:tiles:H265Settings' :: H265Settings -> Maybe H265Tiles
tiles} -> Maybe H265Tiles
tiles) (\s :: H265Settings
s@H265Settings' {} Maybe H265Tiles
a -> H265Settings
s {$sel:tiles:H265Settings' :: Maybe H265Tiles
tiles = Maybe H265Tiles
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' H265Settings (Maybe H265UnregisteredSeiTimecode)
h265Settings_unregisteredSeiTimecode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265UnregisteredSeiTimecode
unregisteredSeiTimecode :: Maybe H265UnregisteredSeiTimecode
$sel:unregisteredSeiTimecode:H265Settings' :: H265Settings -> Maybe H265UnregisteredSeiTimecode
unregisteredSeiTimecode} -> Maybe H265UnregisteredSeiTimecode
unregisteredSeiTimecode) (\s :: H265Settings
s@H265Settings' {} Maybe H265UnregisteredSeiTimecode
a -> H265Settings
s {$sel:unregisteredSeiTimecode:H265Settings' :: Maybe H265UnregisteredSeiTimecode
unregisteredSeiTimecode = Maybe H265UnregisteredSeiTimecode
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' H265Settings (Maybe H265WriteMp4PackagingType)
h265Settings_writeMp4PackagingType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\H265Settings' {Maybe H265WriteMp4PackagingType
writeMp4PackagingType :: Maybe H265WriteMp4PackagingType
$sel:writeMp4PackagingType:H265Settings' :: H265Settings -> Maybe H265WriteMp4PackagingType
writeMp4PackagingType} -> Maybe H265WriteMp4PackagingType
writeMp4PackagingType) (\s :: H265Settings
s@H265Settings' {} Maybe H265WriteMp4PackagingType
a -> H265Settings
s {$sel:writeMp4PackagingType:H265Settings' :: Maybe H265WriteMp4PackagingType
writeMp4PackagingType = Maybe H265WriteMp4PackagingType
a} :: H265Settings)

instance Data.FromJSON H265Settings where
  parseJSON :: Value -> Parser H265Settings
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"H265Settings"
      ( \Object
x ->
          Maybe H265AdaptiveQuantization
-> Maybe H265AlternateTransferFunctionSei
-> Maybe Natural
-> Maybe H265CodecLevel
-> Maybe H265CodecProfile
-> Maybe H265DynamicSubGop
-> Maybe H265FlickerAdaptiveQuantization
-> Maybe H265FramerateControl
-> Maybe H265FramerateConversionAlgorithm
-> Maybe Natural
-> Maybe Natural
-> Maybe H265GopBReference
-> Maybe Natural
-> Maybe Double
-> Maybe H265GopSizeUnits
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe H265InterlaceMode
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe H265ParControl
-> Maybe Natural
-> Maybe Natural
-> Maybe H265QualityTuningLevel
-> Maybe H265QvbrSettings
-> Maybe H265RateControlMode
-> Maybe H265SampleAdaptiveOffsetFilterMode
-> Maybe H265ScanTypeConversionMode
-> Maybe H265SceneChangeDetect
-> Maybe Natural
-> Maybe H265SlowPal
-> Maybe H265SpatialAdaptiveQuantization
-> Maybe H265Telecine
-> Maybe H265TemporalAdaptiveQuantization
-> Maybe H265TemporalIds
-> Maybe H265Tiles
-> Maybe H265UnregisteredSeiTimecode
-> Maybe H265WriteMp4PackagingType
-> H265Settings
H265Settings'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"adaptiveQuantization")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"alternateTransferFunctionSei")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"bitrate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"codecLevel")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"codecProfile")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"dynamicSubGop")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"flickerAdaptiveQuantization")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"framerateControl")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"framerateConversionAlgorithm")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"framerateDenominator")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"framerateNumerator")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"gopBReference")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"gopClosedCadence")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"gopSize")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"gopSizeUnits")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"hrdBufferFinalFillPercentage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"hrdBufferInitialFillPercentage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"hrdBufferSize")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"interlaceMode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"maxBitrate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"minIInterval")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"numberBFramesBetweenReferenceFrames")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"numberReferenceFrames")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"parControl")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"parDenominator")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"parNumerator")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"qualityTuningLevel")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"qvbrSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"rateControlMode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"sampleAdaptiveOffsetFilterMode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"scanTypeConversionMode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"sceneChangeDetect")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"slices")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"slowPal")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"spatialAdaptiveQuantization")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"telecine")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"temporalAdaptiveQuantization")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"temporalIds")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"tiles")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"unregisteredSeiTimecode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"writeMp4PackagingType")
      )

instance Prelude.Hashable H265Settings where
  hashWithSalt :: Int -> H265Settings -> Int
hashWithSalt Int
_salt H265Settings' {Maybe Double
Maybe Natural
Maybe H265AdaptiveQuantization
Maybe H265AlternateTransferFunctionSei
Maybe H265CodecLevel
Maybe H265CodecProfile
Maybe H265DynamicSubGop
Maybe H265FlickerAdaptiveQuantization
Maybe H265FramerateControl
Maybe H265FramerateConversionAlgorithm
Maybe H265GopBReference
Maybe H265GopSizeUnits
Maybe H265InterlaceMode
Maybe H265ParControl
Maybe H265QualityTuningLevel
Maybe H265QvbrSettings
Maybe H265RateControlMode
Maybe H265SampleAdaptiveOffsetFilterMode
Maybe H265ScanTypeConversionMode
Maybe H265SceneChangeDetect
Maybe H265SlowPal
Maybe H265SpatialAdaptiveQuantization
Maybe H265Telecine
Maybe H265TemporalAdaptiveQuantization
Maybe H265TemporalIds
Maybe H265Tiles
Maybe H265UnregisteredSeiTimecode
Maybe H265WriteMp4PackagingType
writeMp4PackagingType :: Maybe H265WriteMp4PackagingType
unregisteredSeiTimecode :: Maybe H265UnregisteredSeiTimecode
tiles :: Maybe H265Tiles
temporalIds :: Maybe H265TemporalIds
temporalAdaptiveQuantization :: Maybe H265TemporalAdaptiveQuantization
telecine :: Maybe H265Telecine
spatialAdaptiveQuantization :: Maybe H265SpatialAdaptiveQuantization
slowPal :: Maybe H265SlowPal
slices :: Maybe Natural
sceneChangeDetect :: Maybe H265SceneChangeDetect
scanTypeConversionMode :: Maybe H265ScanTypeConversionMode
sampleAdaptiveOffsetFilterMode :: Maybe H265SampleAdaptiveOffsetFilterMode
rateControlMode :: Maybe H265RateControlMode
qvbrSettings :: Maybe H265QvbrSettings
qualityTuningLevel :: Maybe H265QualityTuningLevel
parNumerator :: Maybe Natural
parDenominator :: Maybe Natural
parControl :: Maybe H265ParControl
numberReferenceFrames :: Maybe Natural
numberBFramesBetweenReferenceFrames :: Maybe Natural
minIInterval :: Maybe Natural
maxBitrate :: Maybe Natural
interlaceMode :: Maybe H265InterlaceMode
hrdBufferSize :: Maybe Natural
hrdBufferInitialFillPercentage :: Maybe Natural
hrdBufferFinalFillPercentage :: Maybe Natural
gopSizeUnits :: Maybe H265GopSizeUnits
gopSize :: Maybe Double
gopClosedCadence :: Maybe Natural
gopBReference :: Maybe H265GopBReference
framerateNumerator :: Maybe Natural
framerateDenominator :: Maybe Natural
framerateConversionAlgorithm :: Maybe H265FramerateConversionAlgorithm
framerateControl :: Maybe H265FramerateControl
flickerAdaptiveQuantization :: Maybe H265FlickerAdaptiveQuantization
dynamicSubGop :: Maybe H265DynamicSubGop
codecProfile :: Maybe H265CodecProfile
codecLevel :: Maybe H265CodecLevel
bitrate :: Maybe Natural
alternateTransferFunctionSei :: Maybe H265AlternateTransferFunctionSei
adaptiveQuantization :: Maybe H265AdaptiveQuantization
$sel:writeMp4PackagingType:H265Settings' :: H265Settings -> Maybe H265WriteMp4PackagingType
$sel:unregisteredSeiTimecode:H265Settings' :: H265Settings -> Maybe H265UnregisteredSeiTimecode
$sel:tiles:H265Settings' :: H265Settings -> Maybe H265Tiles
$sel:temporalIds:H265Settings' :: H265Settings -> Maybe H265TemporalIds
$sel:temporalAdaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265TemporalAdaptiveQuantization
$sel:telecine:H265Settings' :: H265Settings -> Maybe H265Telecine
$sel:spatialAdaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265SpatialAdaptiveQuantization
$sel:slowPal:H265Settings' :: H265Settings -> Maybe H265SlowPal
$sel:slices:H265Settings' :: H265Settings -> Maybe Natural
$sel:sceneChangeDetect:H265Settings' :: H265Settings -> Maybe H265SceneChangeDetect
$sel:scanTypeConversionMode:H265Settings' :: H265Settings -> Maybe H265ScanTypeConversionMode
$sel:sampleAdaptiveOffsetFilterMode:H265Settings' :: H265Settings -> Maybe H265SampleAdaptiveOffsetFilterMode
$sel:rateControlMode:H265Settings' :: H265Settings -> Maybe H265RateControlMode
$sel:qvbrSettings:H265Settings' :: H265Settings -> Maybe H265QvbrSettings
$sel:qualityTuningLevel:H265Settings' :: H265Settings -> Maybe H265QualityTuningLevel
$sel:parNumerator:H265Settings' :: H265Settings -> Maybe Natural
$sel:parDenominator:H265Settings' :: H265Settings -> Maybe Natural
$sel:parControl:H265Settings' :: H265Settings -> Maybe H265ParControl
$sel:numberReferenceFrames:H265Settings' :: H265Settings -> Maybe Natural
$sel:numberBFramesBetweenReferenceFrames:H265Settings' :: H265Settings -> Maybe Natural
$sel:minIInterval:H265Settings' :: H265Settings -> Maybe Natural
$sel:maxBitrate:H265Settings' :: H265Settings -> Maybe Natural
$sel:interlaceMode:H265Settings' :: H265Settings -> Maybe H265InterlaceMode
$sel:hrdBufferSize:H265Settings' :: H265Settings -> Maybe Natural
$sel:hrdBufferInitialFillPercentage:H265Settings' :: H265Settings -> Maybe Natural
$sel:hrdBufferFinalFillPercentage:H265Settings' :: H265Settings -> Maybe Natural
$sel:gopSizeUnits:H265Settings' :: H265Settings -> Maybe H265GopSizeUnits
$sel:gopSize:H265Settings' :: H265Settings -> Maybe Double
$sel:gopClosedCadence:H265Settings' :: H265Settings -> Maybe Natural
$sel:gopBReference:H265Settings' :: H265Settings -> Maybe H265GopBReference
$sel:framerateNumerator:H265Settings' :: H265Settings -> Maybe Natural
$sel:framerateDenominator:H265Settings' :: H265Settings -> Maybe Natural
$sel:framerateConversionAlgorithm:H265Settings' :: H265Settings -> Maybe H265FramerateConversionAlgorithm
$sel:framerateControl:H265Settings' :: H265Settings -> Maybe H265FramerateControl
$sel:flickerAdaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265FlickerAdaptiveQuantization
$sel:dynamicSubGop:H265Settings' :: H265Settings -> Maybe H265DynamicSubGop
$sel:codecProfile:H265Settings' :: H265Settings -> Maybe H265CodecProfile
$sel:codecLevel:H265Settings' :: H265Settings -> Maybe H265CodecLevel
$sel:bitrate:H265Settings' :: H265Settings -> Maybe Natural
$sel:alternateTransferFunctionSei:H265Settings' :: H265Settings -> Maybe H265AlternateTransferFunctionSei
$sel:adaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265AdaptiveQuantization
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265AdaptiveQuantization
adaptiveQuantization
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265AlternateTransferFunctionSei
alternateTransferFunctionSei
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
bitrate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265CodecLevel
codecLevel
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265CodecProfile
codecProfile
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265DynamicSubGop
dynamicSubGop
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265FlickerAdaptiveQuantization
flickerAdaptiveQuantization
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265FramerateControl
framerateControl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265FramerateConversionAlgorithm
framerateConversionAlgorithm
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
framerateDenominator
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
framerateNumerator
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265GopBReference
gopBReference
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
gopClosedCadence
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
gopSize
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265GopSizeUnits
gopSizeUnits
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
hrdBufferFinalFillPercentage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
hrdBufferInitialFillPercentage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
hrdBufferSize
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265InterlaceMode
interlaceMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxBitrate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
minIInterval
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
numberBFramesBetweenReferenceFrames
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
numberReferenceFrames
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265ParControl
parControl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
parDenominator
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
parNumerator
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265QualityTuningLevel
qualityTuningLevel
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265QvbrSettings
qvbrSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265RateControlMode
rateControlMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265SampleAdaptiveOffsetFilterMode
sampleAdaptiveOffsetFilterMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265ScanTypeConversionMode
scanTypeConversionMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265SceneChangeDetect
sceneChangeDetect
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
slices
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265SlowPal
slowPal
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265SpatialAdaptiveQuantization
spatialAdaptiveQuantization
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265Telecine
telecine
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265TemporalAdaptiveQuantization
temporalAdaptiveQuantization
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265TemporalIds
temporalIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265Tiles
tiles
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265UnregisteredSeiTimecode
unregisteredSeiTimecode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe H265WriteMp4PackagingType
writeMp4PackagingType

instance Prelude.NFData H265Settings where
  rnf :: H265Settings -> ()
rnf H265Settings' {Maybe Double
Maybe Natural
Maybe H265AdaptiveQuantization
Maybe H265AlternateTransferFunctionSei
Maybe H265CodecLevel
Maybe H265CodecProfile
Maybe H265DynamicSubGop
Maybe H265FlickerAdaptiveQuantization
Maybe H265FramerateControl
Maybe H265FramerateConversionAlgorithm
Maybe H265GopBReference
Maybe H265GopSizeUnits
Maybe H265InterlaceMode
Maybe H265ParControl
Maybe H265QualityTuningLevel
Maybe H265QvbrSettings
Maybe H265RateControlMode
Maybe H265SampleAdaptiveOffsetFilterMode
Maybe H265ScanTypeConversionMode
Maybe H265SceneChangeDetect
Maybe H265SlowPal
Maybe H265SpatialAdaptiveQuantization
Maybe H265Telecine
Maybe H265TemporalAdaptiveQuantization
Maybe H265TemporalIds
Maybe H265Tiles
Maybe H265UnregisteredSeiTimecode
Maybe H265WriteMp4PackagingType
writeMp4PackagingType :: Maybe H265WriteMp4PackagingType
unregisteredSeiTimecode :: Maybe H265UnregisteredSeiTimecode
tiles :: Maybe H265Tiles
temporalIds :: Maybe H265TemporalIds
temporalAdaptiveQuantization :: Maybe H265TemporalAdaptiveQuantization
telecine :: Maybe H265Telecine
spatialAdaptiveQuantization :: Maybe H265SpatialAdaptiveQuantization
slowPal :: Maybe H265SlowPal
slices :: Maybe Natural
sceneChangeDetect :: Maybe H265SceneChangeDetect
scanTypeConversionMode :: Maybe H265ScanTypeConversionMode
sampleAdaptiveOffsetFilterMode :: Maybe H265SampleAdaptiveOffsetFilterMode
rateControlMode :: Maybe H265RateControlMode
qvbrSettings :: Maybe H265QvbrSettings
qualityTuningLevel :: Maybe H265QualityTuningLevel
parNumerator :: Maybe Natural
parDenominator :: Maybe Natural
parControl :: Maybe H265ParControl
numberReferenceFrames :: Maybe Natural
numberBFramesBetweenReferenceFrames :: Maybe Natural
minIInterval :: Maybe Natural
maxBitrate :: Maybe Natural
interlaceMode :: Maybe H265InterlaceMode
hrdBufferSize :: Maybe Natural
hrdBufferInitialFillPercentage :: Maybe Natural
hrdBufferFinalFillPercentage :: Maybe Natural
gopSizeUnits :: Maybe H265GopSizeUnits
gopSize :: Maybe Double
gopClosedCadence :: Maybe Natural
gopBReference :: Maybe H265GopBReference
framerateNumerator :: Maybe Natural
framerateDenominator :: Maybe Natural
framerateConversionAlgorithm :: Maybe H265FramerateConversionAlgorithm
framerateControl :: Maybe H265FramerateControl
flickerAdaptiveQuantization :: Maybe H265FlickerAdaptiveQuantization
dynamicSubGop :: Maybe H265DynamicSubGop
codecProfile :: Maybe H265CodecProfile
codecLevel :: Maybe H265CodecLevel
bitrate :: Maybe Natural
alternateTransferFunctionSei :: Maybe H265AlternateTransferFunctionSei
adaptiveQuantization :: Maybe H265AdaptiveQuantization
$sel:writeMp4PackagingType:H265Settings' :: H265Settings -> Maybe H265WriteMp4PackagingType
$sel:unregisteredSeiTimecode:H265Settings' :: H265Settings -> Maybe H265UnregisteredSeiTimecode
$sel:tiles:H265Settings' :: H265Settings -> Maybe H265Tiles
$sel:temporalIds:H265Settings' :: H265Settings -> Maybe H265TemporalIds
$sel:temporalAdaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265TemporalAdaptiveQuantization
$sel:telecine:H265Settings' :: H265Settings -> Maybe H265Telecine
$sel:spatialAdaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265SpatialAdaptiveQuantization
$sel:slowPal:H265Settings' :: H265Settings -> Maybe H265SlowPal
$sel:slices:H265Settings' :: H265Settings -> Maybe Natural
$sel:sceneChangeDetect:H265Settings' :: H265Settings -> Maybe H265SceneChangeDetect
$sel:scanTypeConversionMode:H265Settings' :: H265Settings -> Maybe H265ScanTypeConversionMode
$sel:sampleAdaptiveOffsetFilterMode:H265Settings' :: H265Settings -> Maybe H265SampleAdaptiveOffsetFilterMode
$sel:rateControlMode:H265Settings' :: H265Settings -> Maybe H265RateControlMode
$sel:qvbrSettings:H265Settings' :: H265Settings -> Maybe H265QvbrSettings
$sel:qualityTuningLevel:H265Settings' :: H265Settings -> Maybe H265QualityTuningLevel
$sel:parNumerator:H265Settings' :: H265Settings -> Maybe Natural
$sel:parDenominator:H265Settings' :: H265Settings -> Maybe Natural
$sel:parControl:H265Settings' :: H265Settings -> Maybe H265ParControl
$sel:numberReferenceFrames:H265Settings' :: H265Settings -> Maybe Natural
$sel:numberBFramesBetweenReferenceFrames:H265Settings' :: H265Settings -> Maybe Natural
$sel:minIInterval:H265Settings' :: H265Settings -> Maybe Natural
$sel:maxBitrate:H265Settings' :: H265Settings -> Maybe Natural
$sel:interlaceMode:H265Settings' :: H265Settings -> Maybe H265InterlaceMode
$sel:hrdBufferSize:H265Settings' :: H265Settings -> Maybe Natural
$sel:hrdBufferInitialFillPercentage:H265Settings' :: H265Settings -> Maybe Natural
$sel:hrdBufferFinalFillPercentage:H265Settings' :: H265Settings -> Maybe Natural
$sel:gopSizeUnits:H265Settings' :: H265Settings -> Maybe H265GopSizeUnits
$sel:gopSize:H265Settings' :: H265Settings -> Maybe Double
$sel:gopClosedCadence:H265Settings' :: H265Settings -> Maybe Natural
$sel:gopBReference:H265Settings' :: H265Settings -> Maybe H265GopBReference
$sel:framerateNumerator:H265Settings' :: H265Settings -> Maybe Natural
$sel:framerateDenominator:H265Settings' :: H265Settings -> Maybe Natural
$sel:framerateConversionAlgorithm:H265Settings' :: H265Settings -> Maybe H265FramerateConversionAlgorithm
$sel:framerateControl:H265Settings' :: H265Settings -> Maybe H265FramerateControl
$sel:flickerAdaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265FlickerAdaptiveQuantization
$sel:dynamicSubGop:H265Settings' :: H265Settings -> Maybe H265DynamicSubGop
$sel:codecProfile:H265Settings' :: H265Settings -> Maybe H265CodecProfile
$sel:codecLevel:H265Settings' :: H265Settings -> Maybe H265CodecLevel
$sel:bitrate:H265Settings' :: H265Settings -> Maybe Natural
$sel:alternateTransferFunctionSei:H265Settings' :: H265Settings -> Maybe H265AlternateTransferFunctionSei
$sel:adaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265AdaptiveQuantization
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe H265AdaptiveQuantization
adaptiveQuantization
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe H265AlternateTransferFunctionSei
alternateTransferFunctionSei
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
bitrate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe H265CodecLevel
codecLevel
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe H265CodecProfile
codecProfile
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe H265DynamicSubGop
dynamicSubGop
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe H265FlickerAdaptiveQuantization
flickerAdaptiveQuantization
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe H265FramerateControl
framerateControl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe H265FramerateConversionAlgorithm
framerateConversionAlgorithm
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
framerateDenominator
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
framerateNumerator
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe H265GopBReference
gopBReference
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
gopClosedCadence
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
gopSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe H265GopSizeUnits
gopSizeUnits
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Natural
hrdBufferFinalFillPercentage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Natural
hrdBufferInitialFillPercentage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
hrdBufferSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe H265InterlaceMode
interlaceMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxBitrate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
minIInterval
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Natural
numberBFramesBetweenReferenceFrames
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Natural
numberReferenceFrames
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe H265ParControl
parControl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Natural
parDenominator
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Natural
parNumerator
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265QualityTuningLevel
qualityTuningLevel
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265QvbrSettings
qvbrSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265RateControlMode
rateControlMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265SampleAdaptiveOffsetFilterMode
sampleAdaptiveOffsetFilterMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265ScanTypeConversionMode
scanTypeConversionMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265SceneChangeDetect
sceneChangeDetect
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Natural
slices
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265SlowPal
slowPal
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265SpatialAdaptiveQuantization
spatialAdaptiveQuantization
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265Telecine
telecine
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265TemporalAdaptiveQuantization
temporalAdaptiveQuantization
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265TemporalIds
temporalIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265Tiles
tiles
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265UnregisteredSeiTimecode
unregisteredSeiTimecode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe H265WriteMp4PackagingType
writeMp4PackagingType

instance Data.ToJSON H265Settings where
  toJSON :: H265Settings -> Value
toJSON H265Settings' {Maybe Double
Maybe Natural
Maybe H265AdaptiveQuantization
Maybe H265AlternateTransferFunctionSei
Maybe H265CodecLevel
Maybe H265CodecProfile
Maybe H265DynamicSubGop
Maybe H265FlickerAdaptiveQuantization
Maybe H265FramerateControl
Maybe H265FramerateConversionAlgorithm
Maybe H265GopBReference
Maybe H265GopSizeUnits
Maybe H265InterlaceMode
Maybe H265ParControl
Maybe H265QualityTuningLevel
Maybe H265QvbrSettings
Maybe H265RateControlMode
Maybe H265SampleAdaptiveOffsetFilterMode
Maybe H265ScanTypeConversionMode
Maybe H265SceneChangeDetect
Maybe H265SlowPal
Maybe H265SpatialAdaptiveQuantization
Maybe H265Telecine
Maybe H265TemporalAdaptiveQuantization
Maybe H265TemporalIds
Maybe H265Tiles
Maybe H265UnregisteredSeiTimecode
Maybe H265WriteMp4PackagingType
writeMp4PackagingType :: Maybe H265WriteMp4PackagingType
unregisteredSeiTimecode :: Maybe H265UnregisteredSeiTimecode
tiles :: Maybe H265Tiles
temporalIds :: Maybe H265TemporalIds
temporalAdaptiveQuantization :: Maybe H265TemporalAdaptiveQuantization
telecine :: Maybe H265Telecine
spatialAdaptiveQuantization :: Maybe H265SpatialAdaptiveQuantization
slowPal :: Maybe H265SlowPal
slices :: Maybe Natural
sceneChangeDetect :: Maybe H265SceneChangeDetect
scanTypeConversionMode :: Maybe H265ScanTypeConversionMode
sampleAdaptiveOffsetFilterMode :: Maybe H265SampleAdaptiveOffsetFilterMode
rateControlMode :: Maybe H265RateControlMode
qvbrSettings :: Maybe H265QvbrSettings
qualityTuningLevel :: Maybe H265QualityTuningLevel
parNumerator :: Maybe Natural
parDenominator :: Maybe Natural
parControl :: Maybe H265ParControl
numberReferenceFrames :: Maybe Natural
numberBFramesBetweenReferenceFrames :: Maybe Natural
minIInterval :: Maybe Natural
maxBitrate :: Maybe Natural
interlaceMode :: Maybe H265InterlaceMode
hrdBufferSize :: Maybe Natural
hrdBufferInitialFillPercentage :: Maybe Natural
hrdBufferFinalFillPercentage :: Maybe Natural
gopSizeUnits :: Maybe H265GopSizeUnits
gopSize :: Maybe Double
gopClosedCadence :: Maybe Natural
gopBReference :: Maybe H265GopBReference
framerateNumerator :: Maybe Natural
framerateDenominator :: Maybe Natural
framerateConversionAlgorithm :: Maybe H265FramerateConversionAlgorithm
framerateControl :: Maybe H265FramerateControl
flickerAdaptiveQuantization :: Maybe H265FlickerAdaptiveQuantization
dynamicSubGop :: Maybe H265DynamicSubGop
codecProfile :: Maybe H265CodecProfile
codecLevel :: Maybe H265CodecLevel
bitrate :: Maybe Natural
alternateTransferFunctionSei :: Maybe H265AlternateTransferFunctionSei
adaptiveQuantization :: Maybe H265AdaptiveQuantization
$sel:writeMp4PackagingType:H265Settings' :: H265Settings -> Maybe H265WriteMp4PackagingType
$sel:unregisteredSeiTimecode:H265Settings' :: H265Settings -> Maybe H265UnregisteredSeiTimecode
$sel:tiles:H265Settings' :: H265Settings -> Maybe H265Tiles
$sel:temporalIds:H265Settings' :: H265Settings -> Maybe H265TemporalIds
$sel:temporalAdaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265TemporalAdaptiveQuantization
$sel:telecine:H265Settings' :: H265Settings -> Maybe H265Telecine
$sel:spatialAdaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265SpatialAdaptiveQuantization
$sel:slowPal:H265Settings' :: H265Settings -> Maybe H265SlowPal
$sel:slices:H265Settings' :: H265Settings -> Maybe Natural
$sel:sceneChangeDetect:H265Settings' :: H265Settings -> Maybe H265SceneChangeDetect
$sel:scanTypeConversionMode:H265Settings' :: H265Settings -> Maybe H265ScanTypeConversionMode
$sel:sampleAdaptiveOffsetFilterMode:H265Settings' :: H265Settings -> Maybe H265SampleAdaptiveOffsetFilterMode
$sel:rateControlMode:H265Settings' :: H265Settings -> Maybe H265RateControlMode
$sel:qvbrSettings:H265Settings' :: H265Settings -> Maybe H265QvbrSettings
$sel:qualityTuningLevel:H265Settings' :: H265Settings -> Maybe H265QualityTuningLevel
$sel:parNumerator:H265Settings' :: H265Settings -> Maybe Natural
$sel:parDenominator:H265Settings' :: H265Settings -> Maybe Natural
$sel:parControl:H265Settings' :: H265Settings -> Maybe H265ParControl
$sel:numberReferenceFrames:H265Settings' :: H265Settings -> Maybe Natural
$sel:numberBFramesBetweenReferenceFrames:H265Settings' :: H265Settings -> Maybe Natural
$sel:minIInterval:H265Settings' :: H265Settings -> Maybe Natural
$sel:maxBitrate:H265Settings' :: H265Settings -> Maybe Natural
$sel:interlaceMode:H265Settings' :: H265Settings -> Maybe H265InterlaceMode
$sel:hrdBufferSize:H265Settings' :: H265Settings -> Maybe Natural
$sel:hrdBufferInitialFillPercentage:H265Settings' :: H265Settings -> Maybe Natural
$sel:hrdBufferFinalFillPercentage:H265Settings' :: H265Settings -> Maybe Natural
$sel:gopSizeUnits:H265Settings' :: H265Settings -> Maybe H265GopSizeUnits
$sel:gopSize:H265Settings' :: H265Settings -> Maybe Double
$sel:gopClosedCadence:H265Settings' :: H265Settings -> Maybe Natural
$sel:gopBReference:H265Settings' :: H265Settings -> Maybe H265GopBReference
$sel:framerateNumerator:H265Settings' :: H265Settings -> Maybe Natural
$sel:framerateDenominator:H265Settings' :: H265Settings -> Maybe Natural
$sel:framerateConversionAlgorithm:H265Settings' :: H265Settings -> Maybe H265FramerateConversionAlgorithm
$sel:framerateControl:H265Settings' :: H265Settings -> Maybe H265FramerateControl
$sel:flickerAdaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265FlickerAdaptiveQuantization
$sel:dynamicSubGop:H265Settings' :: H265Settings -> Maybe H265DynamicSubGop
$sel:codecProfile:H265Settings' :: H265Settings -> Maybe H265CodecProfile
$sel:codecLevel:H265Settings' :: H265Settings -> Maybe H265CodecLevel
$sel:bitrate:H265Settings' :: H265Settings -> Maybe Natural
$sel:alternateTransferFunctionSei:H265Settings' :: H265Settings -> Maybe H265AlternateTransferFunctionSei
$sel:adaptiveQuantization:H265Settings' :: H265Settings -> Maybe H265AdaptiveQuantization
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"adaptiveQuantization" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265AdaptiveQuantization
adaptiveQuantization,
            (Key
"alternateTransferFunctionSei" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265AlternateTransferFunctionSei
alternateTransferFunctionSei,
            (Key
"bitrate" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
bitrate,
            (Key
"codecLevel" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265CodecLevel
codecLevel,
            (Key
"codecProfile" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265CodecProfile
codecProfile,
            (Key
"dynamicSubGop" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265DynamicSubGop
dynamicSubGop,
            (Key
"flickerAdaptiveQuantization" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265FlickerAdaptiveQuantization
flickerAdaptiveQuantization,
            (Key
"framerateControl" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265FramerateControl
framerateControl,
            (Key
"framerateConversionAlgorithm" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265FramerateConversionAlgorithm
framerateConversionAlgorithm,
            (Key
"framerateDenominator" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
framerateDenominator,
            (Key
"framerateNumerator" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
framerateNumerator,
            (Key
"gopBReference" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265GopBReference
gopBReference,
            (Key
"gopClosedCadence" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
gopClosedCadence,
            (Key
"gopSize" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Double
gopSize,
            (Key
"gopSizeUnits" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265GopSizeUnits
gopSizeUnits,
            (Key
"hrdBufferFinalFillPercentage" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
hrdBufferFinalFillPercentage,
            (Key
"hrdBufferInitialFillPercentage" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
hrdBufferInitialFillPercentage,
            (Key
"hrdBufferSize" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
hrdBufferSize,
            (Key
"interlaceMode" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265InterlaceMode
interlaceMode,
            (Key
"maxBitrate" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
maxBitrate,
            (Key
"minIInterval" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
minIInterval,
            (Key
"numberBFramesBetweenReferenceFrames" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
numberBFramesBetweenReferenceFrames,
            (Key
"numberReferenceFrames" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
numberReferenceFrames,
            (Key
"parControl" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265ParControl
parControl,
            (Key
"parDenominator" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
parDenominator,
            (Key
"parNumerator" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
parNumerator,
            (Key
"qualityTuningLevel" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265QualityTuningLevel
qualityTuningLevel,
            (Key
"qvbrSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265QvbrSettings
qvbrSettings,
            (Key
"rateControlMode" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265RateControlMode
rateControlMode,
            (Key
"sampleAdaptiveOffsetFilterMode" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265SampleAdaptiveOffsetFilterMode
sampleAdaptiveOffsetFilterMode,
            (Key
"scanTypeConversionMode" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265ScanTypeConversionMode
scanTypeConversionMode,
            (Key
"sceneChangeDetect" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265SceneChangeDetect
sceneChangeDetect,
            (Key
"slices" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
slices,
            (Key
"slowPal" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265SlowPal
slowPal,
            (Key
"spatialAdaptiveQuantization" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265SpatialAdaptiveQuantization
spatialAdaptiveQuantization,
            (Key
"telecine" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265Telecine
telecine,
            (Key
"temporalAdaptiveQuantization" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265TemporalAdaptiveQuantization
temporalAdaptiveQuantization,
            (Key
"temporalIds" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265TemporalIds
temporalIds,
            (Key
"tiles" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265Tiles
tiles,
            (Key
"unregisteredSeiTimecode" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265UnregisteredSeiTimecode
unregisteredSeiTimecode,
            (Key
"writeMp4PackagingType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265WriteMp4PackagingType
writeMp4PackagingType
          ]
      )