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

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

-- |
-- Module      : Amazonka.MediaConvert.Types.HlsGroupSettings
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.MediaConvert.Types.HlsGroupSettings where

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

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

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

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

-- | Ignore this setting unless you are using FairPlay DRM with Verimatrix
-- and you encounter playback issues. Keep the default value, Include
-- (INCLUDE), to output audio-only headers. Choose Exclude (EXCLUDE) to
-- remove the audio-only headers from your audio segments.
hlsGroupSettings_audioOnlyHeader :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsAudioOnlyHeader)
hlsGroupSettings_audioOnlyHeader :: Lens' HlsGroupSettings (Maybe HlsAudioOnlyHeader)
hlsGroupSettings_audioOnlyHeader = 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)

-- | A partial URI prefix that will be prepended to each output in the media
-- .m3u8 file. Can be used if base manifest is delivered from a different
-- URL than the main .m3u8 file.
hlsGroupSettings_baseUrl :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Text)
hlsGroupSettings_baseUrl :: Lens' HlsGroupSettings (Maybe Text)
hlsGroupSettings_baseUrl = 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)

-- | Language to be used on Caption outputs
hlsGroupSettings_captionLanguageMappings :: Lens.Lens' HlsGroupSettings (Prelude.Maybe [HlsCaptionLanguageMapping])
hlsGroupSettings_captionLanguageMappings :: Lens' HlsGroupSettings (Maybe [HlsCaptionLanguageMapping])
hlsGroupSettings_captionLanguageMappings = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

-- | Set Caption segment length control (CaptionSegmentLengthControl) to
-- Match video (MATCH_VIDEO) to create caption segments that align with the
-- video segments from the first video output in this output group. For
-- example, if the video segments are 2 seconds long, your WebVTT segments
-- will also be 2 seconds long. Keep the default setting, Large segments
-- (LARGE_SEGMENTS) to create caption segments that are 300 seconds long.
hlsGroupSettings_captionSegmentLengthControl :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsCaptionSegmentLengthControl)
hlsGroupSettings_captionSegmentLengthControl :: Lens' HlsGroupSettings (Maybe HlsCaptionSegmentLengthControl)
hlsGroupSettings_captionSegmentLengthControl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\HlsGroupSettings' {Maybe HlsCaptionSegmentLengthControl
captionSegmentLengthControl :: Maybe HlsCaptionSegmentLengthControl
$sel:captionSegmentLengthControl:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsCaptionSegmentLengthControl
captionSegmentLengthControl} -> Maybe HlsCaptionSegmentLengthControl
captionSegmentLengthControl) (\s :: HlsGroupSettings
s@HlsGroupSettings' {} Maybe HlsCaptionSegmentLengthControl
a -> HlsGroupSettings
s {$sel:captionSegmentLengthControl:HlsGroupSettings' :: Maybe HlsCaptionSegmentLengthControl
captionSegmentLengthControl = Maybe HlsCaptionSegmentLengthControl
a} :: HlsGroupSettings)

-- | Disable this setting only when your workflow requires the
-- #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled
-- (ENABLED) and control caching in your video distribution set up. For
-- example, use the Cache-Control http header.
hlsGroupSettings_clientCache :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsClientCache)
hlsGroupSettings_clientCache :: Lens' HlsGroupSettings (Maybe HlsClientCache)
hlsGroupSettings_clientCache = 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)

-- | Specification to use (RFC-6381 or the default RFC-4281) during m3u8
-- playlist generation.
hlsGroupSettings_codecSpecification :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsCodecSpecification)
hlsGroupSettings_codecSpecification :: Lens' HlsGroupSettings (Maybe HlsCodecSpecification)
hlsGroupSettings_codecSpecification = 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)

-- | Use Destination (Destination) to specify the S3 output location and the
-- output filename base. Destination accepts format identifiers. If you do
-- not specify the base filename in the URI, the service will use the
-- filename of the input file. If your job has multiple inputs, the service
-- uses the filename of the first input file.
hlsGroupSettings_destination :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Text)
hlsGroupSettings_destination :: Lens' HlsGroupSettings (Maybe Text)
hlsGroupSettings_destination = 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)

-- | Settings associated with the destination. Will vary based on the type of
-- destination
hlsGroupSettings_destinationSettings :: Lens.Lens' HlsGroupSettings (Prelude.Maybe DestinationSettings)
hlsGroupSettings_destinationSettings :: Lens' HlsGroupSettings (Maybe DestinationSettings)
hlsGroupSettings_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)

-- | Indicates whether segments should be placed in subdirectories.
hlsGroupSettings_directoryStructure :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsDirectoryStructure)
hlsGroupSettings_directoryStructure :: Lens' HlsGroupSettings (Maybe HlsDirectoryStructure)
hlsGroupSettings_directoryStructure = 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)

-- | DRM settings.
hlsGroupSettings_encryption :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsEncryptionSettings)
hlsGroupSettings_encryption :: Lens' HlsGroupSettings (Maybe HlsEncryptionSettings)
hlsGroupSettings_encryption = 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 whether MediaConvert generates images for trick play. Keep the
-- default value, None (NONE), to not generate any images. Choose Thumbnail
-- (THUMBNAIL) to generate tiled thumbnails. Choose Thumbnail and full
-- frame (THUMBNAIL_AND_FULLFRAME) to generate tiled thumbnails and
-- full-resolution images of single frames. MediaConvert creates a child
-- manifest for each set of images that you generate and adds corresponding
-- entries to the parent manifest. A common application for these images is
-- Roku trick mode. The thumbnails and full-frame images that MediaConvert
-- creates with this feature are compatible with this Roku specification:
-- https:\/\/developer.roku.com\/docs\/developer-program\/media-playback\/trick-mode\/hls-and-dash.md
hlsGroupSettings_imageBasedTrickPlay :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsImageBasedTrickPlay)
hlsGroupSettings_imageBasedTrickPlay :: Lens' HlsGroupSettings (Maybe HlsImageBasedTrickPlay)
hlsGroupSettings_imageBasedTrickPlay = 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)

-- | Tile and thumbnail settings applicable when imageBasedTrickPlay is
-- ADVANCED
hlsGroupSettings_imageBasedTrickPlaySettings :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsImageBasedTrickPlaySettings)
hlsGroupSettings_imageBasedTrickPlaySettings :: Lens' HlsGroupSettings (Maybe HlsImageBasedTrickPlaySettings)
hlsGroupSettings_imageBasedTrickPlaySettings = 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)

-- | When set to GZIP, compresses HLS playlist.
hlsGroupSettings_manifestCompression :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsManifestCompression)
hlsGroupSettings_manifestCompression :: Lens' HlsGroupSettings (Maybe HlsManifestCompression)
hlsGroupSettings_manifestCompression = 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)

-- | Indicates whether the output manifest should use floating point values
-- for segment duration.
hlsGroupSettings_manifestDurationFormat :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsManifestDurationFormat)
hlsGroupSettings_manifestDurationFormat :: Lens' HlsGroupSettings (Maybe HlsManifestDurationFormat)
hlsGroupSettings_manifestDurationFormat = 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)

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

-- | When set, Minimum Segment Size is enforced by looking ahead and back
-- within the specified range for a nearby avail and extending the segment
-- size if needed.
hlsGroupSettings_minSegmentLength :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Natural)
hlsGroupSettings_minSegmentLength :: Lens' HlsGroupSettings (Maybe Natural)
hlsGroupSettings_minSegmentLength = 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)

-- | Indicates whether the .m3u8 manifest file should be generated for this
-- HLS output group.
hlsGroupSettings_outputSelection :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsOutputSelection)
hlsGroupSettings_outputSelection :: Lens' HlsGroupSettings (Maybe HlsOutputSelection)
hlsGroupSettings_outputSelection = 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)

-- | Includes or excludes EXT-X-PROGRAM-DATE-TIME tag in .m3u8 manifest
-- files. The value is calculated as follows: either the program date and
-- time are initialized using the input timecode source, or the time is
-- initialized using the input timecode source and the date is initialized
-- using the timestamp_offset.
hlsGroupSettings_programDateTime :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsProgramDateTime)
hlsGroupSettings_programDateTime :: Lens' HlsGroupSettings (Maybe HlsProgramDateTime)
hlsGroupSettings_programDateTime = 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)

-- | Period of insertion of EXT-X-PROGRAM-DATE-TIME entry, in seconds.
hlsGroupSettings_programDateTimePeriod :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Natural)
hlsGroupSettings_programDateTimePeriod :: Lens' HlsGroupSettings (Maybe Natural)
hlsGroupSettings_programDateTimePeriod = 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)

-- | When set to SINGLE_FILE, emits program as a single media resource (.ts)
-- file, uses #EXT-X-BYTERANGE tags to index segment for playback.
hlsGroupSettings_segmentControl :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsSegmentControl)
hlsGroupSettings_segmentControl :: Lens' HlsGroupSettings (Maybe HlsSegmentControl)
hlsGroupSettings_segmentControl = 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)

-- | Specify the length, in whole seconds, of each segment. When you don\'t
-- specify a value, MediaConvert defaults to 10. Related settings: Use
-- Segment length control (SegmentLengthControl) to specify whether the
-- encoder enforces this value strictly. Use Segment control
-- (HlsSegmentControl) to specify whether MediaConvert creates separate
-- segment files or one content file that has metadata to mark the segment
-- boundaries.
hlsGroupSettings_segmentLength :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Natural)
hlsGroupSettings_segmentLength :: Lens' HlsGroupSettings (Maybe Natural)
hlsGroupSettings_segmentLength = 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)

-- | Specify how you want MediaConvert to determine the segment length.
-- Choose Exact (EXACT) to have the encoder use the exact length that you
-- specify with the setting Segment length (SegmentLength). This might
-- result in extra I-frames. Choose Multiple of GOP (GOP_MULTIPLE) to have
-- the encoder round up the segment lengths to match the next GOP boundary.
hlsGroupSettings_segmentLengthControl :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsSegmentLengthControl)
hlsGroupSettings_segmentLengthControl :: Lens' HlsGroupSettings (Maybe HlsSegmentLengthControl)
hlsGroupSettings_segmentLengthControl = 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)

-- | Number of segments to write to a subdirectory before starting a new one.
-- directoryStructure must be SINGLE_DIRECTORY for this setting to have an
-- effect.
hlsGroupSettings_segmentsPerSubdirectory :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Natural)
hlsGroupSettings_segmentsPerSubdirectory :: Lens' HlsGroupSettings (Maybe Natural)
hlsGroupSettings_segmentsPerSubdirectory = 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)

-- | Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF
-- tag of variant manifest.
hlsGroupSettings_streamInfResolution :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsStreamInfResolution)
hlsGroupSettings_streamInfResolution :: Lens' HlsGroupSettings (Maybe HlsStreamInfResolution)
hlsGroupSettings_streamInfResolution = 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 LEGACY, the segment target duration is always rounded up to
-- the nearest integer value above its current value in seconds. When set
-- to SPEC\\\\_COMPLIANT, the segment target duration is rounded up to the
-- nearest integer value if fraction seconds are greater than or equal to
-- 0.5 (>= 0.5) and rounded down if less than 0.5 (\< 0.5). You may need to
-- use LEGACY if your client needs to ensure that the target duration is
-- always longer than the actual duration of the segment. Some older
-- players may experience interrupted playback when the actual duration of
-- a track in a segment is longer than the target duration.
hlsGroupSettings_targetDurationCompatibilityMode :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsTargetDurationCompatibilityMode)
hlsGroupSettings_targetDurationCompatibilityMode :: Lens' HlsGroupSettings (Maybe HlsTargetDurationCompatibilityMode)
hlsGroupSettings_targetDurationCompatibilityMode = 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 the type of the ID3 frame (timedMetadataId3Frame) to use for ID3
-- timestamps (timedMetadataId3Period) in your output. To include ID3
-- timestamps: Specify PRIV (PRIV) or TDRL (TDRL) and set ID3 metadata
-- (timedMetadata) to Passthrough (PASSTHROUGH). To exclude ID3 timestamps:
-- Set ID3 timestamp frame type to None (NONE).
hlsGroupSettings_timedMetadataId3Frame :: Lens.Lens' HlsGroupSettings (Prelude.Maybe HlsTimedMetadataId3Frame)
hlsGroupSettings_timedMetadataId3Frame :: Lens' HlsGroupSettings (Maybe HlsTimedMetadataId3Frame)
hlsGroupSettings_timedMetadataId3Frame = 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)

-- | Specify the interval in seconds to write ID3 timestamps in your output.
-- The first timestamp starts at the output timecode and date, and
-- increases incrementally with each ID3 timestamp. To use the default
-- interval of 10 seconds: Leave blank. To include this metadata in your
-- output: Set ID3 timestamp frame type (timedMetadataId3Frame) to PRIV
-- (PRIV) or TDRL (TDRL), and set ID3 metadata (timedMetadata) to
-- Passthrough (PASSTHROUGH).
hlsGroupSettings_timedMetadataId3Period :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Int)
hlsGroupSettings_timedMetadataId3Period :: Lens' HlsGroupSettings (Maybe Int)
hlsGroupSettings_timedMetadataId3Period = 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)

-- | Provides an extra millisecond delta offset to fine tune the timestamps.
hlsGroupSettings_timestampDeltaMilliseconds :: Lens.Lens' HlsGroupSettings (Prelude.Maybe Prelude.Int)
hlsGroupSettings_timestampDeltaMilliseconds :: Lens' HlsGroupSettings (Maybe Int)
hlsGroupSettings_timestampDeltaMilliseconds = 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)

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

instance Prelude.Hashable HlsGroupSettings where
  hashWithSalt :: Int -> HlsGroupSettings -> Int
hashWithSalt Int
_salt HlsGroupSettings' {Maybe Double
Maybe Int
Maybe Natural
Maybe [HlsAdMarkers]
Maybe [HlsAdditionalManifest]
Maybe [HlsCaptionLanguageMapping]
Maybe Text
Maybe HlsAudioOnlyHeader
Maybe HlsCaptionLanguageSetting
Maybe HlsCaptionSegmentLengthControl
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
timestampDeltaMilliseconds :: Maybe Int
timedMetadataId3Period :: Maybe Int
timedMetadataId3Frame :: Maybe HlsTimedMetadataId3Frame
targetDurationCompatibilityMode :: Maybe HlsTargetDurationCompatibilityMode
streamInfResolution :: Maybe HlsStreamInfResolution
segmentsPerSubdirectory :: Maybe Natural
segmentLengthControl :: Maybe HlsSegmentLengthControl
segmentLength :: Maybe Natural
segmentControl :: Maybe HlsSegmentControl
programDateTimePeriod :: Maybe Natural
programDateTime :: Maybe HlsProgramDateTime
outputSelection :: Maybe HlsOutputSelection
minSegmentLength :: Maybe Natural
minFinalSegmentLength :: Maybe Double
manifestDurationFormat :: Maybe HlsManifestDurationFormat
manifestCompression :: Maybe HlsManifestCompression
imageBasedTrickPlaySettings :: Maybe HlsImageBasedTrickPlaySettings
imageBasedTrickPlay :: Maybe HlsImageBasedTrickPlay
encryption :: Maybe HlsEncryptionSettings
directoryStructure :: Maybe HlsDirectoryStructure
destinationSettings :: Maybe DestinationSettings
destination :: Maybe Text
codecSpecification :: Maybe HlsCodecSpecification
clientCache :: Maybe HlsClientCache
captionSegmentLengthControl :: Maybe HlsCaptionSegmentLengthControl
captionLanguageSetting :: Maybe HlsCaptionLanguageSetting
captionLanguageMappings :: Maybe [HlsCaptionLanguageMapping]
baseUrl :: Maybe Text
audioOnlyHeader :: Maybe HlsAudioOnlyHeader
additionalManifests :: Maybe [HlsAdditionalManifest]
adMarkers :: Maybe [HlsAdMarkers]
$sel:timestampDeltaMilliseconds:HlsGroupSettings' :: HlsGroupSettings -> Maybe Int
$sel:timedMetadataId3Period:HlsGroupSettings' :: HlsGroupSettings -> Maybe Int
$sel:timedMetadataId3Frame:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsTimedMetadataId3Frame
$sel:targetDurationCompatibilityMode:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsTargetDurationCompatibilityMode
$sel:streamInfResolution:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsStreamInfResolution
$sel:segmentsPerSubdirectory:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
$sel:segmentLengthControl:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsSegmentLengthControl
$sel:segmentLength:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
$sel:segmentControl:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsSegmentControl
$sel:programDateTimePeriod:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
$sel:programDateTime:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsProgramDateTime
$sel:outputSelection:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsOutputSelection
$sel:minSegmentLength:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
$sel:minFinalSegmentLength:HlsGroupSettings' :: HlsGroupSettings -> Maybe Double
$sel:manifestDurationFormat:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsManifestDurationFormat
$sel:manifestCompression:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsManifestCompression
$sel:imageBasedTrickPlaySettings:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsImageBasedTrickPlaySettings
$sel:imageBasedTrickPlay:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsImageBasedTrickPlay
$sel:encryption:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsEncryptionSettings
$sel:directoryStructure:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsDirectoryStructure
$sel:destinationSettings:HlsGroupSettings' :: HlsGroupSettings -> Maybe DestinationSettings
$sel:destination:HlsGroupSettings' :: HlsGroupSettings -> Maybe Text
$sel:codecSpecification:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsCodecSpecification
$sel:clientCache:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsClientCache
$sel:captionSegmentLengthControl:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsCaptionSegmentLengthControl
$sel:captionLanguageSetting:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsCaptionLanguageSetting
$sel:captionLanguageMappings:HlsGroupSettings' :: HlsGroupSettings -> Maybe [HlsCaptionLanguageMapping]
$sel:baseUrl:HlsGroupSettings' :: HlsGroupSettings -> Maybe Text
$sel:audioOnlyHeader:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsAudioOnlyHeader
$sel:additionalManifests:HlsGroupSettings' :: HlsGroupSettings -> Maybe [HlsAdditionalManifest]
$sel:adMarkers:HlsGroupSettings' :: HlsGroupSettings -> Maybe [HlsAdMarkers]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [HlsAdMarkers]
adMarkers
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [HlsAdditionalManifest]
additionalManifests
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsAudioOnlyHeader
audioOnlyHeader
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
baseUrl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [HlsCaptionLanguageMapping]
captionLanguageMappings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsCaptionLanguageSetting
captionLanguageSetting
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsCaptionSegmentLengthControl
captionSegmentLengthControl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsClientCache
clientCache
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsCodecSpecification
codecSpecification
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
destination
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DestinationSettings
destinationSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsDirectoryStructure
directoryStructure
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsEncryptionSettings
encryption
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsImageBasedTrickPlay
imageBasedTrickPlay
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsImageBasedTrickPlaySettings
imageBasedTrickPlaySettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsManifestCompression
manifestCompression
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsManifestDurationFormat
manifestDurationFormat
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
minFinalSegmentLength
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
minSegmentLength
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsOutputSelection
outputSelection
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsProgramDateTime
programDateTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
programDateTimePeriod
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsSegmentControl
segmentControl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
segmentLength
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsSegmentLengthControl
segmentLengthControl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
segmentsPerSubdirectory
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsStreamInfResolution
streamInfResolution
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsTargetDurationCompatibilityMode
targetDurationCompatibilityMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsTimedMetadataId3Frame
timedMetadataId3Frame
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
timedMetadataId3Period
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
timestampDeltaMilliseconds

instance Prelude.NFData HlsGroupSettings where
  rnf :: HlsGroupSettings -> ()
rnf HlsGroupSettings' {Maybe Double
Maybe Int
Maybe Natural
Maybe [HlsAdMarkers]
Maybe [HlsAdditionalManifest]
Maybe [HlsCaptionLanguageMapping]
Maybe Text
Maybe HlsAudioOnlyHeader
Maybe HlsCaptionLanguageSetting
Maybe HlsCaptionSegmentLengthControl
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
timestampDeltaMilliseconds :: Maybe Int
timedMetadataId3Period :: Maybe Int
timedMetadataId3Frame :: Maybe HlsTimedMetadataId3Frame
targetDurationCompatibilityMode :: Maybe HlsTargetDurationCompatibilityMode
streamInfResolution :: Maybe HlsStreamInfResolution
segmentsPerSubdirectory :: Maybe Natural
segmentLengthControl :: Maybe HlsSegmentLengthControl
segmentLength :: Maybe Natural
segmentControl :: Maybe HlsSegmentControl
programDateTimePeriod :: Maybe Natural
programDateTime :: Maybe HlsProgramDateTime
outputSelection :: Maybe HlsOutputSelection
minSegmentLength :: Maybe Natural
minFinalSegmentLength :: Maybe Double
manifestDurationFormat :: Maybe HlsManifestDurationFormat
manifestCompression :: Maybe HlsManifestCompression
imageBasedTrickPlaySettings :: Maybe HlsImageBasedTrickPlaySettings
imageBasedTrickPlay :: Maybe HlsImageBasedTrickPlay
encryption :: Maybe HlsEncryptionSettings
directoryStructure :: Maybe HlsDirectoryStructure
destinationSettings :: Maybe DestinationSettings
destination :: Maybe Text
codecSpecification :: Maybe HlsCodecSpecification
clientCache :: Maybe HlsClientCache
captionSegmentLengthControl :: Maybe HlsCaptionSegmentLengthControl
captionLanguageSetting :: Maybe HlsCaptionLanguageSetting
captionLanguageMappings :: Maybe [HlsCaptionLanguageMapping]
baseUrl :: Maybe Text
audioOnlyHeader :: Maybe HlsAudioOnlyHeader
additionalManifests :: Maybe [HlsAdditionalManifest]
adMarkers :: Maybe [HlsAdMarkers]
$sel:timestampDeltaMilliseconds:HlsGroupSettings' :: HlsGroupSettings -> Maybe Int
$sel:timedMetadataId3Period:HlsGroupSettings' :: HlsGroupSettings -> Maybe Int
$sel:timedMetadataId3Frame:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsTimedMetadataId3Frame
$sel:targetDurationCompatibilityMode:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsTargetDurationCompatibilityMode
$sel:streamInfResolution:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsStreamInfResolution
$sel:segmentsPerSubdirectory:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
$sel:segmentLengthControl:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsSegmentLengthControl
$sel:segmentLength:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
$sel:segmentControl:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsSegmentControl
$sel:programDateTimePeriod:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
$sel:programDateTime:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsProgramDateTime
$sel:outputSelection:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsOutputSelection
$sel:minSegmentLength:HlsGroupSettings' :: HlsGroupSettings -> Maybe Natural
$sel:minFinalSegmentLength:HlsGroupSettings' :: HlsGroupSettings -> Maybe Double
$sel:manifestDurationFormat:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsManifestDurationFormat
$sel:manifestCompression:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsManifestCompression
$sel:imageBasedTrickPlaySettings:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsImageBasedTrickPlaySettings
$sel:imageBasedTrickPlay:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsImageBasedTrickPlay
$sel:encryption:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsEncryptionSettings
$sel:directoryStructure:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsDirectoryStructure
$sel:destinationSettings:HlsGroupSettings' :: HlsGroupSettings -> Maybe DestinationSettings
$sel:destination:HlsGroupSettings' :: HlsGroupSettings -> Maybe Text
$sel:codecSpecification:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsCodecSpecification
$sel:clientCache:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsClientCache
$sel:captionSegmentLengthControl:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsCaptionSegmentLengthControl
$sel:captionLanguageSetting:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsCaptionLanguageSetting
$sel:captionLanguageMappings:HlsGroupSettings' :: HlsGroupSettings -> Maybe [HlsCaptionLanguageMapping]
$sel:baseUrl:HlsGroupSettings' :: HlsGroupSettings -> Maybe Text
$sel:audioOnlyHeader:HlsGroupSettings' :: HlsGroupSettings -> Maybe HlsAudioOnlyHeader
$sel:additionalManifests:HlsGroupSettings' :: HlsGroupSettings -> Maybe [HlsAdditionalManifest]
$sel:adMarkers:HlsGroupSettings' :: HlsGroupSettings -> Maybe [HlsAdMarkers]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [HlsAdMarkers]
adMarkers
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [HlsAdditionalManifest]
additionalManifests
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsAudioOnlyHeader
audioOnlyHeader
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
baseUrl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [HlsCaptionLanguageMapping]
captionLanguageMappings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsCaptionLanguageSetting
captionLanguageSetting
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsCaptionSegmentLengthControl
captionSegmentLengthControl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsClientCache
clientCache
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsCodecSpecification
codecSpecification
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
destination
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DestinationSettings
destinationSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsDirectoryStructure
directoryStructure
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsEncryptionSettings
encryption
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsImageBasedTrickPlay
imageBasedTrickPlay
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsImageBasedTrickPlaySettings
imageBasedTrickPlaySettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsManifestCompression
manifestCompression
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsManifestDurationFormat
manifestDurationFormat
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
minFinalSegmentLength
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
minSegmentLength
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsOutputSelection
outputSelection
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsProgramDateTime
programDateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Natural
programDateTimePeriod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe HlsSegmentControl
segmentControl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Natural
segmentLength
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe HlsSegmentLengthControl
segmentLengthControl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Natural
segmentsPerSubdirectory
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe HlsStreamInfResolution
streamInfResolution
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe HlsTargetDurationCompatibilityMode
targetDurationCompatibilityMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe HlsTimedMetadataId3Frame
timedMetadataId3Frame
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Int
timedMetadataId3Period
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Int
timestampDeltaMilliseconds

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