{-# 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.M3u8Settings
-- 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.M3u8Settings 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.M3u8AudioDuration
import Amazonka.MediaConvert.Types.M3u8DataPtsControl
import Amazonka.MediaConvert.Types.M3u8NielsenId3
import Amazonka.MediaConvert.Types.M3u8PcrControl
import Amazonka.MediaConvert.Types.M3u8Scte35Source
import Amazonka.MediaConvert.Types.TimedMetadata
import qualified Amazonka.Prelude as Prelude

-- | These settings relate to the MPEG-2 transport stream (MPEG2-TS)
-- container for the MPEG2-TS segments in your HLS outputs.
--
-- /See:/ 'newM3u8Settings' smart constructor.
data M3u8Settings = M3u8Settings'
  { -- | Specify this setting only when your output will be consumed by a
    -- downstream repackaging workflow that is sensitive to very small duration
    -- differences between video and audio. For this situation, choose Match
    -- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
    -- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
    -- choose Match video duration, MediaConvert pads the output audio streams
    -- with silence or trims them to ensure that the total duration of each
    -- audio stream is at least as long as the total duration of the video
    -- stream. After padding or trimming, the audio stream duration is no more
    -- than one frame longer than the video stream. MediaConvert applies audio
    -- padding or trimming only to the end of the last segment of the output.
    -- For unsegmented outputs, MediaConvert adds padding only to the end of
    -- the file. When you keep the default value, any minor discrepancies
    -- between audio and video duration will depend on your output audio codec.
    M3u8Settings -> Maybe M3u8AudioDuration
audioDuration :: Prelude.Maybe M3u8AudioDuration,
    -- | The number of audio frames to insert for each PES packet.
    M3u8Settings -> Maybe Natural
audioFramesPerPes :: Prelude.Maybe Prelude.Natural,
    -- | Packet Identifier (PID) of the elementary audio stream(s) in the
    -- transport stream. Multiple values are accepted, and can be entered in
    -- ranges and\/or by comma separation.
    M3u8Settings -> Maybe [Natural]
audioPids :: Prelude.Maybe [Prelude.Natural],
    -- | If you select ALIGN_TO_VIDEO, MediaConvert writes captions and data
    -- packets with Presentation Timestamp (PTS) values greater than or equal
    -- to the first video packet PTS (MediaConvert drops captions and data
    -- packets with lesser PTS values). Keep the default value (AUTO) to allow
    -- all PTS values.
    M3u8Settings -> Maybe M3u8DataPtsControl
dataPTSControl :: Prelude.Maybe M3u8DataPtsControl,
    -- | Specify the maximum time, in milliseconds, between Program Clock
    -- References (PCRs) inserted into the transport stream.
    M3u8Settings -> Maybe Natural
maxPcrInterval :: Prelude.Maybe Prelude.Natural,
    -- | If INSERT, Nielsen inaudible tones for media tracking will be detected
    -- in the input audio and an equivalent ID3 tag will be inserted in the
    -- output.
    M3u8Settings -> Maybe M3u8NielsenId3
nielsenId3 :: Prelude.Maybe M3u8NielsenId3,
    -- | The number of milliseconds between instances of this table in the output
    -- transport stream.
    M3u8Settings -> Maybe Natural
patInterval :: Prelude.Maybe Prelude.Natural,
    -- | When set to PCR_EVERY_PES_PACKET a Program Clock Reference value is
    -- inserted for every Packetized Elementary Stream (PES) header. This
    -- parameter is effective only when the PCR PID is the same as the video or
    -- audio elementary stream.
    M3u8Settings -> Maybe M3u8PcrControl
pcrControl :: Prelude.Maybe M3u8PcrControl,
    -- | Packet Identifier (PID) of the Program Clock Reference (PCR) in the
    -- transport stream. When no value is given, the encoder will assign the
    -- same value as the Video PID.
    M3u8Settings -> Maybe Natural
pcrPid :: Prelude.Maybe Prelude.Natural,
    -- | The number of milliseconds between instances of this table in the output
    -- transport stream.
    M3u8Settings -> Maybe Natural
pmtInterval :: Prelude.Maybe Prelude.Natural,
    -- | Packet Identifier (PID) for the Program Map Table (PMT) in the transport
    -- stream.
    M3u8Settings -> Maybe Natural
pmtPid :: Prelude.Maybe Prelude.Natural,
    -- | Packet Identifier (PID) of the private metadata stream in the transport
    -- stream.
    M3u8Settings -> Maybe Natural
privateMetadataPid :: Prelude.Maybe Prelude.Natural,
    -- | The value of the program number field in the Program Map Table.
    M3u8Settings -> Maybe Natural
programNumber :: Prelude.Maybe Prelude.Natural,
    -- | Packet Identifier (PID) of the SCTE-35 stream in the transport stream.
    M3u8Settings -> Maybe Natural
scte35Pid :: Prelude.Maybe Prelude.Natural,
    -- | For SCTE-35 markers from your input-- Choose Passthrough (PASSTHROUGH)
    -- if you want SCTE-35 markers that appear in your input to also appear in
    -- this output. Choose None (NONE) if you don\'t want SCTE-35 markers in
    -- this output. For SCTE-35 markers from an ESAM XML document-- Choose None
    -- (NONE) if you don\'t want manifest conditioning. Choose Passthrough
    -- (PASSTHROUGH) and choose Ad markers (adMarkers) if you do want manifest
    -- conditioning. In both cases, also provide the ESAM XML as a string in
    -- the setting Signal processing notification XML (sccXml).
    M3u8Settings -> Maybe M3u8Scte35Source
scte35Source :: Prelude.Maybe M3u8Scte35Source,
    -- | Set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH) to include
    -- ID3 metadata in this output. This includes ID3 metadata from the
    -- following features: ID3 timestamp period (timedMetadataId3Period), and
    -- Custom ID3 metadata inserter (timedMetadataInsertion). To exclude this
    -- ID3 metadata in this output: set ID3 metadata to None (NONE) or leave
    -- blank.
    M3u8Settings -> Maybe TimedMetadata
timedMetadata :: Prelude.Maybe TimedMetadata,
    -- | Packet Identifier (PID) of the ID3 metadata stream in the transport
    -- stream.
    M3u8Settings -> Maybe Natural
timedMetadataPid :: Prelude.Maybe Prelude.Natural,
    -- | The value of the transport stream ID field in the Program Map Table.
    M3u8Settings -> Maybe Natural
transportStreamId :: Prelude.Maybe Prelude.Natural,
    -- | Packet Identifier (PID) of the elementary video stream in the transport
    -- stream.
    M3u8Settings -> Maybe Natural
videoPid :: Prelude.Maybe Prelude.Natural
  }
  deriving (M3u8Settings -> M3u8Settings -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: M3u8Settings -> M3u8Settings -> Bool
$c/= :: M3u8Settings -> M3u8Settings -> Bool
== :: M3u8Settings -> M3u8Settings -> Bool
$c== :: M3u8Settings -> M3u8Settings -> Bool
Prelude.Eq, ReadPrec [M3u8Settings]
ReadPrec M3u8Settings
Int -> ReadS M3u8Settings
ReadS [M3u8Settings]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [M3u8Settings]
$creadListPrec :: ReadPrec [M3u8Settings]
readPrec :: ReadPrec M3u8Settings
$creadPrec :: ReadPrec M3u8Settings
readList :: ReadS [M3u8Settings]
$creadList :: ReadS [M3u8Settings]
readsPrec :: Int -> ReadS M3u8Settings
$creadsPrec :: Int -> ReadS M3u8Settings
Prelude.Read, Int -> M3u8Settings -> ShowS
[M3u8Settings] -> ShowS
M3u8Settings -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [M3u8Settings] -> ShowS
$cshowList :: [M3u8Settings] -> ShowS
show :: M3u8Settings -> String
$cshow :: M3u8Settings -> String
showsPrec :: Int -> M3u8Settings -> ShowS
$cshowsPrec :: Int -> M3u8Settings -> ShowS
Prelude.Show, forall x. Rep M3u8Settings x -> M3u8Settings
forall x. M3u8Settings -> Rep M3u8Settings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep M3u8Settings x -> M3u8Settings
$cfrom :: forall x. M3u8Settings -> Rep M3u8Settings x
Prelude.Generic)

-- |
-- Create a value of 'M3u8Settings' 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:
--
-- 'audioDuration', 'm3u8Settings_audioDuration' - Specify this setting only when your output will be consumed by a
-- downstream repackaging workflow that is sensitive to very small duration
-- differences between video and audio. For this situation, choose Match
-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
-- choose Match video duration, MediaConvert pads the output audio streams
-- with silence or trims them to ensure that the total duration of each
-- audio stream is at least as long as the total duration of the video
-- stream. After padding or trimming, the audio stream duration is no more
-- than one frame longer than the video stream. MediaConvert applies audio
-- padding or trimming only to the end of the last segment of the output.
-- For unsegmented outputs, MediaConvert adds padding only to the end of
-- the file. When you keep the default value, any minor discrepancies
-- between audio and video duration will depend on your output audio codec.
--
-- 'audioFramesPerPes', 'm3u8Settings_audioFramesPerPes' - The number of audio frames to insert for each PES packet.
--
-- 'audioPids', 'm3u8Settings_audioPids' - Packet Identifier (PID) of the elementary audio stream(s) in the
-- transport stream. Multiple values are accepted, and can be entered in
-- ranges and\/or by comma separation.
--
-- 'dataPTSControl', 'm3u8Settings_dataPTSControl' - If you select ALIGN_TO_VIDEO, MediaConvert writes captions and data
-- packets with Presentation Timestamp (PTS) values greater than or equal
-- to the first video packet PTS (MediaConvert drops captions and data
-- packets with lesser PTS values). Keep the default value (AUTO) to allow
-- all PTS values.
--
-- 'maxPcrInterval', 'm3u8Settings_maxPcrInterval' - Specify the maximum time, in milliseconds, between Program Clock
-- References (PCRs) inserted into the transport stream.
--
-- 'nielsenId3', 'm3u8Settings_nielsenId3' - If INSERT, Nielsen inaudible tones for media tracking will be detected
-- in the input audio and an equivalent ID3 tag will be inserted in the
-- output.
--
-- 'patInterval', 'm3u8Settings_patInterval' - The number of milliseconds between instances of this table in the output
-- transport stream.
--
-- 'pcrControl', 'm3u8Settings_pcrControl' - When set to PCR_EVERY_PES_PACKET a Program Clock Reference value is
-- inserted for every Packetized Elementary Stream (PES) header. This
-- parameter is effective only when the PCR PID is the same as the video or
-- audio elementary stream.
--
-- 'pcrPid', 'm3u8Settings_pcrPid' - Packet Identifier (PID) of the Program Clock Reference (PCR) in the
-- transport stream. When no value is given, the encoder will assign the
-- same value as the Video PID.
--
-- 'pmtInterval', 'm3u8Settings_pmtInterval' - The number of milliseconds between instances of this table in the output
-- transport stream.
--
-- 'pmtPid', 'm3u8Settings_pmtPid' - Packet Identifier (PID) for the Program Map Table (PMT) in the transport
-- stream.
--
-- 'privateMetadataPid', 'm3u8Settings_privateMetadataPid' - Packet Identifier (PID) of the private metadata stream in the transport
-- stream.
--
-- 'programNumber', 'm3u8Settings_programNumber' - The value of the program number field in the Program Map Table.
--
-- 'scte35Pid', 'm3u8Settings_scte35Pid' - Packet Identifier (PID) of the SCTE-35 stream in the transport stream.
--
-- 'scte35Source', 'm3u8Settings_scte35Source' - For SCTE-35 markers from your input-- Choose Passthrough (PASSTHROUGH)
-- if you want SCTE-35 markers that appear in your input to also appear in
-- this output. Choose None (NONE) if you don\'t want SCTE-35 markers in
-- this output. For SCTE-35 markers from an ESAM XML document-- Choose None
-- (NONE) if you don\'t want manifest conditioning. Choose Passthrough
-- (PASSTHROUGH) and choose Ad markers (adMarkers) if you do want manifest
-- conditioning. In both cases, also provide the ESAM XML as a string in
-- the setting Signal processing notification XML (sccXml).
--
-- 'timedMetadata', 'm3u8Settings_timedMetadata' - Set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH) to include
-- ID3 metadata in this output. This includes ID3 metadata from the
-- following features: ID3 timestamp period (timedMetadataId3Period), and
-- Custom ID3 metadata inserter (timedMetadataInsertion). To exclude this
-- ID3 metadata in this output: set ID3 metadata to None (NONE) or leave
-- blank.
--
-- 'timedMetadataPid', 'm3u8Settings_timedMetadataPid' - Packet Identifier (PID) of the ID3 metadata stream in the transport
-- stream.
--
-- 'transportStreamId', 'm3u8Settings_transportStreamId' - The value of the transport stream ID field in the Program Map Table.
--
-- 'videoPid', 'm3u8Settings_videoPid' - Packet Identifier (PID) of the elementary video stream in the transport
-- stream.
newM3u8Settings ::
  M3u8Settings
newM3u8Settings :: M3u8Settings
newM3u8Settings =
  M3u8Settings'
    { $sel:audioDuration:M3u8Settings' :: Maybe M3u8AudioDuration
audioDuration = forall a. Maybe a
Prelude.Nothing,
      $sel:audioFramesPerPes:M3u8Settings' :: Maybe Natural
audioFramesPerPes = forall a. Maybe a
Prelude.Nothing,
      $sel:audioPids:M3u8Settings' :: Maybe [Natural]
audioPids = forall a. Maybe a
Prelude.Nothing,
      $sel:dataPTSControl:M3u8Settings' :: Maybe M3u8DataPtsControl
dataPTSControl = forall a. Maybe a
Prelude.Nothing,
      $sel:maxPcrInterval:M3u8Settings' :: Maybe Natural
maxPcrInterval = forall a. Maybe a
Prelude.Nothing,
      $sel:nielsenId3:M3u8Settings' :: Maybe M3u8NielsenId3
nielsenId3 = forall a. Maybe a
Prelude.Nothing,
      $sel:patInterval:M3u8Settings' :: Maybe Natural
patInterval = forall a. Maybe a
Prelude.Nothing,
      $sel:pcrControl:M3u8Settings' :: Maybe M3u8PcrControl
pcrControl = forall a. Maybe a
Prelude.Nothing,
      $sel:pcrPid:M3u8Settings' :: Maybe Natural
pcrPid = forall a. Maybe a
Prelude.Nothing,
      $sel:pmtInterval:M3u8Settings' :: Maybe Natural
pmtInterval = forall a. Maybe a
Prelude.Nothing,
      $sel:pmtPid:M3u8Settings' :: Maybe Natural
pmtPid = forall a. Maybe a
Prelude.Nothing,
      $sel:privateMetadataPid:M3u8Settings' :: Maybe Natural
privateMetadataPid = forall a. Maybe a
Prelude.Nothing,
      $sel:programNumber:M3u8Settings' :: Maybe Natural
programNumber = forall a. Maybe a
Prelude.Nothing,
      $sel:scte35Pid:M3u8Settings' :: Maybe Natural
scte35Pid = forall a. Maybe a
Prelude.Nothing,
      $sel:scte35Source:M3u8Settings' :: Maybe M3u8Scte35Source
scte35Source = forall a. Maybe a
Prelude.Nothing,
      $sel:timedMetadata:M3u8Settings' :: Maybe TimedMetadata
timedMetadata = forall a. Maybe a
Prelude.Nothing,
      $sel:timedMetadataPid:M3u8Settings' :: Maybe Natural
timedMetadataPid = forall a. Maybe a
Prelude.Nothing,
      $sel:transportStreamId:M3u8Settings' :: Maybe Natural
transportStreamId = forall a. Maybe a
Prelude.Nothing,
      $sel:videoPid:M3u8Settings' :: Maybe Natural
videoPid = forall a. Maybe a
Prelude.Nothing
    }

-- | Specify this setting only when your output will be consumed by a
-- downstream repackaging workflow that is sensitive to very small duration
-- differences between video and audio. For this situation, choose Match
-- video duration (MATCH_VIDEO_DURATION). In all other cases, keep the
-- default value, Default codec duration (DEFAULT_CODEC_DURATION). When you
-- choose Match video duration, MediaConvert pads the output audio streams
-- with silence or trims them to ensure that the total duration of each
-- audio stream is at least as long as the total duration of the video
-- stream. After padding or trimming, the audio stream duration is no more
-- than one frame longer than the video stream. MediaConvert applies audio
-- padding or trimming only to the end of the last segment of the output.
-- For unsegmented outputs, MediaConvert adds padding only to the end of
-- the file. When you keep the default value, any minor discrepancies
-- between audio and video duration will depend on your output audio codec.
m3u8Settings_audioDuration :: Lens.Lens' M3u8Settings (Prelude.Maybe M3u8AudioDuration)
m3u8Settings_audioDuration :: Lens' M3u8Settings (Maybe M3u8AudioDuration)
m3u8Settings_audioDuration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe M3u8AudioDuration
audioDuration :: Maybe M3u8AudioDuration
$sel:audioDuration:M3u8Settings' :: M3u8Settings -> Maybe M3u8AudioDuration
audioDuration} -> Maybe M3u8AudioDuration
audioDuration) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe M3u8AudioDuration
a -> M3u8Settings
s {$sel:audioDuration:M3u8Settings' :: Maybe M3u8AudioDuration
audioDuration = Maybe M3u8AudioDuration
a} :: M3u8Settings)

-- | The number of audio frames to insert for each PES packet.
m3u8Settings_audioFramesPerPes :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_audioFramesPerPes :: Lens' M3u8Settings (Maybe Natural)
m3u8Settings_audioFramesPerPes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe Natural
audioFramesPerPes :: Maybe Natural
$sel:audioFramesPerPes:M3u8Settings' :: M3u8Settings -> Maybe Natural
audioFramesPerPes} -> Maybe Natural
audioFramesPerPes) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe Natural
a -> M3u8Settings
s {$sel:audioFramesPerPes:M3u8Settings' :: Maybe Natural
audioFramesPerPes = Maybe Natural
a} :: M3u8Settings)

-- | Packet Identifier (PID) of the elementary audio stream(s) in the
-- transport stream. Multiple values are accepted, and can be entered in
-- ranges and\/or by comma separation.
m3u8Settings_audioPids :: Lens.Lens' M3u8Settings (Prelude.Maybe [Prelude.Natural])
m3u8Settings_audioPids :: Lens' M3u8Settings (Maybe [Natural])
m3u8Settings_audioPids = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe [Natural]
audioPids :: Maybe [Natural]
$sel:audioPids:M3u8Settings' :: M3u8Settings -> Maybe [Natural]
audioPids} -> Maybe [Natural]
audioPids) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe [Natural]
a -> M3u8Settings
s {$sel:audioPids:M3u8Settings' :: Maybe [Natural]
audioPids = Maybe [Natural]
a} :: M3u8Settings) 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

-- | If you select ALIGN_TO_VIDEO, MediaConvert writes captions and data
-- packets with Presentation Timestamp (PTS) values greater than or equal
-- to the first video packet PTS (MediaConvert drops captions and data
-- packets with lesser PTS values). Keep the default value (AUTO) to allow
-- all PTS values.
m3u8Settings_dataPTSControl :: Lens.Lens' M3u8Settings (Prelude.Maybe M3u8DataPtsControl)
m3u8Settings_dataPTSControl :: Lens' M3u8Settings (Maybe M3u8DataPtsControl)
m3u8Settings_dataPTSControl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe M3u8DataPtsControl
dataPTSControl :: Maybe M3u8DataPtsControl
$sel:dataPTSControl:M3u8Settings' :: M3u8Settings -> Maybe M3u8DataPtsControl
dataPTSControl} -> Maybe M3u8DataPtsControl
dataPTSControl) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe M3u8DataPtsControl
a -> M3u8Settings
s {$sel:dataPTSControl:M3u8Settings' :: Maybe M3u8DataPtsControl
dataPTSControl = Maybe M3u8DataPtsControl
a} :: M3u8Settings)

-- | Specify the maximum time, in milliseconds, between Program Clock
-- References (PCRs) inserted into the transport stream.
m3u8Settings_maxPcrInterval :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_maxPcrInterval :: Lens' M3u8Settings (Maybe Natural)
m3u8Settings_maxPcrInterval = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe Natural
maxPcrInterval :: Maybe Natural
$sel:maxPcrInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
maxPcrInterval} -> Maybe Natural
maxPcrInterval) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe Natural
a -> M3u8Settings
s {$sel:maxPcrInterval:M3u8Settings' :: Maybe Natural
maxPcrInterval = Maybe Natural
a} :: M3u8Settings)

-- | If INSERT, Nielsen inaudible tones for media tracking will be detected
-- in the input audio and an equivalent ID3 tag will be inserted in the
-- output.
m3u8Settings_nielsenId3 :: Lens.Lens' M3u8Settings (Prelude.Maybe M3u8NielsenId3)
m3u8Settings_nielsenId3 :: Lens' M3u8Settings (Maybe M3u8NielsenId3)
m3u8Settings_nielsenId3 = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe M3u8NielsenId3
nielsenId3 :: Maybe M3u8NielsenId3
$sel:nielsenId3:M3u8Settings' :: M3u8Settings -> Maybe M3u8NielsenId3
nielsenId3} -> Maybe M3u8NielsenId3
nielsenId3) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe M3u8NielsenId3
a -> M3u8Settings
s {$sel:nielsenId3:M3u8Settings' :: Maybe M3u8NielsenId3
nielsenId3 = Maybe M3u8NielsenId3
a} :: M3u8Settings)

-- | The number of milliseconds between instances of this table in the output
-- transport stream.
m3u8Settings_patInterval :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_patInterval :: Lens' M3u8Settings (Maybe Natural)
m3u8Settings_patInterval = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe Natural
patInterval :: Maybe Natural
$sel:patInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
patInterval} -> Maybe Natural
patInterval) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe Natural
a -> M3u8Settings
s {$sel:patInterval:M3u8Settings' :: Maybe Natural
patInterval = Maybe Natural
a} :: M3u8Settings)

-- | When set to PCR_EVERY_PES_PACKET a Program Clock Reference value is
-- inserted for every Packetized Elementary Stream (PES) header. This
-- parameter is effective only when the PCR PID is the same as the video or
-- audio elementary stream.
m3u8Settings_pcrControl :: Lens.Lens' M3u8Settings (Prelude.Maybe M3u8PcrControl)
m3u8Settings_pcrControl :: Lens' M3u8Settings (Maybe M3u8PcrControl)
m3u8Settings_pcrControl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe M3u8PcrControl
pcrControl :: Maybe M3u8PcrControl
$sel:pcrControl:M3u8Settings' :: M3u8Settings -> Maybe M3u8PcrControl
pcrControl} -> Maybe M3u8PcrControl
pcrControl) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe M3u8PcrControl
a -> M3u8Settings
s {$sel:pcrControl:M3u8Settings' :: Maybe M3u8PcrControl
pcrControl = Maybe M3u8PcrControl
a} :: M3u8Settings)

-- | Packet Identifier (PID) of the Program Clock Reference (PCR) in the
-- transport stream. When no value is given, the encoder will assign the
-- same value as the Video PID.
m3u8Settings_pcrPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_pcrPid :: Lens' M3u8Settings (Maybe Natural)
m3u8Settings_pcrPid = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe Natural
pcrPid :: Maybe Natural
$sel:pcrPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
pcrPid} -> Maybe Natural
pcrPid) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe Natural
a -> M3u8Settings
s {$sel:pcrPid:M3u8Settings' :: Maybe Natural
pcrPid = Maybe Natural
a} :: M3u8Settings)

-- | The number of milliseconds between instances of this table in the output
-- transport stream.
m3u8Settings_pmtInterval :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_pmtInterval :: Lens' M3u8Settings (Maybe Natural)
m3u8Settings_pmtInterval = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe Natural
pmtInterval :: Maybe Natural
$sel:pmtInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
pmtInterval} -> Maybe Natural
pmtInterval) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe Natural
a -> M3u8Settings
s {$sel:pmtInterval:M3u8Settings' :: Maybe Natural
pmtInterval = Maybe Natural
a} :: M3u8Settings)

-- | Packet Identifier (PID) for the Program Map Table (PMT) in the transport
-- stream.
m3u8Settings_pmtPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_pmtPid :: Lens' M3u8Settings (Maybe Natural)
m3u8Settings_pmtPid = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe Natural
pmtPid :: Maybe Natural
$sel:pmtPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
pmtPid} -> Maybe Natural
pmtPid) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe Natural
a -> M3u8Settings
s {$sel:pmtPid:M3u8Settings' :: Maybe Natural
pmtPid = Maybe Natural
a} :: M3u8Settings)

-- | Packet Identifier (PID) of the private metadata stream in the transport
-- stream.
m3u8Settings_privateMetadataPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_privateMetadataPid :: Lens' M3u8Settings (Maybe Natural)
m3u8Settings_privateMetadataPid = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe Natural
privateMetadataPid :: Maybe Natural
$sel:privateMetadataPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
privateMetadataPid} -> Maybe Natural
privateMetadataPid) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe Natural
a -> M3u8Settings
s {$sel:privateMetadataPid:M3u8Settings' :: Maybe Natural
privateMetadataPid = Maybe Natural
a} :: M3u8Settings)

-- | The value of the program number field in the Program Map Table.
m3u8Settings_programNumber :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_programNumber :: Lens' M3u8Settings (Maybe Natural)
m3u8Settings_programNumber = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe Natural
programNumber :: Maybe Natural
$sel:programNumber:M3u8Settings' :: M3u8Settings -> Maybe Natural
programNumber} -> Maybe Natural
programNumber) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe Natural
a -> M3u8Settings
s {$sel:programNumber:M3u8Settings' :: Maybe Natural
programNumber = Maybe Natural
a} :: M3u8Settings)

-- | Packet Identifier (PID) of the SCTE-35 stream in the transport stream.
m3u8Settings_scte35Pid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_scte35Pid :: Lens' M3u8Settings (Maybe Natural)
m3u8Settings_scte35Pid = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe Natural
scte35Pid :: Maybe Natural
$sel:scte35Pid:M3u8Settings' :: M3u8Settings -> Maybe Natural
scte35Pid} -> Maybe Natural
scte35Pid) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe Natural
a -> M3u8Settings
s {$sel:scte35Pid:M3u8Settings' :: Maybe Natural
scte35Pid = Maybe Natural
a} :: M3u8Settings)

-- | For SCTE-35 markers from your input-- Choose Passthrough (PASSTHROUGH)
-- if you want SCTE-35 markers that appear in your input to also appear in
-- this output. Choose None (NONE) if you don\'t want SCTE-35 markers in
-- this output. For SCTE-35 markers from an ESAM XML document-- Choose None
-- (NONE) if you don\'t want manifest conditioning. Choose Passthrough
-- (PASSTHROUGH) and choose Ad markers (adMarkers) if you do want manifest
-- conditioning. In both cases, also provide the ESAM XML as a string in
-- the setting Signal processing notification XML (sccXml).
m3u8Settings_scte35Source :: Lens.Lens' M3u8Settings (Prelude.Maybe M3u8Scte35Source)
m3u8Settings_scte35Source :: Lens' M3u8Settings (Maybe M3u8Scte35Source)
m3u8Settings_scte35Source = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe M3u8Scte35Source
scte35Source :: Maybe M3u8Scte35Source
$sel:scte35Source:M3u8Settings' :: M3u8Settings -> Maybe M3u8Scte35Source
scte35Source} -> Maybe M3u8Scte35Source
scte35Source) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe M3u8Scte35Source
a -> M3u8Settings
s {$sel:scte35Source:M3u8Settings' :: Maybe M3u8Scte35Source
scte35Source = Maybe M3u8Scte35Source
a} :: M3u8Settings)

-- | Set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH) to include
-- ID3 metadata in this output. This includes ID3 metadata from the
-- following features: ID3 timestamp period (timedMetadataId3Period), and
-- Custom ID3 metadata inserter (timedMetadataInsertion). To exclude this
-- ID3 metadata in this output: set ID3 metadata to None (NONE) or leave
-- blank.
m3u8Settings_timedMetadata :: Lens.Lens' M3u8Settings (Prelude.Maybe TimedMetadata)
m3u8Settings_timedMetadata :: Lens' M3u8Settings (Maybe TimedMetadata)
m3u8Settings_timedMetadata = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe TimedMetadata
timedMetadata :: Maybe TimedMetadata
$sel:timedMetadata:M3u8Settings' :: M3u8Settings -> Maybe TimedMetadata
timedMetadata} -> Maybe TimedMetadata
timedMetadata) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe TimedMetadata
a -> M3u8Settings
s {$sel:timedMetadata:M3u8Settings' :: Maybe TimedMetadata
timedMetadata = Maybe TimedMetadata
a} :: M3u8Settings)

-- | Packet Identifier (PID) of the ID3 metadata stream in the transport
-- stream.
m3u8Settings_timedMetadataPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_timedMetadataPid :: Lens' M3u8Settings (Maybe Natural)
m3u8Settings_timedMetadataPid = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe Natural
timedMetadataPid :: Maybe Natural
$sel:timedMetadataPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
timedMetadataPid} -> Maybe Natural
timedMetadataPid) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe Natural
a -> M3u8Settings
s {$sel:timedMetadataPid:M3u8Settings' :: Maybe Natural
timedMetadataPid = Maybe Natural
a} :: M3u8Settings)

-- | The value of the transport stream ID field in the Program Map Table.
m3u8Settings_transportStreamId :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_transportStreamId :: Lens' M3u8Settings (Maybe Natural)
m3u8Settings_transportStreamId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe Natural
transportStreamId :: Maybe Natural
$sel:transportStreamId:M3u8Settings' :: M3u8Settings -> Maybe Natural
transportStreamId} -> Maybe Natural
transportStreamId) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe Natural
a -> M3u8Settings
s {$sel:transportStreamId:M3u8Settings' :: Maybe Natural
transportStreamId = Maybe Natural
a} :: M3u8Settings)

-- | Packet Identifier (PID) of the elementary video stream in the transport
-- stream.
m3u8Settings_videoPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_videoPid :: Lens' M3u8Settings (Maybe Natural)
m3u8Settings_videoPid = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M3u8Settings' {Maybe Natural
videoPid :: Maybe Natural
$sel:videoPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
videoPid} -> Maybe Natural
videoPid) (\s :: M3u8Settings
s@M3u8Settings' {} Maybe Natural
a -> M3u8Settings
s {$sel:videoPid:M3u8Settings' :: Maybe Natural
videoPid = Maybe Natural
a} :: M3u8Settings)

instance Data.FromJSON M3u8Settings where
  parseJSON :: Value -> Parser M3u8Settings
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"M3u8Settings"
      ( \Object
x ->
          Maybe M3u8AudioDuration
-> Maybe Natural
-> Maybe [Natural]
-> Maybe M3u8DataPtsControl
-> Maybe Natural
-> Maybe M3u8NielsenId3
-> Maybe Natural
-> Maybe M3u8PcrControl
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe M3u8Scte35Source
-> Maybe TimedMetadata
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> M3u8Settings
M3u8Settings'
            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
"audioDuration")
            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
"audioFramesPerPes")
            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
"audioPids" 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
"dataPTSControl")
            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
"maxPcrInterval")
            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
"nielsenId3")
            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
"patInterval")
            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
"pcrControl")
            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
"pcrPid")
            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
"pmtInterval")
            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
"pmtPid")
            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
"privateMetadataPid")
            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
"programNumber")
            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
"scte35Pid")
            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
"scte35Source")
            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
"timedMetadata")
            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
"timedMetadataPid")
            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
"transportStreamId")
            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
"videoPid")
      )

instance Prelude.Hashable M3u8Settings where
  hashWithSalt :: Int -> M3u8Settings -> Int
hashWithSalt Int
_salt M3u8Settings' {Maybe Natural
Maybe [Natural]
Maybe M3u8AudioDuration
Maybe M3u8DataPtsControl
Maybe M3u8NielsenId3
Maybe M3u8PcrControl
Maybe M3u8Scte35Source
Maybe TimedMetadata
videoPid :: Maybe Natural
transportStreamId :: Maybe Natural
timedMetadataPid :: Maybe Natural
timedMetadata :: Maybe TimedMetadata
scte35Source :: Maybe M3u8Scte35Source
scte35Pid :: Maybe Natural
programNumber :: Maybe Natural
privateMetadataPid :: Maybe Natural
pmtPid :: Maybe Natural
pmtInterval :: Maybe Natural
pcrPid :: Maybe Natural
pcrControl :: Maybe M3u8PcrControl
patInterval :: Maybe Natural
nielsenId3 :: Maybe M3u8NielsenId3
maxPcrInterval :: Maybe Natural
dataPTSControl :: Maybe M3u8DataPtsControl
audioPids :: Maybe [Natural]
audioFramesPerPes :: Maybe Natural
audioDuration :: Maybe M3u8AudioDuration
$sel:videoPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:transportStreamId:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:timedMetadataPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:timedMetadata:M3u8Settings' :: M3u8Settings -> Maybe TimedMetadata
$sel:scte35Source:M3u8Settings' :: M3u8Settings -> Maybe M3u8Scte35Source
$sel:scte35Pid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:programNumber:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:privateMetadataPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pmtPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pmtInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pcrPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pcrControl:M3u8Settings' :: M3u8Settings -> Maybe M3u8PcrControl
$sel:patInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:nielsenId3:M3u8Settings' :: M3u8Settings -> Maybe M3u8NielsenId3
$sel:maxPcrInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:dataPTSControl:M3u8Settings' :: M3u8Settings -> Maybe M3u8DataPtsControl
$sel:audioPids:M3u8Settings' :: M3u8Settings -> Maybe [Natural]
$sel:audioFramesPerPes:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:audioDuration:M3u8Settings' :: M3u8Settings -> Maybe M3u8AudioDuration
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe M3u8AudioDuration
audioDuration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
audioFramesPerPes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Natural]
audioPids
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe M3u8DataPtsControl
dataPTSControl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxPcrInterval
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe M3u8NielsenId3
nielsenId3
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
patInterval
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe M3u8PcrControl
pcrControl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
pcrPid
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
pmtInterval
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
pmtPid
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
privateMetadataPid
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
programNumber
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
scte35Pid
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe M3u8Scte35Source
scte35Source
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimedMetadata
timedMetadata
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
timedMetadataPid
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
transportStreamId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
videoPid

instance Prelude.NFData M3u8Settings where
  rnf :: M3u8Settings -> ()
rnf M3u8Settings' {Maybe Natural
Maybe [Natural]
Maybe M3u8AudioDuration
Maybe M3u8DataPtsControl
Maybe M3u8NielsenId3
Maybe M3u8PcrControl
Maybe M3u8Scte35Source
Maybe TimedMetadata
videoPid :: Maybe Natural
transportStreamId :: Maybe Natural
timedMetadataPid :: Maybe Natural
timedMetadata :: Maybe TimedMetadata
scte35Source :: Maybe M3u8Scte35Source
scte35Pid :: Maybe Natural
programNumber :: Maybe Natural
privateMetadataPid :: Maybe Natural
pmtPid :: Maybe Natural
pmtInterval :: Maybe Natural
pcrPid :: Maybe Natural
pcrControl :: Maybe M3u8PcrControl
patInterval :: Maybe Natural
nielsenId3 :: Maybe M3u8NielsenId3
maxPcrInterval :: Maybe Natural
dataPTSControl :: Maybe M3u8DataPtsControl
audioPids :: Maybe [Natural]
audioFramesPerPes :: Maybe Natural
audioDuration :: Maybe M3u8AudioDuration
$sel:videoPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:transportStreamId:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:timedMetadataPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:timedMetadata:M3u8Settings' :: M3u8Settings -> Maybe TimedMetadata
$sel:scte35Source:M3u8Settings' :: M3u8Settings -> Maybe M3u8Scte35Source
$sel:scte35Pid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:programNumber:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:privateMetadataPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pmtPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pmtInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pcrPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pcrControl:M3u8Settings' :: M3u8Settings -> Maybe M3u8PcrControl
$sel:patInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:nielsenId3:M3u8Settings' :: M3u8Settings -> Maybe M3u8NielsenId3
$sel:maxPcrInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:dataPTSControl:M3u8Settings' :: M3u8Settings -> Maybe M3u8DataPtsControl
$sel:audioPids:M3u8Settings' :: M3u8Settings -> Maybe [Natural]
$sel:audioFramesPerPes:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:audioDuration:M3u8Settings' :: M3u8Settings -> Maybe M3u8AudioDuration
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe M3u8AudioDuration
audioDuration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
audioFramesPerPes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Natural]
audioPids
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe M3u8DataPtsControl
dataPTSControl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxPcrInterval
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe M3u8NielsenId3
nielsenId3
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
patInterval
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe M3u8PcrControl
pcrControl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
pcrPid
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
pmtInterval
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
pmtPid
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
privateMetadataPid
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
programNumber
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
scte35Pid
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe M3u8Scte35Source
scte35Source
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TimedMetadata
timedMetadata
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
timedMetadataPid
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
transportStreamId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
videoPid

instance Data.ToJSON M3u8Settings where
  toJSON :: M3u8Settings -> Value
toJSON M3u8Settings' {Maybe Natural
Maybe [Natural]
Maybe M3u8AudioDuration
Maybe M3u8DataPtsControl
Maybe M3u8NielsenId3
Maybe M3u8PcrControl
Maybe M3u8Scte35Source
Maybe TimedMetadata
videoPid :: Maybe Natural
transportStreamId :: Maybe Natural
timedMetadataPid :: Maybe Natural
timedMetadata :: Maybe TimedMetadata
scte35Source :: Maybe M3u8Scte35Source
scte35Pid :: Maybe Natural
programNumber :: Maybe Natural
privateMetadataPid :: Maybe Natural
pmtPid :: Maybe Natural
pmtInterval :: Maybe Natural
pcrPid :: Maybe Natural
pcrControl :: Maybe M3u8PcrControl
patInterval :: Maybe Natural
nielsenId3 :: Maybe M3u8NielsenId3
maxPcrInterval :: Maybe Natural
dataPTSControl :: Maybe M3u8DataPtsControl
audioPids :: Maybe [Natural]
audioFramesPerPes :: Maybe Natural
audioDuration :: Maybe M3u8AudioDuration
$sel:videoPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:transportStreamId:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:timedMetadataPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:timedMetadata:M3u8Settings' :: M3u8Settings -> Maybe TimedMetadata
$sel:scte35Source:M3u8Settings' :: M3u8Settings -> Maybe M3u8Scte35Source
$sel:scte35Pid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:programNumber:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:privateMetadataPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pmtPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pmtInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pcrPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pcrControl:M3u8Settings' :: M3u8Settings -> Maybe M3u8PcrControl
$sel:patInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:nielsenId3:M3u8Settings' :: M3u8Settings -> Maybe M3u8NielsenId3
$sel:maxPcrInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:dataPTSControl:M3u8Settings' :: M3u8Settings -> Maybe M3u8DataPtsControl
$sel:audioPids:M3u8Settings' :: M3u8Settings -> Maybe [Natural]
$sel:audioFramesPerPes:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:audioDuration:M3u8Settings' :: M3u8Settings -> Maybe M3u8AudioDuration
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"audioDuration" 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 M3u8AudioDuration
audioDuration,
            (Key
"audioFramesPerPes" 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
audioFramesPerPes,
            (Key
"audioPids" 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]
audioPids,
            (Key
"dataPTSControl" 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 M3u8DataPtsControl
dataPTSControl,
            (Key
"maxPcrInterval" 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
maxPcrInterval,
            (Key
"nielsenId3" 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 M3u8NielsenId3
nielsenId3,
            (Key
"patInterval" 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
patInterval,
            (Key
"pcrControl" 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 M3u8PcrControl
pcrControl,
            (Key
"pcrPid" 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
pcrPid,
            (Key
"pmtInterval" 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
pmtInterval,
            (Key
"pmtPid" 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
pmtPid,
            (Key
"privateMetadataPid" 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
privateMetadataPid,
            (Key
"programNumber" 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
programNumber,
            (Key
"scte35Pid" 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
scte35Pid,
            (Key
"scte35Source" 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 M3u8Scte35Source
scte35Source,
            (Key
"timedMetadata" 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 TimedMetadata
timedMetadata,
            (Key
"timedMetadataPid" 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
timedMetadataPid,
            (Key
"transportStreamId" 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
transportStreamId,
            (Key
"videoPid" 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
videoPid
          ]
      )