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

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

-- |
-- Module      : Amazonka.MediaConvert.Types.DashIsoGroupSettings
-- Copyright   : (c) 2013-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.DashIsoGroupSettings where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import Amazonka.MediaConvert.Types.DashAdditionalManifest
import Amazonka.MediaConvert.Types.DashIsoEncryptionSettings
import Amazonka.MediaConvert.Types.DashIsoGroupAudioChannelConfigSchemeIdUri
import Amazonka.MediaConvert.Types.DashIsoHbbtvCompliance
import Amazonka.MediaConvert.Types.DashIsoImageBasedTrickPlay
import Amazonka.MediaConvert.Types.DashIsoImageBasedTrickPlaySettings
import Amazonka.MediaConvert.Types.DashIsoMpdProfile
import Amazonka.MediaConvert.Types.DashIsoPtsOffsetHandlingForBFrames
import Amazonka.MediaConvert.Types.DashIsoSegmentControl
import Amazonka.MediaConvert.Types.DashIsoSegmentLengthControl
import Amazonka.MediaConvert.Types.DashIsoWriteSegmentTimelineInRepresentation
import Amazonka.MediaConvert.Types.DestinationSettings
import qualified Amazonka.Prelude as Prelude

-- | Settings related to your DASH output package. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set Type, under
-- OutputGroupSettings, to DASH_ISO_GROUP_SETTINGS.
--
-- /See:/ 'newDashIsoGroupSettings' smart constructor.
data DashIsoGroupSettings = DashIsoGroupSettings'
  { -- | Length of fragments to generate (in seconds). Fragment length must be
    -- compatible with GOP size and Framerate. Note that fragments will end on
    -- the next keyframe after this number of seconds, so actual fragment
    -- length may be longer. When Emit Single File is checked, the
    -- fragmentation is internal to a single output file and it does not cause
    -- the creation of many output files as in other output types.
    DashIsoGroupSettings -> 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.
    DashIsoGroupSettings -> Maybe DashIsoSegmentControl
segmentControl :: Prelude.Maybe DashIsoSegmentControl,
    -- | Use Destination (Destination) to specify the S3 output location and the
    -- output filename base. Destination accepts format identifiers. If you do
    -- not specify the base filename in the URI, the service will use the
    -- filename of the input file. If your job has multiple inputs, the service
    -- uses the filename of the first input file.
    DashIsoGroupSettings -> Maybe Text
destination :: Prelude.Maybe Prelude.Text,
    -- | Supports HbbTV specification as indicated
    DashIsoGroupSettings -> Maybe DashIsoHbbtvCompliance
hbbtvCompliance :: Prelude.Maybe DashIsoHbbtvCompliance,
    -- | Minimum time of initially buffered media that is needed to ensure smooth
    -- playout.
    DashIsoGroupSettings -> 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).
    DashIsoGroupSettings -> Maybe DashIsoMpdProfile
mpdProfile :: Prelude.Maybe DashIsoMpdProfile,
    -- | Specify whether MediaConvert generates images for trick play. Keep the
    -- default value, None (NONE), to not generate any images. Choose Thumbnail
    -- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
    -- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
    -- full-resolution images of single frames. MediaConvert adds an entry in
    -- the .mpd manifest for each set of images that you generate. A common
    -- application for these images is Roku trick mode. The thumbnails and
    -- full-frame images that MediaConvert creates with this feature are
    -- compatible with this Roku specification:
    -- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
    DashIsoGroupSettings -> Maybe DashIsoImageBasedTrickPlay
imageBasedTrickPlay :: Prelude.Maybe DashIsoImageBasedTrickPlay,
    -- | By default, the service creates one .mpd DASH manifest for each DASH ISO
    -- output group in your job. This default manifest references every output
    -- in the output group. To create additional DASH manifests that reference
    -- a subset of the outputs in the output group, specify a list of them
    -- here.
    DashIsoGroupSettings -> Maybe [DashAdditionalManifest]
additionalManifests :: Prelude.Maybe [DashAdditionalManifest],
    -- | Specify how you want MediaConvert to determine the segment length.
    -- Choose Exact (EXACT) to have the encoder use the exact length that you
    -- specify with the setting Segment length (SegmentLength). This might
    -- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
    -- the encoder round up the segment lengths to match the next GOP boundary.
    DashIsoGroupSettings -> Maybe DashIsoSegmentLengthControl
segmentLengthControl :: Prelude.Maybe DashIsoSegmentLengthControl,
    -- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
    -- ADVANCED
    DashIsoGroupSettings -> Maybe DashIsoImageBasedTrickPlaySettings
imageBasedTrickPlaySettings :: Prelude.Maybe DashIsoImageBasedTrickPlaySettings,
    -- | A partial URI prefix that will be put in the manifest (.mpd) file at the
    -- top level BaseURL element. Can be used if streams are delivered from a
    -- different URL than the manifest file.
    DashIsoGroupSettings -> Maybe Text
baseUrl :: Prelude.Maybe Prelude.Text,
    -- | Settings associated with the destination. Will vary based on the type of
    -- destination
    DashIsoGroupSettings -> 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.
    DashIsoGroupSettings -> Maybe Double
minFinalSegmentLength :: Prelude.Maybe Prelude.Double,
    -- | Use this setting only when your audio codec is a Dolby one (AC3, EAC3,
    -- or Atmos) and your downstream workflow requires that your DASH manifest
    -- use the Dolby channel configuration tag, rather than the MPEG one. For
    -- example, you might need to use this to make dynamic ad insertion work.
    -- Specify which audio channel configuration scheme ID URI MediaConvert
    -- writes in your DASH manifest. Keep the default value, MPEG channel
    -- configuration (MPEG_CHANNEL_CONFIGURATION), to have MediaConvert write
    -- this: urn:mpeg:mpegB:cicp:ChannelConfiguration. Choose Dolby channel
    -- configuration (DOLBY_CHANNEL_CONFIGURATION) to have MediaConvert write
    -- this instead: tag:dolby.com,2014:dash:audio_channel_configuration:2011.
    DashIsoGroupSettings
-> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
audioChannelConfigSchemeIdUri :: Prelude.Maybe DashIsoGroupAudioChannelConfigSchemeIdUri,
    -- | DRM settings.
    DashIsoGroupSettings -> Maybe DashIsoEncryptionSettings
encryption :: Prelude.Maybe DashIsoEncryptionSettings,
    -- | Specify the length, in whole seconds, of each segment. When you don\'t
    -- specify a value, MediaConvert defaults to 30. Related settings: Use
    -- Segment length control (SegmentLengthControl) to specify whether the
    -- encoder enforces this value strictly. Use Segment control
    -- (DashIsoSegmentControl) to specify whether MediaConvert creates separate
    -- segment files or one content file that has metadata to mark the segment
    -- boundaries.
    DashIsoGroupSettings -> 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.
    DashIsoGroupSettings -> Maybe DashIsoPtsOffsetHandlingForBFrames
ptsOffsetHandlingForBFrames :: Prelude.Maybe DashIsoPtsOffsetHandlingForBFrames,
    -- | If you get an HTTP error in the 400 range when you play back your DASH
    -- output, enable this setting and run your transcoding job again. When you
    -- enable this setting, the service writes precise segment durations in the
    -- DASH manifest. The segment duration information appears inside the
    -- SegmentTimeline element, inside SegmentTemplate at the Representation
    -- level. When you don\'t enable this setting, the service writes
    -- approximate segment durations in your DASH manifest.
    DashIsoGroupSettings
-> Maybe DashIsoWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation :: Prelude.Maybe DashIsoWriteSegmentTimelineInRepresentation
  }
  deriving (DashIsoGroupSettings -> DashIsoGroupSettings -> Bool
(DashIsoGroupSettings -> DashIsoGroupSettings -> Bool)
-> (DashIsoGroupSettings -> DashIsoGroupSettings -> Bool)
-> Eq DashIsoGroupSettings
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DashIsoGroupSettings -> DashIsoGroupSettings -> Bool
$c/= :: DashIsoGroupSettings -> DashIsoGroupSettings -> Bool
== :: DashIsoGroupSettings -> DashIsoGroupSettings -> Bool
$c== :: DashIsoGroupSettings -> DashIsoGroupSettings -> Bool
Prelude.Eq, ReadPrec [DashIsoGroupSettings]
ReadPrec DashIsoGroupSettings
Int -> ReadS DashIsoGroupSettings
ReadS [DashIsoGroupSettings]
(Int -> ReadS DashIsoGroupSettings)
-> ReadS [DashIsoGroupSettings]
-> ReadPrec DashIsoGroupSettings
-> ReadPrec [DashIsoGroupSettings]
-> Read DashIsoGroupSettings
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DashIsoGroupSettings]
$creadListPrec :: ReadPrec [DashIsoGroupSettings]
readPrec :: ReadPrec DashIsoGroupSettings
$creadPrec :: ReadPrec DashIsoGroupSettings
readList :: ReadS [DashIsoGroupSettings]
$creadList :: ReadS [DashIsoGroupSettings]
readsPrec :: Int -> ReadS DashIsoGroupSettings
$creadsPrec :: Int -> ReadS DashIsoGroupSettings
Prelude.Read, Int -> DashIsoGroupSettings -> ShowS
[DashIsoGroupSettings] -> ShowS
DashIsoGroupSettings -> String
(Int -> DashIsoGroupSettings -> ShowS)
-> (DashIsoGroupSettings -> String)
-> ([DashIsoGroupSettings] -> ShowS)
-> Show DashIsoGroupSettings
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DashIsoGroupSettings] -> ShowS
$cshowList :: [DashIsoGroupSettings] -> ShowS
show :: DashIsoGroupSettings -> String
$cshow :: DashIsoGroupSettings -> String
showsPrec :: Int -> DashIsoGroupSettings -> ShowS
$cshowsPrec :: Int -> DashIsoGroupSettings -> ShowS
Prelude.Show, (forall x. DashIsoGroupSettings -> Rep DashIsoGroupSettings x)
-> (forall x. Rep DashIsoGroupSettings x -> DashIsoGroupSettings)
-> Generic DashIsoGroupSettings
forall x. Rep DashIsoGroupSettings x -> DashIsoGroupSettings
forall x. DashIsoGroupSettings -> Rep DashIsoGroupSettings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DashIsoGroupSettings x -> DashIsoGroupSettings
$cfrom :: forall x. DashIsoGroupSettings -> Rep DashIsoGroupSettings x
Prelude.Generic)

-- |
-- Create a value of 'DashIsoGroupSettings' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'fragmentLength', 'dashIsoGroupSettings_fragmentLength' - Length of fragments to generate (in seconds). Fragment length must be
-- compatible with GOP size and Framerate. Note that fragments will end on
-- the next keyframe after this number of seconds, so actual fragment
-- length may be longer. When Emit Single File is checked, the
-- fragmentation is internal to a single output file and it does not cause
-- the creation of many output files as in other output types.
--
-- 'segmentControl', 'dashIsoGroupSettings_segmentControl' - When set to SINGLE_FILE, a single output file is generated, which is
-- internally segmented using the Fragment Length and Segment Length. When
-- set to SEGMENTED_FILES, separate segment files will be created.
--
-- 'destination', 'dashIsoGroupSettings_destination' - Use Destination (Destination) to specify the S3 output location and the
-- output filename base. Destination accepts format identifiers. If you do
-- not specify the base filename in the URI, the service will use the
-- filename of the input file. If your job has multiple inputs, the service
-- uses the filename of the first input file.
--
-- 'hbbtvCompliance', 'dashIsoGroupSettings_hbbtvCompliance' - Supports HbbTV specification as indicated
--
-- 'minBufferTime', 'dashIsoGroupSettings_minBufferTime' - Minimum time of initially buffered media that is needed to ensure smooth
-- playout.
--
-- 'mpdProfile', 'dashIsoGroupSettings_mpdProfile' - Specify whether your DASH profile is on-demand or main. When you choose
-- Main profile (MAIN_PROFILE), the service signals
-- urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When
-- you choose On-demand (ON_DEMAND_PROFILE), the service signals
-- urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose
-- On-demand, you must also set the output group setting Segment control
-- (SegmentControl) to Single file (SINGLE_FILE).
--
-- 'imageBasedTrickPlay', 'dashIsoGroupSettings_imageBasedTrickPlay' - Specify whether MediaConvert generates images for trick play. Keep the
-- default value, None (NONE), to not generate any images. Choose Thumbnail
-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
-- full-resolution images of single frames. MediaConvert adds an entry in
-- the .mpd manifest for each set of images that you generate. A common
-- application for these images is Roku trick mode. The thumbnails and
-- full-frame images that MediaConvert creates with this feature are
-- compatible with this Roku specification:
-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
--
-- 'additionalManifests', 'dashIsoGroupSettings_additionalManifests' - By default, the service creates one .mpd DASH manifest for each DASH ISO
-- output group in your job. This default manifest references every output
-- in the output group. To create additional DASH manifests that reference
-- a subset of the outputs in the output group, specify a list of them
-- here.
--
-- 'segmentLengthControl', 'dashIsoGroupSettings_segmentLengthControl' - Specify how you want MediaConvert to determine the segment length.
-- Choose Exact (EXACT) to have the encoder use the exact length that you
-- specify with the setting Segment length (SegmentLength). This might
-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
-- the encoder round up the segment lengths to match the next GOP boundary.
--
-- 'imageBasedTrickPlaySettings', 'dashIsoGroupSettings_imageBasedTrickPlaySettings' - Tile and thumbnail settings applicable when imageBasedTrickPlay is
-- ADVANCED
--
-- 'baseUrl', 'dashIsoGroupSettings_baseUrl' - A partial URI prefix that will be put in the manifest (.mpd) file at the
-- top level BaseURL element. Can be used if streams are delivered from a
-- different URL than the manifest file.
--
-- 'destinationSettings', 'dashIsoGroupSettings_destinationSettings' - Settings associated with the destination. Will vary based on the type of
-- destination
--
-- 'minFinalSegmentLength', 'dashIsoGroupSettings_minFinalSegmentLength' - Keep this setting at the default value of 0, unless you are
-- troubleshooting a problem with how devices play back the end of your
-- video asset. If you know that player devices are hanging on the final
-- segment of your video because the length of your final segment is too
-- short, use this setting to specify a minimum final segment length, in
-- seconds. Choose a value that is greater than or equal to 1 and less than
-- your segment length. When you specify a value for this setting, the
-- encoder will combine any final segment that is shorter than the length
-- that you specify with the previous segment. For example, your segment
-- length is 3 seconds and your final segment is .5 seconds without a
-- minimum final segment length; when you set the minimum final segment
-- length to 1, your final segment is 3.5 seconds.
--
-- 'audioChannelConfigSchemeIdUri', 'dashIsoGroupSettings_audioChannelConfigSchemeIdUri' - Use this setting only when your audio codec is a Dolby one (AC3, EAC3,
-- or Atmos) and your downstream workflow requires that your DASH manifest
-- use the Dolby channel configuration tag, rather than the MPEG one. For
-- example, you might need to use this to make dynamic ad insertion work.
-- Specify which audio channel configuration scheme ID URI MediaConvert
-- writes in your DASH manifest. Keep the default value, MPEG channel
-- configuration (MPEG_CHANNEL_CONFIGURATION), to have MediaConvert write
-- this: urn:mpeg:mpegB:cicp:ChannelConfiguration. Choose Dolby channel
-- configuration (DOLBY_CHANNEL_CONFIGURATION) to have MediaConvert write
-- this instead: tag:dolby.com,2014:dash:audio_channel_configuration:2011.
--
-- 'encryption', 'dashIsoGroupSettings_encryption' - DRM settings.
--
-- 'segmentLength', 'dashIsoGroupSettings_segmentLength' - Specify the length, in whole seconds, of each segment. When you don\'t
-- specify a value, MediaConvert defaults to 30. Related settings: Use
-- Segment length control (SegmentLengthControl) to specify whether the
-- encoder enforces this value strictly. Use Segment control
-- (DashIsoSegmentControl) to specify whether MediaConvert creates separate
-- segment files or one content file that has metadata to mark the segment
-- boundaries.
--
-- 'ptsOffsetHandlingForBFrames', 'dashIsoGroupSettings_ptsOffsetHandlingForBFrames' - Use this setting only when your output video stream has B-frames, which
-- causes the initial presentation time stamp (PTS) to be offset from the
-- initial decode time stamp (DTS). Specify how MediaConvert handles PTS
-- when writing time stamps in output DASH manifests. Choose Match initial
-- PTS (MATCH_INITIAL_PTS) when you want MediaConvert to use the initial
-- PTS as the first time stamp in the manifest. Choose Zero-based
-- (ZERO_BASED) to have MediaConvert ignore the initial PTS in the video
-- stream and instead write the initial time stamp as zero in the manifest.
-- For outputs that don\'t have B-frames, the time stamps in your DASH
-- manifests start at zero regardless of your choice here.
--
-- 'writeSegmentTimelineInRepresentation', 'dashIsoGroupSettings_writeSegmentTimelineInRepresentation' - If you get an HTTP error in the 400 range when you play back your DASH
-- output, enable this setting and run your transcoding job again. When you
-- enable this setting, the service writes precise segment durations in the
-- DASH manifest. The segment duration information appears inside the
-- SegmentTimeline element, inside SegmentTemplate at the Representation
-- level. When you don\'t enable this setting, the service writes
-- approximate segment durations in your DASH manifest.
newDashIsoGroupSettings ::
  DashIsoGroupSettings
newDashIsoGroupSettings :: DashIsoGroupSettings
newDashIsoGroupSettings =
  DashIsoGroupSettings' :: Maybe Natural
-> Maybe DashIsoSegmentControl
-> Maybe Text
-> Maybe DashIsoHbbtvCompliance
-> Maybe Natural
-> Maybe DashIsoMpdProfile
-> Maybe DashIsoImageBasedTrickPlay
-> Maybe [DashAdditionalManifest]
-> Maybe DashIsoSegmentLengthControl
-> Maybe DashIsoImageBasedTrickPlaySettings
-> Maybe Text
-> Maybe DestinationSettings
-> Maybe Double
-> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
-> Maybe DashIsoEncryptionSettings
-> Maybe Natural
-> Maybe DashIsoPtsOffsetHandlingForBFrames
-> Maybe DashIsoWriteSegmentTimelineInRepresentation
-> DashIsoGroupSettings
DashIsoGroupSettings'
    { $sel:fragmentLength:DashIsoGroupSettings' :: Maybe Natural
fragmentLength =
        Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:segmentControl:DashIsoGroupSettings' :: Maybe DashIsoSegmentControl
segmentControl = Maybe DashIsoSegmentControl
forall a. Maybe a
Prelude.Nothing,
      $sel:destination:DashIsoGroupSettings' :: Maybe Text
destination = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:hbbtvCompliance:DashIsoGroupSettings' :: Maybe DashIsoHbbtvCompliance
hbbtvCompliance = Maybe DashIsoHbbtvCompliance
forall a. Maybe a
Prelude.Nothing,
      $sel:minBufferTime:DashIsoGroupSettings' :: Maybe Natural
minBufferTime = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:mpdProfile:DashIsoGroupSettings' :: Maybe DashIsoMpdProfile
mpdProfile = Maybe DashIsoMpdProfile
forall a. Maybe a
Prelude.Nothing,
      $sel:imageBasedTrickPlay:DashIsoGroupSettings' :: Maybe DashIsoImageBasedTrickPlay
imageBasedTrickPlay = Maybe DashIsoImageBasedTrickPlay
forall a. Maybe a
Prelude.Nothing,
      $sel:additionalManifests:DashIsoGroupSettings' :: Maybe [DashAdditionalManifest]
additionalManifests = Maybe [DashAdditionalManifest]
forall a. Maybe a
Prelude.Nothing,
      $sel:segmentLengthControl:DashIsoGroupSettings' :: Maybe DashIsoSegmentLengthControl
segmentLengthControl = Maybe DashIsoSegmentLengthControl
forall a. Maybe a
Prelude.Nothing,
      $sel:imageBasedTrickPlaySettings:DashIsoGroupSettings' :: Maybe DashIsoImageBasedTrickPlaySettings
imageBasedTrickPlaySettings = Maybe DashIsoImageBasedTrickPlaySettings
forall a. Maybe a
Prelude.Nothing,
      $sel:baseUrl:DashIsoGroupSettings' :: Maybe Text
baseUrl = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:destinationSettings:DashIsoGroupSettings' :: Maybe DestinationSettings
destinationSettings = Maybe DestinationSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:minFinalSegmentLength:DashIsoGroupSettings' :: Maybe Double
minFinalSegmentLength = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:audioChannelConfigSchemeIdUri:DashIsoGroupSettings' :: Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
audioChannelConfigSchemeIdUri = Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
forall a. Maybe a
Prelude.Nothing,
      $sel:encryption:DashIsoGroupSettings' :: Maybe DashIsoEncryptionSettings
encryption = Maybe DashIsoEncryptionSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:segmentLength:DashIsoGroupSettings' :: Maybe Natural
segmentLength = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:ptsOffsetHandlingForBFrames:DashIsoGroupSettings' :: Maybe DashIsoPtsOffsetHandlingForBFrames
ptsOffsetHandlingForBFrames = Maybe DashIsoPtsOffsetHandlingForBFrames
forall a. Maybe a
Prelude.Nothing,
      $sel:writeSegmentTimelineInRepresentation:DashIsoGroupSettings' :: Maybe DashIsoWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation =
        Maybe DashIsoWriteSegmentTimelineInRepresentation
forall a. Maybe a
Prelude.Nothing
    }

-- | Length of fragments to generate (in seconds). Fragment length must be
-- compatible with GOP size and Framerate. Note that fragments will end on
-- the next keyframe after this number of seconds, so actual fragment
-- length may be longer. When Emit Single File is checked, the
-- fragmentation is internal to a single output file and it does not cause
-- the creation of many output files as in other output types.
dashIsoGroupSettings_fragmentLength :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe Prelude.Natural)
dashIsoGroupSettings_fragmentLength :: (Maybe Natural -> f (Maybe Natural))
-> DashIsoGroupSettings -> f DashIsoGroupSettings
dashIsoGroupSettings_fragmentLength = (DashIsoGroupSettings -> Maybe Natural)
-> (DashIsoGroupSettings -> Maybe Natural -> DashIsoGroupSettings)
-> Lens
     DashIsoGroupSettings
     DashIsoGroupSettings
     (Maybe Natural)
     (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DashIsoGroupSettings' {Maybe Natural
fragmentLength :: Maybe Natural
$sel:fragmentLength:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe Natural
fragmentLength} -> Maybe Natural
fragmentLength) (\s :: DashIsoGroupSettings
s@DashIsoGroupSettings' {} Maybe Natural
a -> DashIsoGroupSettings
s {$sel:fragmentLength:DashIsoGroupSettings' :: Maybe Natural
fragmentLength = Maybe Natural
a} :: DashIsoGroupSettings)

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

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

-- | Supports HbbTV specification as indicated
dashIsoGroupSettings_hbbtvCompliance :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoHbbtvCompliance)
dashIsoGroupSettings_hbbtvCompliance :: (Maybe DashIsoHbbtvCompliance -> f (Maybe DashIsoHbbtvCompliance))
-> DashIsoGroupSettings -> f DashIsoGroupSettings
dashIsoGroupSettings_hbbtvCompliance = (DashIsoGroupSettings -> Maybe DashIsoHbbtvCompliance)
-> (DashIsoGroupSettings
    -> Maybe DashIsoHbbtvCompliance -> DashIsoGroupSettings)
-> Lens
     DashIsoGroupSettings
     DashIsoGroupSettings
     (Maybe DashIsoHbbtvCompliance)
     (Maybe DashIsoHbbtvCompliance)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DashIsoGroupSettings' {Maybe DashIsoHbbtvCompliance
hbbtvCompliance :: Maybe DashIsoHbbtvCompliance
$sel:hbbtvCompliance:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe DashIsoHbbtvCompliance
hbbtvCompliance} -> Maybe DashIsoHbbtvCompliance
hbbtvCompliance) (\s :: DashIsoGroupSettings
s@DashIsoGroupSettings' {} Maybe DashIsoHbbtvCompliance
a -> DashIsoGroupSettings
s {$sel:hbbtvCompliance:DashIsoGroupSettings' :: Maybe DashIsoHbbtvCompliance
hbbtvCompliance = Maybe DashIsoHbbtvCompliance
a} :: DashIsoGroupSettings)

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

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

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

-- | By default, the service creates one .mpd DASH manifest for each DASH ISO
-- output group in your job. This default manifest references every output
-- in the output group. To create additional DASH manifests that reference
-- a subset of the outputs in the output group, specify a list of them
-- here.
dashIsoGroupSettings_additionalManifests :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe [DashAdditionalManifest])
dashIsoGroupSettings_additionalManifests :: (Maybe [DashAdditionalManifest]
 -> f (Maybe [DashAdditionalManifest]))
-> DashIsoGroupSettings -> f DashIsoGroupSettings
dashIsoGroupSettings_additionalManifests = (DashIsoGroupSettings -> Maybe [DashAdditionalManifest])
-> (DashIsoGroupSettings
    -> Maybe [DashAdditionalManifest] -> DashIsoGroupSettings)
-> Lens
     DashIsoGroupSettings
     DashIsoGroupSettings
     (Maybe [DashAdditionalManifest])
     (Maybe [DashAdditionalManifest])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DashIsoGroupSettings' {Maybe [DashAdditionalManifest]
additionalManifests :: Maybe [DashAdditionalManifest]
$sel:additionalManifests:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe [DashAdditionalManifest]
additionalManifests} -> Maybe [DashAdditionalManifest]
additionalManifests) (\s :: DashIsoGroupSettings
s@DashIsoGroupSettings' {} Maybe [DashAdditionalManifest]
a -> DashIsoGroupSettings
s {$sel:additionalManifests:DashIsoGroupSettings' :: Maybe [DashAdditionalManifest]
additionalManifests = Maybe [DashAdditionalManifest]
a} :: DashIsoGroupSettings) ((Maybe [DashAdditionalManifest]
  -> f (Maybe [DashAdditionalManifest]))
 -> DashIsoGroupSettings -> f DashIsoGroupSettings)
-> ((Maybe [DashAdditionalManifest]
     -> f (Maybe [DashAdditionalManifest]))
    -> Maybe [DashAdditionalManifest]
    -> f (Maybe [DashAdditionalManifest]))
-> (Maybe [DashAdditionalManifest]
    -> f (Maybe [DashAdditionalManifest]))
-> DashIsoGroupSettings
-> f DashIsoGroupSettings
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [DashAdditionalManifest]
  [DashAdditionalManifest]
  [DashAdditionalManifest]
  [DashAdditionalManifest]
-> Iso
     (Maybe [DashAdditionalManifest])
     (Maybe [DashAdditionalManifest])
     (Maybe [DashAdditionalManifest])
     (Maybe [DashAdditionalManifest])
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
  [DashAdditionalManifest]
  [DashAdditionalManifest]
  [DashAdditionalManifest]
  [DashAdditionalManifest]
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.
dashIsoGroupSettings_segmentLengthControl :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoSegmentLengthControl)
dashIsoGroupSettings_segmentLengthControl :: (Maybe DashIsoSegmentLengthControl
 -> f (Maybe DashIsoSegmentLengthControl))
-> DashIsoGroupSettings -> f DashIsoGroupSettings
dashIsoGroupSettings_segmentLengthControl = (DashIsoGroupSettings -> Maybe DashIsoSegmentLengthControl)
-> (DashIsoGroupSettings
    -> Maybe DashIsoSegmentLengthControl -> DashIsoGroupSettings)
-> Lens
     DashIsoGroupSettings
     DashIsoGroupSettings
     (Maybe DashIsoSegmentLengthControl)
     (Maybe DashIsoSegmentLengthControl)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DashIsoGroupSettings' {Maybe DashIsoSegmentLengthControl
segmentLengthControl :: Maybe DashIsoSegmentLengthControl
$sel:segmentLengthControl:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe DashIsoSegmentLengthControl
segmentLengthControl} -> Maybe DashIsoSegmentLengthControl
segmentLengthControl) (\s :: DashIsoGroupSettings
s@DashIsoGroupSettings' {} Maybe DashIsoSegmentLengthControl
a -> DashIsoGroupSettings
s {$sel:segmentLengthControl:DashIsoGroupSettings' :: Maybe DashIsoSegmentLengthControl
segmentLengthControl = Maybe DashIsoSegmentLengthControl
a} :: DashIsoGroupSettings)

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

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

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

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

-- | Use this setting only when your audio codec is a Dolby one (AC3, EAC3,
-- or Atmos) and your downstream workflow requires that your DASH manifest
-- use the Dolby channel configuration tag, rather than the MPEG one. For
-- example, you might need to use this to make dynamic ad insertion work.
-- Specify which audio channel configuration scheme ID URI MediaConvert
-- writes in your DASH manifest. Keep the default value, MPEG channel
-- configuration (MPEG_CHANNEL_CONFIGURATION), to have MediaConvert write
-- this: urn:mpeg:mpegB:cicp:ChannelConfiguration. Choose Dolby channel
-- configuration (DOLBY_CHANNEL_CONFIGURATION) to have MediaConvert write
-- this instead: tag:dolby.com,2014:dash:audio_channel_configuration:2011.
dashIsoGroupSettings_audioChannelConfigSchemeIdUri :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoGroupAudioChannelConfigSchemeIdUri)
dashIsoGroupSettings_audioChannelConfigSchemeIdUri :: (Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
 -> f (Maybe DashIsoGroupAudioChannelConfigSchemeIdUri))
-> DashIsoGroupSettings -> f DashIsoGroupSettings
dashIsoGroupSettings_audioChannelConfigSchemeIdUri = (DashIsoGroupSettings
 -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri)
-> (DashIsoGroupSettings
    -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
    -> DashIsoGroupSettings)
-> Lens
     DashIsoGroupSettings
     DashIsoGroupSettings
     (Maybe DashIsoGroupAudioChannelConfigSchemeIdUri)
     (Maybe DashIsoGroupAudioChannelConfigSchemeIdUri)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DashIsoGroupSettings' {Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
audioChannelConfigSchemeIdUri :: Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
$sel:audioChannelConfigSchemeIdUri:DashIsoGroupSettings' :: DashIsoGroupSettings
-> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
audioChannelConfigSchemeIdUri} -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
audioChannelConfigSchemeIdUri) (\s :: DashIsoGroupSettings
s@DashIsoGroupSettings' {} Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
a -> DashIsoGroupSettings
s {$sel:audioChannelConfigSchemeIdUri:DashIsoGroupSettings' :: Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
audioChannelConfigSchemeIdUri = Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
a} :: DashIsoGroupSettings)

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

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

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

-- | If you get an HTTP error in the 400 range when you play back your DASH
-- output, enable this setting and run your transcoding job again. When you
-- enable this setting, the service writes precise segment durations in the
-- DASH manifest. The segment duration information appears inside the
-- SegmentTimeline element, inside SegmentTemplate at the Representation
-- level. When you don\'t enable this setting, the service writes
-- approximate segment durations in your DASH manifest.
dashIsoGroupSettings_writeSegmentTimelineInRepresentation :: Lens.Lens' DashIsoGroupSettings (Prelude.Maybe DashIsoWriteSegmentTimelineInRepresentation)
dashIsoGroupSettings_writeSegmentTimelineInRepresentation :: (Maybe DashIsoWriteSegmentTimelineInRepresentation
 -> f (Maybe DashIsoWriteSegmentTimelineInRepresentation))
-> DashIsoGroupSettings -> f DashIsoGroupSettings
dashIsoGroupSettings_writeSegmentTimelineInRepresentation = (DashIsoGroupSettings
 -> Maybe DashIsoWriteSegmentTimelineInRepresentation)
-> (DashIsoGroupSettings
    -> Maybe DashIsoWriteSegmentTimelineInRepresentation
    -> DashIsoGroupSettings)
-> Lens
     DashIsoGroupSettings
     DashIsoGroupSettings
     (Maybe DashIsoWriteSegmentTimelineInRepresentation)
     (Maybe DashIsoWriteSegmentTimelineInRepresentation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DashIsoGroupSettings' {Maybe DashIsoWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation :: Maybe DashIsoWriteSegmentTimelineInRepresentation
$sel:writeSegmentTimelineInRepresentation:DashIsoGroupSettings' :: DashIsoGroupSettings
-> Maybe DashIsoWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation} -> Maybe DashIsoWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation) (\s :: DashIsoGroupSettings
s@DashIsoGroupSettings' {} Maybe DashIsoWriteSegmentTimelineInRepresentation
a -> DashIsoGroupSettings
s {$sel:writeSegmentTimelineInRepresentation:DashIsoGroupSettings' :: Maybe DashIsoWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation = Maybe DashIsoWriteSegmentTimelineInRepresentation
a} :: DashIsoGroupSettings)

instance Core.FromJSON DashIsoGroupSettings where
  parseJSON :: Value -> Parser DashIsoGroupSettings
parseJSON =
    String
-> (Object -> Parser DashIsoGroupSettings)
-> Value
-> Parser DashIsoGroupSettings
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"DashIsoGroupSettings"
      ( \Object
x ->
          Maybe Natural
-> Maybe DashIsoSegmentControl
-> Maybe Text
-> Maybe DashIsoHbbtvCompliance
-> Maybe Natural
-> Maybe DashIsoMpdProfile
-> Maybe DashIsoImageBasedTrickPlay
-> Maybe [DashAdditionalManifest]
-> Maybe DashIsoSegmentLengthControl
-> Maybe DashIsoImageBasedTrickPlaySettings
-> Maybe Text
-> Maybe DestinationSettings
-> Maybe Double
-> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
-> Maybe DashIsoEncryptionSettings
-> Maybe Natural
-> Maybe DashIsoPtsOffsetHandlingForBFrames
-> Maybe DashIsoWriteSegmentTimelineInRepresentation
-> DashIsoGroupSettings
DashIsoGroupSettings'
            (Maybe Natural
 -> Maybe DashIsoSegmentControl
 -> Maybe Text
 -> Maybe DashIsoHbbtvCompliance
 -> Maybe Natural
 -> Maybe DashIsoMpdProfile
 -> Maybe DashIsoImageBasedTrickPlay
 -> Maybe [DashAdditionalManifest]
 -> Maybe DashIsoSegmentLengthControl
 -> Maybe DashIsoImageBasedTrickPlaySettings
 -> Maybe Text
 -> Maybe DestinationSettings
 -> Maybe Double
 -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
 -> Maybe DashIsoEncryptionSettings
 -> Maybe Natural
 -> Maybe DashIsoPtsOffsetHandlingForBFrames
 -> Maybe DashIsoWriteSegmentTimelineInRepresentation
 -> DashIsoGroupSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe DashIsoSegmentControl
      -> Maybe Text
      -> Maybe DashIsoHbbtvCompliance
      -> Maybe Natural
      -> Maybe DashIsoMpdProfile
      -> Maybe DashIsoImageBasedTrickPlay
      -> Maybe [DashAdditionalManifest]
      -> Maybe DashIsoSegmentLengthControl
      -> Maybe DashIsoImageBasedTrickPlaySettings
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
      -> Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
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 DashIsoSegmentControl
   -> Maybe Text
   -> Maybe DashIsoHbbtvCompliance
   -> Maybe Natural
   -> Maybe DashIsoMpdProfile
   -> Maybe DashIsoImageBasedTrickPlay
   -> Maybe [DashAdditionalManifest]
   -> Maybe DashIsoSegmentLengthControl
   -> Maybe DashIsoImageBasedTrickPlaySettings
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
   -> Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe DashIsoSegmentControl)
-> Parser
     (Maybe Text
      -> Maybe DashIsoHbbtvCompliance
      -> Maybe Natural
      -> Maybe DashIsoMpdProfile
      -> Maybe DashIsoImageBasedTrickPlay
      -> Maybe [DashAdditionalManifest]
      -> Maybe DashIsoSegmentLengthControl
      -> Maybe DashIsoImageBasedTrickPlaySettings
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
      -> Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DashIsoSegmentControl)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"segmentControl")
            Parser
  (Maybe Text
   -> Maybe DashIsoHbbtvCompliance
   -> Maybe Natural
   -> Maybe DashIsoMpdProfile
   -> Maybe DashIsoImageBasedTrickPlay
   -> Maybe [DashAdditionalManifest]
   -> Maybe DashIsoSegmentLengthControl
   -> Maybe DashIsoImageBasedTrickPlaySettings
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
   -> Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe DashIsoHbbtvCompliance
      -> Maybe Natural
      -> Maybe DashIsoMpdProfile
      -> Maybe DashIsoImageBasedTrickPlay
      -> Maybe [DashAdditionalManifest]
      -> Maybe DashIsoSegmentLengthControl
      -> Maybe DashIsoImageBasedTrickPlaySettings
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
      -> Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
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 DashIsoHbbtvCompliance
   -> Maybe Natural
   -> Maybe DashIsoMpdProfile
   -> Maybe DashIsoImageBasedTrickPlay
   -> Maybe [DashAdditionalManifest]
   -> Maybe DashIsoSegmentLengthControl
   -> Maybe DashIsoImageBasedTrickPlaySettings
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
   -> Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe DashIsoHbbtvCompliance)
-> Parser
     (Maybe Natural
      -> Maybe DashIsoMpdProfile
      -> Maybe DashIsoImageBasedTrickPlay
      -> Maybe [DashAdditionalManifest]
      -> Maybe DashIsoSegmentLengthControl
      -> Maybe DashIsoImageBasedTrickPlaySettings
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
      -> Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DashIsoHbbtvCompliance)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"hbbtvCompliance")
            Parser
  (Maybe Natural
   -> Maybe DashIsoMpdProfile
   -> Maybe DashIsoImageBasedTrickPlay
   -> Maybe [DashAdditionalManifest]
   -> Maybe DashIsoSegmentLengthControl
   -> Maybe DashIsoImageBasedTrickPlaySettings
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
   -> Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe DashIsoMpdProfile
      -> Maybe DashIsoImageBasedTrickPlay
      -> Maybe [DashAdditionalManifest]
      -> Maybe DashIsoSegmentLengthControl
      -> Maybe DashIsoImageBasedTrickPlaySettings
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
      -> Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
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 DashIsoMpdProfile
   -> Maybe DashIsoImageBasedTrickPlay
   -> Maybe [DashAdditionalManifest]
   -> Maybe DashIsoSegmentLengthControl
   -> Maybe DashIsoImageBasedTrickPlaySettings
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
   -> Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe DashIsoMpdProfile)
-> Parser
     (Maybe DashIsoImageBasedTrickPlay
      -> Maybe [DashAdditionalManifest]
      -> Maybe DashIsoSegmentLengthControl
      -> Maybe DashIsoImageBasedTrickPlaySettings
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
      -> Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DashIsoMpdProfile)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"mpdProfile")
            Parser
  (Maybe DashIsoImageBasedTrickPlay
   -> Maybe [DashAdditionalManifest]
   -> Maybe DashIsoSegmentLengthControl
   -> Maybe DashIsoImageBasedTrickPlaySettings
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
   -> Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe DashIsoImageBasedTrickPlay)
-> Parser
     (Maybe [DashAdditionalManifest]
      -> Maybe DashIsoSegmentLengthControl
      -> Maybe DashIsoImageBasedTrickPlaySettings
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
      -> Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DashIsoImageBasedTrickPlay)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"imageBasedTrickPlay")
            Parser
  (Maybe [DashAdditionalManifest]
   -> Maybe DashIsoSegmentLengthControl
   -> Maybe DashIsoImageBasedTrickPlaySettings
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
   -> Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe [DashAdditionalManifest])
-> Parser
     (Maybe DashIsoSegmentLengthControl
      -> Maybe DashIsoImageBasedTrickPlaySettings
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
      -> Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [DashAdditionalManifest]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"additionalManifests"
                            Parser (Maybe (Maybe [DashAdditionalManifest]))
-> Maybe [DashAdditionalManifest]
-> Parser (Maybe [DashAdditionalManifest])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [DashAdditionalManifest]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe DashIsoSegmentLengthControl
   -> Maybe DashIsoImageBasedTrickPlaySettings
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
   -> Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe DashIsoSegmentLengthControl)
-> Parser
     (Maybe DashIsoImageBasedTrickPlaySettings
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
      -> Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DashIsoSegmentLengthControl)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"segmentLengthControl")
            Parser
  (Maybe DashIsoImageBasedTrickPlaySettings
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
   -> Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe DashIsoImageBasedTrickPlaySettings)
-> Parser
     (Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
      -> Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DashIsoImageBasedTrickPlaySettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"imageBasedTrickPlaySettings")
            Parser
  (Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
   -> Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe DestinationSettings
      -> Maybe Double
      -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
      -> Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
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 DashIsoGroupAudioChannelConfigSchemeIdUri
   -> Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe DestinationSettings)
-> Parser
     (Maybe Double
      -> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
      -> Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
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 DashIsoGroupAudioChannelConfigSchemeIdUri
   -> Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe Double)
-> Parser
     (Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
      -> Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
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 DashIsoGroupAudioChannelConfigSchemeIdUri
   -> Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe DashIsoGroupAudioChannelConfigSchemeIdUri)
-> Parser
     (Maybe DashIsoEncryptionSettings
      -> Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe DashIsoGroupAudioChannelConfigSchemeIdUri)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"audioChannelConfigSchemeIdUri")
            Parser
  (Maybe DashIsoEncryptionSettings
   -> Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe DashIsoEncryptionSettings)
-> Parser
     (Maybe Natural
      -> Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DashIsoEncryptionSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"encryption")
            Parser
  (Maybe Natural
   -> Maybe DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe DashIsoPtsOffsetHandlingForBFrames
      -> Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
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 DashIsoPtsOffsetHandlingForBFrames
   -> Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe DashIsoPtsOffsetHandlingForBFrames)
-> Parser
     (Maybe DashIsoWriteSegmentTimelineInRepresentation
      -> DashIsoGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DashIsoPtsOffsetHandlingForBFrames)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ptsOffsetHandlingForBFrames")
            Parser
  (Maybe DashIsoWriteSegmentTimelineInRepresentation
   -> DashIsoGroupSettings)
-> Parser (Maybe DashIsoWriteSegmentTimelineInRepresentation)
-> Parser DashIsoGroupSettings
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text
-> Parser (Maybe DashIsoWriteSegmentTimelineInRepresentation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"writeSegmentTimelineInRepresentation")
      )

instance Prelude.Hashable DashIsoGroupSettings

instance Prelude.NFData DashIsoGroupSettings

instance Core.ToJSON DashIsoGroupSettings where
  toJSON :: DashIsoGroupSettings -> Value
toJSON DashIsoGroupSettings' {Maybe Double
Maybe Natural
Maybe [DashAdditionalManifest]
Maybe Text
Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
Maybe DashIsoHbbtvCompliance
Maybe DashIsoImageBasedTrickPlay
Maybe DashIsoImageBasedTrickPlaySettings
Maybe DashIsoMpdProfile
Maybe DashIsoPtsOffsetHandlingForBFrames
Maybe DashIsoSegmentControl
Maybe DashIsoSegmentLengthControl
Maybe DashIsoWriteSegmentTimelineInRepresentation
Maybe DestinationSettings
Maybe DashIsoEncryptionSettings
writeSegmentTimelineInRepresentation :: Maybe DashIsoWriteSegmentTimelineInRepresentation
ptsOffsetHandlingForBFrames :: Maybe DashIsoPtsOffsetHandlingForBFrames
segmentLength :: Maybe Natural
encryption :: Maybe DashIsoEncryptionSettings
audioChannelConfigSchemeIdUri :: Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
minFinalSegmentLength :: Maybe Double
destinationSettings :: Maybe DestinationSettings
baseUrl :: Maybe Text
imageBasedTrickPlaySettings :: Maybe DashIsoImageBasedTrickPlaySettings
segmentLengthControl :: Maybe DashIsoSegmentLengthControl
additionalManifests :: Maybe [DashAdditionalManifest]
imageBasedTrickPlay :: Maybe DashIsoImageBasedTrickPlay
mpdProfile :: Maybe DashIsoMpdProfile
minBufferTime :: Maybe Natural
hbbtvCompliance :: Maybe DashIsoHbbtvCompliance
destination :: Maybe Text
segmentControl :: Maybe DashIsoSegmentControl
fragmentLength :: Maybe Natural
$sel:writeSegmentTimelineInRepresentation:DashIsoGroupSettings' :: DashIsoGroupSettings
-> Maybe DashIsoWriteSegmentTimelineInRepresentation
$sel:ptsOffsetHandlingForBFrames:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe DashIsoPtsOffsetHandlingForBFrames
$sel:segmentLength:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe Natural
$sel:encryption:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe DashIsoEncryptionSettings
$sel:audioChannelConfigSchemeIdUri:DashIsoGroupSettings' :: DashIsoGroupSettings
-> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
$sel:minFinalSegmentLength:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe Double
$sel:destinationSettings:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe DestinationSettings
$sel:baseUrl:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe Text
$sel:imageBasedTrickPlaySettings:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe DashIsoImageBasedTrickPlaySettings
$sel:segmentLengthControl:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe DashIsoSegmentLengthControl
$sel:additionalManifests:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe [DashAdditionalManifest]
$sel:imageBasedTrickPlay:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe DashIsoImageBasedTrickPlay
$sel:mpdProfile:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe DashIsoMpdProfile
$sel:minBufferTime:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe Natural
$sel:hbbtvCompliance:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe DashIsoHbbtvCompliance
$sel:destination:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe Text
$sel:segmentControl:DashIsoGroupSettings' :: DashIsoGroupSettings -> Maybe DashIsoSegmentControl
$sel:fragmentLength:DashIsoGroupSettings' :: DashIsoGroupSettings -> 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 -> DashIsoSegmentControl -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DashIsoSegmentControl -> Pair)
-> Maybe DashIsoSegmentControl -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DashIsoSegmentControl
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
"hbbtvCompliance" Text -> DashIsoHbbtvCompliance -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DashIsoHbbtvCompliance -> Pair)
-> Maybe DashIsoHbbtvCompliance -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DashIsoHbbtvCompliance
hbbtvCompliance,
            (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 -> DashIsoMpdProfile -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (DashIsoMpdProfile -> Pair)
-> Maybe DashIsoMpdProfile -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DashIsoMpdProfile
mpdProfile,
            (Text
"imageBasedTrickPlay" Text -> DashIsoImageBasedTrickPlay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DashIsoImageBasedTrickPlay -> Pair)
-> Maybe DashIsoImageBasedTrickPlay -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DashIsoImageBasedTrickPlay
imageBasedTrickPlay,
            (Text
"additionalManifests" Text -> [DashAdditionalManifest] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([DashAdditionalManifest] -> Pair)
-> Maybe [DashAdditionalManifest] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [DashAdditionalManifest]
additionalManifests,
            (Text
"segmentLengthControl" Text -> DashIsoSegmentLengthControl -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DashIsoSegmentLengthControl -> Pair)
-> Maybe DashIsoSegmentLengthControl -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DashIsoSegmentLengthControl
segmentLengthControl,
            (Text
"imageBasedTrickPlaySettings" Text -> DashIsoImageBasedTrickPlaySettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DashIsoImageBasedTrickPlaySettings -> Pair)
-> Maybe DashIsoImageBasedTrickPlaySettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DashIsoImageBasedTrickPlaySettings
imageBasedTrickPlaySettings,
            (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
"audioChannelConfigSchemeIdUri" Text -> DashIsoGroupAudioChannelConfigSchemeIdUri -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DashIsoGroupAudioChannelConfigSchemeIdUri -> Pair)
-> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DashIsoGroupAudioChannelConfigSchemeIdUri
audioChannelConfigSchemeIdUri,
            (Text
"encryption" Text -> DashIsoEncryptionSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (DashIsoEncryptionSettings -> Pair)
-> Maybe DashIsoEncryptionSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DashIsoEncryptionSettings
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 -> DashIsoPtsOffsetHandlingForBFrames -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DashIsoPtsOffsetHandlingForBFrames -> Pair)
-> Maybe DashIsoPtsOffsetHandlingForBFrames -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DashIsoPtsOffsetHandlingForBFrames
ptsOffsetHandlingForBFrames,
            (Text
"writeSegmentTimelineInRepresentation" Text -> DashIsoWriteSegmentTimelineInRepresentation -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DashIsoWriteSegmentTimelineInRepresentation -> Pair)
-> Maybe DashIsoWriteSegmentTimelineInRepresentation -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DashIsoWriteSegmentTimelineInRepresentation
writeSegmentTimelineInRepresentation
          ]
      )