{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.MediaConvert.Types.CmafGroupSettings
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.MediaConvert.Types.CmafGroupSettings where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import Amazonka.MediaConvert.Types.CmafAdditionalManifest
import Amazonka.MediaConvert.Types.CmafClientCache
import Amazonka.MediaConvert.Types.CmafCodecSpecification
import Amazonka.MediaConvert.Types.CmafEncryptionSettings
import Amazonka.MediaConvert.Types.CmafImageBasedTrickPlay
import Amazonka.MediaConvert.Types.CmafImageBasedTrickPlaySettings
import Amazonka.MediaConvert.Types.CmafManifestCompression
import Amazonka.MediaConvert.Types.CmafManifestDurationFormat
import Amazonka.MediaConvert.Types.CmafMpdProfile
import Amazonka.MediaConvert.Types.CmafPtsOffsetHandlingForBFrames
import Amazonka.MediaConvert.Types.CmafSegmentControl
import Amazonka.MediaConvert.Types.CmafSegmentLengthControl
import Amazonka.MediaConvert.Types.CmafStreamInfResolution
import Amazonka.MediaConvert.Types.CmafTargetDurationCompatibilityMode
import Amazonka.MediaConvert.Types.CmafWriteDASHManifest
import Amazonka.MediaConvert.Types.CmafWriteHLSManifest
import Amazonka.MediaConvert.Types.CmafWriteSegmentTimelineInRepresentation
import Amazonka.MediaConvert.Types.DestinationSettings
import qualified Amazonka.Prelude as Prelude

-- | Settings related to your CMAF output package. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set Type, under
-- OutputGroupSettings, to CMAF_GROUP_SETTINGS.
--
-- /See:/ 'newCmafGroupSettings' smart constructor.
data CmafGroupSettings = CmafGroupSettings'
  { -- | Specify the length, in whole seconds, of the mp4 fragments. When you
    -- don\'t specify a value, MediaConvert defaults to 2. Related setting: Use
    -- Fragment length control (FragmentLengthControl) to specify whether the
    -- encoder enforces this value strictly.
    CmafGroupSettings -> Maybe Natural
fragmentLength :: Prelude.Maybe Prelude.Natural,
    -- | When set to SINGLE_FILE, a single output file is generated, which is
    -- internally segmented using the Fragment Length and Segment Length. When
    -- set to SEGMENTED_FILES, separate segment files will be created.
    CmafGroupSettings -> Maybe CmafSegmentControl
segmentControl :: Prelude.Maybe CmafSegmentControl,
    -- | Use Destination (Destination) to specify the S3 output location and the
    -- output filename base. Destination accepts format identifiers. If you do
    -- not specify the base filename in the URI, the service will use the
    -- filename of the input file. If your job has multiple inputs, the service
    -- uses the filename of the first input file.
    CmafGroupSettings -> Maybe Text
destination :: Prelude.Maybe Prelude.Text,
    -- | Minimum time of initially buffered media that is needed to ensure smooth
    -- playout.
    CmafGroupSettings -> Maybe Natural
minBufferTime :: Prelude.Maybe Prelude.Natural,
    -- | Specify whether your DASH profile is on-demand or main. When you choose
    -- Main profile (MAIN_PROFILE), the service signals
    -- urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When
    -- you choose On-demand (ON_DEMAND_PROFILE), the service signals
    -- urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose
    -- On-demand, you must also set the output group setting Segment control
    -- (SegmentControl) to Single file (SINGLE_FILE).
    CmafGroupSettings -> Maybe CmafMpdProfile
mpdProfile :: Prelude.Maybe CmafMpdProfile,
    -- | When set to LEGACY, the segment target duration is always rounded up to
    -- the nearest integer value above its current value in seconds. When set
    -- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
    -- nearest integer value if fraction seconds are greater than or equal to
    -- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
    -- use LEGACY if your client needs to ensure that the target duration is
    -- always longer than the actual duration of the segment. Some older
    -- players may experience interrupted playback when the actual duration of
    -- a track in a segment is longer than the target duration.
    CmafGroupSettings -> Maybe CmafTargetDurationCompatibilityMode
targetDurationCompatibilityMode :: Prelude.Maybe CmafTargetDurationCompatibilityMode,
    -- | Specify whether MediaConvert generates images for trick play. Keep the
    -- default value, None (NONE), to not generate any images. Choose Thumbnail
    -- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
    -- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
    -- full-resolution images of single frames. When you enable Write HLS
    -- manifest (WriteHlsManifest), MediaConvert creates a child manifest for
    -- each set of images that you generate and adds corresponding entries to
    -- the parent manifest. When you enable Write DASH manifest
    -- (WriteDashManifest), MediaConvert adds an entry in the .mpd manifest for
    -- each set of images that you generate. A common application for these
    -- images is Roku trick mode. The thumbnails and full-frame images that
    -- MediaConvert creates with this feature are compatible with this Roku
    -- specification:
    -- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
    CmafGroupSettings -> Maybe CmafImageBasedTrickPlay
imageBasedTrickPlay :: Prelude.Maybe CmafImageBasedTrickPlay,
    -- | When set to ENABLED, an Apple HLS manifest will be generated for this
    -- output.
    CmafGroupSettings -> Maybe CmafWriteHLSManifest
writeHlsManifest :: Prelude.Maybe CmafWriteHLSManifest,
    -- | By default, the service creates one top-level .m3u8 HLS manifest and one
    -- top -level .mpd DASH manifest for each CMAF output group in your job.
    -- These default manifests reference every output in the output group. To
    -- create additional top-level manifests that reference a subset of the
    -- outputs in the output group, specify a list of them here. For each
    -- additional manifest that you specify, the service creates one HLS
    -- manifest and one DASH manifest.
    CmafGroupSettings -> Maybe [CmafAdditionalManifest]
additionalManifests :: Prelude.Maybe [CmafAdditionalManifest],
    -- | Specify how you want MediaConvert to determine the segment length.
    -- Choose Exact (EXACT) to have the encoder use the exact length that you
    -- specify with the setting Segment length (SegmentLength). This might
    -- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
    -- the encoder round up the segment lengths to match the next GOP boundary.
    CmafGroupSettings -> Maybe CmafSegmentLengthControl
segmentLengthControl :: Prelude.Maybe CmafSegmentLengthControl,
    -- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
    -- ADVANCED
    CmafGroupSettings -> Maybe CmafImageBasedTrickPlaySettings
imageBasedTrickPlaySettings :: Prelude.Maybe CmafImageBasedTrickPlaySettings,
    -- | Specification to use (RFC-6381 or the default RFC-4281) during m3u8
    -- playlist generation.
    CmafGroupSettings -> Maybe CmafCodecSpecification
codecSpecification :: Prelude.Maybe CmafCodecSpecification,
    -- | A partial URI prefix that will be put in the manifest file at the top
    -- level BaseURL element. Can be used if streams are delivered from a
    -- different URL than the manifest file.
    CmafGroupSettings -> Maybe Text
baseUrl :: Prelude.Maybe Prelude.Text,
    -- | Settings associated with the destination. Will vary based on the type of
    -- destination
    CmafGroupSettings -> Maybe DestinationSettings
destinationSettings :: Prelude.Maybe DestinationSettings,
    -- | Keep this setting at the default value of 0, unless you are
    -- troubleshooting a problem with how devices play back the end of your
    -- video asset. If you know that player devices are hanging on the final
    -- segment of your video because the length of your final segment is too
    -- short, use this setting to specify a minimum final segment length, in
    -- seconds. Choose a value that is greater than or equal to 1 and less than
    -- your segment length. When you specify a value for this setting, the
    -- encoder will combine any final segment that is shorter than the length
    -- that you specify with the previous segment. For example, your segment
    -- length is 3 seconds and your final segment is .5 seconds without a
    -- minimum final segment length; when you set the minimum final segment
    -- length to 1, your final segment is 3.5 seconds.
    CmafGroupSettings -> Maybe Double
minFinalSegmentLength :: Prelude.Maybe Prelude.Double,
    -- | When set to ENABLED, a DASH MPD manifest will be generated for this
    -- output.
    CmafGroupSettings -> Maybe CmafWriteDASHManifest
writeDashManifest :: Prelude.Maybe CmafWriteDASHManifest,
    -- | DRM settings.
    CmafGroupSettings -> Maybe CmafEncryptionSettings
encryption :: Prelude.Maybe CmafEncryptionSettings,
    -- | Specify the length, in whole seconds, of each segment. When you don\'t
    -- specify a value, MediaConvert defaults to 10. Related settings: Use
    -- Segment length control (SegmentLengthControl) to specify whether the
    -- encoder enforces this value strictly. Use Segment control
    -- (CmafSegmentControl) to specify whether MediaConvert creates separate
    -- segment files or one content file that has metadata to mark the segment
    -- boundaries.
    CmafGroupSettings -> Maybe Natural
segmentLength :: Prelude.Maybe Prelude.Natural,
    -- | Use this setting only when your output video stream has B-frames, which
    -- causes the initial presentation time stamp (PTS) to be offset from the
    -- initial decode time stamp (DTS). Specify how MediaConvert handles PTS
    -- when writing time stamps in output DASH manifests. Choose Match initial
    -- PTS (MATCH_INITIAL_PTS) when you want MediaConvert to use the initial
    -- PTS as the first time stamp in the manifest. Choose Zero-based
    -- (ZERO_BASED) to have MediaConvert ignore the initial PTS in the video
    -- stream and instead write the initial time stamp as zero in the manifest.
    -- For outputs that don\'t have B-frames, the time stamps in your DASH
    -- manifests start at zero regardless of your choice here.
    CmafGroupSettings -> Maybe CmafPtsOffsetHandlingForBFrames
ptsOffsetHandlingForBFrames :: Prelude.Maybe CmafPtsOffsetHandlingForBFrames,
    -- | Indicates whether the output manifest should use floating point values
    -- for segment duration.
    CmafGroupSettings -> Maybe CmafManifestDurationFormat
manifestDurationFormat :: Prelude.Maybe CmafManifestDurationFormat,
    -- | Disable this setting only when your workflow requires the
    -- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
    -- (ENABLED) and control caching in your video distribution set up. For
    -- example, use the Cache-Control http header.
    CmafGroupSettings -> Maybe CmafClientCache
clientCache :: Prelude.Maybe CmafClientCache,
    -- | When you enable Precise segment duration in DASH manifests
    -- (writeSegmentTimelineInRepresentation), your DASH manifest shows precise
    -- segment durations. The segment duration information appears inside the
    -- SegmentTimeline element, inside SegmentTemplate at the Representation
    -- level. When this feature isn\'t enabled, the segment durations in your
    -- DASH manifest are approximate. The segment duration information appears
    -- in the duration attribute of the SegmentTemplate element.
    CmafGroupSettings -> Maybe CmafWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation :: Prelude.Maybe CmafWriteSegmentTimelineInRepresentation,
    -- | Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
    -- tag of variant manifest.
    CmafGroupSettings -> Maybe CmafStreamInfResolution
streamInfResolution :: Prelude.Maybe CmafStreamInfResolution,
    -- | When set to GZIP, compresses HLS playlist.
    CmafGroupSettings -> Maybe CmafManifestCompression
manifestCompression :: Prelude.Maybe CmafManifestCompression
  }
  deriving (CmafGroupSettings -> CmafGroupSettings -> Bool
(CmafGroupSettings -> CmafGroupSettings -> Bool)
-> (CmafGroupSettings -> CmafGroupSettings -> Bool)
-> Eq CmafGroupSettings
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CmafGroupSettings -> CmafGroupSettings -> Bool
$c/= :: CmafGroupSettings -> CmafGroupSettings -> Bool
== :: CmafGroupSettings -> CmafGroupSettings -> Bool
$c== :: CmafGroupSettings -> CmafGroupSettings -> Bool
Prelude.Eq, ReadPrec [CmafGroupSettings]
ReadPrec CmafGroupSettings
Int -> ReadS CmafGroupSettings
ReadS [CmafGroupSettings]
(Int -> ReadS CmafGroupSettings)
-> ReadS [CmafGroupSettings]
-> ReadPrec CmafGroupSettings
-> ReadPrec [CmafGroupSettings]
-> Read CmafGroupSettings
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CmafGroupSettings]
$creadListPrec :: ReadPrec [CmafGroupSettings]
readPrec :: ReadPrec CmafGroupSettings
$creadPrec :: ReadPrec CmafGroupSettings
readList :: ReadS [CmafGroupSettings]
$creadList :: ReadS [CmafGroupSettings]
readsPrec :: Int -> ReadS CmafGroupSettings
$creadsPrec :: Int -> ReadS CmafGroupSettings
Prelude.Read, Int -> CmafGroupSettings -> ShowS
[CmafGroupSettings] -> ShowS
CmafGroupSettings -> String
(Int -> CmafGroupSettings -> ShowS)
-> (CmafGroupSettings -> String)
-> ([CmafGroupSettings] -> ShowS)
-> Show CmafGroupSettings
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CmafGroupSettings] -> ShowS
$cshowList :: [CmafGroupSettings] -> ShowS
show :: CmafGroupSettings -> String
$cshow :: CmafGroupSettings -> String
showsPrec :: Int -> CmafGroupSettings -> ShowS
$cshowsPrec :: Int -> CmafGroupSettings -> ShowS
Prelude.Show, (forall x. CmafGroupSettings -> Rep CmafGroupSettings x)
-> (forall x. Rep CmafGroupSettings x -> CmafGroupSettings)
-> Generic CmafGroupSettings
forall x. Rep CmafGroupSettings x -> CmafGroupSettings
forall x. CmafGroupSettings -> Rep CmafGroupSettings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CmafGroupSettings x -> CmafGroupSettings
$cfrom :: forall x. CmafGroupSettings -> Rep CmafGroupSettings x
Prelude.Generic)

-- |
-- Create a value of 'CmafGroupSettings' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'fragmentLength', 'cmafGroupSettings_fragmentLength' - Specify the length, in whole seconds, of the mp4 fragments. When you
-- don\'t specify a value, MediaConvert defaults to 2. Related setting: Use
-- Fragment length control (FragmentLengthControl) to specify whether the
-- encoder enforces this value strictly.
--
-- 'segmentControl', 'cmafGroupSettings_segmentControl' - When set to SINGLE_FILE, a single output file is generated, which is
-- internally segmented using the Fragment Length and Segment Length. When
-- set to SEGMENTED_FILES, separate segment files will be created.
--
-- 'destination', 'cmafGroupSettings_destination' - Use Destination (Destination) to specify the S3 output location and the
-- output filename base. Destination accepts format identifiers. If you do
-- not specify the base filename in the URI, the service will use the
-- filename of the input file. If your job has multiple inputs, the service
-- uses the filename of the first input file.
--
-- 'minBufferTime', 'cmafGroupSettings_minBufferTime' - Minimum time of initially buffered media that is needed to ensure smooth
-- playout.
--
-- 'mpdProfile', 'cmafGroupSettings_mpdProfile' - Specify whether your DASH profile is on-demand or main. When you choose
-- Main profile (MAIN_PROFILE), the service signals
-- urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When
-- you choose On-demand (ON_DEMAND_PROFILE), the service signals
-- urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose
-- On-demand, you must also set the output group setting Segment control
-- (SegmentControl) to Single file (SINGLE_FILE).
--
-- 'targetDurationCompatibilityMode', 'cmafGroupSettings_targetDurationCompatibilityMode' - When set to LEGACY, the segment target duration is always rounded up to
-- the nearest integer value above its current value in seconds. When set
-- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
-- nearest integer value if fraction seconds are greater than or equal to
-- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
-- use LEGACY if your client needs to ensure that the target duration is
-- always longer than the actual duration of the segment. Some older
-- players may experience interrupted playback when the actual duration of
-- a track in a segment is longer than the target duration.
--
-- 'imageBasedTrickPlay', 'cmafGroupSettings_imageBasedTrickPlay' - Specify whether MediaConvert generates images for trick play. Keep the
-- default value, None (NONE), to not generate any images. Choose Thumbnail
-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
-- full-resolution images of single frames. When you enable Write HLS
-- manifest (WriteHlsManifest), MediaConvert creates a child manifest for
-- each set of images that you generate and adds corresponding entries to
-- the parent manifest. When you enable Write DASH manifest
-- (WriteDashManifest), MediaConvert adds an entry in the .mpd manifest for
-- each set of images that you generate. A common application for these
-- images is Roku trick mode. The thumbnails and full-frame images that
-- MediaConvert creates with this feature are compatible with this Roku
-- specification:
-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
--
-- 'writeHlsManifest', 'cmafGroupSettings_writeHlsManifest' - When set to ENABLED, an Apple HLS manifest will be generated for this
-- output.
--
-- 'additionalManifests', 'cmafGroupSettings_additionalManifests' - By default, the service creates one top-level .m3u8 HLS manifest and one
-- top -level .mpd DASH manifest for each CMAF output group in your job.
-- These default manifests reference every output in the output group. To
-- create additional top-level manifests that reference a subset of the
-- outputs in the output group, specify a list of them here. For each
-- additional manifest that you specify, the service creates one HLS
-- manifest and one DASH manifest.
--
-- 'segmentLengthControl', 'cmafGroupSettings_segmentLengthControl' - Specify how you want MediaConvert to determine the segment length.
-- Choose Exact (EXACT) to have the encoder use the exact length that you
-- specify with the setting Segment length (SegmentLength). This might
-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
-- the encoder round up the segment lengths to match the next GOP boundary.
--
-- 'imageBasedTrickPlaySettings', 'cmafGroupSettings_imageBasedTrickPlaySettings' - Tile and thumbnail settings applicable when imageBasedTrickPlay is
-- ADVANCED
--
-- 'codecSpecification', 'cmafGroupSettings_codecSpecification' - Specification to use (RFC-6381 or the default RFC-4281) during m3u8
-- playlist generation.
--
-- 'baseUrl', 'cmafGroupSettings_baseUrl' - A partial URI prefix that will be put in the manifest file at the top
-- level BaseURL element. Can be used if streams are delivered from a
-- different URL than the manifest file.
--
-- 'destinationSettings', 'cmafGroupSettings_destinationSettings' - Settings associated with the destination. Will vary based on the type of
-- destination
--
-- 'minFinalSegmentLength', 'cmafGroupSettings_minFinalSegmentLength' - Keep this setting at the default value of 0, unless you are
-- troubleshooting a problem with how devices play back the end of your
-- video asset. If you know that player devices are hanging on the final
-- segment of your video because the length of your final segment is too
-- short, use this setting to specify a minimum final segment length, in
-- seconds. Choose a value that is greater than or equal to 1 and less than
-- your segment length. When you specify a value for this setting, the
-- encoder will combine any final segment that is shorter than the length
-- that you specify with the previous segment. For example, your segment
-- length is 3 seconds and your final segment is .5 seconds without a
-- minimum final segment length; when you set the minimum final segment
-- length to 1, your final segment is 3.5 seconds.
--
-- 'writeDashManifest', 'cmafGroupSettings_writeDashManifest' - When set to ENABLED, a DASH MPD manifest will be generated for this
-- output.
--
-- 'encryption', 'cmafGroupSettings_encryption' - DRM settings.
--
-- 'segmentLength', 'cmafGroupSettings_segmentLength' - Specify the length, in whole seconds, of each segment. When you don\'t
-- specify a value, MediaConvert defaults to 10. Related settings: Use
-- Segment length control (SegmentLengthControl) to specify whether the
-- encoder enforces this value strictly. Use Segment control
-- (CmafSegmentControl) to specify whether MediaConvert creates separate
-- segment files or one content file that has metadata to mark the segment
-- boundaries.
--
-- 'ptsOffsetHandlingForBFrames', 'cmafGroupSettings_ptsOffsetHandlingForBFrames' - Use this setting only when your output video stream has B-frames, which
-- causes the initial presentation time stamp (PTS) to be offset from the
-- initial decode time stamp (DTS). Specify how MediaConvert handles PTS
-- when writing time stamps in output DASH manifests. Choose Match initial
-- PTS (MATCH_INITIAL_PTS) when you want MediaConvert to use the initial
-- PTS as the first time stamp in the manifest. Choose Zero-based
-- (ZERO_BASED) to have MediaConvert ignore the initial PTS in the video
-- stream and instead write the initial time stamp as zero in the manifest.
-- For outputs that don\'t have B-frames, the time stamps in your DASH
-- manifests start at zero regardless of your choice here.
--
-- 'manifestDurationFormat', 'cmafGroupSettings_manifestDurationFormat' - Indicates whether the output manifest should use floating point values
-- for segment duration.
--
-- 'clientCache', 'cmafGroupSettings_clientCache' - Disable this setting only when your workflow requires the
-- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
-- (ENABLED) and control caching in your video distribution set up. For
-- example, use the Cache-Control http header.
--
-- 'writeSegmentTimelineInRepresentation', 'cmafGroupSettings_writeSegmentTimelineInRepresentation' - When you enable Precise segment duration in DASH manifests
-- (writeSegmentTimelineInRepresentation), your DASH manifest shows precise
-- segment durations. The segment duration information appears inside the
-- SegmentTimeline element, inside SegmentTemplate at the Representation
-- level. When this feature isn\'t enabled, the segment durations in your
-- DASH manifest are approximate. The segment duration information appears
-- in the duration attribute of the SegmentTemplate element.
--
-- 'streamInfResolution', 'cmafGroupSettings_streamInfResolution' - Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
-- tag of variant manifest.
--
-- 'manifestCompression', 'cmafGroupSettings_manifestCompression' - When set to GZIP, compresses HLS playlist.
newCmafGroupSettings ::
  CmafGroupSettings
newCmafGroupSettings :: CmafGroupSettings
newCmafGroupSettings =
  CmafGroupSettings' :: Maybe Natural
-> Maybe CmafSegmentControl
-> Maybe Text
-> Maybe Natural
-> Maybe CmafMpdProfile
-> Maybe CmafTargetDurationCompatibilityMode
-> Maybe CmafImageBasedTrickPlay
-> Maybe CmafWriteHLSManifest
-> Maybe [CmafAdditionalManifest]
-> Maybe CmafSegmentLengthControl
-> Maybe CmafImageBasedTrickPlaySettings
-> Maybe CmafCodecSpecification
-> Maybe Text
-> Maybe DestinationSettings
-> Maybe Double
-> Maybe CmafWriteDASHManifest
-> Maybe CmafEncryptionSettings
-> Maybe Natural
-> Maybe CmafPtsOffsetHandlingForBFrames
-> Maybe CmafManifestDurationFormat
-> Maybe CmafClientCache
-> Maybe CmafWriteSegmentTimelineInRepresentation
-> Maybe CmafStreamInfResolution
-> Maybe CmafManifestCompression
-> CmafGroupSettings
CmafGroupSettings'
    { $sel:fragmentLength:CmafGroupSettings' :: Maybe Natural
fragmentLength =
        Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:segmentControl:CmafGroupSettings' :: Maybe CmafSegmentControl
segmentControl = Maybe CmafSegmentControl
forall a. Maybe a
Prelude.Nothing,
      $sel:destination:CmafGroupSettings' :: Maybe Text
destination = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:minBufferTime:CmafGroupSettings' :: Maybe Natural
minBufferTime = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:mpdProfile:CmafGroupSettings' :: Maybe CmafMpdProfile
mpdProfile = Maybe CmafMpdProfile
forall a. Maybe a
Prelude.Nothing,
      $sel:targetDurationCompatibilityMode:CmafGroupSettings' :: Maybe CmafTargetDurationCompatibilityMode
targetDurationCompatibilityMode = Maybe CmafTargetDurationCompatibilityMode
forall a. Maybe a
Prelude.Nothing,
      $sel:imageBasedTrickPlay:CmafGroupSettings' :: Maybe CmafImageBasedTrickPlay
imageBasedTrickPlay = Maybe CmafImageBasedTrickPlay
forall a. Maybe a
Prelude.Nothing,
      $sel:writeHlsManifest:CmafGroupSettings' :: Maybe CmafWriteHLSManifest
writeHlsManifest = Maybe CmafWriteHLSManifest
forall a. Maybe a
Prelude.Nothing,
      $sel:additionalManifests:CmafGroupSettings' :: Maybe [CmafAdditionalManifest]
additionalManifests = Maybe [CmafAdditionalManifest]
forall a. Maybe a
Prelude.Nothing,
      $sel:segmentLengthControl:CmafGroupSettings' :: Maybe CmafSegmentLengthControl
segmentLengthControl = Maybe CmafSegmentLengthControl
forall a. Maybe a
Prelude.Nothing,
      $sel:imageBasedTrickPlaySettings:CmafGroupSettings' :: Maybe CmafImageBasedTrickPlaySettings
imageBasedTrickPlaySettings = Maybe CmafImageBasedTrickPlaySettings
forall a. Maybe a
Prelude.Nothing,
      $sel:codecSpecification:CmafGroupSettings' :: Maybe CmafCodecSpecification
codecSpecification = Maybe CmafCodecSpecification
forall a. Maybe a
Prelude.Nothing,
      $sel:baseUrl:CmafGroupSettings' :: Maybe Text
baseUrl = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:destinationSettings:CmafGroupSettings' :: Maybe DestinationSettings
destinationSettings = Maybe DestinationSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:minFinalSegmentLength:CmafGroupSettings' :: Maybe Double
minFinalSegmentLength = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:writeDashManifest:CmafGroupSettings' :: Maybe CmafWriteDASHManifest
writeDashManifest = Maybe CmafWriteDASHManifest
forall a. Maybe a
Prelude.Nothing,
      $sel:encryption:CmafGroupSettings' :: Maybe CmafEncryptionSettings
encryption = Maybe CmafEncryptionSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:segmentLength:CmafGroupSettings' :: Maybe Natural
segmentLength = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:ptsOffsetHandlingForBFrames:CmafGroupSettings' :: Maybe CmafPtsOffsetHandlingForBFrames
ptsOffsetHandlingForBFrames = Maybe CmafPtsOffsetHandlingForBFrames
forall a. Maybe a
Prelude.Nothing,
      $sel:manifestDurationFormat:CmafGroupSettings' :: Maybe CmafManifestDurationFormat
manifestDurationFormat = Maybe CmafManifestDurationFormat
forall a. Maybe a
Prelude.Nothing,
      $sel:clientCache:CmafGroupSettings' :: Maybe CmafClientCache
clientCache = Maybe CmafClientCache
forall a. Maybe a
Prelude.Nothing,
      $sel:writeSegmentTimelineInRepresentation:CmafGroupSettings' :: Maybe CmafWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation =
        Maybe CmafWriteSegmentTimelineInRepresentation
forall a. Maybe a
Prelude.Nothing,
      $sel:streamInfResolution:CmafGroupSettings' :: Maybe CmafStreamInfResolution
streamInfResolution = Maybe CmafStreamInfResolution
forall a. Maybe a
Prelude.Nothing,
      $sel:manifestCompression:CmafGroupSettings' :: Maybe CmafManifestCompression
manifestCompression = Maybe CmafManifestCompression
forall a. Maybe a
Prelude.Nothing
    }

-- | Specify the length, in whole seconds, of the mp4 fragments. When you
-- don\'t specify a value, MediaConvert defaults to 2. Related setting: Use
-- Fragment length control (FragmentLengthControl) to specify whether the
-- encoder enforces this value strictly.
cmafGroupSettings_fragmentLength :: Lens.Lens' CmafGroupSettings (Prelude.Maybe Prelude.Natural)
cmafGroupSettings_fragmentLength :: (Maybe Natural -> f (Maybe Natural))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_fragmentLength = (CmafGroupSettings -> Maybe Natural)
-> (CmafGroupSettings -> Maybe Natural -> CmafGroupSettings)
-> Lens
     CmafGroupSettings CmafGroupSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe Natural
fragmentLength :: Maybe Natural
$sel:fragmentLength:CmafGroupSettings' :: CmafGroupSettings -> Maybe Natural
fragmentLength} -> Maybe Natural
fragmentLength) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe Natural
a -> CmafGroupSettings
s {$sel:fragmentLength:CmafGroupSettings' :: Maybe Natural
fragmentLength = Maybe Natural
a} :: CmafGroupSettings)

-- | When set to SINGLE_FILE, a single output file is generated, which is
-- internally segmented using the Fragment Length and Segment Length. When
-- set to SEGMENTED_FILES, separate segment files will be created.
cmafGroupSettings_segmentControl :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafSegmentControl)
cmafGroupSettings_segmentControl :: (Maybe CmafSegmentControl -> f (Maybe CmafSegmentControl))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_segmentControl = (CmafGroupSettings -> Maybe CmafSegmentControl)
-> (CmafGroupSettings
    -> Maybe CmafSegmentControl -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafSegmentControl)
     (Maybe CmafSegmentControl)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafSegmentControl
segmentControl :: Maybe CmafSegmentControl
$sel:segmentControl:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafSegmentControl
segmentControl} -> Maybe CmafSegmentControl
segmentControl) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafSegmentControl
a -> CmafGroupSettings
s {$sel:segmentControl:CmafGroupSettings' :: Maybe CmafSegmentControl
segmentControl = Maybe CmafSegmentControl
a} :: CmafGroupSettings)

-- | Use Destination (Destination) to specify the S3 output location and the
-- output filename base. Destination accepts format identifiers. If you do
-- not specify the base filename in the URI, the service will use the
-- filename of the input file. If your job has multiple inputs, the service
-- uses the filename of the first input file.
cmafGroupSettings_destination :: Lens.Lens' CmafGroupSettings (Prelude.Maybe Prelude.Text)
cmafGroupSettings_destination :: (Maybe Text -> f (Maybe Text))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_destination = (CmafGroupSettings -> Maybe Text)
-> (CmafGroupSettings -> Maybe Text -> CmafGroupSettings)
-> Lens
     CmafGroupSettings CmafGroupSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe Text
destination :: Maybe Text
$sel:destination:CmafGroupSettings' :: CmafGroupSettings -> Maybe Text
destination} -> Maybe Text
destination) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe Text
a -> CmafGroupSettings
s {$sel:destination:CmafGroupSettings' :: Maybe Text
destination = Maybe Text
a} :: CmafGroupSettings)

-- | Minimum time of initially buffered media that is needed to ensure smooth
-- playout.
cmafGroupSettings_minBufferTime :: Lens.Lens' CmafGroupSettings (Prelude.Maybe Prelude.Natural)
cmafGroupSettings_minBufferTime :: (Maybe Natural -> f (Maybe Natural))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_minBufferTime = (CmafGroupSettings -> Maybe Natural)
-> (CmafGroupSettings -> Maybe Natural -> CmafGroupSettings)
-> Lens
     CmafGroupSettings CmafGroupSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe Natural
minBufferTime :: Maybe Natural
$sel:minBufferTime:CmafGroupSettings' :: CmafGroupSettings -> Maybe Natural
minBufferTime} -> Maybe Natural
minBufferTime) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe Natural
a -> CmafGroupSettings
s {$sel:minBufferTime:CmafGroupSettings' :: Maybe Natural
minBufferTime = Maybe Natural
a} :: CmafGroupSettings)

-- | Specify whether your DASH profile is on-demand or main. When you choose
-- Main profile (MAIN_PROFILE), the service signals
-- urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When
-- you choose On-demand (ON_DEMAND_PROFILE), the service signals
-- urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose
-- On-demand, you must also set the output group setting Segment control
-- (SegmentControl) to Single file (SINGLE_FILE).
cmafGroupSettings_mpdProfile :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafMpdProfile)
cmafGroupSettings_mpdProfile :: (Maybe CmafMpdProfile -> f (Maybe CmafMpdProfile))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_mpdProfile = (CmafGroupSettings -> Maybe CmafMpdProfile)
-> (CmafGroupSettings -> Maybe CmafMpdProfile -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafMpdProfile)
     (Maybe CmafMpdProfile)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafMpdProfile
mpdProfile :: Maybe CmafMpdProfile
$sel:mpdProfile:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafMpdProfile
mpdProfile} -> Maybe CmafMpdProfile
mpdProfile) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafMpdProfile
a -> CmafGroupSettings
s {$sel:mpdProfile:CmafGroupSettings' :: Maybe CmafMpdProfile
mpdProfile = Maybe CmafMpdProfile
a} :: CmafGroupSettings)

-- | When set to LEGACY, the segment target duration is always rounded up to
-- the nearest integer value above its current value in seconds. When set
-- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
-- nearest integer value if fraction seconds are greater than or equal to
-- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
-- use LEGACY if your client needs to ensure that the target duration is
-- always longer than the actual duration of the segment. Some older
-- players may experience interrupted playback when the actual duration of
-- a track in a segment is longer than the target duration.
cmafGroupSettings_targetDurationCompatibilityMode :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafTargetDurationCompatibilityMode)
cmafGroupSettings_targetDurationCompatibilityMode :: (Maybe CmafTargetDurationCompatibilityMode
 -> f (Maybe CmafTargetDurationCompatibilityMode))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_targetDurationCompatibilityMode = (CmafGroupSettings -> Maybe CmafTargetDurationCompatibilityMode)
-> (CmafGroupSettings
    -> Maybe CmafTargetDurationCompatibilityMode -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafTargetDurationCompatibilityMode)
     (Maybe CmafTargetDurationCompatibilityMode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafTargetDurationCompatibilityMode
targetDurationCompatibilityMode :: Maybe CmafTargetDurationCompatibilityMode
$sel:targetDurationCompatibilityMode:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafTargetDurationCompatibilityMode
targetDurationCompatibilityMode} -> Maybe CmafTargetDurationCompatibilityMode
targetDurationCompatibilityMode) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafTargetDurationCompatibilityMode
a -> CmafGroupSettings
s {$sel:targetDurationCompatibilityMode:CmafGroupSettings' :: Maybe CmafTargetDurationCompatibilityMode
targetDurationCompatibilityMode = Maybe CmafTargetDurationCompatibilityMode
a} :: CmafGroupSettings)

-- | Specify whether MediaConvert generates images for trick play. Keep the
-- default value, None (NONE), to not generate any images. Choose Thumbnail
-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
-- full-resolution images of single frames. When you enable Write HLS
-- manifest (WriteHlsManifest), MediaConvert creates a child manifest for
-- each set of images that you generate and adds corresponding entries to
-- the parent manifest. When you enable Write DASH manifest
-- (WriteDashManifest), MediaConvert adds an entry in the .mpd manifest for
-- each set of images that you generate. A common application for these
-- images is Roku trick mode. The thumbnails and full-frame images that
-- MediaConvert creates with this feature are compatible with this Roku
-- specification:
-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
cmafGroupSettings_imageBasedTrickPlay :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafImageBasedTrickPlay)
cmafGroupSettings_imageBasedTrickPlay :: (Maybe CmafImageBasedTrickPlay
 -> f (Maybe CmafImageBasedTrickPlay))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_imageBasedTrickPlay = (CmafGroupSettings -> Maybe CmafImageBasedTrickPlay)
-> (CmafGroupSettings
    -> Maybe CmafImageBasedTrickPlay -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafImageBasedTrickPlay)
     (Maybe CmafImageBasedTrickPlay)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafImageBasedTrickPlay
imageBasedTrickPlay :: Maybe CmafImageBasedTrickPlay
$sel:imageBasedTrickPlay:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafImageBasedTrickPlay
imageBasedTrickPlay} -> Maybe CmafImageBasedTrickPlay
imageBasedTrickPlay) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafImageBasedTrickPlay
a -> CmafGroupSettings
s {$sel:imageBasedTrickPlay:CmafGroupSettings' :: Maybe CmafImageBasedTrickPlay
imageBasedTrickPlay = Maybe CmafImageBasedTrickPlay
a} :: CmafGroupSettings)

-- | When set to ENABLED, an Apple HLS manifest will be generated for this
-- output.
cmafGroupSettings_writeHlsManifest :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafWriteHLSManifest)
cmafGroupSettings_writeHlsManifest :: (Maybe CmafWriteHLSManifest -> f (Maybe CmafWriteHLSManifest))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_writeHlsManifest = (CmafGroupSettings -> Maybe CmafWriteHLSManifest)
-> (CmafGroupSettings
    -> Maybe CmafWriteHLSManifest -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafWriteHLSManifest)
     (Maybe CmafWriteHLSManifest)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafWriteHLSManifest
writeHlsManifest :: Maybe CmafWriteHLSManifest
$sel:writeHlsManifest:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafWriteHLSManifest
writeHlsManifest} -> Maybe CmafWriteHLSManifest
writeHlsManifest) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafWriteHLSManifest
a -> CmafGroupSettings
s {$sel:writeHlsManifest:CmafGroupSettings' :: Maybe CmafWriteHLSManifest
writeHlsManifest = Maybe CmafWriteHLSManifest
a} :: CmafGroupSettings)

-- | By default, the service creates one top-level .m3u8 HLS manifest and one
-- top -level .mpd DASH manifest for each CMAF output group in your job.
-- These default manifests reference every output in the output group. To
-- create additional top-level manifests that reference a subset of the
-- outputs in the output group, specify a list of them here. For each
-- additional manifest that you specify, the service creates one HLS
-- manifest and one DASH manifest.
cmafGroupSettings_additionalManifests :: Lens.Lens' CmafGroupSettings (Prelude.Maybe [CmafAdditionalManifest])
cmafGroupSettings_additionalManifests :: (Maybe [CmafAdditionalManifest]
 -> f (Maybe [CmafAdditionalManifest]))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_additionalManifests = (CmafGroupSettings -> Maybe [CmafAdditionalManifest])
-> (CmafGroupSettings
    -> Maybe [CmafAdditionalManifest] -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe [CmafAdditionalManifest])
     (Maybe [CmafAdditionalManifest])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe [CmafAdditionalManifest]
additionalManifests :: Maybe [CmafAdditionalManifest]
$sel:additionalManifests:CmafGroupSettings' :: CmafGroupSettings -> Maybe [CmafAdditionalManifest]
additionalManifests} -> Maybe [CmafAdditionalManifest]
additionalManifests) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe [CmafAdditionalManifest]
a -> CmafGroupSettings
s {$sel:additionalManifests:CmafGroupSettings' :: Maybe [CmafAdditionalManifest]
additionalManifests = Maybe [CmafAdditionalManifest]
a} :: CmafGroupSettings) ((Maybe [CmafAdditionalManifest]
  -> f (Maybe [CmafAdditionalManifest]))
 -> CmafGroupSettings -> f CmafGroupSettings)
-> ((Maybe [CmafAdditionalManifest]
     -> f (Maybe [CmafAdditionalManifest]))
    -> Maybe [CmafAdditionalManifest]
    -> f (Maybe [CmafAdditionalManifest]))
-> (Maybe [CmafAdditionalManifest]
    -> f (Maybe [CmafAdditionalManifest]))
-> CmafGroupSettings
-> f CmafGroupSettings
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [CmafAdditionalManifest]
  [CmafAdditionalManifest]
  [CmafAdditionalManifest]
  [CmafAdditionalManifest]
-> Iso
     (Maybe [CmafAdditionalManifest])
     (Maybe [CmafAdditionalManifest])
     (Maybe [CmafAdditionalManifest])
     (Maybe [CmafAdditionalManifest])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [CmafAdditionalManifest]
  [CmafAdditionalManifest]
  [CmafAdditionalManifest]
  [CmafAdditionalManifest]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Specify how you want MediaConvert to determine the segment length.
-- Choose Exact (EXACT) to have the encoder use the exact length that you
-- specify with the setting Segment length (SegmentLength). This might
-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
-- the encoder round up the segment lengths to match the next GOP boundary.
cmafGroupSettings_segmentLengthControl :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafSegmentLengthControl)
cmafGroupSettings_segmentLengthControl :: (Maybe CmafSegmentLengthControl
 -> f (Maybe CmafSegmentLengthControl))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_segmentLengthControl = (CmafGroupSettings -> Maybe CmafSegmentLengthControl)
-> (CmafGroupSettings
    -> Maybe CmafSegmentLengthControl -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafSegmentLengthControl)
     (Maybe CmafSegmentLengthControl)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafSegmentLengthControl
segmentLengthControl :: Maybe CmafSegmentLengthControl
$sel:segmentLengthControl:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafSegmentLengthControl
segmentLengthControl} -> Maybe CmafSegmentLengthControl
segmentLengthControl) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafSegmentLengthControl
a -> CmafGroupSettings
s {$sel:segmentLengthControl:CmafGroupSettings' :: Maybe CmafSegmentLengthControl
segmentLengthControl = Maybe CmafSegmentLengthControl
a} :: CmafGroupSettings)

-- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
-- ADVANCED
cmafGroupSettings_imageBasedTrickPlaySettings :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafImageBasedTrickPlaySettings)
cmafGroupSettings_imageBasedTrickPlaySettings :: (Maybe CmafImageBasedTrickPlaySettings
 -> f (Maybe CmafImageBasedTrickPlaySettings))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_imageBasedTrickPlaySettings = (CmafGroupSettings -> Maybe CmafImageBasedTrickPlaySettings)
-> (CmafGroupSettings
    -> Maybe CmafImageBasedTrickPlaySettings -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafImageBasedTrickPlaySettings)
     (Maybe CmafImageBasedTrickPlaySettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafImageBasedTrickPlaySettings
imageBasedTrickPlaySettings :: Maybe CmafImageBasedTrickPlaySettings
$sel:imageBasedTrickPlaySettings:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafImageBasedTrickPlaySettings
imageBasedTrickPlaySettings} -> Maybe CmafImageBasedTrickPlaySettings
imageBasedTrickPlaySettings) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafImageBasedTrickPlaySettings
a -> CmafGroupSettings
s {$sel:imageBasedTrickPlaySettings:CmafGroupSettings' :: Maybe CmafImageBasedTrickPlaySettings
imageBasedTrickPlaySettings = Maybe CmafImageBasedTrickPlaySettings
a} :: CmafGroupSettings)

-- | Specification to use (RFC-6381 or the default RFC-4281) during m3u8
-- playlist generation.
cmafGroupSettings_codecSpecification :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafCodecSpecification)
cmafGroupSettings_codecSpecification :: (Maybe CmafCodecSpecification -> f (Maybe CmafCodecSpecification))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_codecSpecification = (CmafGroupSettings -> Maybe CmafCodecSpecification)
-> (CmafGroupSettings
    -> Maybe CmafCodecSpecification -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafCodecSpecification)
     (Maybe CmafCodecSpecification)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafCodecSpecification
codecSpecification :: Maybe CmafCodecSpecification
$sel:codecSpecification:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafCodecSpecification
codecSpecification} -> Maybe CmafCodecSpecification
codecSpecification) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafCodecSpecification
a -> CmafGroupSettings
s {$sel:codecSpecification:CmafGroupSettings' :: Maybe CmafCodecSpecification
codecSpecification = Maybe CmafCodecSpecification
a} :: CmafGroupSettings)

-- | A partial URI prefix that will be put in the manifest file at the top
-- level BaseURL element. Can be used if streams are delivered from a
-- different URL than the manifest file.
cmafGroupSettings_baseUrl :: Lens.Lens' CmafGroupSettings (Prelude.Maybe Prelude.Text)
cmafGroupSettings_baseUrl :: (Maybe Text -> f (Maybe Text))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_baseUrl = (CmafGroupSettings -> Maybe Text)
-> (CmafGroupSettings -> Maybe Text -> CmafGroupSettings)
-> Lens
     CmafGroupSettings CmafGroupSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe Text
baseUrl :: Maybe Text
$sel:baseUrl:CmafGroupSettings' :: CmafGroupSettings -> Maybe Text
baseUrl} -> Maybe Text
baseUrl) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe Text
a -> CmafGroupSettings
s {$sel:baseUrl:CmafGroupSettings' :: Maybe Text
baseUrl = Maybe Text
a} :: CmafGroupSettings)

-- | Settings associated with the destination. Will vary based on the type of
-- destination
cmafGroupSettings_destinationSettings :: Lens.Lens' CmafGroupSettings (Prelude.Maybe DestinationSettings)
cmafGroupSettings_destinationSettings :: (Maybe DestinationSettings -> f (Maybe DestinationSettings))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_destinationSettings = (CmafGroupSettings -> Maybe DestinationSettings)
-> (CmafGroupSettings
    -> Maybe DestinationSettings -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe DestinationSettings)
     (Maybe DestinationSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe DestinationSettings
destinationSettings :: Maybe DestinationSettings
$sel:destinationSettings:CmafGroupSettings' :: CmafGroupSettings -> Maybe DestinationSettings
destinationSettings} -> Maybe DestinationSettings
destinationSettings) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe DestinationSettings
a -> CmafGroupSettings
s {$sel:destinationSettings:CmafGroupSettings' :: Maybe DestinationSettings
destinationSettings = Maybe DestinationSettings
a} :: CmafGroupSettings)

-- | Keep this setting at the default value of 0, unless you are
-- troubleshooting a problem with how devices play back the end of your
-- video asset. If you know that player devices are hanging on the final
-- segment of your video because the length of your final segment is too
-- short, use this setting to specify a minimum final segment length, in
-- seconds. Choose a value that is greater than or equal to 1 and less than
-- your segment length. When you specify a value for this setting, the
-- encoder will combine any final segment that is shorter than the length
-- that you specify with the previous segment. For example, your segment
-- length is 3 seconds and your final segment is .5 seconds without a
-- minimum final segment length; when you set the minimum final segment
-- length to 1, your final segment is 3.5 seconds.
cmafGroupSettings_minFinalSegmentLength :: Lens.Lens' CmafGroupSettings (Prelude.Maybe Prelude.Double)
cmafGroupSettings_minFinalSegmentLength :: (Maybe Double -> f (Maybe Double))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_minFinalSegmentLength = (CmafGroupSettings -> Maybe Double)
-> (CmafGroupSettings -> Maybe Double -> CmafGroupSettings)
-> Lens
     CmafGroupSettings CmafGroupSettings (Maybe Double) (Maybe Double)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe Double
minFinalSegmentLength :: Maybe Double
$sel:minFinalSegmentLength:CmafGroupSettings' :: CmafGroupSettings -> Maybe Double
minFinalSegmentLength} -> Maybe Double
minFinalSegmentLength) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe Double
a -> CmafGroupSettings
s {$sel:minFinalSegmentLength:CmafGroupSettings' :: Maybe Double
minFinalSegmentLength = Maybe Double
a} :: CmafGroupSettings)

-- | When set to ENABLED, a DASH MPD manifest will be generated for this
-- output.
cmafGroupSettings_writeDashManifest :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafWriteDASHManifest)
cmafGroupSettings_writeDashManifest :: (Maybe CmafWriteDASHManifest -> f (Maybe CmafWriteDASHManifest))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_writeDashManifest = (CmafGroupSettings -> Maybe CmafWriteDASHManifest)
-> (CmafGroupSettings
    -> Maybe CmafWriteDASHManifest -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafWriteDASHManifest)
     (Maybe CmafWriteDASHManifest)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafWriteDASHManifest
writeDashManifest :: Maybe CmafWriteDASHManifest
$sel:writeDashManifest:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafWriteDASHManifest
writeDashManifest} -> Maybe CmafWriteDASHManifest
writeDashManifest) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafWriteDASHManifest
a -> CmafGroupSettings
s {$sel:writeDashManifest:CmafGroupSettings' :: Maybe CmafWriteDASHManifest
writeDashManifest = Maybe CmafWriteDASHManifest
a} :: CmafGroupSettings)

-- | DRM settings.
cmafGroupSettings_encryption :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafEncryptionSettings)
cmafGroupSettings_encryption :: (Maybe CmafEncryptionSettings -> f (Maybe CmafEncryptionSettings))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_encryption = (CmafGroupSettings -> Maybe CmafEncryptionSettings)
-> (CmafGroupSettings
    -> Maybe CmafEncryptionSettings -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafEncryptionSettings)
     (Maybe CmafEncryptionSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafEncryptionSettings
encryption :: Maybe CmafEncryptionSettings
$sel:encryption:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafEncryptionSettings
encryption} -> Maybe CmafEncryptionSettings
encryption) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafEncryptionSettings
a -> CmafGroupSettings
s {$sel:encryption:CmafGroupSettings' :: Maybe CmafEncryptionSettings
encryption = Maybe CmafEncryptionSettings
a} :: CmafGroupSettings)

-- | Specify the length, in whole seconds, of each segment. When you don\'t
-- specify a value, MediaConvert defaults to 10. Related settings: Use
-- Segment length control (SegmentLengthControl) to specify whether the
-- encoder enforces this value strictly. Use Segment control
-- (CmafSegmentControl) to specify whether MediaConvert creates separate
-- segment files or one content file that has metadata to mark the segment
-- boundaries.
cmafGroupSettings_segmentLength :: Lens.Lens' CmafGroupSettings (Prelude.Maybe Prelude.Natural)
cmafGroupSettings_segmentLength :: (Maybe Natural -> f (Maybe Natural))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_segmentLength = (CmafGroupSettings -> Maybe Natural)
-> (CmafGroupSettings -> Maybe Natural -> CmafGroupSettings)
-> Lens
     CmafGroupSettings CmafGroupSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe Natural
segmentLength :: Maybe Natural
$sel:segmentLength:CmafGroupSettings' :: CmafGroupSettings -> Maybe Natural
segmentLength} -> Maybe Natural
segmentLength) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe Natural
a -> CmafGroupSettings
s {$sel:segmentLength:CmafGroupSettings' :: Maybe Natural
segmentLength = Maybe Natural
a} :: CmafGroupSettings)

-- | Use this setting only when your output video stream has B-frames, which
-- causes the initial presentation time stamp (PTS) to be offset from the
-- initial decode time stamp (DTS). Specify how MediaConvert handles PTS
-- when writing time stamps in output DASH manifests. Choose Match initial
-- PTS (MATCH_INITIAL_PTS) when you want MediaConvert to use the initial
-- PTS as the first time stamp in the manifest. Choose Zero-based
-- (ZERO_BASED) to have MediaConvert ignore the initial PTS in the video
-- stream and instead write the initial time stamp as zero in the manifest.
-- For outputs that don\'t have B-frames, the time stamps in your DASH
-- manifests start at zero regardless of your choice here.
cmafGroupSettings_ptsOffsetHandlingForBFrames :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafPtsOffsetHandlingForBFrames)
cmafGroupSettings_ptsOffsetHandlingForBFrames :: (Maybe CmafPtsOffsetHandlingForBFrames
 -> f (Maybe CmafPtsOffsetHandlingForBFrames))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_ptsOffsetHandlingForBFrames = (CmafGroupSettings -> Maybe CmafPtsOffsetHandlingForBFrames)
-> (CmafGroupSettings
    -> Maybe CmafPtsOffsetHandlingForBFrames -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafPtsOffsetHandlingForBFrames)
     (Maybe CmafPtsOffsetHandlingForBFrames)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafPtsOffsetHandlingForBFrames
ptsOffsetHandlingForBFrames :: Maybe CmafPtsOffsetHandlingForBFrames
$sel:ptsOffsetHandlingForBFrames:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafPtsOffsetHandlingForBFrames
ptsOffsetHandlingForBFrames} -> Maybe CmafPtsOffsetHandlingForBFrames
ptsOffsetHandlingForBFrames) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafPtsOffsetHandlingForBFrames
a -> CmafGroupSettings
s {$sel:ptsOffsetHandlingForBFrames:CmafGroupSettings' :: Maybe CmafPtsOffsetHandlingForBFrames
ptsOffsetHandlingForBFrames = Maybe CmafPtsOffsetHandlingForBFrames
a} :: CmafGroupSettings)

-- | Indicates whether the output manifest should use floating point values
-- for segment duration.
cmafGroupSettings_manifestDurationFormat :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafManifestDurationFormat)
cmafGroupSettings_manifestDurationFormat :: (Maybe CmafManifestDurationFormat
 -> f (Maybe CmafManifestDurationFormat))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_manifestDurationFormat = (CmafGroupSettings -> Maybe CmafManifestDurationFormat)
-> (CmafGroupSettings
    -> Maybe CmafManifestDurationFormat -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafManifestDurationFormat)
     (Maybe CmafManifestDurationFormat)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafManifestDurationFormat
manifestDurationFormat :: Maybe CmafManifestDurationFormat
$sel:manifestDurationFormat:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafManifestDurationFormat
manifestDurationFormat} -> Maybe CmafManifestDurationFormat
manifestDurationFormat) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafManifestDurationFormat
a -> CmafGroupSettings
s {$sel:manifestDurationFormat:CmafGroupSettings' :: Maybe CmafManifestDurationFormat
manifestDurationFormat = Maybe CmafManifestDurationFormat
a} :: CmafGroupSettings)

-- | Disable this setting only when your workflow requires the
-- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
-- (ENABLED) and control caching in your video distribution set up. For
-- example, use the Cache-Control http header.
cmafGroupSettings_clientCache :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafClientCache)
cmafGroupSettings_clientCache :: (Maybe CmafClientCache -> f (Maybe CmafClientCache))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_clientCache = (CmafGroupSettings -> Maybe CmafClientCache)
-> (CmafGroupSettings
    -> Maybe CmafClientCache -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafClientCache)
     (Maybe CmafClientCache)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafClientCache
clientCache :: Maybe CmafClientCache
$sel:clientCache:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafClientCache
clientCache} -> Maybe CmafClientCache
clientCache) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafClientCache
a -> CmafGroupSettings
s {$sel:clientCache:CmafGroupSettings' :: Maybe CmafClientCache
clientCache = Maybe CmafClientCache
a} :: CmafGroupSettings)

-- | When you enable Precise segment duration in DASH manifests
-- (writeSegmentTimelineInRepresentation), your DASH manifest shows precise
-- segment durations. The segment duration information appears inside the
-- SegmentTimeline element, inside SegmentTemplate at the Representation
-- level. When this feature isn\'t enabled, the segment durations in your
-- DASH manifest are approximate. The segment duration information appears
-- in the duration attribute of the SegmentTemplate element.
cmafGroupSettings_writeSegmentTimelineInRepresentation :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafWriteSegmentTimelineInRepresentation)
cmafGroupSettings_writeSegmentTimelineInRepresentation :: (Maybe CmafWriteSegmentTimelineInRepresentation
 -> f (Maybe CmafWriteSegmentTimelineInRepresentation))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_writeSegmentTimelineInRepresentation = (CmafGroupSettings
 -> Maybe CmafWriteSegmentTimelineInRepresentation)
-> (CmafGroupSettings
    -> Maybe CmafWriteSegmentTimelineInRepresentation
    -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafWriteSegmentTimelineInRepresentation)
     (Maybe CmafWriteSegmentTimelineInRepresentation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation :: Maybe CmafWriteSegmentTimelineInRepresentation
$sel:writeSegmentTimelineInRepresentation:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation} -> Maybe CmafWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafWriteSegmentTimelineInRepresentation
a -> CmafGroupSettings
s {$sel:writeSegmentTimelineInRepresentation:CmafGroupSettings' :: Maybe CmafWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation = Maybe CmafWriteSegmentTimelineInRepresentation
a} :: CmafGroupSettings)

-- | Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
-- tag of variant manifest.
cmafGroupSettings_streamInfResolution :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafStreamInfResolution)
cmafGroupSettings_streamInfResolution :: (Maybe CmafStreamInfResolution
 -> f (Maybe CmafStreamInfResolution))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_streamInfResolution = (CmafGroupSettings -> Maybe CmafStreamInfResolution)
-> (CmafGroupSettings
    -> Maybe CmafStreamInfResolution -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafStreamInfResolution)
     (Maybe CmafStreamInfResolution)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafStreamInfResolution
streamInfResolution :: Maybe CmafStreamInfResolution
$sel:streamInfResolution:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafStreamInfResolution
streamInfResolution} -> Maybe CmafStreamInfResolution
streamInfResolution) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafStreamInfResolution
a -> CmafGroupSettings
s {$sel:streamInfResolution:CmafGroupSettings' :: Maybe CmafStreamInfResolution
streamInfResolution = Maybe CmafStreamInfResolution
a} :: CmafGroupSettings)

-- | When set to GZIP, compresses HLS playlist.
cmafGroupSettings_manifestCompression :: Lens.Lens' CmafGroupSettings (Prelude.Maybe CmafManifestCompression)
cmafGroupSettings_manifestCompression :: (Maybe CmafManifestCompression
 -> f (Maybe CmafManifestCompression))
-> CmafGroupSettings -> f CmafGroupSettings
cmafGroupSettings_manifestCompression = (CmafGroupSettings -> Maybe CmafManifestCompression)
-> (CmafGroupSettings
    -> Maybe CmafManifestCompression -> CmafGroupSettings)
-> Lens
     CmafGroupSettings
     CmafGroupSettings
     (Maybe CmafManifestCompression)
     (Maybe CmafManifestCompression)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CmafGroupSettings' {Maybe CmafManifestCompression
manifestCompression :: Maybe CmafManifestCompression
$sel:manifestCompression:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafManifestCompression
manifestCompression} -> Maybe CmafManifestCompression
manifestCompression) (\s :: CmafGroupSettings
s@CmafGroupSettings' {} Maybe CmafManifestCompression
a -> CmafGroupSettings
s {$sel:manifestCompression:CmafGroupSettings' :: Maybe CmafManifestCompression
manifestCompression = Maybe CmafManifestCompression
a} :: CmafGroupSettings)

instance Core.FromJSON CmafGroupSettings where
  parseJSON :: Value -> Parser CmafGroupSettings
parseJSON =
    String
-> (Object -> Parser CmafGroupSettings)
-> Value
-> Parser CmafGroupSettings
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"CmafGroupSettings"
      ( \Object
x ->
          Maybe Natural
-> Maybe CmafSegmentControl
-> Maybe Text
-> Maybe Natural
-> Maybe CmafMpdProfile
-> Maybe CmafTargetDurationCompatibilityMode
-> Maybe CmafImageBasedTrickPlay
-> Maybe CmafWriteHLSManifest
-> Maybe [CmafAdditionalManifest]
-> Maybe CmafSegmentLengthControl
-> Maybe CmafImageBasedTrickPlaySettings
-> Maybe CmafCodecSpecification
-> Maybe Text
-> Maybe DestinationSettings
-> Maybe Double
-> Maybe CmafWriteDASHManifest
-> Maybe CmafEncryptionSettings
-> Maybe Natural
-> Maybe CmafPtsOffsetHandlingForBFrames
-> Maybe CmafManifestDurationFormat
-> Maybe CmafClientCache
-> Maybe CmafWriteSegmentTimelineInRepresentation
-> Maybe CmafStreamInfResolution
-> Maybe CmafManifestCompression
-> CmafGroupSettings
CmafGroupSettings'
            (Maybe Natural
 -> Maybe CmafSegmentControl
 -> Maybe Text
 -> Maybe Natural
 -> Maybe CmafMpdProfile
 -> Maybe CmafTargetDurationCompatibilityMode
 -> Maybe CmafImageBasedTrickPlay
 -> Maybe CmafWriteHLSManifest
 -> Maybe [CmafAdditionalManifest]
 -> Maybe CmafSegmentLengthControl
 -> Maybe CmafImageBasedTrickPlaySettings
 -> Maybe CmafCodecSpecification
 -> Maybe Text
 -> Maybe DestinationSettings
 -> Maybe Double
 -> Maybe CmafWriteDASHManifest
 -> Maybe CmafEncryptionSettings
 -> Maybe Natural
 -> Maybe CmafPtsOffsetHandlingForBFrames
 -> Maybe CmafManifestDurationFormat
 -> Maybe CmafClientCache
 -> Maybe CmafWriteSegmentTimelineInRepresentation
 -> Maybe CmafStreamInfResolution
 -> Maybe CmafManifestCompression
 -> CmafGroupSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe CmafSegmentControl
      -> Maybe Text
      -> Maybe Natural
      -> Maybe CmafMpdProfile
      -> Maybe CmafTargetDurationCompatibilityMode
      -> Maybe CmafImageBasedTrickPlay
      -> Maybe CmafWriteHLSManifest
      -> Maybe [CmafAdditionalManifest]
      -> Maybe CmafSegmentLengthControl
      -> Maybe CmafImageBasedTrickPlaySettings
      -> Maybe CmafCodecSpecification
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"fragmentLength")
            Parser
  (Maybe CmafSegmentControl
   -> Maybe Text
   -> Maybe Natural
   -> Maybe CmafMpdProfile
   -> Maybe CmafTargetDurationCompatibilityMode
   -> Maybe CmafImageBasedTrickPlay
   -> Maybe CmafWriteHLSManifest
   -> Maybe [CmafAdditionalManifest]
   -> Maybe CmafSegmentLengthControl
   -> Maybe CmafImageBasedTrickPlaySettings
   -> Maybe CmafCodecSpecification
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafSegmentControl)
-> Parser
     (Maybe Text
      -> Maybe Natural
      -> Maybe CmafMpdProfile
      -> Maybe CmafTargetDurationCompatibilityMode
      -> Maybe CmafImageBasedTrickPlay
      -> Maybe CmafWriteHLSManifest
      -> Maybe [CmafAdditionalManifest]
      -> Maybe CmafSegmentLengthControl
      -> Maybe CmafImageBasedTrickPlaySettings
      -> Maybe CmafCodecSpecification
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafSegmentControl)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"segmentControl")
            Parser
  (Maybe Text
   -> Maybe Natural
   -> Maybe CmafMpdProfile
   -> Maybe CmafTargetDurationCompatibilityMode
   -> Maybe CmafImageBasedTrickPlay
   -> Maybe CmafWriteHLSManifest
   -> Maybe [CmafAdditionalManifest]
   -> Maybe CmafSegmentLengthControl
   -> Maybe CmafImageBasedTrickPlaySettings
   -> Maybe CmafCodecSpecification
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Natural
      -> Maybe CmafMpdProfile
      -> Maybe CmafTargetDurationCompatibilityMode
      -> Maybe CmafImageBasedTrickPlay
      -> Maybe CmafWriteHLSManifest
      -> Maybe [CmafAdditionalManifest]
      -> Maybe CmafSegmentLengthControl
      -> Maybe CmafImageBasedTrickPlaySettings
      -> Maybe CmafCodecSpecification
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"destination")
            Parser
  (Maybe Natural
   -> Maybe CmafMpdProfile
   -> Maybe CmafTargetDurationCompatibilityMode
   -> Maybe CmafImageBasedTrickPlay
   -> Maybe CmafWriteHLSManifest
   -> Maybe [CmafAdditionalManifest]
   -> Maybe CmafSegmentLengthControl
   -> Maybe CmafImageBasedTrickPlaySettings
   -> Maybe CmafCodecSpecification
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe CmafMpdProfile
      -> Maybe CmafTargetDurationCompatibilityMode
      -> Maybe CmafImageBasedTrickPlay
      -> Maybe CmafWriteHLSManifest
      -> Maybe [CmafAdditionalManifest]
      -> Maybe CmafSegmentLengthControl
      -> Maybe CmafImageBasedTrickPlaySettings
      -> Maybe CmafCodecSpecification
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"minBufferTime")
            Parser
  (Maybe CmafMpdProfile
   -> Maybe CmafTargetDurationCompatibilityMode
   -> Maybe CmafImageBasedTrickPlay
   -> Maybe CmafWriteHLSManifest
   -> Maybe [CmafAdditionalManifest]
   -> Maybe CmafSegmentLengthControl
   -> Maybe CmafImageBasedTrickPlaySettings
   -> Maybe CmafCodecSpecification
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafMpdProfile)
-> Parser
     (Maybe CmafTargetDurationCompatibilityMode
      -> Maybe CmafImageBasedTrickPlay
      -> Maybe CmafWriteHLSManifest
      -> Maybe [CmafAdditionalManifest]
      -> Maybe CmafSegmentLengthControl
      -> Maybe CmafImageBasedTrickPlaySettings
      -> Maybe CmafCodecSpecification
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafMpdProfile)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"mpdProfile")
            Parser
  (Maybe CmafTargetDurationCompatibilityMode
   -> Maybe CmafImageBasedTrickPlay
   -> Maybe CmafWriteHLSManifest
   -> Maybe [CmafAdditionalManifest]
   -> Maybe CmafSegmentLengthControl
   -> Maybe CmafImageBasedTrickPlaySettings
   -> Maybe CmafCodecSpecification
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafTargetDurationCompatibilityMode)
-> Parser
     (Maybe CmafImageBasedTrickPlay
      -> Maybe CmafWriteHLSManifest
      -> Maybe [CmafAdditionalManifest]
      -> Maybe CmafSegmentLengthControl
      -> Maybe CmafImageBasedTrickPlaySettings
      -> Maybe CmafCodecSpecification
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe CmafTargetDurationCompatibilityMode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"targetDurationCompatibilityMode")
            Parser
  (Maybe CmafImageBasedTrickPlay
   -> Maybe CmafWriteHLSManifest
   -> Maybe [CmafAdditionalManifest]
   -> Maybe CmafSegmentLengthControl
   -> Maybe CmafImageBasedTrickPlaySettings
   -> Maybe CmafCodecSpecification
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafImageBasedTrickPlay)
-> Parser
     (Maybe CmafWriteHLSManifest
      -> Maybe [CmafAdditionalManifest]
      -> Maybe CmafSegmentLengthControl
      -> Maybe CmafImageBasedTrickPlaySettings
      -> Maybe CmafCodecSpecification
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafImageBasedTrickPlay)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"imageBasedTrickPlay")
            Parser
  (Maybe CmafWriteHLSManifest
   -> Maybe [CmafAdditionalManifest]
   -> Maybe CmafSegmentLengthControl
   -> Maybe CmafImageBasedTrickPlaySettings
   -> Maybe CmafCodecSpecification
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafWriteHLSManifest)
-> Parser
     (Maybe [CmafAdditionalManifest]
      -> Maybe CmafSegmentLengthControl
      -> Maybe CmafImageBasedTrickPlaySettings
      -> Maybe CmafCodecSpecification
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafWriteHLSManifest)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"writeHlsManifest")
            Parser
  (Maybe [CmafAdditionalManifest]
   -> Maybe CmafSegmentLengthControl
   -> Maybe CmafImageBasedTrickPlaySettings
   -> Maybe CmafCodecSpecification
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe [CmafAdditionalManifest])
-> Parser
     (Maybe CmafSegmentLengthControl
      -> Maybe CmafImageBasedTrickPlaySettings
      -> Maybe CmafCodecSpecification
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [CmafAdditionalManifest]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"additionalManifests"
                            Parser (Maybe (Maybe [CmafAdditionalManifest]))
-> Maybe [CmafAdditionalManifest]
-> Parser (Maybe [CmafAdditionalManifest])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [CmafAdditionalManifest]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe CmafSegmentLengthControl
   -> Maybe CmafImageBasedTrickPlaySettings
   -> Maybe CmafCodecSpecification
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafSegmentLengthControl)
-> Parser
     (Maybe CmafImageBasedTrickPlaySettings
      -> Maybe CmafCodecSpecification
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafSegmentLengthControl)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"segmentLengthControl")
            Parser
  (Maybe CmafImageBasedTrickPlaySettings
   -> Maybe CmafCodecSpecification
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafImageBasedTrickPlaySettings)
-> Parser
     (Maybe CmafCodecSpecification
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafImageBasedTrickPlaySettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"imageBasedTrickPlaySettings")
            Parser
  (Maybe CmafCodecSpecification
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafCodecSpecification)
-> Parser
     (Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafCodecSpecification)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"codecSpecification")
            Parser
  (Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe DestinationSettings
      -> Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"baseUrl")
            Parser
  (Maybe DestinationSettings
   -> Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe DestinationSettings)
-> Parser
     (Maybe Double
      -> Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DestinationSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"destinationSettings")
            Parser
  (Maybe Double
   -> Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe Double)
-> Parser
     (Maybe CmafWriteDASHManifest
      -> Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"minFinalSegmentLength")
            Parser
  (Maybe CmafWriteDASHManifest
   -> Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafWriteDASHManifest)
-> Parser
     (Maybe CmafEncryptionSettings
      -> Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafWriteDASHManifest)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"writeDashManifest")
            Parser
  (Maybe CmafEncryptionSettings
   -> Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafEncryptionSettings)
-> Parser
     (Maybe Natural
      -> Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafEncryptionSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"encryption")
            Parser
  (Maybe Natural
   -> Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe CmafPtsOffsetHandlingForBFrames
      -> Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"segmentLength")
            Parser
  (Maybe CmafPtsOffsetHandlingForBFrames
   -> Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafPtsOffsetHandlingForBFrames)
-> Parser
     (Maybe CmafManifestDurationFormat
      -> Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafPtsOffsetHandlingForBFrames)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ptsOffsetHandlingForBFrames")
            Parser
  (Maybe CmafManifestDurationFormat
   -> Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafManifestDurationFormat)
-> Parser
     (Maybe CmafClientCache
      -> Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafManifestDurationFormat)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"manifestDurationFormat")
            Parser
  (Maybe CmafClientCache
   -> Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafClientCache)
-> Parser
     (Maybe CmafWriteSegmentTimelineInRepresentation
      -> Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression
      -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafClientCache)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"clientCache")
            Parser
  (Maybe CmafWriteSegmentTimelineInRepresentation
   -> Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression
   -> CmafGroupSettings)
-> Parser (Maybe CmafWriteSegmentTimelineInRepresentation)
-> Parser
     (Maybe CmafStreamInfResolution
      -> Maybe CmafManifestCompression -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe CmafWriteSegmentTimelineInRepresentation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"writeSegmentTimelineInRepresentation")
            Parser
  (Maybe CmafStreamInfResolution
   -> Maybe CmafManifestCompression -> CmafGroupSettings)
-> Parser (Maybe CmafStreamInfResolution)
-> Parser (Maybe CmafManifestCompression -> CmafGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafStreamInfResolution)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"streamInfResolution")
            Parser (Maybe CmafManifestCompression -> CmafGroupSettings)
-> Parser (Maybe CmafManifestCompression)
-> Parser CmafGroupSettings
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CmafManifestCompression)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"manifestCompression")
      )

instance Prelude.Hashable CmafGroupSettings

instance Prelude.NFData CmafGroupSettings

instance Core.ToJSON CmafGroupSettings where
  toJSON :: CmafGroupSettings -> Value
toJSON CmafGroupSettings' {Maybe Double
Maybe Natural
Maybe [CmafAdditionalManifest]
Maybe Text
Maybe CmafClientCache
Maybe CmafCodecSpecification
Maybe CmafImageBasedTrickPlay
Maybe CmafImageBasedTrickPlaySettings
Maybe CmafManifestCompression
Maybe CmafManifestDurationFormat
Maybe CmafMpdProfile
Maybe CmafPtsOffsetHandlingForBFrames
Maybe CmafSegmentControl
Maybe CmafSegmentLengthControl
Maybe CmafStreamInfResolution
Maybe CmafTargetDurationCompatibilityMode
Maybe CmafWriteDASHManifest
Maybe CmafWriteHLSManifest
Maybe CmafWriteSegmentTimelineInRepresentation
Maybe DestinationSettings
Maybe CmafEncryptionSettings
manifestCompression :: Maybe CmafManifestCompression
streamInfResolution :: Maybe CmafStreamInfResolution
writeSegmentTimelineInRepresentation :: Maybe CmafWriteSegmentTimelineInRepresentation
clientCache :: Maybe CmafClientCache
manifestDurationFormat :: Maybe CmafManifestDurationFormat
ptsOffsetHandlingForBFrames :: Maybe CmafPtsOffsetHandlingForBFrames
segmentLength :: Maybe Natural
encryption :: Maybe CmafEncryptionSettings
writeDashManifest :: Maybe CmafWriteDASHManifest
minFinalSegmentLength :: Maybe Double
destinationSettings :: Maybe DestinationSettings
baseUrl :: Maybe Text
codecSpecification :: Maybe CmafCodecSpecification
imageBasedTrickPlaySettings :: Maybe CmafImageBasedTrickPlaySettings
segmentLengthControl :: Maybe CmafSegmentLengthControl
additionalManifests :: Maybe [CmafAdditionalManifest]
writeHlsManifest :: Maybe CmafWriteHLSManifest
imageBasedTrickPlay :: Maybe CmafImageBasedTrickPlay
targetDurationCompatibilityMode :: Maybe CmafTargetDurationCompatibilityMode
mpdProfile :: Maybe CmafMpdProfile
minBufferTime :: Maybe Natural
destination :: Maybe Text
segmentControl :: Maybe CmafSegmentControl
fragmentLength :: Maybe Natural
$sel:manifestCompression:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafManifestCompression
$sel:streamInfResolution:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafStreamInfResolution
$sel:writeSegmentTimelineInRepresentation:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafWriteSegmentTimelineInRepresentation
$sel:clientCache:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafClientCache
$sel:manifestDurationFormat:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafManifestDurationFormat
$sel:ptsOffsetHandlingForBFrames:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafPtsOffsetHandlingForBFrames
$sel:segmentLength:CmafGroupSettings' :: CmafGroupSettings -> Maybe Natural
$sel:encryption:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafEncryptionSettings
$sel:writeDashManifest:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafWriteDASHManifest
$sel:minFinalSegmentLength:CmafGroupSettings' :: CmafGroupSettings -> Maybe Double
$sel:destinationSettings:CmafGroupSettings' :: CmafGroupSettings -> Maybe DestinationSettings
$sel:baseUrl:CmafGroupSettings' :: CmafGroupSettings -> Maybe Text
$sel:codecSpecification:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafCodecSpecification
$sel:imageBasedTrickPlaySettings:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafImageBasedTrickPlaySettings
$sel:segmentLengthControl:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafSegmentLengthControl
$sel:additionalManifests:CmafGroupSettings' :: CmafGroupSettings -> Maybe [CmafAdditionalManifest]
$sel:writeHlsManifest:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafWriteHLSManifest
$sel:imageBasedTrickPlay:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafImageBasedTrickPlay
$sel:targetDurationCompatibilityMode:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafTargetDurationCompatibilityMode
$sel:mpdProfile:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafMpdProfile
$sel:minBufferTime:CmafGroupSettings' :: CmafGroupSettings -> Maybe Natural
$sel:destination:CmafGroupSettings' :: CmafGroupSettings -> Maybe Text
$sel:segmentControl:CmafGroupSettings' :: CmafGroupSettings -> Maybe CmafSegmentControl
$sel:fragmentLength:CmafGroupSettings' :: CmafGroupSettings -> Maybe Natural
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"fragmentLength" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
fragmentLength,
            (Text
"segmentControl" Text -> CmafSegmentControl -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CmafSegmentControl -> Pair)
-> Maybe CmafSegmentControl -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafSegmentControl
segmentControl,
            (Text
"destination" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
destination,
            (Text
"minBufferTime" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
minBufferTime,
            (Text
"mpdProfile" Text -> CmafMpdProfile -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (CmafMpdProfile -> Pair) -> Maybe CmafMpdProfile -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafMpdProfile
mpdProfile,
            (Text
"targetDurationCompatibilityMode" Text -> CmafTargetDurationCompatibilityMode -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CmafTargetDurationCompatibilityMode -> Pair)
-> Maybe CmafTargetDurationCompatibilityMode -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafTargetDurationCompatibilityMode
targetDurationCompatibilityMode,
            (Text
"imageBasedTrickPlay" Text -> CmafImageBasedTrickPlay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CmafImageBasedTrickPlay -> Pair)
-> Maybe CmafImageBasedTrickPlay -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafImageBasedTrickPlay
imageBasedTrickPlay,
            (Text
"writeHlsManifest" Text -> CmafWriteHLSManifest -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CmafWriteHLSManifest -> Pair)
-> Maybe CmafWriteHLSManifest -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafWriteHLSManifest
writeHlsManifest,
            (Text
"additionalManifests" Text -> [CmafAdditionalManifest] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([CmafAdditionalManifest] -> Pair)
-> Maybe [CmafAdditionalManifest] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [CmafAdditionalManifest]
additionalManifests,
            (Text
"segmentLengthControl" Text -> CmafSegmentLengthControl -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CmafSegmentLengthControl -> Pair)
-> Maybe CmafSegmentLengthControl -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafSegmentLengthControl
segmentLengthControl,
            (Text
"imageBasedTrickPlaySettings" Text -> CmafImageBasedTrickPlaySettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CmafImageBasedTrickPlaySettings -> Pair)
-> Maybe CmafImageBasedTrickPlaySettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafImageBasedTrickPlaySettings
imageBasedTrickPlaySettings,
            (Text
"codecSpecification" Text -> CmafCodecSpecification -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CmafCodecSpecification -> Pair)
-> Maybe CmafCodecSpecification -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafCodecSpecification
codecSpecification,
            (Text
"baseUrl" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
baseUrl,
            (Text
"destinationSettings" Text -> DestinationSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DestinationSettings -> Pair)
-> Maybe DestinationSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DestinationSettings
destinationSettings,
            (Text
"minFinalSegmentLength" Text -> Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Double -> Pair) -> Maybe Double -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Double
minFinalSegmentLength,
            (Text
"writeDashManifest" Text -> CmafWriteDASHManifest -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CmafWriteDASHManifest -> Pair)
-> Maybe CmafWriteDASHManifest -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafWriteDASHManifest
writeDashManifest,
            (Text
"encryption" Text -> CmafEncryptionSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (CmafEncryptionSettings -> Pair)
-> Maybe CmafEncryptionSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafEncryptionSettings
encryption,
            (Text
"segmentLength" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
segmentLength,
            (Text
"ptsOffsetHandlingForBFrames" Text -> CmafPtsOffsetHandlingForBFrames -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CmafPtsOffsetHandlingForBFrames -> Pair)
-> Maybe CmafPtsOffsetHandlingForBFrames -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafPtsOffsetHandlingForBFrames
ptsOffsetHandlingForBFrames,
            (Text
"manifestDurationFormat" Text -> CmafManifestDurationFormat -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CmafManifestDurationFormat -> Pair)
-> Maybe CmafManifestDurationFormat -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafManifestDurationFormat
manifestDurationFormat,
            (Text
"clientCache" Text -> CmafClientCache -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (CmafClientCache -> Pair) -> Maybe CmafClientCache -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafClientCache
clientCache,
            (Text
"writeSegmentTimelineInRepresentation" Text -> CmafWriteSegmentTimelineInRepresentation -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CmafWriteSegmentTimelineInRepresentation -> Pair)
-> Maybe CmafWriteSegmentTimelineInRepresentation -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation,
            (Text
"streamInfResolution" Text -> CmafStreamInfResolution -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CmafStreamInfResolution -> Pair)
-> Maybe CmafStreamInfResolution -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafStreamInfResolution
streamInfResolution,
            (Text
"manifestCompression" Text -> CmafManifestCompression -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CmafManifestCompression -> Pair)
-> Maybe CmafManifestCompression -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CmafManifestCompression
manifestCompression
          ]
      )