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

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

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

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import Amazonka.MediaConvert.Types.DestinationSettings
import Amazonka.MediaConvert.Types.HlsAdMarkers
import Amazonka.MediaConvert.Types.HlsAdditionalManifest
import Amazonka.MediaConvert.Types.HlsAudioOnlyHeader
import Amazonka.MediaConvert.Types.HlsCaptionLanguageMapping
import Amazonka.MediaConvert.Types.HlsCaptionLanguageSetting
import Amazonka.MediaConvert.Types.HlsClientCache
import Amazonka.MediaConvert.Types.HlsCodecSpecification
import Amazonka.MediaConvert.Types.HlsDirectoryStructure
import Amazonka.MediaConvert.Types.HlsEncryptionSettings
import Amazonka.MediaConvert.Types.HlsImageBasedTrickPlay
import Amazonka.MediaConvert.Types.HlsImageBasedTrickPlaySettings
import Amazonka.MediaConvert.Types.HlsManifestCompression
import Amazonka.MediaConvert.Types.HlsManifestDurationFormat
import Amazonka.MediaConvert.Types.HlsOutputSelection
import Amazonka.MediaConvert.Types.HlsProgramDateTime
import Amazonka.MediaConvert.Types.HlsSegmentControl
import Amazonka.MediaConvert.Types.HlsSegmentLengthControl
import Amazonka.MediaConvert.Types.HlsStreamInfResolution
import Amazonka.MediaConvert.Types.HlsTargetDurationCompatibilityMode
import Amazonka.MediaConvert.Types.HlsTimedMetadataId3Frame
import qualified Amazonka.Prelude as Prelude

-- | Settings related to your HLS output package. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set Type, under
-- OutputGroupSettings, to HLS_GROUP_SETTINGS.
--
-- /See:/ 'newHlsGroupSettings' smart constructor.
data HlsGroupSettings = HlsGroupSettings'
  { -- | Indicates whether segments should be placed in subdirectories.
    HlsGroupSettings -> Maybe HlsDirectoryStructure
directoryStructure :: Prelude.Maybe HlsDirectoryStructure,
    -- | When set to SINGLE_FILE, emits program as a single media resource (.ts)
    -- file, uses #EXT-X-BYTERANGE tags to index segment for playback.
    HlsGroupSettings -> Maybe HlsSegmentControl
segmentControl :: Prelude.Maybe HlsSegmentControl,
    -- | Use Destination (Destination) to specify the S3 output location and the
    -- output filename base. Destination accepts format identifiers. If you do
    -- not specify the base filename in the URI, the service will use the
    -- filename of the input file. If your job has multiple inputs, the service
    -- uses the filename of the first input file.
    HlsGroupSettings -> Maybe Text
destination :: Prelude.Maybe Prelude.Text,
    -- | Timed Metadata interval in seconds.
    HlsGroupSettings -> Maybe Int
timedMetadataId3Period :: Prelude.Maybe Prelude.Int,
    -- | When set to LEGACY, the segment target duration is always rounded up to
    -- the nearest integer value above its current value in seconds. When set
    -- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
    -- nearest integer value if fraction seconds are greater than or equal to
    -- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
    -- use LEGACY if your client needs to ensure that the target duration is
    -- always longer than the actual duration of the segment. Some older
    -- players may experience interrupted playback when the actual duration of
    -- a track in a segment is longer than the target duration.
    HlsGroupSettings -> Maybe HlsTargetDurationCompatibilityMode
targetDurationCompatibilityMode :: Prelude.Maybe HlsTargetDurationCompatibilityMode,
    -- | Specify whether MediaConvert generates images for trick play. Keep the
    -- default value, None (NONE), to not generate any images. Choose Thumbnail
    -- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
    -- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
    -- full-resolution images of single frames. MediaConvert creates a child
    -- manifest for each set of images that you generate and adds corresponding
    -- entries to the parent manifest. A common application for these images is
    -- Roku trick mode. The thumbnails and full-frame images that MediaConvert
    -- creates with this feature are compatible with this Roku specification:
    -- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
    HlsGroupSettings -> Maybe HlsImageBasedTrickPlay
imageBasedTrickPlay :: Prelude.Maybe HlsImageBasedTrickPlay,
    -- | By default, the service creates one top-level .m3u8 HLS manifest for
    -- each HLS output group in your job. This default manifest references
    -- every output in the output group. To create additional top-level
    -- manifests that reference a subset of the outputs in the output group,
    -- specify a list of them here.
    HlsGroupSettings -> Maybe [HlsAdditionalManifest]
additionalManifests :: Prelude.Maybe [HlsAdditionalManifest],
    -- | When set, Minimum Segment Size is enforced by looking ahead and back
    -- within the specified range for a nearby avail and extending the segment
    -- size if needed.
    HlsGroupSettings -> Maybe Natural
minSegmentLength :: Prelude.Maybe Prelude.Natural,
    -- | Includes or excludes EXT-X-PROGRAM-DATE-TIME tag in .m3u8 manifest
    -- files. The value is calculated as follows: either the program date and
    -- time are initialized using the input timecode source, or the time is
    -- initialized using the input timecode source and the date is initialized
    -- using the timestamp_offset.
    HlsGroupSettings -> Maybe HlsProgramDateTime
programDateTime :: Prelude.Maybe HlsProgramDateTime,
    -- | Specify how you want MediaConvert to determine the segment length.
    -- Choose Exact (EXACT) to have the encoder use the exact length that you
    -- specify with the setting Segment length (SegmentLength). This might
    -- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
    -- the encoder round up the segment lengths to match the next GOP boundary.
    HlsGroupSettings -> Maybe HlsSegmentLengthControl
segmentLengthControl :: Prelude.Maybe HlsSegmentLengthControl,
    -- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
    -- ADVANCED
    HlsGroupSettings -> Maybe HlsImageBasedTrickPlaySettings
imageBasedTrickPlaySettings :: Prelude.Maybe HlsImageBasedTrickPlaySettings,
    -- | Period of insertion of EXT-X-PROGRAM-DATE-TIME entry, in seconds.
    HlsGroupSettings -> Maybe Natural
programDateTimePeriod :: Prelude.Maybe Prelude.Natural,
    -- | Specification to use (RFC-6381 or the default RFC-4281) during m3u8
    -- playlist generation.
    HlsGroupSettings -> Maybe HlsCodecSpecification
codecSpecification :: Prelude.Maybe HlsCodecSpecification,
    -- | Language to be used on Caption outputs
    HlsGroupSettings -> Maybe [HlsCaptionLanguageMapping]
captionLanguageMappings :: Prelude.Maybe [HlsCaptionLanguageMapping],
    -- | A partial URI prefix that will be prepended to each output in the media
    -- .m3u8 file. Can be used if base manifest is delivered from a different
    -- URL than the main .m3u8 file.
    HlsGroupSettings -> Maybe Text
baseUrl :: Prelude.Maybe Prelude.Text,
    -- | Settings associated with the destination. Will vary based on the type of
    -- destination
    HlsGroupSettings -> 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.
    HlsGroupSettings -> Maybe Double
minFinalSegmentLength :: Prelude.Maybe Prelude.Double,
    -- | Choose one or more ad marker types to decorate your Apple HLS manifest.
    -- This setting does not determine whether SCTE-35 markers appear in the
    -- outputs themselves.
    HlsGroupSettings -> Maybe [HlsAdMarkers]
adMarkers :: Prelude.Maybe [HlsAdMarkers],
    -- | DRM settings.
    HlsGroupSettings -> Maybe HlsEncryptionSettings
encryption :: Prelude.Maybe HlsEncryptionSettings,
    -- | Specify the length, in whole seconds, of each segment. When you don\'t
    -- specify a value, MediaConvert defaults to 10. Related settings: Use
    -- Segment length control (SegmentLengthControl) to specify whether the
    -- encoder enforces this value strictly. Use Segment control
    -- (HlsSegmentControl) to specify whether MediaConvert creates separate
    -- segment files or one content file that has metadata to mark the segment
    -- boundaries.
    HlsGroupSettings -> Maybe Natural
segmentLength :: Prelude.Maybe Prelude.Natural,
    -- | Indicates ID3 frame that has the timecode.
    HlsGroupSettings -> Maybe HlsTimedMetadataId3Frame
timedMetadataId3Frame :: Prelude.Maybe HlsTimedMetadataId3Frame,
    -- | Indicates whether the .m3u8 manifest file should be generated for this
    -- HLS output group.
    HlsGroupSettings -> Maybe HlsOutputSelection
outputSelection :: Prelude.Maybe HlsOutputSelection,
    -- | Applies only to 608 Embedded output captions. Insert: Include
    -- CLOSED-CAPTIONS lines in the manifest. Specify at least one language in
    -- the CC1 Language Code field. One CLOSED-CAPTION line is added for each
    -- Language Code you specify. Make sure to specify the languages in the
    -- order in which they appear in the original source (if the source is
    -- embedded format) or the order of the caption selectors (if the source is
    -- other than embedded). Otherwise, languages in the manifest will not
    -- match up properly with the output captions. None: Include
    -- CLOSED-CAPTIONS=NONE line in the manifest. Omit: Omit any
    -- CLOSED-CAPTIONS line from the manifest.
    HlsGroupSettings -> Maybe HlsCaptionLanguageSetting
captionLanguageSetting :: Prelude.Maybe HlsCaptionLanguageSetting,
    -- | Number of segments to write to a subdirectory before starting a new one.
    -- directoryStructure must be SINGLE_DIRECTORY for this setting to have an
    -- effect.
    HlsGroupSettings -> Maybe Natural
segmentsPerSubdirectory :: Prelude.Maybe Prelude.Natural,
    -- | Indicates whether the output manifest should use floating point values
    -- for segment duration.
    HlsGroupSettings -> Maybe HlsManifestDurationFormat
manifestDurationFormat :: Prelude.Maybe HlsManifestDurationFormat,
    -- | Ignore this setting unless you are using FairPlay DRM with Verimatrix
    -- and you encounter playback issues. Keep the default value, Include
    -- (INCLUDE), to output audio-only headers. Choose Exclude (EXCLUDE) to
    -- remove the audio-only headers from your audio segments.
    HlsGroupSettings -> Maybe HlsAudioOnlyHeader
audioOnlyHeader :: Prelude.Maybe HlsAudioOnlyHeader,
    -- | Disable this setting only when your workflow requires the
    -- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
    -- (ENABLED) and control caching in your video distribution set up. For
    -- example, use the Cache-Control http header.
    HlsGroupSettings -> Maybe HlsClientCache
clientCache :: Prelude.Maybe HlsClientCache,
    -- | Provides an extra millisecond delta offset to fine tune the timestamps.
    HlsGroupSettings -> Maybe Int
timestampDeltaMilliseconds :: Prelude.Maybe Prelude.Int,
    -- | Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
    -- tag of variant manifest.
    HlsGroupSettings -> Maybe HlsStreamInfResolution
streamInfResolution :: Prelude.Maybe HlsStreamInfResolution,
    -- | When set to GZIP, compresses HLS playlist.
    HlsGroupSettings -> Maybe HlsManifestCompression
manifestCompression :: Prelude.Maybe HlsManifestCompression
  }
  deriving (HlsGroupSettings -> HlsGroupSettings -> Bool
(HlsGroupSettings -> HlsGroupSettings -> Bool)
-> (HlsGroupSettings -> HlsGroupSettings -> Bool)
-> Eq HlsGroupSettings
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: HlsGroupSettings -> HlsGroupSettings -> Bool
$c/= :: HlsGroupSettings -> HlsGroupSettings -> Bool
== :: HlsGroupSettings -> HlsGroupSettings -> Bool
$c== :: HlsGroupSettings -> HlsGroupSettings -> Bool
Prelude.Eq, ReadPrec [HlsGroupSettings]
ReadPrec HlsGroupSettings
Int -> ReadS HlsGroupSettings
ReadS [HlsGroupSettings]
(Int -> ReadS HlsGroupSettings)
-> ReadS [HlsGroupSettings]
-> ReadPrec HlsGroupSettings
-> ReadPrec [HlsGroupSettings]
-> Read HlsGroupSettings
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [HlsGroupSettings]
$creadListPrec :: ReadPrec [HlsGroupSettings]
readPrec :: ReadPrec HlsGroupSettings
$creadPrec :: ReadPrec HlsGroupSettings
readList :: ReadS [HlsGroupSettings]
$creadList :: ReadS [HlsGroupSettings]
readsPrec :: Int -> ReadS HlsGroupSettings
$creadsPrec :: Int -> ReadS HlsGroupSettings
Prelude.Read, Int -> HlsGroupSettings -> ShowS
[HlsGroupSettings] -> ShowS
HlsGroupSettings -> String
(Int -> HlsGroupSettings -> ShowS)
-> (HlsGroupSettings -> String)
-> ([HlsGroupSettings] -> ShowS)
-> Show HlsGroupSettings
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [HlsGroupSettings] -> ShowS
$cshowList :: [HlsGroupSettings] -> ShowS
show :: HlsGroupSettings -> String
$cshow :: HlsGroupSettings -> String
showsPrec :: Int -> HlsGroupSettings -> ShowS
$cshowsPrec :: Int -> HlsGroupSettings -> ShowS
Prelude.Show, (forall x. HlsGroupSettings -> Rep HlsGroupSettings x)
-> (forall x. Rep HlsGroupSettings x -> HlsGroupSettings)
-> Generic HlsGroupSettings
forall x. Rep HlsGroupSettings x -> HlsGroupSettings
forall x. HlsGroupSettings -> Rep HlsGroupSettings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep HlsGroupSettings x -> HlsGroupSettings
$cfrom :: forall x. HlsGroupSettings -> Rep HlsGroupSettings x
Prelude.Generic)

-- |
-- Create a value of 'HlsGroupSettings' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'directoryStructure', 'hlsGroupSettings_directoryStructure' - Indicates whether segments should be placed in subdirectories.
--
-- 'segmentControl', 'hlsGroupSettings_segmentControl' - When set to SINGLE_FILE, emits program as a single media resource (.ts)
-- file, uses #EXT-X-BYTERANGE tags to index segment for playback.
--
-- 'destination', 'hlsGroupSettings_destination' - Use Destination (Destination) to specify the S3 output location and the
-- output filename base. Destination accepts format identifiers. If you do
-- not specify the base filename in the URI, the service will use the
-- filename of the input file. If your job has multiple inputs, the service
-- uses the filename of the first input file.
--
-- 'timedMetadataId3Period', 'hlsGroupSettings_timedMetadataId3Period' - Timed Metadata interval in seconds.
--
-- 'targetDurationCompatibilityMode', 'hlsGroupSettings_targetDurationCompatibilityMode' - When set to LEGACY, the segment target duration is always rounded up to
-- the nearest integer value above its current value in seconds. When set
-- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
-- nearest integer value if fraction seconds are greater than or equal to
-- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
-- use LEGACY if your client needs to ensure that the target duration is
-- always longer than the actual duration of the segment. Some older
-- players may experience interrupted playback when the actual duration of
-- a track in a segment is longer than the target duration.
--
-- 'imageBasedTrickPlay', 'hlsGroupSettings_imageBasedTrickPlay' - Specify whether MediaConvert generates images for trick play. Keep the
-- default value, None (NONE), to not generate any images. Choose Thumbnail
-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
-- full-resolution images of single frames. MediaConvert creates a child
-- manifest for each set of images that you generate and adds corresponding
-- entries to the parent manifest. A common application for these images is
-- Roku trick mode. The thumbnails and full-frame images that MediaConvert
-- creates with this feature are compatible with this Roku specification:
-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
--
-- 'additionalManifests', 'hlsGroupSettings_additionalManifests' - By default, the service creates one top-level .m3u8 HLS manifest for
-- each HLS output group in your job. This default manifest references
-- every output in the output group. To create additional top-level
-- manifests that reference a subset of the outputs in the output group,
-- specify a list of them here.
--
-- 'minSegmentLength', 'hlsGroupSettings_minSegmentLength' - When set, Minimum Segment Size is enforced by looking ahead and back
-- within the specified range for a nearby avail and extending the segment
-- size if needed.
--
-- 'programDateTime', 'hlsGroupSettings_programDateTime' - Includes or excludes EXT-X-PROGRAM-DATE-TIME tag in .m3u8 manifest
-- files. The value is calculated as follows: either the program date and
-- time are initialized using the input timecode source, or the time is
-- initialized using the input timecode source and the date is initialized
-- using the timestamp_offset.
--
-- 'segmentLengthControl', 'hlsGroupSettings_segmentLengthControl' - Specify how you want MediaConvert to determine the segment length.
-- Choose Exact (EXACT) to have the encoder use the exact length that you
-- specify with the setting Segment length (SegmentLength). This might
-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
-- the encoder round up the segment lengths to match the next GOP boundary.
--
-- 'imageBasedTrickPlaySettings', 'hlsGroupSettings_imageBasedTrickPlaySettings' - Tile and thumbnail settings applicable when imageBasedTrickPlay is
-- ADVANCED
--
-- 'programDateTimePeriod', 'hlsGroupSettings_programDateTimePeriod' - Period of insertion of EXT-X-PROGRAM-DATE-TIME entry, in seconds.
--
-- 'codecSpecification', 'hlsGroupSettings_codecSpecification' - Specification to use (RFC-6381 or the default RFC-4281) during m3u8
-- playlist generation.
--
-- 'captionLanguageMappings', 'hlsGroupSettings_captionLanguageMappings' - Language to be used on Caption outputs
--
-- 'baseUrl', 'hlsGroupSettings_baseUrl' - A partial URI prefix that will be prepended to each output in the media
-- .m3u8 file. Can be used if base manifest is delivered from a different
-- URL than the main .m3u8 file.
--
-- 'destinationSettings', 'hlsGroupSettings_destinationSettings' - Settings associated with the destination. Will vary based on the type of
-- destination
--
-- 'minFinalSegmentLength', 'hlsGroupSettings_minFinalSegmentLength' - Keep this setting at the default value of 0, unless you are
-- troubleshooting a problem with how devices play back the end of your
-- video asset. If you know that player devices are hanging on the final
-- segment of your video because the length of your final segment is too
-- short, use this setting to specify a minimum final segment length, in
-- seconds. Choose a value that is greater than or equal to 1 and less than
-- your segment length. When you specify a value for this setting, the
-- encoder will combine any final segment that is shorter than the length
-- that you specify with the previous segment. For example, your segment
-- length is 3 seconds and your final segment is .5 seconds without a
-- minimum final segment length; when you set the minimum final segment
-- length to 1, your final segment is 3.5 seconds.
--
-- 'adMarkers', 'hlsGroupSettings_adMarkers' - Choose one or more ad marker types to decorate your Apple HLS manifest.
-- This setting does not determine whether SCTE-35 markers appear in the
-- outputs themselves.
--
-- 'encryption', 'hlsGroupSettings_encryption' - DRM settings.
--
-- 'segmentLength', 'hlsGroupSettings_segmentLength' - Specify the length, in whole seconds, of each segment. When you don\'t
-- specify a value, MediaConvert defaults to 10. Related settings: Use
-- Segment length control (SegmentLengthControl) to specify whether the
-- encoder enforces this value strictly. Use Segment control
-- (HlsSegmentControl) to specify whether MediaConvert creates separate
-- segment files or one content file that has metadata to mark the segment
-- boundaries.
--
-- 'timedMetadataId3Frame', 'hlsGroupSettings_timedMetadataId3Frame' - Indicates ID3 frame that has the timecode.
--
-- 'outputSelection', 'hlsGroupSettings_outputSelection' - Indicates whether the .m3u8 manifest file should be generated for this
-- HLS output group.
--
-- 'captionLanguageSetting', 'hlsGroupSettings_captionLanguageSetting' - Applies only to 608 Embedded output captions. Insert: Include
-- CLOSED-CAPTIONS lines in the manifest. Specify at least one language in
-- the CC1 Language Code field. One CLOSED-CAPTION line is added for each
-- Language Code you specify. Make sure to specify the languages in the
-- order in which they appear in the original source (if the source is
-- embedded format) or the order of the caption selectors (if the source is
-- other than embedded). Otherwise, languages in the manifest will not
-- match up properly with the output captions. None: Include
-- CLOSED-CAPTIONS=NONE line in the manifest. Omit: Omit any
-- CLOSED-CAPTIONS line from the manifest.
--
-- 'segmentsPerSubdirectory', 'hlsGroupSettings_segmentsPerSubdirectory' - Number of segments to write to a subdirectory before starting a new one.
-- directoryStructure must be SINGLE_DIRECTORY for this setting to have an
-- effect.
--
-- 'manifestDurationFormat', 'hlsGroupSettings_manifestDurationFormat' - Indicates whether the output manifest should use floating point values
-- for segment duration.
--
-- 'audioOnlyHeader', 'hlsGroupSettings_audioOnlyHeader' - Ignore this setting unless you are using FairPlay DRM with Verimatrix
-- and you encounter playback issues. Keep the default value, Include
-- (INCLUDE), to output audio-only headers. Choose Exclude (EXCLUDE) to
-- remove the audio-only headers from your audio segments.
--
-- 'clientCache', 'hlsGroupSettings_clientCache' - Disable this setting only when your workflow requires the
-- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
-- (ENABLED) and control caching in your video distribution set up. For
-- example, use the Cache-Control http header.
--
-- 'timestampDeltaMilliseconds', 'hlsGroupSettings_timestampDeltaMilliseconds' - Provides an extra millisecond delta offset to fine tune the timestamps.
--
-- 'streamInfResolution', 'hlsGroupSettings_streamInfResolution' - Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
-- tag of variant manifest.
--
-- 'manifestCompression', 'hlsGroupSettings_manifestCompression' - When set to GZIP, compresses HLS playlist.
newHlsGroupSettings ::
  HlsGroupSettings
newHlsGroupSettings :: HlsGroupSettings
newHlsGroupSettings =
  HlsGroupSettings' :: Maybe HlsDirectoryStructure
-> Maybe HlsSegmentControl
-> Maybe Text
-> Maybe Int
-> Maybe HlsTargetDurationCompatibilityMode
-> Maybe HlsImageBasedTrickPlay
-> Maybe [HlsAdditionalManifest]
-> Maybe Natural
-> Maybe HlsProgramDateTime
-> Maybe HlsSegmentLengthControl
-> Maybe HlsImageBasedTrickPlaySettings
-> Maybe Natural
-> Maybe HlsCodecSpecification
-> Maybe [HlsCaptionLanguageMapping]
-> Maybe Text
-> Maybe DestinationSettings
-> Maybe Double
-> Maybe [HlsAdMarkers]
-> Maybe HlsEncryptionSettings
-> Maybe Natural
-> Maybe HlsTimedMetadataId3Frame
-> Maybe HlsOutputSelection
-> Maybe HlsCaptionLanguageSetting
-> Maybe Natural
-> Maybe HlsManifestDurationFormat
-> Maybe HlsAudioOnlyHeader
-> Maybe HlsClientCache
-> Maybe Int
-> Maybe HlsStreamInfResolution
-> Maybe HlsManifestCompression
-> HlsGroupSettings
HlsGroupSettings'
    { $sel:directoryStructure:HlsGroupSettings' :: Maybe HlsDirectoryStructure
directoryStructure =
        Maybe HlsDirectoryStructure
forall a. Maybe a
Prelude.Nothing,
      $sel:segmentControl:HlsGroupSettings' :: Maybe HlsSegmentControl
segmentControl = Maybe HlsSegmentControl
forall a. Maybe a
Prelude.Nothing,
      $sel:destination:HlsGroupSettings' :: Maybe Text
destination = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:timedMetadataId3Period:HlsGroupSettings' :: Maybe Int
timedMetadataId3Period = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:targetDurationCompatibilityMode:HlsGroupSettings' :: Maybe HlsTargetDurationCompatibilityMode
targetDurationCompatibilityMode = Maybe HlsTargetDurationCompatibilityMode
forall a. Maybe a
Prelude.Nothing,
      $sel:imageBasedTrickPlay:HlsGroupSettings' :: Maybe HlsImageBasedTrickPlay
imageBasedTrickPlay = Maybe HlsImageBasedTrickPlay
forall a. Maybe a
Prelude.Nothing,
      $sel:additionalManifests:HlsGroupSettings' :: Maybe [HlsAdditionalManifest]
additionalManifests = Maybe [HlsAdditionalManifest]
forall a. Maybe a
Prelude.Nothing,
      $sel:minSegmentLength:HlsGroupSettings' :: Maybe Natural
minSegmentLength = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:programDateTime:HlsGroupSettings' :: Maybe HlsProgramDateTime
programDateTime = Maybe HlsProgramDateTime
forall a. Maybe a
Prelude.Nothing,
      $sel:segmentLengthControl:HlsGroupSettings' :: Maybe HlsSegmentLengthControl
segmentLengthControl = Maybe HlsSegmentLengthControl
forall a. Maybe a
Prelude.Nothing,
      $sel:imageBasedTrickPlaySettings:HlsGroupSettings' :: Maybe HlsImageBasedTrickPlaySettings
imageBasedTrickPlaySettings = Maybe HlsImageBasedTrickPlaySettings
forall a. Maybe a
Prelude.Nothing,
      $sel:programDateTimePeriod:HlsGroupSettings' :: Maybe Natural
programDateTimePeriod = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:codecSpecification:HlsGroupSettings' :: Maybe HlsCodecSpecification
codecSpecification = Maybe HlsCodecSpecification
forall a. Maybe a
Prelude.Nothing,
      $sel:captionLanguageMappings:HlsGroupSettings' :: Maybe [HlsCaptionLanguageMapping]
captionLanguageMappings = Maybe [HlsCaptionLanguageMapping]
forall a. Maybe a
Prelude.Nothing,
      $sel:baseUrl:HlsGroupSettings' :: Maybe Text
baseUrl = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:destinationSettings:HlsGroupSettings' :: Maybe DestinationSettings
destinationSettings = Maybe DestinationSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:minFinalSegmentLength:HlsGroupSettings' :: Maybe Double
minFinalSegmentLength = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:adMarkers:HlsGroupSettings' :: Maybe [HlsAdMarkers]
adMarkers = Maybe [HlsAdMarkers]
forall a. Maybe a
Prelude.Nothing,
      $sel:encryption:HlsGroupSettings' :: Maybe HlsEncryptionSettings
encryption = Maybe HlsEncryptionSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:segmentLength:HlsGroupSettings' :: Maybe Natural
segmentLength = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:timedMetadataId3Frame:HlsGroupSettings' :: Maybe HlsTimedMetadataId3Frame
timedMetadataId3Frame = Maybe HlsTimedMetadataId3Frame
forall a. Maybe a
Prelude.Nothing,
      $sel:outputSelection:HlsGroupSettings' :: Maybe HlsOutputSelection
outputSelection = Maybe HlsOutputSelection
forall a. Maybe a
Prelude.Nothing,
      $sel:captionLanguageSetting:HlsGroupSettings' :: Maybe HlsCaptionLanguageSetting
captionLanguageSetting = Maybe HlsCaptionLanguageSetting
forall a. Maybe a
Prelude.Nothing,
      $sel:segmentsPerSubdirectory:HlsGroupSettings' :: Maybe Natural
segmentsPerSubdirectory = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:manifestDurationFormat:HlsGroupSettings' :: Maybe HlsManifestDurationFormat
manifestDurationFormat = Maybe HlsManifestDurationFormat
forall a. Maybe a
Prelude.Nothing,
      $sel:audioOnlyHeader:HlsGroupSettings' :: Maybe HlsAudioOnlyHeader
audioOnlyHeader = Maybe HlsAudioOnlyHeader
forall a. Maybe a
Prelude.Nothing,
      $sel:clientCache:HlsGroupSettings' :: Maybe HlsClientCache
clientCache = Maybe HlsClientCache
forall a. Maybe a
Prelude.Nothing,
      $sel:timestampDeltaMilliseconds:HlsGroupSettings' :: Maybe Int
timestampDeltaMilliseconds = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:streamInfResolution:HlsGroupSettings' :: Maybe HlsStreamInfResolution
streamInfResolution = Maybe HlsStreamInfResolution
forall a. Maybe a
Prelude.Nothing,
      $sel:manifestCompression:HlsGroupSettings' :: Maybe HlsManifestCompression
manifestCompression = Maybe HlsManifestCompression
forall a. Maybe a
Prelude.Nothing
    }

-- | Indicates whether segments should be placed in subdirectories.
hlsGroupSettings_directoryStructure :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsDirectoryStructure)
hlsGroupSettings_directoryStructure :: (Maybe HlsDirectoryStructure -> f (Maybe HlsDirectoryStructure))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_directoryStructure = (HlsGroupSettings -> Maybe HlsDirectoryStructure)
-> (HlsGroupSettings
    -> Maybe HlsDirectoryStructure -> HlsGroupSettings)
-> Lens
     HlsGroupSettings
     HlsGroupSettings
     (Maybe HlsDirectoryStructure)
     (Maybe HlsDirectoryStructure)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe HlsDirectoryStructure
directoryStructure :: Maybe HlsDirectoryStructure
$sel:directoryStructure:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsDirectoryStructure
directoryStructure} -> Maybe HlsDirectoryStructure
directoryStructure) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe HlsDirectoryStructure
a -> HlsGroupSettings
s {$sel:directoryStructure:HlsGroupSettings' :: Maybe HlsDirectoryStructure
directoryStructure = Maybe HlsDirectoryStructure
a} :: HlsGroupSettings)

-- | When set to SINGLE_FILE, emits program as a single media resource (.ts)
-- file, uses #EXT-X-BYTERANGE tags to index segment for playback.
hlsGroupSettings_segmentControl :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsSegmentControl)
hlsGroupSettings_segmentControl :: (Maybe HlsSegmentControl -> f (Maybe HlsSegmentControl))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_segmentControl = (HlsGroupSettings -> Maybe HlsSegmentControl)
-> (HlsGroupSettings
    -> Maybe HlsSegmentControl -> HlsGroupSettings)
-> Lens
     HlsGroupSettings
     HlsGroupSettings
     (Maybe HlsSegmentControl)
     (Maybe HlsSegmentControl)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe HlsSegmentControl
segmentControl :: Maybe HlsSegmentControl
$sel:segmentControl:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsSegmentControl
segmentControl} -> Maybe HlsSegmentControl
segmentControl) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe HlsSegmentControl
a -> HlsGroupSettings
s {$sel:segmentControl:HlsGroupSettings' :: Maybe HlsSegmentControl
segmentControl = Maybe HlsSegmentControl
a} :: HlsGroupSettings)

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

-- | Timed Metadata interval in seconds.
hlsGroupSettings_timedMetadataId3Period :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Int)
hlsGroupSettings_timedMetadataId3Period :: (Maybe Int -> f (Maybe Int))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_timedMetadataId3Period = (HlsGroupSettings -> Maybe Int)
-> (HlsGroupSettings -> Maybe Int -> HlsGroupSettings)
-> Lens HlsGroupSettings HlsGroupSettings (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe Int
timedMetadataId3Period :: Maybe Int
$sel:timedMetadataId3Period:HlsGroupSettings' :: HlsGroupSettings -> Maybe Int
timedMetadataId3Period} -> Maybe Int
timedMetadataId3Period) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe Int
a -> HlsGroupSettings
s {$sel:timedMetadataId3Period:HlsGroupSettings' :: Maybe Int
timedMetadataId3Period = Maybe Int
a} :: HlsGroupSettings)

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

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

-- | By default, the service creates one top-level .m3u8 HLS manifest for
-- each HLS output group in your job. This default manifest references
-- every output in the output group. To create additional top-level
-- manifests that reference a subset of the outputs in the output group,
-- specify a list of them here.
hlsGroupSettings_additionalManifests :: Lens.Lens' HlsGroupSettings (Prelude.Maybe [HlsAdditionalManifest])
hlsGroupSettings_additionalManifests :: (Maybe [HlsAdditionalManifest]
 -> f (Maybe [HlsAdditionalManifest]))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_additionalManifests = (HlsGroupSettings -> Maybe [HlsAdditionalManifest])
-> (HlsGroupSettings
    -> Maybe [HlsAdditionalManifest] -> HlsGroupSettings)
-> Lens
     HlsGroupSettings
     HlsGroupSettings
     (Maybe [HlsAdditionalManifest])
     (Maybe [HlsAdditionalManifest])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe [HlsAdditionalManifest]
additionalManifests :: Maybe [HlsAdditionalManifest]
$sel:additionalManifests:HlsGroupSettings' :: HlsGroupSettings -> Maybe [HlsAdditionalManifest]
additionalManifests} -> Maybe [HlsAdditionalManifest]
additionalManifests) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe [HlsAdditionalManifest]
a -> HlsGroupSettings
s {$sel:additionalManifests:HlsGroupSettings' :: Maybe [HlsAdditionalManifest]
additionalManifests = Maybe [HlsAdditionalManifest]
a} :: HlsGroupSettings) ((Maybe [HlsAdditionalManifest]
  -> f (Maybe [HlsAdditionalManifest]))
 -> HlsGroupSettings -> f HlsGroupSettings)
-> ((Maybe [HlsAdditionalManifest]
     -> f (Maybe [HlsAdditionalManifest]))
    -> Maybe [HlsAdditionalManifest]
    -> f (Maybe [HlsAdditionalManifest]))
-> (Maybe [HlsAdditionalManifest]
    -> f (Maybe [HlsAdditionalManifest]))
-> HlsGroupSettings
-> f HlsGroupSettings
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [HlsAdditionalManifest]
  [HlsAdditionalManifest]
  [HlsAdditionalManifest]
  [HlsAdditionalManifest]
-> Iso
     (Maybe [HlsAdditionalManifest])
     (Maybe [HlsAdditionalManifest])
     (Maybe [HlsAdditionalManifest])
     (Maybe [HlsAdditionalManifest])
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
  [HlsAdditionalManifest]
  [HlsAdditionalManifest]
  [HlsAdditionalManifest]
  [HlsAdditionalManifest]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | When set, Minimum Segment Size is enforced by looking ahead and back
-- within the specified range for a nearby avail and extending the segment
-- size if needed.
hlsGroupSettings_minSegmentLength :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Natural)
hlsGroupSettings_minSegmentLength :: (Maybe Natural -> f (Maybe Natural))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_minSegmentLength = (HlsGroupSettings -> Maybe Natural)
-> (HlsGroupSettings -> Maybe Natural -> HlsGroupSettings)
-> Lens
     HlsGroupSettings HlsGroupSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe Natural
minSegmentLength :: Maybe Natural
$sel:minSegmentLength:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
minSegmentLength} -> Maybe Natural
minSegmentLength) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe Natural
a -> HlsGroupSettings
s {$sel:minSegmentLength:HlsGroupSettings' :: Maybe Natural
minSegmentLength = Maybe Natural
a} :: HlsGroupSettings)

-- | Includes or excludes EXT-X-PROGRAM-DATE-TIME tag in .m3u8 manifest
-- files. The value is calculated as follows: either the program date and
-- time are initialized using the input timecode source, or the time is
-- initialized using the input timecode source and the date is initialized
-- using the timestamp_offset.
hlsGroupSettings_programDateTime :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsProgramDateTime)
hlsGroupSettings_programDateTime :: (Maybe HlsProgramDateTime -> f (Maybe HlsProgramDateTime))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_programDateTime = (HlsGroupSettings -> Maybe HlsProgramDateTime)
-> (HlsGroupSettings
    -> Maybe HlsProgramDateTime -> HlsGroupSettings)
-> Lens
     HlsGroupSettings
     HlsGroupSettings
     (Maybe HlsProgramDateTime)
     (Maybe HlsProgramDateTime)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe HlsProgramDateTime
programDateTime :: Maybe HlsProgramDateTime
$sel:programDateTime:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsProgramDateTime
programDateTime} -> Maybe HlsProgramDateTime
programDateTime) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe HlsProgramDateTime
a -> HlsGroupSettings
s {$sel:programDateTime:HlsGroupSettings' :: Maybe HlsProgramDateTime
programDateTime = Maybe HlsProgramDateTime
a} :: HlsGroupSettings)

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

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

-- | Period of insertion of EXT-X-PROGRAM-DATE-TIME entry, in seconds.
hlsGroupSettings_programDateTimePeriod :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Natural)
hlsGroupSettings_programDateTimePeriod :: (Maybe Natural -> f (Maybe Natural))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_programDateTimePeriod = (HlsGroupSettings -> Maybe Natural)
-> (HlsGroupSettings -> Maybe Natural -> HlsGroupSettings)
-> Lens
     HlsGroupSettings HlsGroupSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe Natural
programDateTimePeriod :: Maybe Natural
$sel:programDateTimePeriod:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
programDateTimePeriod} -> Maybe Natural
programDateTimePeriod) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe Natural
a -> HlsGroupSettings
s {$sel:programDateTimePeriod:HlsGroupSettings' :: Maybe Natural
programDateTimePeriod = Maybe Natural
a} :: HlsGroupSettings)

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

-- | Language to be used on Caption outputs
hlsGroupSettings_captionLanguageMappings :: Lens.Lens' HlsGroupSettings (Prelude.Maybe [HlsCaptionLanguageMapping])
hlsGroupSettings_captionLanguageMappings :: (Maybe [HlsCaptionLanguageMapping]
 -> f (Maybe [HlsCaptionLanguageMapping]))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_captionLanguageMappings = (HlsGroupSettings -> Maybe [HlsCaptionLanguageMapping])
-> (HlsGroupSettings
    -> Maybe [HlsCaptionLanguageMapping] -> HlsGroupSettings)
-> Lens
     HlsGroupSettings
     HlsGroupSettings
     (Maybe [HlsCaptionLanguageMapping])
     (Maybe [HlsCaptionLanguageMapping])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe [HlsCaptionLanguageMapping]
captionLanguageMappings :: Maybe [HlsCaptionLanguageMapping]
$sel:captionLanguageMappings:HlsGroupSettings' :: HlsGroupSettings -> Maybe [HlsCaptionLanguageMapping]
captionLanguageMappings} -> Maybe [HlsCaptionLanguageMapping]
captionLanguageMappings) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe [HlsCaptionLanguageMapping]
a -> HlsGroupSettings
s {$sel:captionLanguageMappings:HlsGroupSettings' :: Maybe [HlsCaptionLanguageMapping]
captionLanguageMappings = Maybe [HlsCaptionLanguageMapping]
a} :: HlsGroupSettings) ((Maybe [HlsCaptionLanguageMapping]
  -> f (Maybe [HlsCaptionLanguageMapping]))
 -> HlsGroupSettings -> f HlsGroupSettings)
-> ((Maybe [HlsCaptionLanguageMapping]
     -> f (Maybe [HlsCaptionLanguageMapping]))
    -> Maybe [HlsCaptionLanguageMapping]
    -> f (Maybe [HlsCaptionLanguageMapping]))
-> (Maybe [HlsCaptionLanguageMapping]
    -> f (Maybe [HlsCaptionLanguageMapping]))
-> HlsGroupSettings
-> f HlsGroupSettings
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [HlsCaptionLanguageMapping]
  [HlsCaptionLanguageMapping]
  [HlsCaptionLanguageMapping]
  [HlsCaptionLanguageMapping]
-> Iso
     (Maybe [HlsCaptionLanguageMapping])
     (Maybe [HlsCaptionLanguageMapping])
     (Maybe [HlsCaptionLanguageMapping])
     (Maybe [HlsCaptionLanguageMapping])
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
  [HlsCaptionLanguageMapping]
  [HlsCaptionLanguageMapping]
  [HlsCaptionLanguageMapping]
  [HlsCaptionLanguageMapping]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A partial URI prefix that will be prepended to each output in the media
-- .m3u8 file. Can be used if base manifest is delivered from a different
-- URL than the main .m3u8 file.
hlsGroupSettings_baseUrl :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Text)
hlsGroupSettings_baseUrl :: (Maybe Text -> f (Maybe Text))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_baseUrl = (HlsGroupSettings -> Maybe Text)
-> (HlsGroupSettings -> Maybe Text -> HlsGroupSettings)
-> Lens HlsGroupSettings HlsGroupSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe Text
baseUrl :: Maybe Text
$sel:baseUrl:HlsGroupSettings' :: HlsGroupSettings -> Maybe Text
baseUrl} -> Maybe Text
baseUrl) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe Text
a -> HlsGroupSettings
s {$sel:baseUrl:HlsGroupSettings' :: Maybe Text
baseUrl = Maybe Text
a} :: HlsGroupSettings)

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

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

-- | Choose one or more ad marker types to decorate your Apple HLS manifest.
-- This setting does not determine whether SCTE-35 markers appear in the
-- outputs themselves.
hlsGroupSettings_adMarkers :: Lens.Lens' HlsGroupSettings (Prelude.Maybe [HlsAdMarkers])
hlsGroupSettings_adMarkers :: (Maybe [HlsAdMarkers] -> f (Maybe [HlsAdMarkers]))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_adMarkers = (HlsGroupSettings -> Maybe [HlsAdMarkers])
-> (HlsGroupSettings -> Maybe [HlsAdMarkers] -> HlsGroupSettings)
-> Lens
     HlsGroupSettings
     HlsGroupSettings
     (Maybe [HlsAdMarkers])
     (Maybe [HlsAdMarkers])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe [HlsAdMarkers]
adMarkers :: Maybe [HlsAdMarkers]
$sel:adMarkers:HlsGroupSettings' :: HlsGroupSettings -> Maybe [HlsAdMarkers]
adMarkers} -> Maybe [HlsAdMarkers]
adMarkers) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe [HlsAdMarkers]
a -> HlsGroupSettings
s {$sel:adMarkers:HlsGroupSettings' :: Maybe [HlsAdMarkers]
adMarkers = Maybe [HlsAdMarkers]
a} :: HlsGroupSettings) ((Maybe [HlsAdMarkers] -> f (Maybe [HlsAdMarkers]))
 -> HlsGroupSettings -> f HlsGroupSettings)
-> ((Maybe [HlsAdMarkers] -> f (Maybe [HlsAdMarkers]))
    -> Maybe [HlsAdMarkers] -> f (Maybe [HlsAdMarkers]))
-> (Maybe [HlsAdMarkers] -> f (Maybe [HlsAdMarkers]))
-> HlsGroupSettings
-> f HlsGroupSettings
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [HlsAdMarkers] [HlsAdMarkers] [HlsAdMarkers] [HlsAdMarkers]
-> Iso
     (Maybe [HlsAdMarkers])
     (Maybe [HlsAdMarkers])
     (Maybe [HlsAdMarkers])
     (Maybe [HlsAdMarkers])
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 [HlsAdMarkers] [HlsAdMarkers] [HlsAdMarkers] [HlsAdMarkers]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

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

-- | Indicates ID3 frame that has the timecode.
hlsGroupSettings_timedMetadataId3Frame :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsTimedMetadataId3Frame)
hlsGroupSettings_timedMetadataId3Frame :: (Maybe HlsTimedMetadataId3Frame
 -> f (Maybe HlsTimedMetadataId3Frame))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_timedMetadataId3Frame = (HlsGroupSettings -> Maybe HlsTimedMetadataId3Frame)
-> (HlsGroupSettings
    -> Maybe HlsTimedMetadataId3Frame -> HlsGroupSettings)
-> Lens
     HlsGroupSettings
     HlsGroupSettings
     (Maybe HlsTimedMetadataId3Frame)
     (Maybe HlsTimedMetadataId3Frame)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe HlsTimedMetadataId3Frame
timedMetadataId3Frame :: Maybe HlsTimedMetadataId3Frame
$sel:timedMetadataId3Frame:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsTimedMetadataId3Frame
timedMetadataId3Frame} -> Maybe HlsTimedMetadataId3Frame
timedMetadataId3Frame) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe HlsTimedMetadataId3Frame
a -> HlsGroupSettings
s {$sel:timedMetadataId3Frame:HlsGroupSettings' :: Maybe HlsTimedMetadataId3Frame
timedMetadataId3Frame = Maybe HlsTimedMetadataId3Frame
a} :: HlsGroupSettings)

-- | Indicates whether the .m3u8 manifest file should be generated for this
-- HLS output group.
hlsGroupSettings_outputSelection :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsOutputSelection)
hlsGroupSettings_outputSelection :: (Maybe HlsOutputSelection -> f (Maybe HlsOutputSelection))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_outputSelection = (HlsGroupSettings -> Maybe HlsOutputSelection)
-> (HlsGroupSettings
    -> Maybe HlsOutputSelection -> HlsGroupSettings)
-> Lens
     HlsGroupSettings
     HlsGroupSettings
     (Maybe HlsOutputSelection)
     (Maybe HlsOutputSelection)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe HlsOutputSelection
outputSelection :: Maybe HlsOutputSelection
$sel:outputSelection:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsOutputSelection
outputSelection} -> Maybe HlsOutputSelection
outputSelection) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe HlsOutputSelection
a -> HlsGroupSettings
s {$sel:outputSelection:HlsGroupSettings' :: Maybe HlsOutputSelection
outputSelection = Maybe HlsOutputSelection
a} :: HlsGroupSettings)

-- | Applies only to 608 Embedded output captions. Insert: Include
-- CLOSED-CAPTIONS lines in the manifest. Specify at least one language in
-- the CC1 Language Code field. One CLOSED-CAPTION line is added for each
-- Language Code you specify. Make sure to specify the languages in the
-- order in which they appear in the original source (if the source is
-- embedded format) or the order of the caption selectors (if the source is
-- other than embedded). Otherwise, languages in the manifest will not
-- match up properly with the output captions. None: Include
-- CLOSED-CAPTIONS=NONE line in the manifest. Omit: Omit any
-- CLOSED-CAPTIONS line from the manifest.
hlsGroupSettings_captionLanguageSetting :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsCaptionLanguageSetting)
hlsGroupSettings_captionLanguageSetting :: (Maybe HlsCaptionLanguageSetting
 -> f (Maybe HlsCaptionLanguageSetting))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_captionLanguageSetting = (HlsGroupSettings -> Maybe HlsCaptionLanguageSetting)
-> (HlsGroupSettings
    -> Maybe HlsCaptionLanguageSetting -> HlsGroupSettings)
-> Lens
     HlsGroupSettings
     HlsGroupSettings
     (Maybe HlsCaptionLanguageSetting)
     (Maybe HlsCaptionLanguageSetting)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe HlsCaptionLanguageSetting
captionLanguageSetting :: Maybe HlsCaptionLanguageSetting
$sel:captionLanguageSetting:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsCaptionLanguageSetting
captionLanguageSetting} -> Maybe HlsCaptionLanguageSetting
captionLanguageSetting) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe HlsCaptionLanguageSetting
a -> HlsGroupSettings
s {$sel:captionLanguageSetting:HlsGroupSettings' :: Maybe HlsCaptionLanguageSetting
captionLanguageSetting = Maybe HlsCaptionLanguageSetting
a} :: HlsGroupSettings)

-- | Number of segments to write to a subdirectory before starting a new one.
-- directoryStructure must be SINGLE_DIRECTORY for this setting to have an
-- effect.
hlsGroupSettings_segmentsPerSubdirectory :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Natural)
hlsGroupSettings_segmentsPerSubdirectory :: (Maybe Natural -> f (Maybe Natural))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_segmentsPerSubdirectory = (HlsGroupSettings -> Maybe Natural)
-> (HlsGroupSettings -> Maybe Natural -> HlsGroupSettings)
-> Lens
     HlsGroupSettings HlsGroupSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe Natural
segmentsPerSubdirectory :: Maybe Natural
$sel:segmentsPerSubdirectory:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
segmentsPerSubdirectory} -> Maybe Natural
segmentsPerSubdirectory) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe Natural
a -> HlsGroupSettings
s {$sel:segmentsPerSubdirectory:HlsGroupSettings' :: Maybe Natural
segmentsPerSubdirectory = Maybe Natural
a} :: HlsGroupSettings)

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

-- | Ignore this setting unless you are using FairPlay DRM with Verimatrix
-- and you encounter playback issues. Keep the default value, Include
-- (INCLUDE), to output audio-only headers. Choose Exclude (EXCLUDE) to
-- remove the audio-only headers from your audio segments.
hlsGroupSettings_audioOnlyHeader :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsAudioOnlyHeader)
hlsGroupSettings_audioOnlyHeader :: (Maybe HlsAudioOnlyHeader -> f (Maybe HlsAudioOnlyHeader))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_audioOnlyHeader = (HlsGroupSettings -> Maybe HlsAudioOnlyHeader)
-> (HlsGroupSettings
    -> Maybe HlsAudioOnlyHeader -> HlsGroupSettings)
-> Lens
     HlsGroupSettings
     HlsGroupSettings
     (Maybe HlsAudioOnlyHeader)
     (Maybe HlsAudioOnlyHeader)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe HlsAudioOnlyHeader
audioOnlyHeader :: Maybe HlsAudioOnlyHeader
$sel:audioOnlyHeader:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsAudioOnlyHeader
audioOnlyHeader} -> Maybe HlsAudioOnlyHeader
audioOnlyHeader) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe HlsAudioOnlyHeader
a -> HlsGroupSettings
s {$sel:audioOnlyHeader:HlsGroupSettings' :: Maybe HlsAudioOnlyHeader
audioOnlyHeader = Maybe HlsAudioOnlyHeader
a} :: HlsGroupSettings)

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

-- | Provides an extra millisecond delta offset to fine tune the timestamps.
hlsGroupSettings_timestampDeltaMilliseconds :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Int)
hlsGroupSettings_timestampDeltaMilliseconds :: (Maybe Int -> f (Maybe Int))
-> HlsGroupSettings -> f HlsGroupSettings
hlsGroupSettings_timestampDeltaMilliseconds = (HlsGroupSettings -> Maybe Int)
-> (HlsGroupSettings -> Maybe Int -> HlsGroupSettings)
-> Lens HlsGroupSettings HlsGroupSettings (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe Int
timestampDeltaMilliseconds :: Maybe Int
$sel:timestampDeltaMilliseconds:HlsGroupSettings' :: HlsGroupSettings -> Maybe Int
timestampDeltaMilliseconds} -> Maybe Int
timestampDeltaMilliseconds) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe Int
a -> HlsGroupSettings
s {$sel:timestampDeltaMilliseconds:HlsGroupSettings' :: Maybe Int
timestampDeltaMilliseconds = Maybe Int
a} :: HlsGroupSettings)

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

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

instance Core.FromJSON HlsGroupSettings where
  parseJSON :: Value -> Parser HlsGroupSettings
parseJSON =
    String
-> (Object -> Parser HlsGroupSettings)
-> Value
-> Parser HlsGroupSettings
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"HlsGroupSettings"
      ( \Object
x ->
          Maybe HlsDirectoryStructure
-> Maybe HlsSegmentControl
-> Maybe Text
-> Maybe Int
-> Maybe HlsTargetDurationCompatibilityMode
-> Maybe HlsImageBasedTrickPlay
-> Maybe [HlsAdditionalManifest]
-> Maybe Natural
-> Maybe HlsProgramDateTime
-> Maybe HlsSegmentLengthControl
-> Maybe HlsImageBasedTrickPlaySettings
-> Maybe Natural
-> Maybe HlsCodecSpecification
-> Maybe [HlsCaptionLanguageMapping]
-> Maybe Text
-> Maybe DestinationSettings
-> Maybe Double
-> Maybe [HlsAdMarkers]
-> Maybe HlsEncryptionSettings
-> Maybe Natural
-> Maybe HlsTimedMetadataId3Frame
-> Maybe HlsOutputSelection
-> Maybe HlsCaptionLanguageSetting
-> Maybe Natural
-> Maybe HlsManifestDurationFormat
-> Maybe HlsAudioOnlyHeader
-> Maybe HlsClientCache
-> Maybe Int
-> Maybe HlsStreamInfResolution
-> Maybe HlsManifestCompression
-> HlsGroupSettings
HlsGroupSettings'
            (Maybe HlsDirectoryStructure
 -> Maybe HlsSegmentControl
 -> Maybe Text
 -> Maybe Int
 -> Maybe HlsTargetDurationCompatibilityMode
 -> Maybe HlsImageBasedTrickPlay
 -> Maybe [HlsAdditionalManifest]
 -> Maybe Natural
 -> Maybe HlsProgramDateTime
 -> Maybe HlsSegmentLengthControl
 -> Maybe HlsImageBasedTrickPlaySettings
 -> Maybe Natural
 -> Maybe HlsCodecSpecification
 -> Maybe [HlsCaptionLanguageMapping]
 -> Maybe Text
 -> Maybe DestinationSettings
 -> Maybe Double
 -> Maybe [HlsAdMarkers]
 -> Maybe HlsEncryptionSettings
 -> Maybe Natural
 -> Maybe HlsTimedMetadataId3Frame
 -> Maybe HlsOutputSelection
 -> Maybe HlsCaptionLanguageSetting
 -> Maybe Natural
 -> Maybe HlsManifestDurationFormat
 -> Maybe HlsAudioOnlyHeader
 -> Maybe HlsClientCache
 -> Maybe Int
 -> Maybe HlsStreamInfResolution
 -> Maybe HlsManifestCompression
 -> HlsGroupSettings)
-> Parser (Maybe HlsDirectoryStructure)
-> Parser
     (Maybe HlsSegmentControl
      -> Maybe Text
      -> Maybe Int
      -> Maybe HlsTargetDurationCompatibilityMode
      -> Maybe HlsImageBasedTrickPlay
      -> Maybe [HlsAdditionalManifest]
      -> Maybe Natural
      -> Maybe HlsProgramDateTime
      -> Maybe HlsSegmentLengthControl
      -> Maybe HlsImageBasedTrickPlaySettings
      -> Maybe Natural
      -> Maybe HlsCodecSpecification
      -> Maybe [HlsCaptionLanguageMapping]
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe HlsDirectoryStructure)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"directoryStructure")
            Parser
  (Maybe HlsSegmentControl
   -> Maybe Text
   -> Maybe Int
   -> Maybe HlsTargetDurationCompatibilityMode
   -> Maybe HlsImageBasedTrickPlay
   -> Maybe [HlsAdditionalManifest]
   -> Maybe Natural
   -> Maybe HlsProgramDateTime
   -> Maybe HlsSegmentLengthControl
   -> Maybe HlsImageBasedTrickPlaySettings
   -> Maybe Natural
   -> Maybe HlsCodecSpecification
   -> Maybe [HlsCaptionLanguageMapping]
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsSegmentControl)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe HlsTargetDurationCompatibilityMode
      -> Maybe HlsImageBasedTrickPlay
      -> Maybe [HlsAdditionalManifest]
      -> Maybe Natural
      -> Maybe HlsProgramDateTime
      -> Maybe HlsSegmentLengthControl
      -> Maybe HlsImageBasedTrickPlaySettings
      -> Maybe Natural
      -> Maybe HlsCodecSpecification
      -> Maybe [HlsCaptionLanguageMapping]
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsSegmentControl)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"segmentControl")
            Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe HlsTargetDurationCompatibilityMode
   -> Maybe HlsImageBasedTrickPlay
   -> Maybe [HlsAdditionalManifest]
   -> Maybe Natural
   -> Maybe HlsProgramDateTime
   -> Maybe HlsSegmentLengthControl
   -> Maybe HlsImageBasedTrickPlaySettings
   -> Maybe Natural
   -> Maybe HlsCodecSpecification
   -> Maybe [HlsCaptionLanguageMapping]
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe HlsTargetDurationCompatibilityMode
      -> Maybe HlsImageBasedTrickPlay
      -> Maybe [HlsAdditionalManifest]
      -> Maybe Natural
      -> Maybe HlsProgramDateTime
      -> Maybe HlsSegmentLengthControl
      -> Maybe HlsImageBasedTrickPlaySettings
      -> Maybe Natural
      -> Maybe HlsCodecSpecification
      -> Maybe [HlsCaptionLanguageMapping]
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
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 Int
   -> Maybe HlsTargetDurationCompatibilityMode
   -> Maybe HlsImageBasedTrickPlay
   -> Maybe [HlsAdditionalManifest]
   -> Maybe Natural
   -> Maybe HlsProgramDateTime
   -> Maybe HlsSegmentLengthControl
   -> Maybe HlsImageBasedTrickPlaySettings
   -> Maybe Natural
   -> Maybe HlsCodecSpecification
   -> Maybe [HlsCaptionLanguageMapping]
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe Int)
-> Parser
     (Maybe HlsTargetDurationCompatibilityMode
      -> Maybe HlsImageBasedTrickPlay
      -> Maybe [HlsAdditionalManifest]
      -> Maybe Natural
      -> Maybe HlsProgramDateTime
      -> Maybe HlsSegmentLengthControl
      -> Maybe HlsImageBasedTrickPlaySettings
      -> Maybe Natural
      -> Maybe HlsCodecSpecification
      -> Maybe [HlsCaptionLanguageMapping]
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"timedMetadataId3Period")
            Parser
  (Maybe HlsTargetDurationCompatibilityMode
   -> Maybe HlsImageBasedTrickPlay
   -> Maybe [HlsAdditionalManifest]
   -> Maybe Natural
   -> Maybe HlsProgramDateTime
   -> Maybe HlsSegmentLengthControl
   -> Maybe HlsImageBasedTrickPlaySettings
   -> Maybe Natural
   -> Maybe HlsCodecSpecification
   -> Maybe [HlsCaptionLanguageMapping]
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsTargetDurationCompatibilityMode)
-> Parser
     (Maybe HlsImageBasedTrickPlay
      -> Maybe [HlsAdditionalManifest]
      -> Maybe Natural
      -> Maybe HlsProgramDateTime
      -> Maybe HlsSegmentLengthControl
      -> Maybe HlsImageBasedTrickPlaySettings
      -> Maybe Natural
      -> Maybe HlsCodecSpecification
      -> Maybe [HlsCaptionLanguageMapping]
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsTargetDurationCompatibilityMode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"targetDurationCompatibilityMode")
            Parser
  (Maybe HlsImageBasedTrickPlay
   -> Maybe [HlsAdditionalManifest]
   -> Maybe Natural
   -> Maybe HlsProgramDateTime
   -> Maybe HlsSegmentLengthControl
   -> Maybe HlsImageBasedTrickPlaySettings
   -> Maybe Natural
   -> Maybe HlsCodecSpecification
   -> Maybe [HlsCaptionLanguageMapping]
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsImageBasedTrickPlay)
-> Parser
     (Maybe [HlsAdditionalManifest]
      -> Maybe Natural
      -> Maybe HlsProgramDateTime
      -> Maybe HlsSegmentLengthControl
      -> Maybe HlsImageBasedTrickPlaySettings
      -> Maybe Natural
      -> Maybe HlsCodecSpecification
      -> Maybe [HlsCaptionLanguageMapping]
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsImageBasedTrickPlay)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"imageBasedTrickPlay")
            Parser
  (Maybe [HlsAdditionalManifest]
   -> Maybe Natural
   -> Maybe HlsProgramDateTime
   -> Maybe HlsSegmentLengthControl
   -> Maybe HlsImageBasedTrickPlaySettings
   -> Maybe Natural
   -> Maybe HlsCodecSpecification
   -> Maybe [HlsCaptionLanguageMapping]
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe [HlsAdditionalManifest])
-> Parser
     (Maybe Natural
      -> Maybe HlsProgramDateTime
      -> Maybe HlsSegmentLengthControl
      -> Maybe HlsImageBasedTrickPlaySettings
      -> Maybe Natural
      -> Maybe HlsCodecSpecification
      -> Maybe [HlsCaptionLanguageMapping]
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [HlsAdditionalManifest]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"additionalManifests"
                            Parser (Maybe (Maybe [HlsAdditionalManifest]))
-> Maybe [HlsAdditionalManifest]
-> Parser (Maybe [HlsAdditionalManifest])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [HlsAdditionalManifest]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Natural
   -> Maybe HlsProgramDateTime
   -> Maybe HlsSegmentLengthControl
   -> Maybe HlsImageBasedTrickPlaySettings
   -> Maybe Natural
   -> Maybe HlsCodecSpecification
   -> Maybe [HlsCaptionLanguageMapping]
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe HlsProgramDateTime
      -> Maybe HlsSegmentLengthControl
      -> Maybe HlsImageBasedTrickPlaySettings
      -> Maybe Natural
      -> Maybe HlsCodecSpecification
      -> Maybe [HlsCaptionLanguageMapping]
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
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
"minSegmentLength")
            Parser
  (Maybe HlsProgramDateTime
   -> Maybe HlsSegmentLengthControl
   -> Maybe HlsImageBasedTrickPlaySettings
   -> Maybe Natural
   -> Maybe HlsCodecSpecification
   -> Maybe [HlsCaptionLanguageMapping]
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsProgramDateTime)
-> Parser
     (Maybe HlsSegmentLengthControl
      -> Maybe HlsImageBasedTrickPlaySettings
      -> Maybe Natural
      -> Maybe HlsCodecSpecification
      -> Maybe [HlsCaptionLanguageMapping]
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsProgramDateTime)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"programDateTime")
            Parser
  (Maybe HlsSegmentLengthControl
   -> Maybe HlsImageBasedTrickPlaySettings
   -> Maybe Natural
   -> Maybe HlsCodecSpecification
   -> Maybe [HlsCaptionLanguageMapping]
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsSegmentLengthControl)
-> Parser
     (Maybe HlsImageBasedTrickPlaySettings
      -> Maybe Natural
      -> Maybe HlsCodecSpecification
      -> Maybe [HlsCaptionLanguageMapping]
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsSegmentLengthControl)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"segmentLengthControl")
            Parser
  (Maybe HlsImageBasedTrickPlaySettings
   -> Maybe Natural
   -> Maybe HlsCodecSpecification
   -> Maybe [HlsCaptionLanguageMapping]
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsImageBasedTrickPlaySettings)
-> Parser
     (Maybe Natural
      -> Maybe HlsCodecSpecification
      -> Maybe [HlsCaptionLanguageMapping]
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsImageBasedTrickPlaySettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"imageBasedTrickPlaySettings")
            Parser
  (Maybe Natural
   -> Maybe HlsCodecSpecification
   -> Maybe [HlsCaptionLanguageMapping]
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe HlsCodecSpecification
      -> Maybe [HlsCaptionLanguageMapping]
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
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
"programDateTimePeriod")
            Parser
  (Maybe HlsCodecSpecification
   -> Maybe [HlsCaptionLanguageMapping]
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsCodecSpecification)
-> Parser
     (Maybe [HlsCaptionLanguageMapping]
      -> Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsCodecSpecification)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"codecSpecification")
            Parser
  (Maybe [HlsCaptionLanguageMapping]
   -> Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe [HlsCaptionLanguageMapping])
-> Parser
     (Maybe Text
      -> Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object
-> Text -> Parser (Maybe (Maybe [HlsCaptionLanguageMapping]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"captionLanguageMappings"
                            Parser (Maybe (Maybe [HlsCaptionLanguageMapping]))
-> Maybe [HlsCaptionLanguageMapping]
-> Parser (Maybe [HlsCaptionLanguageMapping])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [HlsCaptionLanguageMapping]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Text
   -> Maybe DestinationSettings
   -> Maybe Double
   -> Maybe [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe DestinationSettings
      -> Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
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 [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe DestinationSettings)
-> Parser
     (Maybe Double
      -> Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
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 [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe Double)
-> Parser
     (Maybe [HlsAdMarkers]
      -> Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
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 [HlsAdMarkers]
   -> Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe [HlsAdMarkers])
-> Parser
     (Maybe HlsEncryptionSettings
      -> Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [HlsAdMarkers]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"adMarkers" Parser (Maybe (Maybe [HlsAdMarkers]))
-> Maybe [HlsAdMarkers] -> Parser (Maybe [HlsAdMarkers])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [HlsAdMarkers]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe HlsEncryptionSettings
   -> Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsEncryptionSettings)
-> Parser
     (Maybe Natural
      -> Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsEncryptionSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"encryption")
            Parser
  (Maybe Natural
   -> Maybe HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe HlsTimedMetadataId3Frame
      -> Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
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 HlsTimedMetadataId3Frame
   -> Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsTimedMetadataId3Frame)
-> Parser
     (Maybe HlsOutputSelection
      -> Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsTimedMetadataId3Frame)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"timedMetadataId3Frame")
            Parser
  (Maybe HlsOutputSelection
   -> Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsOutputSelection)
-> Parser
     (Maybe HlsCaptionLanguageSetting
      -> Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsOutputSelection)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"outputSelection")
            Parser
  (Maybe HlsCaptionLanguageSetting
   -> Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsCaptionLanguageSetting)
-> Parser
     (Maybe Natural
      -> Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsCaptionLanguageSetting)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"captionLanguageSetting")
            Parser
  (Maybe Natural
   -> Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe HlsManifestDurationFormat
      -> Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
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
"segmentsPerSubdirectory")
            Parser
  (Maybe HlsManifestDurationFormat
   -> Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsManifestDurationFormat)
-> Parser
     (Maybe HlsAudioOnlyHeader
      -> Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsManifestDurationFormat)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"manifestDurationFormat")
            Parser
  (Maybe HlsAudioOnlyHeader
   -> Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsAudioOnlyHeader)
-> Parser
     (Maybe HlsClientCache
      -> Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsAudioOnlyHeader)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"audioOnlyHeader")
            Parser
  (Maybe HlsClientCache
   -> Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe HlsClientCache)
-> Parser
     (Maybe Int
      -> Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression
      -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsClientCache)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"clientCache")
            Parser
  (Maybe Int
   -> Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression
   -> HlsGroupSettings)
-> Parser (Maybe Int)
-> Parser
     (Maybe HlsStreamInfResolution
      -> Maybe HlsManifestCompression -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"timestampDeltaMilliseconds")
            Parser
  (Maybe HlsStreamInfResolution
   -> Maybe HlsManifestCompression -> HlsGroupSettings)
-> Parser (Maybe HlsStreamInfResolution)
-> Parser (Maybe HlsManifestCompression -> HlsGroupSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsStreamInfResolution)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"streamInfResolution")
            Parser (Maybe HlsManifestCompression -> HlsGroupSettings)
-> Parser (Maybe HlsManifestCompression) -> Parser HlsGroupSettings
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsManifestCompression)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"manifestCompression")
      )

instance Prelude.Hashable HlsGroupSettings

instance Prelude.NFData HlsGroupSettings

instance Core.ToJSON HlsGroupSettings where
  toJSON :: HlsGroupSettings -> Value
toJSON HlsGroupSettings' {Maybe Double
Maybe Int
Maybe Natural
Maybe [HlsAdMarkers]
Maybe [HlsAdditionalManifest]
Maybe [HlsCaptionLanguageMapping]
Maybe Text
Maybe HlsAudioOnlyHeader
Maybe HlsCaptionLanguageSetting
Maybe HlsClientCache
Maybe HlsCodecSpecification
Maybe HlsDirectoryStructure
Maybe HlsImageBasedTrickPlay
Maybe HlsImageBasedTrickPlaySettings
Maybe HlsManifestCompression
Maybe HlsManifestDurationFormat
Maybe HlsOutputSelection
Maybe HlsProgramDateTime
Maybe HlsSegmentControl
Maybe HlsSegmentLengthControl
Maybe HlsStreamInfResolution
Maybe HlsTargetDurationCompatibilityMode
Maybe HlsTimedMetadataId3Frame
Maybe DestinationSettings
Maybe HlsEncryptionSettings
manifestCompression :: Maybe HlsManifestCompression
streamInfResolution :: Maybe HlsStreamInfResolution
timestampDeltaMilliseconds :: Maybe Int
clientCache :: Maybe HlsClientCache
audioOnlyHeader :: Maybe HlsAudioOnlyHeader
manifestDurationFormat :: Maybe HlsManifestDurationFormat
segmentsPerSubdirectory :: Maybe Natural
captionLanguageSetting :: Maybe HlsCaptionLanguageSetting
outputSelection :: Maybe HlsOutputSelection
timedMetadataId3Frame :: Maybe HlsTimedMetadataId3Frame
segmentLength :: Maybe Natural
encryption :: Maybe HlsEncryptionSettings
adMarkers :: Maybe [HlsAdMarkers]
minFinalSegmentLength :: Maybe Double
destinationSettings :: Maybe DestinationSettings
baseUrl :: Maybe Text
captionLanguageMappings :: Maybe [HlsCaptionLanguageMapping]
codecSpecification :: Maybe HlsCodecSpecification
programDateTimePeriod :: Maybe Natural
imageBasedTrickPlaySettings :: Maybe HlsImageBasedTrickPlaySettings
segmentLengthControl :: Maybe HlsSegmentLengthControl
programDateTime :: Maybe HlsProgramDateTime
minSegmentLength :: Maybe Natural
additionalManifests :: Maybe [HlsAdditionalManifest]
imageBasedTrickPlay :: Maybe HlsImageBasedTrickPlay
targetDurationCompatibilityMode :: Maybe HlsTargetDurationCompatibilityMode
timedMetadataId3Period :: Maybe Int
destination :: Maybe Text
segmentControl :: Maybe HlsSegmentControl
directoryStructure :: Maybe HlsDirectoryStructure
$sel:manifestCompression:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsManifestCompression
$sel:streamInfResolution:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsStreamInfResolution
$sel:timestampDeltaMilliseconds:HlsGroupSettings' :: HlsGroupSettings -> Maybe Int
$sel:clientCache:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsClientCache
$sel:audioOnlyHeader:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsAudioOnlyHeader
$sel:manifestDurationFormat:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsManifestDurationFormat
$sel:segmentsPerSubdirectory:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
$sel:captionLanguageSetting:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsCaptionLanguageSetting
$sel:outputSelection:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsOutputSelection
$sel:timedMetadataId3Frame:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsTimedMetadataId3Frame
$sel:segmentLength:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
$sel:encryption:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsEncryptionSettings
$sel:adMarkers:HlsGroupSettings' :: HlsGroupSettings -> Maybe [HlsAdMarkers]
$sel:minFinalSegmentLength:HlsGroupSettings' :: HlsGroupSettings -> Maybe Double
$sel:destinationSettings:HlsGroupSettings' :: HlsGroupSettings -> Maybe DestinationSettings
$sel:baseUrl:HlsGroupSettings' :: HlsGroupSettings -> Maybe Text
$sel:captionLanguageMappings:HlsGroupSettings' :: HlsGroupSettings -> Maybe [HlsCaptionLanguageMapping]
$sel:codecSpecification:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsCodecSpecification
$sel:programDateTimePeriod:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
$sel:imageBasedTrickPlaySettings:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsImageBasedTrickPlaySettings
$sel:segmentLengthControl:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsSegmentLengthControl
$sel:programDateTime:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsProgramDateTime
$sel:minSegmentLength:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
$sel:additionalManifests:HlsGroupSettings' :: HlsGroupSettings -> Maybe [HlsAdditionalManifest]
$sel:imageBasedTrickPlay:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsImageBasedTrickPlay
$sel:targetDurationCompatibilityMode:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsTargetDurationCompatibilityMode
$sel:timedMetadataId3Period:HlsGroupSettings' :: HlsGroupSettings -> Maybe Int
$sel:destination:HlsGroupSettings' :: HlsGroupSettings -> Maybe Text
$sel:segmentControl:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsSegmentControl
$sel:directoryStructure:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsDirectoryStructure
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"directoryStructure" Text -> HlsDirectoryStructure -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsDirectoryStructure -> Pair)
-> Maybe HlsDirectoryStructure -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsDirectoryStructure
directoryStructure,
            (Text
"segmentControl" Text -> HlsSegmentControl -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsSegmentControl -> Pair)
-> Maybe HlsSegmentControl -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsSegmentControl
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
"timedMetadataId3Period" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
timedMetadataId3Period,
            (Text
"targetDurationCompatibilityMode" Text -> HlsTargetDurationCompatibilityMode -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsTargetDurationCompatibilityMode -> Pair)
-> Maybe HlsTargetDurationCompatibilityMode -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsTargetDurationCompatibilityMode
targetDurationCompatibilityMode,
            (Text
"imageBasedTrickPlay" Text -> HlsImageBasedTrickPlay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsImageBasedTrickPlay -> Pair)
-> Maybe HlsImageBasedTrickPlay -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsImageBasedTrickPlay
imageBasedTrickPlay,
            (Text
"additionalManifests" Text -> [HlsAdditionalManifest] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([HlsAdditionalManifest] -> Pair)
-> Maybe [HlsAdditionalManifest] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [HlsAdditionalManifest]
additionalManifests,
            (Text
"minSegmentLength" 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
minSegmentLength,
            (Text
"programDateTime" Text -> HlsProgramDateTime -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsProgramDateTime -> Pair)
-> Maybe HlsProgramDateTime -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsProgramDateTime
programDateTime,
            (Text
"segmentLengthControl" Text -> HlsSegmentLengthControl -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsSegmentLengthControl -> Pair)
-> Maybe HlsSegmentLengthControl -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsSegmentLengthControl
segmentLengthControl,
            (Text
"imageBasedTrickPlaySettings" Text -> HlsImageBasedTrickPlaySettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsImageBasedTrickPlaySettings -> Pair)
-> Maybe HlsImageBasedTrickPlaySettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsImageBasedTrickPlaySettings
imageBasedTrickPlaySettings,
            (Text
"programDateTimePeriod" 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
programDateTimePeriod,
            (Text
"codecSpecification" Text -> HlsCodecSpecification -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsCodecSpecification -> Pair)
-> Maybe HlsCodecSpecification -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsCodecSpecification
codecSpecification,
            (Text
"captionLanguageMappings" Text -> [HlsCaptionLanguageMapping] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([HlsCaptionLanguageMapping] -> Pair)
-> Maybe [HlsCaptionLanguageMapping] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [HlsCaptionLanguageMapping]
captionLanguageMappings,
            (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
"adMarkers" Text -> [HlsAdMarkers] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) ([HlsAdMarkers] -> Pair) -> Maybe [HlsAdMarkers] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [HlsAdMarkers]
adMarkers,
            (Text
"encryption" Text -> HlsEncryptionSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (HlsEncryptionSettings -> Pair)
-> Maybe HlsEncryptionSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsEncryptionSettings
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
"timedMetadataId3Frame" Text -> HlsTimedMetadataId3Frame -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsTimedMetadataId3Frame -> Pair)
-> Maybe HlsTimedMetadataId3Frame -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsTimedMetadataId3Frame
timedMetadataId3Frame,
            (Text
"outputSelection" Text -> HlsOutputSelection -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsOutputSelection -> Pair)
-> Maybe HlsOutputSelection -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsOutputSelection
outputSelection,
            (Text
"captionLanguageSetting" Text -> HlsCaptionLanguageSetting -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsCaptionLanguageSetting -> Pair)
-> Maybe HlsCaptionLanguageSetting -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsCaptionLanguageSetting
captionLanguageSetting,
            (Text
"segmentsPerSubdirectory" 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
segmentsPerSubdirectory,
            (Text
"manifestDurationFormat" Text -> HlsManifestDurationFormat -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsManifestDurationFormat -> Pair)
-> Maybe HlsManifestDurationFormat -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsManifestDurationFormat
manifestDurationFormat,
            (Text
"audioOnlyHeader" Text -> HlsAudioOnlyHeader -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsAudioOnlyHeader -> Pair)
-> Maybe HlsAudioOnlyHeader -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsAudioOnlyHeader
audioOnlyHeader,
            (Text
"clientCache" Text -> HlsClientCache -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (HlsClientCache -> Pair) -> Maybe HlsClientCache -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsClientCache
clientCache,
            (Text
"timestampDeltaMilliseconds" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
timestampDeltaMilliseconds,
            (Text
"streamInfResolution" Text -> HlsStreamInfResolution -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsStreamInfResolution -> Pair)
-> Maybe HlsStreamInfResolution -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsStreamInfResolution
streamInfResolution,
            (Text
"manifestCompression" Text -> HlsManifestCompression -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HlsManifestCompression -> Pair)
-> Maybe HlsManifestCompression -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsManifestCompression
manifestCompression
          ]
      )