{-# 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.M2tsSettings
-- 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.M2tsSettings where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import Amazonka.MediaConvert.Types.DvbNitSettings
import Amazonka.MediaConvert.Types.DvbSdtSettings
import Amazonka.MediaConvert.Types.DvbTdtSettings
import Amazonka.MediaConvert.Types.M2tsAudioBufferModel
import Amazonka.MediaConvert.Types.M2tsAudioDuration
import Amazonka.MediaConvert.Types.M2tsBufferModel
import Amazonka.MediaConvert.Types.M2tsDataPtsControl
import Amazonka.MediaConvert.Types.M2tsEbpAudioInterval
import Amazonka.MediaConvert.Types.M2tsEbpPlacement
import Amazonka.MediaConvert.Types.M2tsEsRateInPes
import Amazonka.MediaConvert.Types.M2tsForceTsVideoEbpOrder
import Amazonka.MediaConvert.Types.M2tsNielsenId3
import Amazonka.MediaConvert.Types.M2tsPcrControl
import Amazonka.MediaConvert.Types.M2tsRateMode
import Amazonka.MediaConvert.Types.M2tsScte35Esam
import Amazonka.MediaConvert.Types.M2tsScte35Source
import Amazonka.MediaConvert.Types.M2tsSegmentationMarkers
import Amazonka.MediaConvert.Types.M2tsSegmentationStyle
import qualified Amazonka.Prelude as Prelude

-- | MPEG-2 TS container settings. These apply to outputs in a File output
-- group when the output\'s container (ContainerType) is MPEG-2 Transport
-- Stream (M2TS). In these assets, data is organized by the program map
-- table (PMT). Each transport stream program contains subsets of data,
-- including audio, video, and metadata. Each of these subsets of data has
-- a numerical label called a packet identifier (PID). Each transport
-- stream program corresponds to one MediaConvert output. The PMT lists the
-- types of data in a program along with their PID. Downstream systems and
-- players use the program map table to look up the PID for each type of
-- data it accesses and then uses the PIDs to locate specific data within
-- the asset.
--
-- /See:/ 'newM2tsSettings' smart constructor.
data M2tsSettings = M2tsSettings'
  { -- | Specify the packet identifier (PID) for the program map table (PMT)
    -- itself. Default is 480.
    M2tsSettings -> Maybe Natural
pmtPid :: Prelude.Maybe Prelude.Natural,
    -- | Specify the packet identifier (PID) of the elementary video stream in
    -- the transport stream.
    M2tsSettings -> Maybe Natural
videoPid :: Prelude.Maybe Prelude.Natural,
    -- | Controls what buffer model to use for accurate interleaving. If set to
    -- MULTIPLEX, use multiplex buffer model. If set to NONE, this can lead to
    -- lower latency, but low-memory devices may not be able to play back the
    -- stream without interruptions.
    M2tsSettings -> Maybe M2tsBufferModel
bufferModel :: Prelude.Maybe M2tsBufferModel,
    -- | Use Program number (programNumber) to specify the program number used in
    -- the program map table (PMT) for this output. Default is 1. Program
    -- numbers and program map tables are parts of MPEG-2 transport stream
    -- containers, used for organizing data.
    M2tsSettings -> Maybe Natural
programNumber :: Prelude.Maybe Prelude.Natural,
    -- | Specify the packet identifier (PID) of the SCTE-35 stream in the
    -- transport stream.
    M2tsSettings -> Maybe Natural
scte35Pid :: Prelude.Maybe Prelude.Natural,
    -- | When set, enforces that Encoder Boundary Points do not come within the
    -- specified time interval of each other by looking ahead at input video.
    -- If another EBP is going to come in within the specified time interval,
    -- the current EBP is not emitted, and the segment is \"stretched\" to the
    -- next marker. The lookahead value does not add latency to the system. The
    -- Live Event must be configured elsewhere to create sufficient latency to
    -- make the lookahead accurate.
    M2tsSettings -> Maybe Natural
minEbpInterval :: Prelude.Maybe Prelude.Natural,
    -- | Specify the ID for the transport stream itself in the program map table
    -- for this output. Transport stream IDs and program map tables are parts
    -- of MPEG-2 transport stream containers, used for organizing data.
    M2tsSettings -> Maybe Natural
transportStreamId :: Prelude.Maybe Prelude.Natural,
    -- | Specify the maximum time, in milliseconds, between Program Clock
    -- References (PCRs) inserted into the transport stream.
    M2tsSettings -> Maybe Natural
maxPcrInterval :: Prelude.Maybe Prelude.Natural,
    -- | The length, in seconds, of each fragment. Only used with EBP markers.
    M2tsSettings -> Maybe Double
fragmentTime :: Prelude.Maybe Prelude.Double,
    -- | Specify the packet identifier (PID) of the private metadata stream.
    -- Default is 503.
    M2tsSettings -> Maybe Natural
privateMetadataPid :: Prelude.Maybe Prelude.Natural,
    -- | Include this in your job settings to put SCTE-35 markers in your HLS and
    -- transport stream outputs at the insertion points that you specify in an
    -- ESAM XML document. Provide the document in the setting SCC XML (sccXml).
    M2tsSettings -> Maybe M2tsScte35Esam
scte35Esam :: Prelude.Maybe M2tsScte35Esam,
    -- | 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.
    M2tsSettings -> Maybe M2tsAudioDuration
audioDuration :: Prelude.Maybe M2tsAudioDuration,
    -- | Specify the number of milliseconds between instances of the program map
    -- table (PMT) in the output transport stream.
    M2tsSettings -> Maybe Natural
pmtInterval :: Prelude.Maybe Prelude.Natural,
    -- | Use these settings to insert a DVB Service Description Table (SDT) in
    -- the transport stream of this output. When you work directly in your JSON
    -- job specification, include this object only when your job has a
    -- transport stream output and the container settings contain the object
    -- M2tsSettings.
    M2tsSettings -> Maybe DvbSdtSettings
dvbSdtSettings :: Prelude.Maybe DvbSdtSettings,
    -- | Value in bits per second of extra null packets to insert into the
    -- transport stream. This can be used if a downstream encryption system
    -- requires periodic null packets.
    M2tsSettings -> Maybe Double
nullPacketBitrate :: Prelude.Maybe Prelude.Double,
    -- | Selects between the DVB and ATSC buffer models for Dolby Digital audio.
    M2tsSettings -> Maybe M2tsAudioBufferModel
audioBufferModel :: Prelude.Maybe M2tsAudioBufferModel,
    -- | Specify the packet identifier (PID) for timed metadata in this output.
    -- Default is 502.
    M2tsSettings -> Maybe Natural
timedMetadataPid :: Prelude.Maybe Prelude.Natural,
    -- | The number of audio frames to insert for each PES packet.
    M2tsSettings -> Maybe Natural
audioFramesPerPes :: Prelude.Maybe Prelude.Natural,
    -- | Specify the packet identifier (PID) for the program clock reference
    -- (PCR) in this output. If you do not specify a value, the service will
    -- use the value for Video PID (VideoPid).
    M2tsSettings -> Maybe Natural
pcrPid :: Prelude.Maybe Prelude.Natural,
    -- | Inserts segmentation markers at each segmentation_time period.
    -- rai_segstart sets the Random Access Indicator bit in the adaptation
    -- field. rai_adapt sets the RAI bit and adds the current timecode in the
    -- private data bytes. psi_segstart inserts PAT and PMT tables at the start
    -- of segments. ebp adds Encoder Boundary Point information to the
    -- adaptation field as per OpenCable specification OC-SP-EBP-I01-130118.
    -- ebp_legacy adds Encoder Boundary Point information to the adaptation
    -- field using a legacy proprietary format.
    M2tsSettings -> Maybe M2tsSegmentationMarkers
segmentationMarkers :: Prelude.Maybe M2tsSegmentationMarkers,
    -- | Specify the packet identifiers (PIDs) for DVB subtitle data included in
    -- this output. Specify multiple PIDs as a JSON array. Default is the range
    -- 460-479.
    M2tsSettings -> Maybe [Natural]
dvbSubPids :: 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). Also provide the ESAM XML as a string in the setting Signal
    -- processing notification XML (sccXml). Also enable ESAM SCTE-35 (include
    -- the property scte35Esam).
    M2tsSettings -> Maybe M2tsScte35Source
scte35Source :: Prelude.Maybe M2tsScte35Source,
    -- | The number of milliseconds between instances of this table in the output
    -- transport stream.
    M2tsSettings -> Maybe Natural
patInterval :: Prelude.Maybe Prelude.Natural,
    -- | Keep the default value (DEFAULT) unless you know that your audio EBP
    -- markers are incorrectly appearing before your video EBP markers. To
    -- correct this problem, set this value to Force (FORCE).
    M2tsSettings -> Maybe M2tsForceTsVideoEbpOrder
forceTsVideoEbpOrder :: Prelude.Maybe M2tsForceTsVideoEbpOrder,
    -- | Controls whether to include the ES Rate field in the PES header.
    M2tsSettings -> Maybe M2tsEsRateInPes
esRateInPes :: Prelude.Maybe M2tsEsRateInPes,
    -- | Specify the output bitrate of the transport stream in bits per second.
    -- Setting to 0 lets the muxer automatically determine the appropriate
    -- bitrate. Other common values are 3750000, 7500000, and 15000000.
    M2tsSettings -> Maybe Natural
bitrate :: Prelude.Maybe Prelude.Natural,
    -- | Specify the packet identifiers (PIDs) for any elementary audio streams
    -- you include in this output. Specify multiple PIDs as a JSON array.
    -- Default is the range 482-492.
    M2tsSettings -> Maybe [Natural]
audioPids :: Prelude.Maybe [Prelude.Natural],
    -- | Specify the packet identifier (PID) for DVB teletext data you include in
    -- this output. Default is 499.
    M2tsSettings -> Maybe Natural
dvbTeletextPid :: 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.
    M2tsSettings -> Maybe M2tsNielsenId3
nielsenId3 :: Prelude.Maybe M2tsNielsenId3,
    -- | 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.
    M2tsSettings -> Maybe M2tsDataPtsControl
dataPTSControl :: Prelude.Maybe M2tsDataPtsControl,
    -- | Specify the length, in seconds, of each segment. Required unless markers
    -- is set to _none_.
    M2tsSettings -> Maybe Double
segmentationTime :: Prelude.Maybe Prelude.Double,
    -- | When set to VIDEO_AND_FIXED_INTERVALS, audio EBP markers will be added
    -- to partitions 3 and 4. The interval between these additional markers
    -- will be fixed, and will be slightly shorter than the video EBP marker
    -- interval. When set to VIDEO_INTERVAL, these additional markers will not
    -- be inserted. Only applicable when EBP segmentation markers are is
    -- selected (segmentationMarkers is EBP or EBP_LEGACY).
    M2tsSettings -> Maybe M2tsEbpAudioInterval
ebpAudioInterval :: Prelude.Maybe M2tsEbpAudioInterval,
    -- | Use these settings to insert a DVB Network Information Table (NIT) in
    -- the transport stream of this output. When you work directly in your JSON
    -- job specification, include this object only when your job has a
    -- transport stream output and the container settings contain the object
    -- M2tsSettings.
    M2tsSettings -> Maybe DvbNitSettings
dvbNitSettings :: Prelude.Maybe DvbNitSettings,
    -- | When set to PCR_EVERY_PES_PACKET, a Program Clock Reference value is
    -- inserted for every Packetized Elementary Stream (PES) header. This is
    -- effective only when the PCR PID is the same as the video or audio
    -- elementary stream.
    M2tsSettings -> Maybe M2tsPcrControl
pcrControl :: Prelude.Maybe M2tsPcrControl,
    -- | Selects which PIDs to place EBP markers on. They can either be placed
    -- only on the video PID, or on both the video PID and all audio PIDs. Only
    -- applicable when EBP segmentation markers are is selected
    -- (segmentationMarkers is EBP or EBP_LEGACY).
    M2tsSettings -> Maybe M2tsEbpPlacement
ebpPlacement :: Prelude.Maybe M2tsEbpPlacement,
    -- | When set to CBR, inserts null packets into transport stream to fill
    -- specified bitrate. When set to VBR, the bitrate setting acts as the
    -- maximum bitrate, but the output will not be padded up to that bitrate.
    M2tsSettings -> Maybe M2tsRateMode
rateMode :: Prelude.Maybe M2tsRateMode,
    -- | The segmentation style parameter controls how segmentation markers are
    -- inserted into the transport stream. With avails, it is possible that
    -- segments may be truncated, which can influence where future segmentation
    -- markers are inserted. When a segmentation style of \"reset_cadence\" is
    -- selected and a segment is truncated due to an avail, we will reset the
    -- segmentation cadence. This means the subsequent segment will have a
    -- duration of of $segmentation_time seconds. When a segmentation style of
    -- \"maintain_cadence\" is selected and a segment is truncated due to an
    -- avail, we will not reset the segmentation cadence. This means the
    -- subsequent segment will likely be truncated as well. However, all
    -- segments after that will have a duration of $segmentation_time seconds.
    -- Note that EBP lookahead is a slight exception to this rule.
    M2tsSettings -> Maybe M2tsSegmentationStyle
segmentationStyle :: Prelude.Maybe M2tsSegmentationStyle,
    -- | Use these settings to insert a DVB Time and Date Table (TDT) in the
    -- transport stream of this output. When you work directly in your JSON job
    -- specification, include this object only when your job has a transport
    -- stream output and the container settings contain the object
    -- M2tsSettings.
    M2tsSettings -> Maybe DvbTdtSettings
dvbTdtSettings :: Prelude.Maybe DvbTdtSettings
  }
  deriving (M2tsSettings -> M2tsSettings -> Bool
(M2tsSettings -> M2tsSettings -> Bool)
-> (M2tsSettings -> M2tsSettings -> Bool) -> Eq M2tsSettings
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: M2tsSettings -> M2tsSettings -> Bool
$c/= :: M2tsSettings -> M2tsSettings -> Bool
== :: M2tsSettings -> M2tsSettings -> Bool
$c== :: M2tsSettings -> M2tsSettings -> Bool
Prelude.Eq, ReadPrec [M2tsSettings]
ReadPrec M2tsSettings
Int -> ReadS M2tsSettings
ReadS [M2tsSettings]
(Int -> ReadS M2tsSettings)
-> ReadS [M2tsSettings]
-> ReadPrec M2tsSettings
-> ReadPrec [M2tsSettings]
-> Read M2tsSettings
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [M2tsSettings]
$creadListPrec :: ReadPrec [M2tsSettings]
readPrec :: ReadPrec M2tsSettings
$creadPrec :: ReadPrec M2tsSettings
readList :: ReadS [M2tsSettings]
$creadList :: ReadS [M2tsSettings]
readsPrec :: Int -> ReadS M2tsSettings
$creadsPrec :: Int -> ReadS M2tsSettings
Prelude.Read, Int -> M2tsSettings -> ShowS
[M2tsSettings] -> ShowS
M2tsSettings -> String
(Int -> M2tsSettings -> ShowS)
-> (M2tsSettings -> String)
-> ([M2tsSettings] -> ShowS)
-> Show M2tsSettings
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [M2tsSettings] -> ShowS
$cshowList :: [M2tsSettings] -> ShowS
show :: M2tsSettings -> String
$cshow :: M2tsSettings -> String
showsPrec :: Int -> M2tsSettings -> ShowS
$cshowsPrec :: Int -> M2tsSettings -> ShowS
Prelude.Show, (forall x. M2tsSettings -> Rep M2tsSettings x)
-> (forall x. Rep M2tsSettings x -> M2tsSettings)
-> Generic M2tsSettings
forall x. Rep M2tsSettings x -> M2tsSettings
forall x. M2tsSettings -> Rep M2tsSettings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep M2tsSettings x -> M2tsSettings
$cfrom :: forall x. M2tsSettings -> Rep M2tsSettings x
Prelude.Generic)

-- |
-- Create a value of 'M2tsSettings' 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', 'm2tsSettings_pmtPid' - Specify the packet identifier (PID) for the program map table (PMT)
-- itself. Default is 480.
--
-- 'videoPid', 'm2tsSettings_videoPid' - Specify the packet identifier (PID) of the elementary video stream in
-- the transport stream.
--
-- 'bufferModel', 'm2tsSettings_bufferModel' - Controls what buffer model to use for accurate interleaving. If set to
-- MULTIPLEX, use multiplex buffer model. If set to NONE, this can lead to
-- lower latency, but low-memory devices may not be able to play back the
-- stream without interruptions.
--
-- 'programNumber', 'm2tsSettings_programNumber' - Use Program number (programNumber) to specify the program number used in
-- the program map table (PMT) for this output. Default is 1. Program
-- numbers and program map tables are parts of MPEG-2 transport stream
-- containers, used for organizing data.
--
-- 'scte35Pid', 'm2tsSettings_scte35Pid' - Specify the packet identifier (PID) of the SCTE-35 stream in the
-- transport stream.
--
-- 'minEbpInterval', 'm2tsSettings_minEbpInterval' - When set, enforces that Encoder Boundary Points do not come within the
-- specified time interval of each other by looking ahead at input video.
-- If another EBP is going to come in within the specified time interval,
-- the current EBP is not emitted, and the segment is \"stretched\" to the
-- next marker. The lookahead value does not add latency to the system. The
-- Live Event must be configured elsewhere to create sufficient latency to
-- make the lookahead accurate.
--
-- 'transportStreamId', 'm2tsSettings_transportStreamId' - Specify the ID for the transport stream itself in the program map table
-- for this output. Transport stream IDs and program map tables are parts
-- of MPEG-2 transport stream containers, used for organizing data.
--
-- 'maxPcrInterval', 'm2tsSettings_maxPcrInterval' - Specify the maximum time, in milliseconds, between Program Clock
-- References (PCRs) inserted into the transport stream.
--
-- 'fragmentTime', 'm2tsSettings_fragmentTime' - The length, in seconds, of each fragment. Only used with EBP markers.
--
-- 'privateMetadataPid', 'm2tsSettings_privateMetadataPid' - Specify the packet identifier (PID) of the private metadata stream.
-- Default is 503.
--
-- 'scte35Esam', 'm2tsSettings_scte35Esam' - Include this in your job settings to put SCTE-35 markers in your HLS and
-- transport stream outputs at the insertion points that you specify in an
-- ESAM XML document. Provide the document in the setting SCC XML (sccXml).
--
-- 'audioDuration', 'm2tsSettings_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', 'm2tsSettings_pmtInterval' - Specify the number of milliseconds between instances of the program map
-- table (PMT) in the output transport stream.
--
-- 'dvbSdtSettings', 'm2tsSettings_dvbSdtSettings' - Use these settings to insert a DVB Service Description Table (SDT) in
-- the transport stream of this output. When you work directly in your JSON
-- job specification, include this object only when your job has a
-- transport stream output and the container settings contain the object
-- M2tsSettings.
--
-- 'nullPacketBitrate', 'm2tsSettings_nullPacketBitrate' - Value in bits per second of extra null packets to insert into the
-- transport stream. This can be used if a downstream encryption system
-- requires periodic null packets.
--
-- 'audioBufferModel', 'm2tsSettings_audioBufferModel' - Selects between the DVB and ATSC buffer models for Dolby Digital audio.
--
-- 'timedMetadataPid', 'm2tsSettings_timedMetadataPid' - Specify the packet identifier (PID) for timed metadata in this output.
-- Default is 502.
--
-- 'audioFramesPerPes', 'm2tsSettings_audioFramesPerPes' - The number of audio frames to insert for each PES packet.
--
-- 'pcrPid', 'm2tsSettings_pcrPid' - Specify the packet identifier (PID) for the program clock reference
-- (PCR) in this output. If you do not specify a value, the service will
-- use the value for Video PID (VideoPid).
--
-- 'segmentationMarkers', 'm2tsSettings_segmentationMarkers' - Inserts segmentation markers at each segmentation_time period.
-- rai_segstart sets the Random Access Indicator bit in the adaptation
-- field. rai_adapt sets the RAI bit and adds the current timecode in the
-- private data bytes. psi_segstart inserts PAT and PMT tables at the start
-- of segments. ebp adds Encoder Boundary Point information to the
-- adaptation field as per OpenCable specification OC-SP-EBP-I01-130118.
-- ebp_legacy adds Encoder Boundary Point information to the adaptation
-- field using a legacy proprietary format.
--
-- 'dvbSubPids', 'm2tsSettings_dvbSubPids' - Specify the packet identifiers (PIDs) for DVB subtitle data included in
-- this output. Specify multiple PIDs as a JSON array. Default is the range
-- 460-479.
--
-- 'scte35Source', 'm2tsSettings_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). Also provide the ESAM XML as a string in the setting Signal
-- processing notification XML (sccXml). Also enable ESAM SCTE-35 (include
-- the property scte35Esam).
--
-- 'patInterval', 'm2tsSettings_patInterval' - The number of milliseconds between instances of this table in the output
-- transport stream.
--
-- 'forceTsVideoEbpOrder', 'm2tsSettings_forceTsVideoEbpOrder' - Keep the default value (DEFAULT) unless you know that your audio EBP
-- markers are incorrectly appearing before your video EBP markers. To
-- correct this problem, set this value to Force (FORCE).
--
-- 'esRateInPes', 'm2tsSettings_esRateInPes' - Controls whether to include the ES Rate field in the PES header.
--
-- 'bitrate', 'm2tsSettings_bitrate' - Specify the output bitrate of the transport stream in bits per second.
-- Setting to 0 lets the muxer automatically determine the appropriate
-- bitrate. Other common values are 3750000, 7500000, and 15000000.
--
-- 'audioPids', 'm2tsSettings_audioPids' - Specify the packet identifiers (PIDs) for any elementary audio streams
-- you include in this output. Specify multiple PIDs as a JSON array.
-- Default is the range 482-492.
--
-- 'dvbTeletextPid', 'm2tsSettings_dvbTeletextPid' - Specify the packet identifier (PID) for DVB teletext data you include in
-- this output. Default is 499.
--
-- 'nielsenId3', 'm2tsSettings_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', 'm2tsSettings_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.
--
-- 'segmentationTime', 'm2tsSettings_segmentationTime' - Specify the length, in seconds, of each segment. Required unless markers
-- is set to _none_.
--
-- 'ebpAudioInterval', 'm2tsSettings_ebpAudioInterval' - When set to VIDEO_AND_FIXED_INTERVALS, audio EBP markers will be added
-- to partitions 3 and 4. The interval between these additional markers
-- will be fixed, and will be slightly shorter than the video EBP marker
-- interval. When set to VIDEO_INTERVAL, these additional markers will not
-- be inserted. Only applicable when EBP segmentation markers are is
-- selected (segmentationMarkers is EBP or EBP_LEGACY).
--
-- 'dvbNitSettings', 'm2tsSettings_dvbNitSettings' - Use these settings to insert a DVB Network Information Table (NIT) in
-- the transport stream of this output. When you work directly in your JSON
-- job specification, include this object only when your job has a
-- transport stream output and the container settings contain the object
-- M2tsSettings.
--
-- 'pcrControl', 'm2tsSettings_pcrControl' - When set to PCR_EVERY_PES_PACKET, a Program Clock Reference value is
-- inserted for every Packetized Elementary Stream (PES) header. This is
-- effective only when the PCR PID is the same as the video or audio
-- elementary stream.
--
-- 'ebpPlacement', 'm2tsSettings_ebpPlacement' - Selects which PIDs to place EBP markers on. They can either be placed
-- only on the video PID, or on both the video PID and all audio PIDs. Only
-- applicable when EBP segmentation markers are is selected
-- (segmentationMarkers is EBP or EBP_LEGACY).
--
-- 'rateMode', 'm2tsSettings_rateMode' - When set to CBR, inserts null packets into transport stream to fill
-- specified bitrate. When set to VBR, the bitrate setting acts as the
-- maximum bitrate, but the output will not be padded up to that bitrate.
--
-- 'segmentationStyle', 'm2tsSettings_segmentationStyle' - The segmentation style parameter controls how segmentation markers are
-- inserted into the transport stream. With avails, it is possible that
-- segments may be truncated, which can influence where future segmentation
-- markers are inserted. When a segmentation style of \"reset_cadence\" is
-- selected and a segment is truncated due to an avail, we will reset the
-- segmentation cadence. This means the subsequent segment will have a
-- duration of of $segmentation_time seconds. When a segmentation style of
-- \"maintain_cadence\" is selected and a segment is truncated due to an
-- avail, we will not reset the segmentation cadence. This means the
-- subsequent segment will likely be truncated as well. However, all
-- segments after that will have a duration of $segmentation_time seconds.
-- Note that EBP lookahead is a slight exception to this rule.
--
-- 'dvbTdtSettings', 'm2tsSettings_dvbTdtSettings' - Use these settings to insert a DVB Time and Date Table (TDT) in the
-- transport stream of this output. When you work directly in your JSON job
-- specification, include this object only when your job has a transport
-- stream output and the container settings contain the object
-- M2tsSettings.
newM2tsSettings ::
  M2tsSettings
newM2tsSettings :: M2tsSettings
newM2tsSettings =
  M2tsSettings' :: Maybe Natural
-> Maybe Natural
-> Maybe M2tsBufferModel
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Double
-> Maybe Natural
-> Maybe M2tsScte35Esam
-> Maybe M2tsAudioDuration
-> Maybe Natural
-> Maybe DvbSdtSettings
-> Maybe Double
-> Maybe M2tsAudioBufferModel
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe M2tsSegmentationMarkers
-> Maybe [Natural]
-> Maybe M2tsScte35Source
-> Maybe Natural
-> Maybe M2tsForceTsVideoEbpOrder
-> Maybe M2tsEsRateInPes
-> Maybe Natural
-> Maybe [Natural]
-> Maybe Natural
-> Maybe M2tsNielsenId3
-> Maybe M2tsDataPtsControl
-> Maybe Double
-> Maybe M2tsEbpAudioInterval
-> Maybe DvbNitSettings
-> Maybe M2tsPcrControl
-> Maybe M2tsEbpPlacement
-> Maybe M2tsRateMode
-> Maybe M2tsSegmentationStyle
-> Maybe DvbTdtSettings
-> M2tsSettings
M2tsSettings'
    { $sel:pmtPid:M2tsSettings' :: Maybe Natural
pmtPid = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:videoPid:M2tsSettings' :: Maybe Natural
videoPid = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:bufferModel:M2tsSettings' :: Maybe M2tsBufferModel
bufferModel = Maybe M2tsBufferModel
forall a. Maybe a
Prelude.Nothing,
      $sel:programNumber:M2tsSettings' :: Maybe Natural
programNumber = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:scte35Pid:M2tsSettings' :: Maybe Natural
scte35Pid = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:minEbpInterval:M2tsSettings' :: Maybe Natural
minEbpInterval = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:transportStreamId:M2tsSettings' :: Maybe Natural
transportStreamId = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:maxPcrInterval:M2tsSettings' :: Maybe Natural
maxPcrInterval = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:fragmentTime:M2tsSettings' :: Maybe Double
fragmentTime = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:privateMetadataPid:M2tsSettings' :: Maybe Natural
privateMetadataPid = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:scte35Esam:M2tsSettings' :: Maybe M2tsScte35Esam
scte35Esam = Maybe M2tsScte35Esam
forall a. Maybe a
Prelude.Nothing,
      $sel:audioDuration:M2tsSettings' :: Maybe M2tsAudioDuration
audioDuration = Maybe M2tsAudioDuration
forall a. Maybe a
Prelude.Nothing,
      $sel:pmtInterval:M2tsSettings' :: Maybe Natural
pmtInterval = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:dvbSdtSettings:M2tsSettings' :: Maybe DvbSdtSettings
dvbSdtSettings = Maybe DvbSdtSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:nullPacketBitrate:M2tsSettings' :: Maybe Double
nullPacketBitrate = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:audioBufferModel:M2tsSettings' :: Maybe M2tsAudioBufferModel
audioBufferModel = Maybe M2tsAudioBufferModel
forall a. Maybe a
Prelude.Nothing,
      $sel:timedMetadataPid:M2tsSettings' :: Maybe Natural
timedMetadataPid = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:audioFramesPerPes:M2tsSettings' :: Maybe Natural
audioFramesPerPes = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:pcrPid:M2tsSettings' :: Maybe Natural
pcrPid = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:segmentationMarkers:M2tsSettings' :: Maybe M2tsSegmentationMarkers
segmentationMarkers = Maybe M2tsSegmentationMarkers
forall a. Maybe a
Prelude.Nothing,
      $sel:dvbSubPids:M2tsSettings' :: Maybe [Natural]
dvbSubPids = Maybe [Natural]
forall a. Maybe a
Prelude.Nothing,
      $sel:scte35Source:M2tsSettings' :: Maybe M2tsScte35Source
scte35Source = Maybe M2tsScte35Source
forall a. Maybe a
Prelude.Nothing,
      $sel:patInterval:M2tsSettings' :: Maybe Natural
patInterval = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:forceTsVideoEbpOrder:M2tsSettings' :: Maybe M2tsForceTsVideoEbpOrder
forceTsVideoEbpOrder = Maybe M2tsForceTsVideoEbpOrder
forall a. Maybe a
Prelude.Nothing,
      $sel:esRateInPes:M2tsSettings' :: Maybe M2tsEsRateInPes
esRateInPes = Maybe M2tsEsRateInPes
forall a. Maybe a
Prelude.Nothing,
      $sel:bitrate:M2tsSettings' :: Maybe Natural
bitrate = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:audioPids:M2tsSettings' :: Maybe [Natural]
audioPids = Maybe [Natural]
forall a. Maybe a
Prelude.Nothing,
      $sel:dvbTeletextPid:M2tsSettings' :: Maybe Natural
dvbTeletextPid = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:nielsenId3:M2tsSettings' :: Maybe M2tsNielsenId3
nielsenId3 = Maybe M2tsNielsenId3
forall a. Maybe a
Prelude.Nothing,
      $sel:dataPTSControl:M2tsSettings' :: Maybe M2tsDataPtsControl
dataPTSControl = Maybe M2tsDataPtsControl
forall a. Maybe a
Prelude.Nothing,
      $sel:segmentationTime:M2tsSettings' :: Maybe Double
segmentationTime = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:ebpAudioInterval:M2tsSettings' :: Maybe M2tsEbpAudioInterval
ebpAudioInterval = Maybe M2tsEbpAudioInterval
forall a. Maybe a
Prelude.Nothing,
      $sel:dvbNitSettings:M2tsSettings' :: Maybe DvbNitSettings
dvbNitSettings = Maybe DvbNitSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:pcrControl:M2tsSettings' :: Maybe M2tsPcrControl
pcrControl = Maybe M2tsPcrControl
forall a. Maybe a
Prelude.Nothing,
      $sel:ebpPlacement:M2tsSettings' :: Maybe M2tsEbpPlacement
ebpPlacement = Maybe M2tsEbpPlacement
forall a. Maybe a
Prelude.Nothing,
      $sel:rateMode:M2tsSettings' :: Maybe M2tsRateMode
rateMode = Maybe M2tsRateMode
forall a. Maybe a
Prelude.Nothing,
      $sel:segmentationStyle:M2tsSettings' :: Maybe M2tsSegmentationStyle
segmentationStyle = Maybe M2tsSegmentationStyle
forall a. Maybe a
Prelude.Nothing,
      $sel:dvbTdtSettings:M2tsSettings' :: Maybe DvbTdtSettings
dvbTdtSettings = Maybe DvbTdtSettings
forall a. Maybe a
Prelude.Nothing
    }

-- | Specify the packet identifier (PID) for the program map table (PMT)
-- itself. Default is 480.
m2tsSettings_pmtPid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
m2tsSettings_pmtPid :: (Maybe Natural -> f (Maybe Natural))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_pmtPid = (M2tsSettings -> Maybe Natural)
-> (M2tsSettings -> Maybe Natural -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Natural
pmtPid :: Maybe Natural
$sel:pmtPid:M2tsSettings' :: M2tsSettings -> Maybe Natural
pmtPid} -> Maybe Natural
pmtPid) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Natural
a -> M2tsSettings
s {$sel:pmtPid:M2tsSettings' :: Maybe Natural
pmtPid = Maybe Natural
a} :: M2tsSettings)

-- | Specify the packet identifier (PID) of the elementary video stream in
-- the transport stream.
m2tsSettings_videoPid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
m2tsSettings_videoPid :: (Maybe Natural -> f (Maybe Natural))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_videoPid = (M2tsSettings -> Maybe Natural)
-> (M2tsSettings -> Maybe Natural -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Natural
videoPid :: Maybe Natural
$sel:videoPid:M2tsSettings' :: M2tsSettings -> Maybe Natural
videoPid} -> Maybe Natural
videoPid) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Natural
a -> M2tsSettings
s {$sel:videoPid:M2tsSettings' :: Maybe Natural
videoPid = Maybe Natural
a} :: M2tsSettings)

-- | Controls what buffer model to use for accurate interleaving. If set to
-- MULTIPLEX, use multiplex buffer model. If set to NONE, this can lead to
-- lower latency, but low-memory devices may not be able to play back the
-- stream without interruptions.
m2tsSettings_bufferModel :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsBufferModel)
m2tsSettings_bufferModel :: (Maybe M2tsBufferModel -> f (Maybe M2tsBufferModel))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_bufferModel = (M2tsSettings -> Maybe M2tsBufferModel)
-> (M2tsSettings -> Maybe M2tsBufferModel -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe M2tsBufferModel)
     (Maybe M2tsBufferModel)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsBufferModel
bufferModel :: Maybe M2tsBufferModel
$sel:bufferModel:M2tsSettings' :: M2tsSettings -> Maybe M2tsBufferModel
bufferModel} -> Maybe M2tsBufferModel
bufferModel) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsBufferModel
a -> M2tsSettings
s {$sel:bufferModel:M2tsSettings' :: Maybe M2tsBufferModel
bufferModel = Maybe M2tsBufferModel
a} :: M2tsSettings)

-- | Use Program number (programNumber) to specify the program number used in
-- the program map table (PMT) for this output. Default is 1. Program
-- numbers and program map tables are parts of MPEG-2 transport stream
-- containers, used for organizing data.
m2tsSettings_programNumber :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
m2tsSettings_programNumber :: (Maybe Natural -> f (Maybe Natural))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_programNumber = (M2tsSettings -> Maybe Natural)
-> (M2tsSettings -> Maybe Natural -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Natural
programNumber :: Maybe Natural
$sel:programNumber:M2tsSettings' :: M2tsSettings -> Maybe Natural
programNumber} -> Maybe Natural
programNumber) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Natural
a -> M2tsSettings
s {$sel:programNumber:M2tsSettings' :: Maybe Natural
programNumber = Maybe Natural
a} :: M2tsSettings)

-- | Specify the packet identifier (PID) of the SCTE-35 stream in the
-- transport stream.
m2tsSettings_scte35Pid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
m2tsSettings_scte35Pid :: (Maybe Natural -> f (Maybe Natural))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_scte35Pid = (M2tsSettings -> Maybe Natural)
-> (M2tsSettings -> Maybe Natural -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Natural
scte35Pid :: Maybe Natural
$sel:scte35Pid:M2tsSettings' :: M2tsSettings -> Maybe Natural
scte35Pid} -> Maybe Natural
scte35Pid) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Natural
a -> M2tsSettings
s {$sel:scte35Pid:M2tsSettings' :: Maybe Natural
scte35Pid = Maybe Natural
a} :: M2tsSettings)

-- | When set, enforces that Encoder Boundary Points do not come within the
-- specified time interval of each other by looking ahead at input video.
-- If another EBP is going to come in within the specified time interval,
-- the current EBP is not emitted, and the segment is \"stretched\" to the
-- next marker. The lookahead value does not add latency to the system. The
-- Live Event must be configured elsewhere to create sufficient latency to
-- make the lookahead accurate.
m2tsSettings_minEbpInterval :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
m2tsSettings_minEbpInterval :: (Maybe Natural -> f (Maybe Natural))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_minEbpInterval = (M2tsSettings -> Maybe Natural)
-> (M2tsSettings -> Maybe Natural -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Natural
minEbpInterval :: Maybe Natural
$sel:minEbpInterval:M2tsSettings' :: M2tsSettings -> Maybe Natural
minEbpInterval} -> Maybe Natural
minEbpInterval) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Natural
a -> M2tsSettings
s {$sel:minEbpInterval:M2tsSettings' :: Maybe Natural
minEbpInterval = Maybe Natural
a} :: M2tsSettings)

-- | Specify the ID for the transport stream itself in the program map table
-- for this output. Transport stream IDs and program map tables are parts
-- of MPEG-2 transport stream containers, used for organizing data.
m2tsSettings_transportStreamId :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
m2tsSettings_transportStreamId :: (Maybe Natural -> f (Maybe Natural))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_transportStreamId = (M2tsSettings -> Maybe Natural)
-> (M2tsSettings -> Maybe Natural -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Natural
transportStreamId :: Maybe Natural
$sel:transportStreamId:M2tsSettings' :: M2tsSettings -> Maybe Natural
transportStreamId} -> Maybe Natural
transportStreamId) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Natural
a -> M2tsSettings
s {$sel:transportStreamId:M2tsSettings' :: Maybe Natural
transportStreamId = Maybe Natural
a} :: M2tsSettings)

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

-- | The length, in seconds, of each fragment. Only used with EBP markers.
m2tsSettings_fragmentTime :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Double)
m2tsSettings_fragmentTime :: (Maybe Double -> f (Maybe Double))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_fragmentTime = (M2tsSettings -> Maybe Double)
-> (M2tsSettings -> Maybe Double -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Double) (Maybe Double)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Double
fragmentTime :: Maybe Double
$sel:fragmentTime:M2tsSettings' :: M2tsSettings -> Maybe Double
fragmentTime} -> Maybe Double
fragmentTime) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Double
a -> M2tsSettings
s {$sel:fragmentTime:M2tsSettings' :: Maybe Double
fragmentTime = Maybe Double
a} :: M2tsSettings)

-- | Specify the packet identifier (PID) of the private metadata stream.
-- Default is 503.
m2tsSettings_privateMetadataPid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
m2tsSettings_privateMetadataPid :: (Maybe Natural -> f (Maybe Natural))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_privateMetadataPid = (M2tsSettings -> Maybe Natural)
-> (M2tsSettings -> Maybe Natural -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Natural
privateMetadataPid :: Maybe Natural
$sel:privateMetadataPid:M2tsSettings' :: M2tsSettings -> Maybe Natural
privateMetadataPid} -> Maybe Natural
privateMetadataPid) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Natural
a -> M2tsSettings
s {$sel:privateMetadataPid:M2tsSettings' :: Maybe Natural
privateMetadataPid = Maybe Natural
a} :: M2tsSettings)

-- | Include this in your job settings to put SCTE-35 markers in your HLS and
-- transport stream outputs at the insertion points that you specify in an
-- ESAM XML document. Provide the document in the setting SCC XML (sccXml).
m2tsSettings_scte35Esam :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsScte35Esam)
m2tsSettings_scte35Esam :: (Maybe M2tsScte35Esam -> f (Maybe M2tsScte35Esam))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_scte35Esam = (M2tsSettings -> Maybe M2tsScte35Esam)
-> (M2tsSettings -> Maybe M2tsScte35Esam -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe M2tsScte35Esam)
     (Maybe M2tsScte35Esam)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsScte35Esam
scte35Esam :: Maybe M2tsScte35Esam
$sel:scte35Esam:M2tsSettings' :: M2tsSettings -> Maybe M2tsScte35Esam
scte35Esam} -> Maybe M2tsScte35Esam
scte35Esam) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsScte35Esam
a -> M2tsSettings
s {$sel:scte35Esam:M2tsSettings' :: Maybe M2tsScte35Esam
scte35Esam = Maybe M2tsScte35Esam
a} :: M2tsSettings)

-- | 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.
m2tsSettings_audioDuration :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsAudioDuration)
m2tsSettings_audioDuration :: (Maybe M2tsAudioDuration -> f (Maybe M2tsAudioDuration))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_audioDuration = (M2tsSettings -> Maybe M2tsAudioDuration)
-> (M2tsSettings -> Maybe M2tsAudioDuration -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe M2tsAudioDuration)
     (Maybe M2tsAudioDuration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsAudioDuration
audioDuration :: Maybe M2tsAudioDuration
$sel:audioDuration:M2tsSettings' :: M2tsSettings -> Maybe M2tsAudioDuration
audioDuration} -> Maybe M2tsAudioDuration
audioDuration) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsAudioDuration
a -> M2tsSettings
s {$sel:audioDuration:M2tsSettings' :: Maybe M2tsAudioDuration
audioDuration = Maybe M2tsAudioDuration
a} :: M2tsSettings)

-- | Specify the number of milliseconds between instances of the program map
-- table (PMT) in the output transport stream.
m2tsSettings_pmtInterval :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
m2tsSettings_pmtInterval :: (Maybe Natural -> f (Maybe Natural))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_pmtInterval = (M2tsSettings -> Maybe Natural)
-> (M2tsSettings -> Maybe Natural -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Natural
pmtInterval :: Maybe Natural
$sel:pmtInterval:M2tsSettings' :: M2tsSettings -> Maybe Natural
pmtInterval} -> Maybe Natural
pmtInterval) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Natural
a -> M2tsSettings
s {$sel:pmtInterval:M2tsSettings' :: Maybe Natural
pmtInterval = Maybe Natural
a} :: M2tsSettings)

-- | Use these settings to insert a DVB Service Description Table (SDT) in
-- the transport stream of this output. When you work directly in your JSON
-- job specification, include this object only when your job has a
-- transport stream output and the container settings contain the object
-- M2tsSettings.
m2tsSettings_dvbSdtSettings :: Lens.Lens' M2tsSettings (Prelude.Maybe DvbSdtSettings)
m2tsSettings_dvbSdtSettings :: (Maybe DvbSdtSettings -> f (Maybe DvbSdtSettings))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_dvbSdtSettings = (M2tsSettings -> Maybe DvbSdtSettings)
-> (M2tsSettings -> Maybe DvbSdtSettings -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe DvbSdtSettings)
     (Maybe DvbSdtSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe DvbSdtSettings
dvbSdtSettings :: Maybe DvbSdtSettings
$sel:dvbSdtSettings:M2tsSettings' :: M2tsSettings -> Maybe DvbSdtSettings
dvbSdtSettings} -> Maybe DvbSdtSettings
dvbSdtSettings) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe DvbSdtSettings
a -> M2tsSettings
s {$sel:dvbSdtSettings:M2tsSettings' :: Maybe DvbSdtSettings
dvbSdtSettings = Maybe DvbSdtSettings
a} :: M2tsSettings)

-- | Value in bits per second of extra null packets to insert into the
-- transport stream. This can be used if a downstream encryption system
-- requires periodic null packets.
m2tsSettings_nullPacketBitrate :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Double)
m2tsSettings_nullPacketBitrate :: (Maybe Double -> f (Maybe Double))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_nullPacketBitrate = (M2tsSettings -> Maybe Double)
-> (M2tsSettings -> Maybe Double -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Double) (Maybe Double)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Double
nullPacketBitrate :: Maybe Double
$sel:nullPacketBitrate:M2tsSettings' :: M2tsSettings -> Maybe Double
nullPacketBitrate} -> Maybe Double
nullPacketBitrate) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Double
a -> M2tsSettings
s {$sel:nullPacketBitrate:M2tsSettings' :: Maybe Double
nullPacketBitrate = Maybe Double
a} :: M2tsSettings)

-- | Selects between the DVB and ATSC buffer models for Dolby Digital audio.
m2tsSettings_audioBufferModel :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsAudioBufferModel)
m2tsSettings_audioBufferModel :: (Maybe M2tsAudioBufferModel -> f (Maybe M2tsAudioBufferModel))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_audioBufferModel = (M2tsSettings -> Maybe M2tsAudioBufferModel)
-> (M2tsSettings -> Maybe M2tsAudioBufferModel -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe M2tsAudioBufferModel)
     (Maybe M2tsAudioBufferModel)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsAudioBufferModel
audioBufferModel :: Maybe M2tsAudioBufferModel
$sel:audioBufferModel:M2tsSettings' :: M2tsSettings -> Maybe M2tsAudioBufferModel
audioBufferModel} -> Maybe M2tsAudioBufferModel
audioBufferModel) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsAudioBufferModel
a -> M2tsSettings
s {$sel:audioBufferModel:M2tsSettings' :: Maybe M2tsAudioBufferModel
audioBufferModel = Maybe M2tsAudioBufferModel
a} :: M2tsSettings)

-- | Specify the packet identifier (PID) for timed metadata in this output.
-- Default is 502.
m2tsSettings_timedMetadataPid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
m2tsSettings_timedMetadataPid :: (Maybe Natural -> f (Maybe Natural))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_timedMetadataPid = (M2tsSettings -> Maybe Natural)
-> (M2tsSettings -> Maybe Natural -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Natural
timedMetadataPid :: Maybe Natural
$sel:timedMetadataPid:M2tsSettings' :: M2tsSettings -> Maybe Natural
timedMetadataPid} -> Maybe Natural
timedMetadataPid) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Natural
a -> M2tsSettings
s {$sel:timedMetadataPid:M2tsSettings' :: Maybe Natural
timedMetadataPid = Maybe Natural
a} :: M2tsSettings)

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

-- | Specify the packet identifier (PID) for the program clock reference
-- (PCR) in this output. If you do not specify a value, the service will
-- use the value for Video PID (VideoPid).
m2tsSettings_pcrPid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
m2tsSettings_pcrPid :: (Maybe Natural -> f (Maybe Natural))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_pcrPid = (M2tsSettings -> Maybe Natural)
-> (M2tsSettings -> Maybe Natural -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Natural
pcrPid :: Maybe Natural
$sel:pcrPid:M2tsSettings' :: M2tsSettings -> Maybe Natural
pcrPid} -> Maybe Natural
pcrPid) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Natural
a -> M2tsSettings
s {$sel:pcrPid:M2tsSettings' :: Maybe Natural
pcrPid = Maybe Natural
a} :: M2tsSettings)

-- | Inserts segmentation markers at each segmentation_time period.
-- rai_segstart sets the Random Access Indicator bit in the adaptation
-- field. rai_adapt sets the RAI bit and adds the current timecode in the
-- private data bytes. psi_segstart inserts PAT and PMT tables at the start
-- of segments. ebp adds Encoder Boundary Point information to the
-- adaptation field as per OpenCable specification OC-SP-EBP-I01-130118.
-- ebp_legacy adds Encoder Boundary Point information to the adaptation
-- field using a legacy proprietary format.
m2tsSettings_segmentationMarkers :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsSegmentationMarkers)
m2tsSettings_segmentationMarkers :: (Maybe M2tsSegmentationMarkers
 -> f (Maybe M2tsSegmentationMarkers))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_segmentationMarkers = (M2tsSettings -> Maybe M2tsSegmentationMarkers)
-> (M2tsSettings -> Maybe M2tsSegmentationMarkers -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe M2tsSegmentationMarkers)
     (Maybe M2tsSegmentationMarkers)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsSegmentationMarkers
segmentationMarkers :: Maybe M2tsSegmentationMarkers
$sel:segmentationMarkers:M2tsSettings' :: M2tsSettings -> Maybe M2tsSegmentationMarkers
segmentationMarkers} -> Maybe M2tsSegmentationMarkers
segmentationMarkers) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsSegmentationMarkers
a -> M2tsSettings
s {$sel:segmentationMarkers:M2tsSettings' :: Maybe M2tsSegmentationMarkers
segmentationMarkers = Maybe M2tsSegmentationMarkers
a} :: M2tsSettings)

-- | Specify the packet identifiers (PIDs) for DVB subtitle data included in
-- this output. Specify multiple PIDs as a JSON array. Default is the range
-- 460-479.
m2tsSettings_dvbSubPids :: Lens.Lens' M2tsSettings (Prelude.Maybe [Prelude.Natural])
m2tsSettings_dvbSubPids :: (Maybe [Natural] -> f (Maybe [Natural]))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_dvbSubPids = (M2tsSettings -> Maybe [Natural])
-> (M2tsSettings -> Maybe [Natural] -> M2tsSettings)
-> Lens
     M2tsSettings M2tsSettings (Maybe [Natural]) (Maybe [Natural])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe [Natural]
dvbSubPids :: Maybe [Natural]
$sel:dvbSubPids:M2tsSettings' :: M2tsSettings -> Maybe [Natural]
dvbSubPids} -> Maybe [Natural]
dvbSubPids) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe [Natural]
a -> M2tsSettings
s {$sel:dvbSubPids:M2tsSettings' :: Maybe [Natural]
dvbSubPids = Maybe [Natural]
a} :: M2tsSettings) ((Maybe [Natural] -> f (Maybe [Natural]))
 -> M2tsSettings -> f M2tsSettings)
-> ((Maybe [Natural] -> f (Maybe [Natural]))
    -> Maybe [Natural] -> f (Maybe [Natural]))
-> (Maybe [Natural] -> f (Maybe [Natural]))
-> M2tsSettings
-> f M2tsSettings
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

-- | 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). Also provide the ESAM XML as a string in the setting Signal
-- processing notification XML (sccXml). Also enable ESAM SCTE-35 (include
-- the property scte35Esam).
m2tsSettings_scte35Source :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsScte35Source)
m2tsSettings_scte35Source :: (Maybe M2tsScte35Source -> f (Maybe M2tsScte35Source))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_scte35Source = (M2tsSettings -> Maybe M2tsScte35Source)
-> (M2tsSettings -> Maybe M2tsScte35Source -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe M2tsScte35Source)
     (Maybe M2tsScte35Source)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsScte35Source
scte35Source :: Maybe M2tsScte35Source
$sel:scte35Source:M2tsSettings' :: M2tsSettings -> Maybe M2tsScte35Source
scte35Source} -> Maybe M2tsScte35Source
scte35Source) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsScte35Source
a -> M2tsSettings
s {$sel:scte35Source:M2tsSettings' :: Maybe M2tsScte35Source
scte35Source = Maybe M2tsScte35Source
a} :: M2tsSettings)

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

-- | Keep the default value (DEFAULT) unless you know that your audio EBP
-- markers are incorrectly appearing before your video EBP markers. To
-- correct this problem, set this value to Force (FORCE).
m2tsSettings_forceTsVideoEbpOrder :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsForceTsVideoEbpOrder)
m2tsSettings_forceTsVideoEbpOrder :: (Maybe M2tsForceTsVideoEbpOrder
 -> f (Maybe M2tsForceTsVideoEbpOrder))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_forceTsVideoEbpOrder = (M2tsSettings -> Maybe M2tsForceTsVideoEbpOrder)
-> (M2tsSettings -> Maybe M2tsForceTsVideoEbpOrder -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe M2tsForceTsVideoEbpOrder)
     (Maybe M2tsForceTsVideoEbpOrder)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsForceTsVideoEbpOrder
forceTsVideoEbpOrder :: Maybe M2tsForceTsVideoEbpOrder
$sel:forceTsVideoEbpOrder:M2tsSettings' :: M2tsSettings -> Maybe M2tsForceTsVideoEbpOrder
forceTsVideoEbpOrder} -> Maybe M2tsForceTsVideoEbpOrder
forceTsVideoEbpOrder) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsForceTsVideoEbpOrder
a -> M2tsSettings
s {$sel:forceTsVideoEbpOrder:M2tsSettings' :: Maybe M2tsForceTsVideoEbpOrder
forceTsVideoEbpOrder = Maybe M2tsForceTsVideoEbpOrder
a} :: M2tsSettings)

-- | Controls whether to include the ES Rate field in the PES header.
m2tsSettings_esRateInPes :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsEsRateInPes)
m2tsSettings_esRateInPes :: (Maybe M2tsEsRateInPes -> f (Maybe M2tsEsRateInPes))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_esRateInPes = (M2tsSettings -> Maybe M2tsEsRateInPes)
-> (M2tsSettings -> Maybe M2tsEsRateInPes -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe M2tsEsRateInPes)
     (Maybe M2tsEsRateInPes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsEsRateInPes
esRateInPes :: Maybe M2tsEsRateInPes
$sel:esRateInPes:M2tsSettings' :: M2tsSettings -> Maybe M2tsEsRateInPes
esRateInPes} -> Maybe M2tsEsRateInPes
esRateInPes) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsEsRateInPes
a -> M2tsSettings
s {$sel:esRateInPes:M2tsSettings' :: Maybe M2tsEsRateInPes
esRateInPes = Maybe M2tsEsRateInPes
a} :: M2tsSettings)

-- | Specify the output bitrate of the transport stream in bits per second.
-- Setting to 0 lets the muxer automatically determine the appropriate
-- bitrate. Other common values are 3750000, 7500000, and 15000000.
m2tsSettings_bitrate :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
m2tsSettings_bitrate :: (Maybe Natural -> f (Maybe Natural))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_bitrate = (M2tsSettings -> Maybe Natural)
-> (M2tsSettings -> Maybe Natural -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Natural
bitrate :: Maybe Natural
$sel:bitrate:M2tsSettings' :: M2tsSettings -> Maybe Natural
bitrate} -> Maybe Natural
bitrate) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Natural
a -> M2tsSettings
s {$sel:bitrate:M2tsSettings' :: Maybe Natural
bitrate = Maybe Natural
a} :: M2tsSettings)

-- | Specify the packet identifiers (PIDs) for any elementary audio streams
-- you include in this output. Specify multiple PIDs as a JSON array.
-- Default is the range 482-492.
m2tsSettings_audioPids :: Lens.Lens' M2tsSettings (Prelude.Maybe [Prelude.Natural])
m2tsSettings_audioPids :: (Maybe [Natural] -> f (Maybe [Natural]))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_audioPids = (M2tsSettings -> Maybe [Natural])
-> (M2tsSettings -> Maybe [Natural] -> M2tsSettings)
-> Lens
     M2tsSettings M2tsSettings (Maybe [Natural]) (Maybe [Natural])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe [Natural]
audioPids :: Maybe [Natural]
$sel:audioPids:M2tsSettings' :: M2tsSettings -> Maybe [Natural]
audioPids} -> Maybe [Natural]
audioPids) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe [Natural]
a -> M2tsSettings
s {$sel:audioPids:M2tsSettings' :: Maybe [Natural]
audioPids = Maybe [Natural]
a} :: M2tsSettings) ((Maybe [Natural] -> f (Maybe [Natural]))
 -> M2tsSettings -> f M2tsSettings)
-> ((Maybe [Natural] -> f (Maybe [Natural]))
    -> Maybe [Natural] -> f (Maybe [Natural]))
-> (Maybe [Natural] -> f (Maybe [Natural]))
-> M2tsSettings
-> f M2tsSettings
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

-- | Specify the packet identifier (PID) for DVB teletext data you include in
-- this output. Default is 499.
m2tsSettings_dvbTeletextPid :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Natural)
m2tsSettings_dvbTeletextPid :: (Maybe Natural -> f (Maybe Natural))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_dvbTeletextPid = (M2tsSettings -> Maybe Natural)
-> (M2tsSettings -> Maybe Natural -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Natural
dvbTeletextPid :: Maybe Natural
$sel:dvbTeletextPid:M2tsSettings' :: M2tsSettings -> Maybe Natural
dvbTeletextPid} -> Maybe Natural
dvbTeletextPid) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Natural
a -> M2tsSettings
s {$sel:dvbTeletextPid:M2tsSettings' :: Maybe Natural
dvbTeletextPid = Maybe Natural
a} :: M2tsSettings)

-- | 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.
m2tsSettings_nielsenId3 :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsNielsenId3)
m2tsSettings_nielsenId3 :: (Maybe M2tsNielsenId3 -> f (Maybe M2tsNielsenId3))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_nielsenId3 = (M2tsSettings -> Maybe M2tsNielsenId3)
-> (M2tsSettings -> Maybe M2tsNielsenId3 -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe M2tsNielsenId3)
     (Maybe M2tsNielsenId3)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsNielsenId3
nielsenId3 :: Maybe M2tsNielsenId3
$sel:nielsenId3:M2tsSettings' :: M2tsSettings -> Maybe M2tsNielsenId3
nielsenId3} -> Maybe M2tsNielsenId3
nielsenId3) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsNielsenId3
a -> M2tsSettings
s {$sel:nielsenId3:M2tsSettings' :: Maybe M2tsNielsenId3
nielsenId3 = Maybe M2tsNielsenId3
a} :: M2tsSettings)

-- | 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.
m2tsSettings_dataPTSControl :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsDataPtsControl)
m2tsSettings_dataPTSControl :: (Maybe M2tsDataPtsControl -> f (Maybe M2tsDataPtsControl))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_dataPTSControl = (M2tsSettings -> Maybe M2tsDataPtsControl)
-> (M2tsSettings -> Maybe M2tsDataPtsControl -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe M2tsDataPtsControl)
     (Maybe M2tsDataPtsControl)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsDataPtsControl
dataPTSControl :: Maybe M2tsDataPtsControl
$sel:dataPTSControl:M2tsSettings' :: M2tsSettings -> Maybe M2tsDataPtsControl
dataPTSControl} -> Maybe M2tsDataPtsControl
dataPTSControl) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsDataPtsControl
a -> M2tsSettings
s {$sel:dataPTSControl:M2tsSettings' :: Maybe M2tsDataPtsControl
dataPTSControl = Maybe M2tsDataPtsControl
a} :: M2tsSettings)

-- | Specify the length, in seconds, of each segment. Required unless markers
-- is set to _none_.
m2tsSettings_segmentationTime :: Lens.Lens' M2tsSettings (Prelude.Maybe Prelude.Double)
m2tsSettings_segmentationTime :: (Maybe Double -> f (Maybe Double))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_segmentationTime = (M2tsSettings -> Maybe Double)
-> (M2tsSettings -> Maybe Double -> M2tsSettings)
-> Lens M2tsSettings M2tsSettings (Maybe Double) (Maybe Double)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe Double
segmentationTime :: Maybe Double
$sel:segmentationTime:M2tsSettings' :: M2tsSettings -> Maybe Double
segmentationTime} -> Maybe Double
segmentationTime) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe Double
a -> M2tsSettings
s {$sel:segmentationTime:M2tsSettings' :: Maybe Double
segmentationTime = Maybe Double
a} :: M2tsSettings)

-- | When set to VIDEO_AND_FIXED_INTERVALS, audio EBP markers will be added
-- to partitions 3 and 4. The interval between these additional markers
-- will be fixed, and will be slightly shorter than the video EBP marker
-- interval. When set to VIDEO_INTERVAL, these additional markers will not
-- be inserted. Only applicable when EBP segmentation markers are is
-- selected (segmentationMarkers is EBP or EBP_LEGACY).
m2tsSettings_ebpAudioInterval :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsEbpAudioInterval)
m2tsSettings_ebpAudioInterval :: (Maybe M2tsEbpAudioInterval -> f (Maybe M2tsEbpAudioInterval))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_ebpAudioInterval = (M2tsSettings -> Maybe M2tsEbpAudioInterval)
-> (M2tsSettings -> Maybe M2tsEbpAudioInterval -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe M2tsEbpAudioInterval)
     (Maybe M2tsEbpAudioInterval)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsEbpAudioInterval
ebpAudioInterval :: Maybe M2tsEbpAudioInterval
$sel:ebpAudioInterval:M2tsSettings' :: M2tsSettings -> Maybe M2tsEbpAudioInterval
ebpAudioInterval} -> Maybe M2tsEbpAudioInterval
ebpAudioInterval) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsEbpAudioInterval
a -> M2tsSettings
s {$sel:ebpAudioInterval:M2tsSettings' :: Maybe M2tsEbpAudioInterval
ebpAudioInterval = Maybe M2tsEbpAudioInterval
a} :: M2tsSettings)

-- | Use these settings to insert a DVB Network Information Table (NIT) in
-- the transport stream of this output. When you work directly in your JSON
-- job specification, include this object only when your job has a
-- transport stream output and the container settings contain the object
-- M2tsSettings.
m2tsSettings_dvbNitSettings :: Lens.Lens' M2tsSettings (Prelude.Maybe DvbNitSettings)
m2tsSettings_dvbNitSettings :: (Maybe DvbNitSettings -> f (Maybe DvbNitSettings))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_dvbNitSettings = (M2tsSettings -> Maybe DvbNitSettings)
-> (M2tsSettings -> Maybe DvbNitSettings -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe DvbNitSettings)
     (Maybe DvbNitSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe DvbNitSettings
dvbNitSettings :: Maybe DvbNitSettings
$sel:dvbNitSettings:M2tsSettings' :: M2tsSettings -> Maybe DvbNitSettings
dvbNitSettings} -> Maybe DvbNitSettings
dvbNitSettings) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe DvbNitSettings
a -> M2tsSettings
s {$sel:dvbNitSettings:M2tsSettings' :: Maybe DvbNitSettings
dvbNitSettings = Maybe DvbNitSettings
a} :: M2tsSettings)

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

-- | Selects which PIDs to place EBP markers on. They can either be placed
-- only on the video PID, or on both the video PID and all audio PIDs. Only
-- applicable when EBP segmentation markers are is selected
-- (segmentationMarkers is EBP or EBP_LEGACY).
m2tsSettings_ebpPlacement :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsEbpPlacement)
m2tsSettings_ebpPlacement :: (Maybe M2tsEbpPlacement -> f (Maybe M2tsEbpPlacement))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_ebpPlacement = (M2tsSettings -> Maybe M2tsEbpPlacement)
-> (M2tsSettings -> Maybe M2tsEbpPlacement -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe M2tsEbpPlacement)
     (Maybe M2tsEbpPlacement)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsEbpPlacement
ebpPlacement :: Maybe M2tsEbpPlacement
$sel:ebpPlacement:M2tsSettings' :: M2tsSettings -> Maybe M2tsEbpPlacement
ebpPlacement} -> Maybe M2tsEbpPlacement
ebpPlacement) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsEbpPlacement
a -> M2tsSettings
s {$sel:ebpPlacement:M2tsSettings' :: Maybe M2tsEbpPlacement
ebpPlacement = Maybe M2tsEbpPlacement
a} :: M2tsSettings)

-- | When set to CBR, inserts null packets into transport stream to fill
-- specified bitrate. When set to VBR, the bitrate setting acts as the
-- maximum bitrate, but the output will not be padded up to that bitrate.
m2tsSettings_rateMode :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsRateMode)
m2tsSettings_rateMode :: (Maybe M2tsRateMode -> f (Maybe M2tsRateMode))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_rateMode = (M2tsSettings -> Maybe M2tsRateMode)
-> (M2tsSettings -> Maybe M2tsRateMode -> M2tsSettings)
-> Lens
     M2tsSettings M2tsSettings (Maybe M2tsRateMode) (Maybe M2tsRateMode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsRateMode
rateMode :: Maybe M2tsRateMode
$sel:rateMode:M2tsSettings' :: M2tsSettings -> Maybe M2tsRateMode
rateMode} -> Maybe M2tsRateMode
rateMode) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsRateMode
a -> M2tsSettings
s {$sel:rateMode:M2tsSettings' :: Maybe M2tsRateMode
rateMode = Maybe M2tsRateMode
a} :: M2tsSettings)

-- | The segmentation style parameter controls how segmentation markers are
-- inserted into the transport stream. With avails, it is possible that
-- segments may be truncated, which can influence where future segmentation
-- markers are inserted. When a segmentation style of \"reset_cadence\" is
-- selected and a segment is truncated due to an avail, we will reset the
-- segmentation cadence. This means the subsequent segment will have a
-- duration of of $segmentation_time seconds. When a segmentation style of
-- \"maintain_cadence\" is selected and a segment is truncated due to an
-- avail, we will not reset the segmentation cadence. This means the
-- subsequent segment will likely be truncated as well. However, all
-- segments after that will have a duration of $segmentation_time seconds.
-- Note that EBP lookahead is a slight exception to this rule.
m2tsSettings_segmentationStyle :: Lens.Lens' M2tsSettings (Prelude.Maybe M2tsSegmentationStyle)
m2tsSettings_segmentationStyle :: (Maybe M2tsSegmentationStyle -> f (Maybe M2tsSegmentationStyle))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_segmentationStyle = (M2tsSettings -> Maybe M2tsSegmentationStyle)
-> (M2tsSettings -> Maybe M2tsSegmentationStyle -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe M2tsSegmentationStyle)
     (Maybe M2tsSegmentationStyle)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe M2tsSegmentationStyle
segmentationStyle :: Maybe M2tsSegmentationStyle
$sel:segmentationStyle:M2tsSettings' :: M2tsSettings -> Maybe M2tsSegmentationStyle
segmentationStyle} -> Maybe M2tsSegmentationStyle
segmentationStyle) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe M2tsSegmentationStyle
a -> M2tsSettings
s {$sel:segmentationStyle:M2tsSettings' :: Maybe M2tsSegmentationStyle
segmentationStyle = Maybe M2tsSegmentationStyle
a} :: M2tsSettings)

-- | Use these settings to insert a DVB Time and Date Table (TDT) in the
-- transport stream of this output. When you work directly in your JSON job
-- specification, include this object only when your job has a transport
-- stream output and the container settings contain the object
-- M2tsSettings.
m2tsSettings_dvbTdtSettings :: Lens.Lens' M2tsSettings (Prelude.Maybe DvbTdtSettings)
m2tsSettings_dvbTdtSettings :: (Maybe DvbTdtSettings -> f (Maybe DvbTdtSettings))
-> M2tsSettings -> f M2tsSettings
m2tsSettings_dvbTdtSettings = (M2tsSettings -> Maybe DvbTdtSettings)
-> (M2tsSettings -> Maybe DvbTdtSettings -> M2tsSettings)
-> Lens
     M2tsSettings
     M2tsSettings
     (Maybe DvbTdtSettings)
     (Maybe DvbTdtSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\M2tsSettings' {Maybe DvbTdtSettings
dvbTdtSettings :: Maybe DvbTdtSettings
$sel:dvbTdtSettings:M2tsSettings' :: M2tsSettings -> Maybe DvbTdtSettings
dvbTdtSettings} -> Maybe DvbTdtSettings
dvbTdtSettings) (\s :: M2tsSettings
s@M2tsSettings' {} Maybe DvbTdtSettings
a -> M2tsSettings
s {$sel:dvbTdtSettings:M2tsSettings' :: Maybe DvbTdtSettings
dvbTdtSettings = Maybe DvbTdtSettings
a} :: M2tsSettings)

instance Core.FromJSON M2tsSettings where
  parseJSON :: Value -> Parser M2tsSettings
parseJSON =
    String
-> (Object -> Parser M2tsSettings) -> Value -> Parser M2tsSettings
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"M2tsSettings"
      ( \Object
x ->
          Maybe Natural
-> Maybe Natural
-> Maybe M2tsBufferModel
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Double
-> Maybe Natural
-> Maybe M2tsScte35Esam
-> Maybe M2tsAudioDuration
-> Maybe Natural
-> Maybe DvbSdtSettings
-> Maybe Double
-> Maybe M2tsAudioBufferModel
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe M2tsSegmentationMarkers
-> Maybe [Natural]
-> Maybe M2tsScte35Source
-> Maybe Natural
-> Maybe M2tsForceTsVideoEbpOrder
-> Maybe M2tsEsRateInPes
-> Maybe Natural
-> Maybe [Natural]
-> Maybe Natural
-> Maybe M2tsNielsenId3
-> Maybe M2tsDataPtsControl
-> Maybe Double
-> Maybe M2tsEbpAudioInterval
-> Maybe DvbNitSettings
-> Maybe M2tsPcrControl
-> Maybe M2tsEbpPlacement
-> Maybe M2tsRateMode
-> Maybe M2tsSegmentationStyle
-> Maybe DvbTdtSettings
-> M2tsSettings
M2tsSettings'
            (Maybe Natural
 -> Maybe Natural
 -> Maybe M2tsBufferModel
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe Double
 -> Maybe Natural
 -> Maybe M2tsScte35Esam
 -> Maybe M2tsAudioDuration
 -> Maybe Natural
 -> Maybe DvbSdtSettings
 -> Maybe Double
 -> Maybe M2tsAudioBufferModel
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe M2tsSegmentationMarkers
 -> Maybe [Natural]
 -> Maybe M2tsScte35Source
 -> Maybe Natural
 -> Maybe M2tsForceTsVideoEbpOrder
 -> Maybe M2tsEsRateInPes
 -> Maybe Natural
 -> Maybe [Natural]
 -> Maybe Natural
 -> Maybe M2tsNielsenId3
 -> Maybe M2tsDataPtsControl
 -> Maybe Double
 -> Maybe M2tsEbpAudioInterval
 -> Maybe DvbNitSettings
 -> Maybe M2tsPcrControl
 -> Maybe M2tsEbpPlacement
 -> Maybe M2tsRateMode
 -> Maybe M2tsSegmentationStyle
 -> Maybe DvbTdtSettings
 -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe M2tsBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Double
      -> Maybe Natural
      -> Maybe M2tsScte35Esam
      -> Maybe M2tsAudioDuration
      -> Maybe Natural
      -> Maybe DvbSdtSettings
      -> Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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 M2tsBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Double
   -> Maybe Natural
   -> Maybe M2tsScte35Esam
   -> Maybe M2tsAudioDuration
   -> Maybe Natural
   -> Maybe DvbSdtSettings
   -> Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe M2tsBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Double
      -> Maybe Natural
      -> Maybe M2tsScte35Esam
      -> Maybe M2tsAudioDuration
      -> Maybe Natural
      -> Maybe DvbSdtSettings
      -> Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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 M2tsBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Double
   -> Maybe Natural
   -> Maybe M2tsScte35Esam
   -> Maybe M2tsAudioDuration
   -> Maybe Natural
   -> Maybe DvbSdtSettings
   -> Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsBufferModel)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Double
      -> Maybe Natural
      -> Maybe M2tsScte35Esam
      -> Maybe M2tsAudioDuration
      -> Maybe Natural
      -> Maybe DvbSdtSettings
      -> Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsBufferModel)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"bufferModel")
            Parser
  (Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Double
   -> Maybe Natural
   -> Maybe M2tsScte35Esam
   -> Maybe M2tsAudioDuration
   -> Maybe Natural
   -> Maybe DvbSdtSettings
   -> Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Double
      -> Maybe Natural
      -> Maybe M2tsScte35Esam
      -> Maybe M2tsAudioDuration
      -> Maybe Natural
      -> Maybe DvbSdtSettings
      -> Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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 Double
   -> Maybe Natural
   -> Maybe M2tsScte35Esam
   -> Maybe M2tsAudioDuration
   -> Maybe Natural
   -> Maybe DvbSdtSettings
   -> Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Double
      -> Maybe Natural
      -> Maybe M2tsScte35Esam
      -> Maybe M2tsAudioDuration
      -> Maybe Natural
      -> Maybe DvbSdtSettings
      -> Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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 Double
   -> Maybe Natural
   -> Maybe M2tsScte35Esam
   -> Maybe M2tsAudioDuration
   -> Maybe Natural
   -> Maybe DvbSdtSettings
   -> Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe Double
      -> Maybe Natural
      -> Maybe M2tsScte35Esam
      -> Maybe M2tsAudioDuration
      -> Maybe Natural
      -> Maybe DvbSdtSettings
      -> Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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
"minEbpInterval")
            Parser
  (Maybe Natural
   -> Maybe Natural
   -> Maybe Double
   -> Maybe Natural
   -> Maybe M2tsScte35Esam
   -> Maybe M2tsAudioDuration
   -> Maybe Natural
   -> Maybe DvbSdtSettings
   -> Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Double
      -> Maybe Natural
      -> Maybe M2tsScte35Esam
      -> Maybe M2tsAudioDuration
      -> Maybe Natural
      -> Maybe DvbSdtSettings
      -> Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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 Double
   -> Maybe Natural
   -> Maybe M2tsScte35Esam
   -> Maybe M2tsAudioDuration
   -> Maybe Natural
   -> Maybe DvbSdtSettings
   -> Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Double
      -> Maybe Natural
      -> Maybe M2tsScte35Esam
      -> Maybe M2tsAudioDuration
      -> Maybe Natural
      -> Maybe DvbSdtSettings
      -> Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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 Double
   -> Maybe Natural
   -> Maybe M2tsScte35Esam
   -> Maybe M2tsAudioDuration
   -> Maybe Natural
   -> Maybe DvbSdtSettings
   -> Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Double)
-> Parser
     (Maybe Natural
      -> Maybe M2tsScte35Esam
      -> Maybe M2tsAudioDuration
      -> Maybe Natural
      -> Maybe DvbSdtSettings
      -> Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"fragmentTime")
            Parser
  (Maybe Natural
   -> Maybe M2tsScte35Esam
   -> Maybe M2tsAudioDuration
   -> Maybe Natural
   -> Maybe DvbSdtSettings
   -> Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe M2tsScte35Esam
      -> Maybe M2tsAudioDuration
      -> Maybe Natural
      -> Maybe DvbSdtSettings
      -> Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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 M2tsScte35Esam
   -> Maybe M2tsAudioDuration
   -> Maybe Natural
   -> Maybe DvbSdtSettings
   -> Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsScte35Esam)
-> Parser
     (Maybe M2tsAudioDuration
      -> Maybe Natural
      -> Maybe DvbSdtSettings
      -> Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsScte35Esam)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"scte35Esam")
            Parser
  (Maybe M2tsAudioDuration
   -> Maybe Natural
   -> Maybe DvbSdtSettings
   -> Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsAudioDuration)
-> Parser
     (Maybe Natural
      -> Maybe DvbSdtSettings
      -> Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsAudioDuration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"audioDuration")
            Parser
  (Maybe Natural
   -> Maybe DvbSdtSettings
   -> Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe DvbSdtSettings
      -> Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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 DvbSdtSettings
   -> Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe DvbSdtSettings)
-> Parser
     (Maybe Double
      -> Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DvbSdtSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"dvbSdtSettings")
            Parser
  (Maybe Double
   -> Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Double)
-> Parser
     (Maybe M2tsAudioBufferModel
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"nullPacketBitrate")
            Parser
  (Maybe M2tsAudioBufferModel
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsAudioBufferModel)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsAudioBufferModel)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"audioBufferModel")
            Parser
  (Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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 M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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 M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe M2tsSegmentationMarkers
      -> Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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 M2tsSegmentationMarkers
   -> Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsSegmentationMarkers)
-> Parser
     (Maybe [Natural]
      -> Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsSegmentationMarkers)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"segmentationMarkers")
            Parser
  (Maybe [Natural]
   -> Maybe M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe [Natural])
-> Parser
     (Maybe M2tsScte35Source
      -> Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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
"dvbSubPids" 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 M2tsScte35Source
   -> Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsScte35Source)
-> Parser
     (Maybe Natural
      -> Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsScte35Source)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"scte35Source")
            Parser
  (Maybe Natural
   -> Maybe M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe M2tsForceTsVideoEbpOrder
      -> Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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 M2tsForceTsVideoEbpOrder
   -> Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsForceTsVideoEbpOrder)
-> Parser
     (Maybe M2tsEsRateInPes
      -> Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsForceTsVideoEbpOrder)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"forceTsVideoEbpOrder")
            Parser
  (Maybe M2tsEsRateInPes
   -> Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsEsRateInPes)
-> Parser
     (Maybe Natural
      -> Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsEsRateInPes)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"esRateInPes")
            Parser
  (Maybe Natural
   -> Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe [Natural]
      -> Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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
"bitrate")
            Parser
  (Maybe [Natural]
   -> Maybe Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe [Natural])
-> Parser
     (Maybe Natural
      -> Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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 Natural
   -> Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe M2tsNielsenId3
      -> Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
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
"dvbTeletextPid")
            Parser
  (Maybe M2tsNielsenId3
   -> Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsNielsenId3)
-> Parser
     (Maybe M2tsDataPtsControl
      -> Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsNielsenId3)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"nielsenId3")
            Parser
  (Maybe M2tsDataPtsControl
   -> Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsDataPtsControl)
-> Parser
     (Maybe Double
      -> Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsDataPtsControl)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"dataPTSControl")
            Parser
  (Maybe Double
   -> Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe Double)
-> Parser
     (Maybe M2tsEbpAudioInterval
      -> Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"segmentationTime")
            Parser
  (Maybe M2tsEbpAudioInterval
   -> Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsEbpAudioInterval)
-> Parser
     (Maybe DvbNitSettings
      -> Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsEbpAudioInterval)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ebpAudioInterval")
            Parser
  (Maybe DvbNitSettings
   -> Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe DvbNitSettings)
-> Parser
     (Maybe M2tsPcrControl
      -> Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DvbNitSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"dvbNitSettings")
            Parser
  (Maybe M2tsPcrControl
   -> Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsPcrControl)
-> Parser
     (Maybe M2tsEbpPlacement
      -> Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsPcrControl)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"pcrControl")
            Parser
  (Maybe M2tsEbpPlacement
   -> Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsEbpPlacement)
-> Parser
     (Maybe M2tsRateMode
      -> Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings
      -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsEbpPlacement)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ebpPlacement")
            Parser
  (Maybe M2tsRateMode
   -> Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings
   -> M2tsSettings)
-> Parser (Maybe M2tsRateMode)
-> Parser
     (Maybe M2tsSegmentationStyle
      -> Maybe DvbTdtSettings -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsRateMode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"rateMode")
            Parser
  (Maybe M2tsSegmentationStyle
   -> Maybe DvbTdtSettings -> M2tsSettings)
-> Parser (Maybe M2tsSegmentationStyle)
-> Parser (Maybe DvbTdtSettings -> M2tsSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe M2tsSegmentationStyle)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"segmentationStyle")
            Parser (Maybe DvbTdtSettings -> M2tsSettings)
-> Parser (Maybe DvbTdtSettings) -> Parser M2tsSettings
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DvbTdtSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"dvbTdtSettings")
      )

instance Prelude.Hashable M2tsSettings

instance Prelude.NFData M2tsSettings

instance Core.ToJSON M2tsSettings where
  toJSON :: M2tsSettings -> Value
toJSON M2tsSettings' {Maybe Double
Maybe Natural
Maybe [Natural]
Maybe DvbNitSettings
Maybe DvbTdtSettings
Maybe M2tsAudioBufferModel
Maybe M2tsAudioDuration
Maybe M2tsBufferModel
Maybe M2tsDataPtsControl
Maybe M2tsEbpAudioInterval
Maybe M2tsEbpPlacement
Maybe M2tsEsRateInPes
Maybe M2tsForceTsVideoEbpOrder
Maybe M2tsNielsenId3
Maybe M2tsPcrControl
Maybe M2tsRateMode
Maybe M2tsScte35Esam
Maybe M2tsScte35Source
Maybe M2tsSegmentationMarkers
Maybe M2tsSegmentationStyle
Maybe DvbSdtSettings
dvbTdtSettings :: Maybe DvbTdtSettings
segmentationStyle :: Maybe M2tsSegmentationStyle
rateMode :: Maybe M2tsRateMode
ebpPlacement :: Maybe M2tsEbpPlacement
pcrControl :: Maybe M2tsPcrControl
dvbNitSettings :: Maybe DvbNitSettings
ebpAudioInterval :: Maybe M2tsEbpAudioInterval
segmentationTime :: Maybe Double
dataPTSControl :: Maybe M2tsDataPtsControl
nielsenId3 :: Maybe M2tsNielsenId3
dvbTeletextPid :: Maybe Natural
audioPids :: Maybe [Natural]
bitrate :: Maybe Natural
esRateInPes :: Maybe M2tsEsRateInPes
forceTsVideoEbpOrder :: Maybe M2tsForceTsVideoEbpOrder
patInterval :: Maybe Natural
scte35Source :: Maybe M2tsScte35Source
dvbSubPids :: Maybe [Natural]
segmentationMarkers :: Maybe M2tsSegmentationMarkers
pcrPid :: Maybe Natural
audioFramesPerPes :: Maybe Natural
timedMetadataPid :: Maybe Natural
audioBufferModel :: Maybe M2tsAudioBufferModel
nullPacketBitrate :: Maybe Double
dvbSdtSettings :: Maybe DvbSdtSettings
pmtInterval :: Maybe Natural
audioDuration :: Maybe M2tsAudioDuration
scte35Esam :: Maybe M2tsScte35Esam
privateMetadataPid :: Maybe Natural
fragmentTime :: Maybe Double
maxPcrInterval :: Maybe Natural
transportStreamId :: Maybe Natural
minEbpInterval :: Maybe Natural
scte35Pid :: Maybe Natural
programNumber :: Maybe Natural
bufferModel :: Maybe M2tsBufferModel
videoPid :: Maybe Natural
pmtPid :: Maybe Natural
$sel:dvbTdtSettings:M2tsSettings' :: M2tsSettings -> Maybe DvbTdtSettings
$sel:segmentationStyle:M2tsSettings' :: M2tsSettings -> Maybe M2tsSegmentationStyle
$sel:rateMode:M2tsSettings' :: M2tsSettings -> Maybe M2tsRateMode
$sel:ebpPlacement:M2tsSettings' :: M2tsSettings -> Maybe M2tsEbpPlacement
$sel:pcrControl:M2tsSettings' :: M2tsSettings -> Maybe M2tsPcrControl
$sel:dvbNitSettings:M2tsSettings' :: M2tsSettings -> Maybe DvbNitSettings
$sel:ebpAudioInterval:M2tsSettings' :: M2tsSettings -> Maybe M2tsEbpAudioInterval
$sel:segmentationTime:M2tsSettings' :: M2tsSettings -> Maybe Double
$sel:dataPTSControl:M2tsSettings' :: M2tsSettings -> Maybe M2tsDataPtsControl
$sel:nielsenId3:M2tsSettings' :: M2tsSettings -> Maybe M2tsNielsenId3
$sel:dvbTeletextPid:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:audioPids:M2tsSettings' :: M2tsSettings -> Maybe [Natural]
$sel:bitrate:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:esRateInPes:M2tsSettings' :: M2tsSettings -> Maybe M2tsEsRateInPes
$sel:forceTsVideoEbpOrder:M2tsSettings' :: M2tsSettings -> Maybe M2tsForceTsVideoEbpOrder
$sel:patInterval:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:scte35Source:M2tsSettings' :: M2tsSettings -> Maybe M2tsScte35Source
$sel:dvbSubPids:M2tsSettings' :: M2tsSettings -> Maybe [Natural]
$sel:segmentationMarkers:M2tsSettings' :: M2tsSettings -> Maybe M2tsSegmentationMarkers
$sel:pcrPid:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:audioFramesPerPes:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:timedMetadataPid:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:audioBufferModel:M2tsSettings' :: M2tsSettings -> Maybe M2tsAudioBufferModel
$sel:nullPacketBitrate:M2tsSettings' :: M2tsSettings -> Maybe Double
$sel:dvbSdtSettings:M2tsSettings' :: M2tsSettings -> Maybe DvbSdtSettings
$sel:pmtInterval:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:audioDuration:M2tsSettings' :: M2tsSettings -> Maybe M2tsAudioDuration
$sel:scte35Esam:M2tsSettings' :: M2tsSettings -> Maybe M2tsScte35Esam
$sel:privateMetadataPid:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:fragmentTime:M2tsSettings' :: M2tsSettings -> Maybe Double
$sel:maxPcrInterval:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:transportStreamId:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:minEbpInterval:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:scte35Pid:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:programNumber:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:bufferModel:M2tsSettings' :: M2tsSettings -> Maybe M2tsBufferModel
$sel:videoPid:M2tsSettings' :: M2tsSettings -> Maybe Natural
$sel:pmtPid:M2tsSettings' :: M2tsSettings -> 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
"bufferModel" Text -> M2tsBufferModel -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (M2tsBufferModel -> Pair) -> Maybe M2tsBufferModel -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsBufferModel
bufferModel,
            (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
"minEbpInterval" 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
minEbpInterval,
            (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
"fragmentTime" Text -> Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Double -> Pair) -> Maybe Double -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Double
fragmentTime,
            (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
"scte35Esam" Text -> M2tsScte35Esam -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (M2tsScte35Esam -> Pair) -> Maybe M2tsScte35Esam -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsScte35Esam
scte35Esam,
            (Text
"audioDuration" Text -> M2tsAudioDuration -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (M2tsAudioDuration -> Pair)
-> Maybe M2tsAudioDuration -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsAudioDuration
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
"dvbSdtSettings" Text -> DvbSdtSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DvbSdtSettings -> Pair) -> Maybe DvbSdtSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DvbSdtSettings
dvbSdtSettings,
            (Text
"nullPacketBitrate" Text -> Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Double -> Pair) -> Maybe Double -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Double
nullPacketBitrate,
            (Text
"audioBufferModel" Text -> M2tsAudioBufferModel -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (M2tsAudioBufferModel -> Pair)
-> Maybe M2tsAudioBufferModel -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsAudioBufferModel
audioBufferModel,
            (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
"segmentationMarkers" Text -> M2tsSegmentationMarkers -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (M2tsSegmentationMarkers -> Pair)
-> Maybe M2tsSegmentationMarkers -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsSegmentationMarkers
segmentationMarkers,
            (Text
"dvbSubPids" 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]
dvbSubPids,
            (Text
"scte35Source" Text -> M2tsScte35Source -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (M2tsScte35Source -> Pair) -> Maybe M2tsScte35Source -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsScte35Source
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
"forceTsVideoEbpOrder" Text -> M2tsForceTsVideoEbpOrder -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (M2tsForceTsVideoEbpOrder -> Pair)
-> Maybe M2tsForceTsVideoEbpOrder -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsForceTsVideoEbpOrder
forceTsVideoEbpOrder,
            (Text
"esRateInPes" Text -> M2tsEsRateInPes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (M2tsEsRateInPes -> Pair) -> Maybe M2tsEsRateInPes -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsEsRateInPes
esRateInPes,
            (Text
"bitrate" 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
bitrate,
            (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
"dvbTeletextPid" 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
dvbTeletextPid,
            (Text
"nielsenId3" Text -> M2tsNielsenId3 -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (M2tsNielsenId3 -> Pair) -> Maybe M2tsNielsenId3 -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsNielsenId3
nielsenId3,
            (Text
"dataPTSControl" Text -> M2tsDataPtsControl -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (M2tsDataPtsControl -> Pair)
-> Maybe M2tsDataPtsControl -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsDataPtsControl
dataPTSControl,
            (Text
"segmentationTime" Text -> Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Double -> Pair) -> Maybe Double -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Double
segmentationTime,
            (Text
"ebpAudioInterval" Text -> M2tsEbpAudioInterval -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (M2tsEbpAudioInterval -> Pair)
-> Maybe M2tsEbpAudioInterval -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsEbpAudioInterval
ebpAudioInterval,
            (Text
"dvbNitSettings" Text -> DvbNitSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DvbNitSettings -> Pair) -> Maybe DvbNitSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DvbNitSettings
dvbNitSettings,
            (Text
"pcrControl" Text -> M2tsPcrControl -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (M2tsPcrControl -> Pair) -> Maybe M2tsPcrControl -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsPcrControl
pcrControl,
            (Text
"ebpPlacement" Text -> M2tsEbpPlacement -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (M2tsEbpPlacement -> Pair) -> Maybe M2tsEbpPlacement -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsEbpPlacement
ebpPlacement,
            (Text
"rateMode" Text -> M2tsRateMode -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (M2tsRateMode -> Pair) -> Maybe M2tsRateMode -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsRateMode
rateMode,
            (Text
"segmentationStyle" Text -> M2tsSegmentationStyle -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (M2tsSegmentationStyle -> Pair)
-> Maybe M2tsSegmentationStyle -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe M2tsSegmentationStyle
segmentationStyle,
            (Text
"dvbTdtSettings" Text -> DvbTdtSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DvbTdtSettings -> Pair) -> Maybe DvbTdtSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DvbTdtSettings
dvbTdtSettings
          ]
      )