{-# 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-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.MediaConvert.Types.M3u8Settings where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
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'
  { -- | 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 elementary video stream in the transport
    -- stream.
    M3u8Settings -> Maybe Natural
videoPid :: 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,
    -- | The value of the transport stream ID field in the Program Map Table.
    M3u8Settings -> Maybe Natural
transportStreamId :: Prelude.Maybe Prelude.Natural,
    -- | Specify the maximum time, in milliseconds, between Program Clock
    -- References (PCRs) inserted into the transport stream.
    M3u8Settings -> Maybe Natural
maxPcrInterval :: Prelude.Maybe Prelude.Natural,
    -- | Packet Identifier (PID) of the private metadata stream in the transport
    -- stream.
    M3u8Settings -> Maybe Natural
privateMetadataPid :: Prelude.Maybe Prelude.Natural,
    -- | 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 milliseconds between instances of this table in the output
    -- transport stream.
    M3u8Settings -> Maybe Natural
pmtInterval :: Prelude.Maybe Prelude.Natural,
    -- | Packet Identifier (PID) of the timed metadata stream in the transport
    -- stream.
    M3u8Settings -> Maybe Natural
timedMetadataPid :: Prelude.Maybe Prelude.Natural,
    -- | The number of audio frames to insert for each PES packet.
    M3u8Settings -> Maybe Natural
audioFramesPerPes :: Prelude.Maybe Prelude.Natural,
    -- | 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,
    -- | Applies only to HLS outputs. Use this setting to specify whether the
    -- service inserts the ID3 timed metadata from the input in this output.
    M3u8Settings -> Maybe TimedMetadata
timedMetadata :: Prelude.Maybe TimedMetadata,
    -- | 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,
    -- | The number of milliseconds between instances of this table in the output
    -- transport stream.
    M3u8Settings -> Maybe Natural
patInterval :: 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 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,
    -- | 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,
    -- | 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
  }
  deriving (M3u8Settings -> M3u8Settings -> Bool
(M3u8Settings -> M3u8Settings -> Bool)
-> (M3u8Settings -> M3u8Settings -> Bool) -> Eq M3u8Settings
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]
(Int -> ReadS M3u8Settings)
-> ReadS [M3u8Settings]
-> ReadPrec M3u8Settings
-> ReadPrec [M3u8Settings]
-> Read 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
(Int -> M3u8Settings -> ShowS)
-> (M3u8Settings -> String)
-> ([M3u8Settings] -> ShowS)
-> Show M3u8Settings
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. M3u8Settings -> Rep M3u8Settings x)
-> (forall x. Rep M3u8Settings x -> M3u8Settings)
-> Generic M3u8Settings
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:
--
-- 'pmtPid', 'm3u8Settings_pmtPid' - Packet Identifier (PID) for the Program Map Table (PMT) in the transport
-- stream.
--
-- 'videoPid', 'm3u8Settings_videoPid' - Packet Identifier (PID) of the elementary video 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.
--
-- 'transportStreamId', 'm3u8Settings_transportStreamId' - The value of the transport stream ID field in the Program Map Table.
--
-- 'maxPcrInterval', 'm3u8Settings_maxPcrInterval' - Specify the maximum time, in milliseconds, between Program Clock
-- References (PCRs) inserted into the transport stream.
--
-- 'privateMetadataPid', 'm3u8Settings_privateMetadataPid' - Packet Identifier (PID) of the private metadata stream in the transport
-- stream.
--
-- '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.
--
-- 'pmtInterval', 'm3u8Settings_pmtInterval' - The number of milliseconds between instances of this table in the output
-- transport stream.
--
-- 'timedMetadataPid', 'm3u8Settings_timedMetadataPid' - Packet Identifier (PID) of the timed metadata stream in the transport
-- stream.
--
-- 'audioFramesPerPes', 'm3u8Settings_audioFramesPerPes' - The number of audio frames to insert for each PES packet.
--
-- '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.
--
-- 'timedMetadata', 'm3u8Settings_timedMetadata' - Applies only to HLS outputs. Use this setting to specify whether the
-- service inserts the ID3 timed metadata from the input in this output.
--
-- '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).
--
-- 'patInterval', 'm3u8Settings_patInterval' - The number of milliseconds between instances of this table in the output
-- transport stream.
--
-- '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.
--
-- '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.
--
-- '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.
--
-- '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.
newM3u8Settings ::
  M3u8Settings
newM3u8Settings :: M3u8Settings
newM3u8Settings =
  M3u8Settings' :: Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe M3u8AudioDuration
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe TimedMetadata
-> Maybe M3u8Scte35Source
-> Maybe Natural
-> Maybe [Natural]
-> Maybe M3u8NielsenId3
-> Maybe M3u8DataPtsControl
-> Maybe M3u8PcrControl
-> M3u8Settings
M3u8Settings'
    { $sel:pmtPid:M3u8Settings' :: Maybe Natural
pmtPid = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:videoPid:M3u8Settings' :: Maybe Natural
videoPid = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:programNumber:M3u8Settings' :: Maybe Natural
programNumber = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:scte35Pid:M3u8Settings' :: Maybe Natural
scte35Pid = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:transportStreamId:M3u8Settings' :: Maybe Natural
transportStreamId = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:maxPcrInterval:M3u8Settings' :: Maybe Natural
maxPcrInterval = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:privateMetadataPid:M3u8Settings' :: Maybe Natural
privateMetadataPid = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:audioDuration:M3u8Settings' :: Maybe M3u8AudioDuration
audioDuration = Maybe M3u8AudioDuration
forall a. Maybe a
Prelude.Nothing,
      $sel:pmtInterval:M3u8Settings' :: Maybe Natural
pmtInterval = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:timedMetadataPid:M3u8Settings' :: Maybe Natural
timedMetadataPid = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:audioFramesPerPes:M3u8Settings' :: Maybe Natural
audioFramesPerPes = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:pcrPid:M3u8Settings' :: Maybe Natural
pcrPid = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:timedMetadata:M3u8Settings' :: Maybe TimedMetadata
timedMetadata = Maybe TimedMetadata
forall a. Maybe a
Prelude.Nothing,
      $sel:scte35Source:M3u8Settings' :: Maybe M3u8Scte35Source
scte35Source = Maybe M3u8Scte35Source
forall a. Maybe a
Prelude.Nothing,
      $sel:patInterval:M3u8Settings' :: Maybe Natural
patInterval = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:audioPids:M3u8Settings' :: Maybe [Natural]
audioPids = Maybe [Natural]
forall a. Maybe a
Prelude.Nothing,
      $sel:nielsenId3:M3u8Settings' :: Maybe M3u8NielsenId3
nielsenId3 = Maybe M3u8NielsenId3
forall a. Maybe a
Prelude.Nothing,
      $sel:dataPTSControl:M3u8Settings' :: Maybe M3u8DataPtsControl
dataPTSControl = Maybe M3u8DataPtsControl
forall a. Maybe a
Prelude.Nothing,
      $sel:pcrControl:M3u8Settings' :: Maybe M3u8PcrControl
pcrControl = Maybe M3u8PcrControl
forall a. Maybe a
Prelude.Nothing
    }

-- | Packet Identifier (PID) for the Program Map Table (PMT) in the transport
-- stream.
m3u8Settings_pmtPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_pmtPid :: (Maybe Natural -> f (Maybe Natural))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_pmtPid = (M3u8Settings -> Maybe Natural)
-> (M3u8Settings -> Maybe Natural -> M3u8Settings)
-> Lens M3u8Settings M3u8Settings (Maybe Natural) (Maybe Natural)
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 elementary video stream in the transport
-- stream.
m3u8Settings_videoPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_videoPid :: (Maybe Natural -> f (Maybe Natural))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_videoPid = (M3u8Settings -> Maybe Natural)
-> (M3u8Settings -> Maybe Natural -> M3u8Settings)
-> Lens M3u8Settings M3u8Settings (Maybe Natural) (Maybe Natural)
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)

-- | The value of the program number field in the Program Map Table.
m3u8Settings_programNumber :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_programNumber :: (Maybe Natural -> f (Maybe Natural))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_programNumber = (M3u8Settings -> Maybe Natural)
-> (M3u8Settings -> Maybe Natural -> M3u8Settings)
-> Lens M3u8Settings M3u8Settings (Maybe Natural) (Maybe Natural)
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 :: (Maybe Natural -> f (Maybe Natural))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_scte35Pid = (M3u8Settings -> Maybe Natural)
-> (M3u8Settings -> Maybe Natural -> M3u8Settings)
-> Lens M3u8Settings M3u8Settings (Maybe Natural) (Maybe Natural)
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)

-- | The value of the transport stream ID field in the Program Map Table.
m3u8Settings_transportStreamId :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_transportStreamId :: (Maybe Natural -> f (Maybe Natural))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_transportStreamId = (M3u8Settings -> Maybe Natural)
-> (M3u8Settings -> Maybe Natural -> M3u8Settings)
-> Lens M3u8Settings M3u8Settings (Maybe Natural) (Maybe Natural)
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)

-- | 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 :: (Maybe Natural -> f (Maybe Natural))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_maxPcrInterval = (M3u8Settings -> Maybe Natural)
-> (M3u8Settings -> Maybe Natural -> M3u8Settings)
-> Lens M3u8Settings M3u8Settings (Maybe Natural) (Maybe Natural)
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)

-- | Packet Identifier (PID) of the private metadata stream in the transport
-- stream.
m3u8Settings_privateMetadataPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_privateMetadataPid :: (Maybe Natural -> f (Maybe Natural))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_privateMetadataPid = (M3u8Settings -> Maybe Natural)
-> (M3u8Settings -> Maybe Natural -> M3u8Settings)
-> Lens M3u8Settings M3u8Settings (Maybe Natural) (Maybe Natural)
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)

-- | 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 :: (Maybe M3u8AudioDuration -> f (Maybe M3u8AudioDuration))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_audioDuration = (M3u8Settings -> Maybe M3u8AudioDuration)
-> (M3u8Settings -> Maybe M3u8AudioDuration -> M3u8Settings)
-> Lens
     M3u8Settings
     M3u8Settings
     (Maybe M3u8AudioDuration)
     (Maybe M3u8AudioDuration)
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 milliseconds between instances of this table in the output
-- transport stream.
m3u8Settings_pmtInterval :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_pmtInterval :: (Maybe Natural -> f (Maybe Natural))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_pmtInterval = (M3u8Settings -> Maybe Natural)
-> (M3u8Settings -> Maybe Natural -> M3u8Settings)
-> Lens M3u8Settings M3u8Settings (Maybe Natural) (Maybe Natural)
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) of the timed metadata stream in the transport
-- stream.
m3u8Settings_timedMetadataPid :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_timedMetadataPid :: (Maybe Natural -> f (Maybe Natural))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_timedMetadataPid = (M3u8Settings -> Maybe Natural)
-> (M3u8Settings -> Maybe Natural -> M3u8Settings)
-> Lens M3u8Settings M3u8Settings (Maybe Natural) (Maybe Natural)
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 number of audio frames to insert for each PES packet.
m3u8Settings_audioFramesPerPes :: Lens.Lens' M3u8Settings (Prelude.Maybe Prelude.Natural)
m3u8Settings_audioFramesPerPes :: (Maybe Natural -> f (Maybe Natural))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_audioFramesPerPes = (M3u8Settings -> Maybe Natural)
-> (M3u8Settings -> Maybe Natural -> M3u8Settings)
-> Lens M3u8Settings M3u8Settings (Maybe Natural) (Maybe Natural)
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 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 :: (Maybe Natural -> f (Maybe Natural))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_pcrPid = (M3u8Settings -> Maybe Natural)
-> (M3u8Settings -> Maybe Natural -> M3u8Settings)
-> Lens M3u8Settings M3u8Settings (Maybe Natural) (Maybe Natural)
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)

-- | Applies only to HLS outputs. Use this setting to specify whether the
-- service inserts the ID3 timed metadata from the input in this output.
m3u8Settings_timedMetadata :: Lens.Lens' M3u8Settings (Prelude.Maybe TimedMetadata)
m3u8Settings_timedMetadata :: (Maybe TimedMetadata -> f (Maybe TimedMetadata))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_timedMetadata = (M3u8Settings -> Maybe TimedMetadata)
-> (M3u8Settings -> Maybe TimedMetadata -> M3u8Settings)
-> Lens
     M3u8Settings
     M3u8Settings
     (Maybe TimedMetadata)
     (Maybe 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)

-- | 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 :: (Maybe M3u8Scte35Source -> f (Maybe M3u8Scte35Source))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_scte35Source = (M3u8Settings -> Maybe M3u8Scte35Source)
-> (M3u8Settings -> Maybe M3u8Scte35Source -> M3u8Settings)
-> Lens
     M3u8Settings
     M3u8Settings
     (Maybe M3u8Scte35Source)
     (Maybe M3u8Scte35Source)
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)

-- | 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 :: (Maybe Natural -> f (Maybe Natural))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_patInterval = (M3u8Settings -> Maybe Natural)
-> (M3u8Settings -> Maybe Natural -> M3u8Settings)
-> Lens M3u8Settings M3u8Settings (Maybe Natural) (Maybe Natural)
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)

-- | 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 :: (Maybe [Natural] -> f (Maybe [Natural]))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_audioPids = (M3u8Settings -> Maybe [Natural])
-> (M3u8Settings -> Maybe [Natural] -> M3u8Settings)
-> Lens
     M3u8Settings M3u8Settings (Maybe [Natural]) (Maybe [Natural])
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) ((Maybe [Natural] -> f (Maybe [Natural]))
 -> M3u8Settings -> f M3u8Settings)
-> ((Maybe [Natural] -> f (Maybe [Natural]))
    -> Maybe [Natural] -> f (Maybe [Natural]))
-> (Maybe [Natural] -> f (Maybe [Natural]))
-> M3u8Settings
-> f M3u8Settings
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Natural] [Natural] [Natural] [Natural]
-> Iso
     (Maybe [Natural])
     (Maybe [Natural])
     (Maybe [Natural])
     (Maybe [Natural])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Natural] [Natural] [Natural] [Natural]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | 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 :: (Maybe M3u8NielsenId3 -> f (Maybe M3u8NielsenId3))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_nielsenId3 = (M3u8Settings -> Maybe M3u8NielsenId3)
-> (M3u8Settings -> Maybe M3u8NielsenId3 -> M3u8Settings)
-> Lens
     M3u8Settings
     M3u8Settings
     (Maybe M3u8NielsenId3)
     (Maybe M3u8NielsenId3)
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)

-- | 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 :: (Maybe M3u8DataPtsControl -> f (Maybe M3u8DataPtsControl))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_dataPTSControl = (M3u8Settings -> Maybe M3u8DataPtsControl)
-> (M3u8Settings -> Maybe M3u8DataPtsControl -> M3u8Settings)
-> Lens
     M3u8Settings
     M3u8Settings
     (Maybe M3u8DataPtsControl)
     (Maybe M3u8DataPtsControl)
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)

-- | 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 :: (Maybe M3u8PcrControl -> f (Maybe M3u8PcrControl))
-> M3u8Settings -> f M3u8Settings
m3u8Settings_pcrControl = (M3u8Settings -> Maybe M3u8PcrControl)
-> (M3u8Settings -> Maybe M3u8PcrControl -> M3u8Settings)
-> Lens
     M3u8Settings
     M3u8Settings
     (Maybe M3u8PcrControl)
     (Maybe M3u8PcrControl)
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)

instance Core.FromJSON M3u8Settings where
  parseJSON :: Value -> Parser M3u8Settings
parseJSON =
    String
-> (Object -> Parser M3u8Settings) -> Value -> Parser M3u8Settings
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"M3u8Settings"
      ( \Object
x ->
          Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe M3u8AudioDuration
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe TimedMetadata
-> Maybe M3u8Scte35Source
-> Maybe Natural
-> Maybe [Natural]
-> Maybe M3u8NielsenId3
-> Maybe M3u8DataPtsControl
-> Maybe M3u8PcrControl
-> M3u8Settings
M3u8Settings'
            (Maybe Natural
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe M3u8AudioDuration
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe TimedMetadata
 -> Maybe M3u8Scte35Source
 -> Maybe Natural
 -> Maybe [Natural]
 -> Maybe M3u8NielsenId3
 -> Maybe M3u8DataPtsControl
 -> Maybe M3u8PcrControl
 -> M3u8Settings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M3u8AudioDuration
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe TimedMetadata
      -> Maybe M3u8Scte35Source
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"pmtPid")
            Parser
  (Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M3u8AudioDuration
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe TimedMetadata
   -> Maybe M3u8Scte35Source
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M3u8AudioDuration
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe TimedMetadata
      -> Maybe M3u8Scte35Source
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"videoPid")
            Parser
  (Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M3u8AudioDuration
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe TimedMetadata
   -> Maybe M3u8Scte35Source
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M3u8AudioDuration
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe TimedMetadata
      -> Maybe M3u8Scte35Source
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"programNumber")
            Parser
  (Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M3u8AudioDuration
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe TimedMetadata
   -> Maybe M3u8Scte35Source
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M3u8AudioDuration
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe TimedMetadata
      -> Maybe M3u8Scte35Source
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"scte35Pid")
            Parser
  (Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M3u8AudioDuration
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe TimedMetadata
   -> Maybe M3u8Scte35Source
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe M3u8AudioDuration
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe TimedMetadata
      -> Maybe M3u8Scte35Source
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"transportStreamId")
            Parser
  (Maybe Natural
   -> Maybe Natural
   -> Maybe M3u8AudioDuration
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe TimedMetadata
   -> Maybe M3u8Scte35Source
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe M3u8AudioDuration
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe TimedMetadata
      -> Maybe M3u8Scte35Source
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"maxPcrInterval")
            Parser
  (Maybe Natural
   -> Maybe M3u8AudioDuration
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe TimedMetadata
   -> Maybe M3u8Scte35Source
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe M3u8AudioDuration
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe TimedMetadata
      -> Maybe M3u8Scte35Source
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"privateMetadataPid")
            Parser
  (Maybe M3u8AudioDuration
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe TimedMetadata
   -> Maybe M3u8Scte35Source
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe M3u8AudioDuration)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe TimedMetadata
      -> Maybe M3u8Scte35Source
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M3u8AudioDuration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"audioDuration")
            Parser
  (Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe TimedMetadata
   -> Maybe M3u8Scte35Source
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe TimedMetadata
      -> Maybe M3u8Scte35Source
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"pmtInterval")
            Parser
  (Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe TimedMetadata
   -> Maybe M3u8Scte35Source
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe TimedMetadata
      -> Maybe M3u8Scte35Source
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"timedMetadataPid")
            Parser
  (Maybe Natural
   -> Maybe Natural
   -> Maybe TimedMetadata
   -> Maybe M3u8Scte35Source
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe TimedMetadata
      -> Maybe M3u8Scte35Source
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"audioFramesPerPes")
            Parser
  (Maybe Natural
   -> Maybe TimedMetadata
   -> Maybe M3u8Scte35Source
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe TimedMetadata
      -> Maybe M3u8Scte35Source
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"pcrPid")
            Parser
  (Maybe TimedMetadata
   -> Maybe M3u8Scte35Source
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe TimedMetadata)
-> Parser
     (Maybe M3u8Scte35Source
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TimedMetadata)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"timedMetadata")
            Parser
  (Maybe M3u8Scte35Source
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe M3u8Scte35Source)
-> Parser
     (Maybe Natural
      -> Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M3u8Scte35Source)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"scte35Source")
            Parser
  (Maybe Natural
   -> Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe [Natural]
      -> Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"patInterval")
            Parser
  (Maybe [Natural]
   -> Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe [Natural])
-> Parser
     (Maybe M3u8NielsenId3
      -> Maybe M3u8DataPtsControl
      -> Maybe M3u8PcrControl
      -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Natural]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"audioPids" Parser (Maybe (Maybe [Natural]))
-> Maybe [Natural] -> Parser (Maybe [Natural])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Natural]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe M3u8NielsenId3
   -> Maybe M3u8DataPtsControl
   -> Maybe M3u8PcrControl
   -> M3u8Settings)
-> Parser (Maybe M3u8NielsenId3)
-> Parser
     (Maybe M3u8DataPtsControl -> Maybe M3u8PcrControl -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M3u8NielsenId3)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"nielsenId3")
            Parser
  (Maybe M3u8DataPtsControl -> Maybe M3u8PcrControl -> M3u8Settings)
-> Parser (Maybe M3u8DataPtsControl)
-> Parser (Maybe M3u8PcrControl -> M3u8Settings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M3u8DataPtsControl)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"dataPTSControl")
            Parser (Maybe M3u8PcrControl -> M3u8Settings)
-> Parser (Maybe M3u8PcrControl) -> Parser M3u8Settings
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M3u8PcrControl)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"pcrControl")
      )

instance Prelude.Hashable M3u8Settings

instance Prelude.NFData M3u8Settings

instance Core.ToJSON M3u8Settings where
  toJSON :: M3u8Settings -> Value
toJSON M3u8Settings' {Maybe Natural
Maybe [Natural]
Maybe M3u8AudioDuration
Maybe M3u8DataPtsControl
Maybe M3u8NielsenId3
Maybe M3u8PcrControl
Maybe M3u8Scte35Source
Maybe TimedMetadata
pcrControl :: Maybe M3u8PcrControl
dataPTSControl :: Maybe M3u8DataPtsControl
nielsenId3 :: Maybe M3u8NielsenId3
audioPids :: Maybe [Natural]
patInterval :: Maybe Natural
scte35Source :: Maybe M3u8Scte35Source
timedMetadata :: Maybe TimedMetadata
pcrPid :: Maybe Natural
audioFramesPerPes :: Maybe Natural
timedMetadataPid :: Maybe Natural
pmtInterval :: Maybe Natural
audioDuration :: Maybe M3u8AudioDuration
privateMetadataPid :: Maybe Natural
maxPcrInterval :: Maybe Natural
transportStreamId :: Maybe Natural
scte35Pid :: Maybe Natural
programNumber :: Maybe Natural
videoPid :: Maybe Natural
pmtPid :: Maybe Natural
$sel:pcrControl:M3u8Settings' :: M3u8Settings -> Maybe M3u8PcrControl
$sel:dataPTSControl:M3u8Settings' :: M3u8Settings -> Maybe M3u8DataPtsControl
$sel:nielsenId3:M3u8Settings' :: M3u8Settings -> Maybe M3u8NielsenId3
$sel:audioPids:M3u8Settings' :: M3u8Settings -> Maybe [Natural]
$sel:patInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:scte35Source:M3u8Settings' :: M3u8Settings -> Maybe M3u8Scte35Source
$sel:timedMetadata:M3u8Settings' :: M3u8Settings -> Maybe TimedMetadata
$sel:pcrPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:audioFramesPerPes:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:timedMetadataPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pmtInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:audioDuration:M3u8Settings' :: M3u8Settings -> Maybe M3u8AudioDuration
$sel:privateMetadataPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:maxPcrInterval:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:transportStreamId:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:scte35Pid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:programNumber:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:videoPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
$sel:pmtPid:M3u8Settings' :: M3u8Settings -> Maybe Natural
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"pmtPid" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
pmtPid,
            (Text
"videoPid" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
videoPid,
            (Text
"programNumber" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
programNumber,
            (Text
"scte35Pid" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
scte35Pid,
            (Text
"transportStreamId" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
transportStreamId,
            (Text
"maxPcrInterval" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
maxPcrInterval,
            (Text
"privateMetadataPid" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
privateMetadataPid,
            (Text
"audioDuration" Text -> M3u8AudioDuration -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (M3u8AudioDuration -> Pair)
-> Maybe M3u8AudioDuration -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M3u8AudioDuration
audioDuration,
            (Text
"pmtInterval" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
pmtInterval,
            (Text
"timedMetadataPid" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
timedMetadataPid,
            (Text
"audioFramesPerPes" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
audioFramesPerPes,
            (Text
"pcrPid" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
pcrPid,
            (Text
"timedMetadata" Text -> TimedMetadata -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (TimedMetadata -> Pair) -> Maybe TimedMetadata -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TimedMetadata
timedMetadata,
            (Text
"scte35Source" Text -> M3u8Scte35Source -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (M3u8Scte35Source -> Pair) -> Maybe M3u8Scte35Source -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M3u8Scte35Source
scte35Source,
            (Text
"patInterval" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
patInterval,
            (Text
"audioPids" Text -> [Natural] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) ([Natural] -> Pair) -> Maybe [Natural] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Natural]
audioPids,
            (Text
"nielsenId3" Text -> M3u8NielsenId3 -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (M3u8NielsenId3 -> Pair) -> Maybe M3u8NielsenId3 -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M3u8NielsenId3
nielsenId3,
            (Text
"dataPTSControl" Text -> M3u8DataPtsControl -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (M3u8DataPtsControl -> Pair)
-> Maybe M3u8DataPtsControl -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M3u8DataPtsControl
dataPTSControl,
            (Text
"pcrControl" Text -> M3u8PcrControl -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (M3u8PcrControl -> Pair) -> Maybe M3u8PcrControl -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M3u8PcrControl
pcrControl
          ]
      )