{-# 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.CaptionDestinationSettings
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.MediaConvert.Types.CaptionDestinationSettings where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MediaConvert.Types.BurninDestinationSettings
import Amazonka.MediaConvert.Types.CaptionDestinationType
import Amazonka.MediaConvert.Types.DvbSubDestinationSettings
import Amazonka.MediaConvert.Types.EmbeddedDestinationSettings
import Amazonka.MediaConvert.Types.ImscDestinationSettings
import Amazonka.MediaConvert.Types.SccDestinationSettings
import Amazonka.MediaConvert.Types.SrtDestinationSettings
import Amazonka.MediaConvert.Types.TeletextDestinationSettings
import Amazonka.MediaConvert.Types.TtmlDestinationSettings
import Amazonka.MediaConvert.Types.WebvttDestinationSettings
import qualified Amazonka.Prelude as Prelude

-- | Settings related to one captions tab on the MediaConvert console. In
-- your job JSON, an instance of captions DestinationSettings is equivalent
-- to one captions tab in the console. Usually, one captions tab
-- corresponds to one output captions track. Depending on your output
-- captions format, one tab might correspond to a set of output captions
-- tracks. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/including-captions.html.
--
-- /See:/ 'newCaptionDestinationSettings' smart constructor.
data CaptionDestinationSettings = CaptionDestinationSettings'
  { -- | Burn-in is a captions delivery method, rather than a captions format.
    -- Burn-in writes the captions directly on your video frames, replacing
    -- pixels of video content with the captions. Set up burn-in captions in
    -- the same output as your video. For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/burn-in-output-captions.html.
    -- When you work directly in your JSON job specification, include this
    -- object and any required children when you set destinationType to
    -- BURN_IN.
    CaptionDestinationSettings -> Maybe BurninDestinationSettings
burninDestinationSettings :: Prelude.Maybe BurninDestinationSettings,
    -- | Specify the format for this set of captions on this output. The default
    -- format is embedded without SCTE-20. Note that your choice of video
    -- output container constrains your choice of output captions format. For
    -- more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/captions-support-tables.html.
    -- If you are using SCTE-20 and you want to create an output that complies
    -- with the SCTE-43 spec, choose SCTE-20 plus embedded
    -- (SCTE20_PLUS_EMBEDDED). To create a non-compliant output where the
    -- embedded captions come first, choose Embedded plus SCTE-20
    -- (EMBEDDED_PLUS_SCTE20).
    CaptionDestinationSettings -> Maybe CaptionDestinationType
destinationType :: Prelude.Maybe CaptionDestinationType,
    -- | Settings related to DVB-Sub captions. Set up DVB-Sub captions in the
    -- same output as your video. For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/dvb-sub-output-captions.html.
    -- When you work directly in your JSON job specification, include this
    -- object and any required children when you set destinationType to
    -- DVB_SUB.
    CaptionDestinationSettings -> Maybe DvbSubDestinationSettings
dvbSubDestinationSettings :: Prelude.Maybe DvbSubDestinationSettings,
    -- | Settings related to CEA\/EIA-608 and CEA\/EIA-708 (also called embedded
    -- or ancillary) captions. Set up embedded captions in the same output as
    -- your video. For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/embedded-output-captions.html.
    -- When you work directly in your JSON job specification, include this
    -- object and any required children when you set destinationType to
    -- EMBEDDED, EMBEDDED_PLUS_SCTE20, or SCTE20_PLUS_EMBEDDED.
    CaptionDestinationSettings -> Maybe EmbeddedDestinationSettings
embeddedDestinationSettings :: Prelude.Maybe EmbeddedDestinationSettings,
    -- | Settings related to IMSC captions. IMSC is a sidecar format that holds
    -- captions in a file that is separate from the video container. Set up
    -- sidecar captions in the same output group, but different output from
    -- your video. For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
    -- When you work directly in your JSON job specification, include this
    -- object and any required children when you set destinationType to IMSC.
    CaptionDestinationSettings -> Maybe ImscDestinationSettings
imscDestinationSettings :: Prelude.Maybe ImscDestinationSettings,
    -- | Settings related to SCC captions. SCC is a sidecar format that holds
    -- captions in a file that is separate from the video container. Set up
    -- sidecar captions in the same output group, but different output from
    -- your video. For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/scc-srt-output-captions.html.
    -- When you work directly in your JSON job specification, include this
    -- object and any required children when you set destinationType to SCC.
    CaptionDestinationSettings -> Maybe SccDestinationSettings
sccDestinationSettings :: Prelude.Maybe SccDestinationSettings,
    -- | Settings related to SRT captions. SRT is a sidecar format that holds
    -- captions in a file that is separate from the video container. Set up
    -- sidecar captions in the same output group, but different output from
    -- your video. When you work directly in your JSON job specification,
    -- include this object and any required children when you set
    -- destinationType to SRT.
    CaptionDestinationSettings -> Maybe SrtDestinationSettings
srtDestinationSettings :: Prelude.Maybe SrtDestinationSettings,
    -- | Settings related to teletext captions. Set up teletext captions in the
    -- same output as your video. For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/teletext-output-captions.html.
    -- When you work directly in your JSON job specification, include this
    -- object and any required children when you set destinationType to
    -- TELETEXT.
    CaptionDestinationSettings -> Maybe TeletextDestinationSettings
teletextDestinationSettings :: Prelude.Maybe TeletextDestinationSettings,
    -- | Settings related to TTML captions. TTML is a sidecar format that holds
    -- captions in a file that is separate from the video container. Set up
    -- sidecar captions in the same output group, but different output from
    -- your video. For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
    -- When you work directly in your JSON job specification, include this
    -- object and any required children when you set destinationType to TTML.
    CaptionDestinationSettings -> Maybe TtmlDestinationSettings
ttmlDestinationSettings :: Prelude.Maybe TtmlDestinationSettings,
    -- | Settings related to WebVTT captions. WebVTT is a sidecar format that
    -- holds captions in a file that is separate from the video container. Set
    -- up sidecar captions in the same output group, but different output from
    -- your video. For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
    -- When you work directly in your JSON job specification, include this
    -- object and any required children when you set destinationType to WebVTT.
    CaptionDestinationSettings -> Maybe WebvttDestinationSettings
webvttDestinationSettings :: Prelude.Maybe WebvttDestinationSettings
  }
  deriving (CaptionDestinationSettings -> CaptionDestinationSettings -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CaptionDestinationSettings -> CaptionDestinationSettings -> Bool
$c/= :: CaptionDestinationSettings -> CaptionDestinationSettings -> Bool
== :: CaptionDestinationSettings -> CaptionDestinationSettings -> Bool
$c== :: CaptionDestinationSettings -> CaptionDestinationSettings -> Bool
Prelude.Eq, ReadPrec [CaptionDestinationSettings]
ReadPrec CaptionDestinationSettings
Int -> ReadS CaptionDestinationSettings
ReadS [CaptionDestinationSettings]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CaptionDestinationSettings]
$creadListPrec :: ReadPrec [CaptionDestinationSettings]
readPrec :: ReadPrec CaptionDestinationSettings
$creadPrec :: ReadPrec CaptionDestinationSettings
readList :: ReadS [CaptionDestinationSettings]
$creadList :: ReadS [CaptionDestinationSettings]
readsPrec :: Int -> ReadS CaptionDestinationSettings
$creadsPrec :: Int -> ReadS CaptionDestinationSettings
Prelude.Read, Int -> CaptionDestinationSettings -> ShowS
[CaptionDestinationSettings] -> ShowS
CaptionDestinationSettings -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CaptionDestinationSettings] -> ShowS
$cshowList :: [CaptionDestinationSettings] -> ShowS
show :: CaptionDestinationSettings -> String
$cshow :: CaptionDestinationSettings -> String
showsPrec :: Int -> CaptionDestinationSettings -> ShowS
$cshowsPrec :: Int -> CaptionDestinationSettings -> ShowS
Prelude.Show, forall x.
Rep CaptionDestinationSettings x -> CaptionDestinationSettings
forall x.
CaptionDestinationSettings -> Rep CaptionDestinationSettings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CaptionDestinationSettings x -> CaptionDestinationSettings
$cfrom :: forall x.
CaptionDestinationSettings -> Rep CaptionDestinationSettings x
Prelude.Generic)

-- |
-- Create a value of 'CaptionDestinationSettings' 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:
--
-- 'burninDestinationSettings', 'captionDestinationSettings_burninDestinationSettings' - Burn-in is a captions delivery method, rather than a captions format.
-- Burn-in writes the captions directly on your video frames, replacing
-- pixels of video content with the captions. Set up burn-in captions in
-- the same output as your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/burn-in-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to
-- BURN_IN.
--
-- 'destinationType', 'captionDestinationSettings_destinationType' - Specify the format for this set of captions on this output. The default
-- format is embedded without SCTE-20. Note that your choice of video
-- output container constrains your choice of output captions format. For
-- more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/captions-support-tables.html.
-- If you are using SCTE-20 and you want to create an output that complies
-- with the SCTE-43 spec, choose SCTE-20 plus embedded
-- (SCTE20_PLUS_EMBEDDED). To create a non-compliant output where the
-- embedded captions come first, choose Embedded plus SCTE-20
-- (EMBEDDED_PLUS_SCTE20).
--
-- 'dvbSubDestinationSettings', 'captionDestinationSettings_dvbSubDestinationSettings' - Settings related to DVB-Sub captions. Set up DVB-Sub captions in the
-- same output as your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/dvb-sub-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to
-- DVB_SUB.
--
-- 'embeddedDestinationSettings', 'captionDestinationSettings_embeddedDestinationSettings' - Settings related to CEA\/EIA-608 and CEA\/EIA-708 (also called embedded
-- or ancillary) captions. Set up embedded captions in the same output as
-- your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/embedded-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to
-- EMBEDDED, EMBEDDED_PLUS_SCTE20, or SCTE20_PLUS_EMBEDDED.
--
-- 'imscDestinationSettings', 'captionDestinationSettings_imscDestinationSettings' - Settings related to IMSC captions. IMSC is a sidecar format that holds
-- captions in a file that is separate from the video container. Set up
-- sidecar captions in the same output group, but different output from
-- your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to IMSC.
--
-- 'sccDestinationSettings', 'captionDestinationSettings_sccDestinationSettings' - Settings related to SCC captions. SCC is a sidecar format that holds
-- captions in a file that is separate from the video container. Set up
-- sidecar captions in the same output group, but different output from
-- your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/scc-srt-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to SCC.
--
-- 'srtDestinationSettings', 'captionDestinationSettings_srtDestinationSettings' - Settings related to SRT captions. SRT is a sidecar format that holds
-- captions in a file that is separate from the video container. Set up
-- sidecar captions in the same output group, but different output from
-- your video. When you work directly in your JSON job specification,
-- include this object and any required children when you set
-- destinationType to SRT.
--
-- 'teletextDestinationSettings', 'captionDestinationSettings_teletextDestinationSettings' - Settings related to teletext captions. Set up teletext captions in the
-- same output as your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/teletext-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to
-- TELETEXT.
--
-- 'ttmlDestinationSettings', 'captionDestinationSettings_ttmlDestinationSettings' - Settings related to TTML captions. TTML is a sidecar format that holds
-- captions in a file that is separate from the video container. Set up
-- sidecar captions in the same output group, but different output from
-- your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to TTML.
--
-- 'webvttDestinationSettings', 'captionDestinationSettings_webvttDestinationSettings' - Settings related to WebVTT captions. WebVTT is a sidecar format that
-- holds captions in a file that is separate from the video container. Set
-- up sidecar captions in the same output group, but different output from
-- your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to WebVTT.
newCaptionDestinationSettings ::
  CaptionDestinationSettings
newCaptionDestinationSettings :: CaptionDestinationSettings
newCaptionDestinationSettings =
  CaptionDestinationSettings'
    { $sel:burninDestinationSettings:CaptionDestinationSettings' :: Maybe BurninDestinationSettings
burninDestinationSettings =
        forall a. Maybe a
Prelude.Nothing,
      $sel:destinationType:CaptionDestinationSettings' :: Maybe CaptionDestinationType
destinationType = forall a. Maybe a
Prelude.Nothing,
      $sel:dvbSubDestinationSettings:CaptionDestinationSettings' :: Maybe DvbSubDestinationSettings
dvbSubDestinationSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:embeddedDestinationSettings:CaptionDestinationSettings' :: Maybe EmbeddedDestinationSettings
embeddedDestinationSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:imscDestinationSettings:CaptionDestinationSettings' :: Maybe ImscDestinationSettings
imscDestinationSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:sccDestinationSettings:CaptionDestinationSettings' :: Maybe SccDestinationSettings
sccDestinationSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:srtDestinationSettings:CaptionDestinationSettings' :: Maybe SrtDestinationSettings
srtDestinationSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:teletextDestinationSettings:CaptionDestinationSettings' :: Maybe TeletextDestinationSettings
teletextDestinationSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:ttmlDestinationSettings:CaptionDestinationSettings' :: Maybe TtmlDestinationSettings
ttmlDestinationSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:webvttDestinationSettings:CaptionDestinationSettings' :: Maybe WebvttDestinationSettings
webvttDestinationSettings = forall a. Maybe a
Prelude.Nothing
    }

-- | Burn-in is a captions delivery method, rather than a captions format.
-- Burn-in writes the captions directly on your video frames, replacing
-- pixels of video content with the captions. Set up burn-in captions in
-- the same output as your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/burn-in-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to
-- BURN_IN.
captionDestinationSettings_burninDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe BurninDestinationSettings)
captionDestinationSettings_burninDestinationSettings :: Lens' CaptionDestinationSettings (Maybe BurninDestinationSettings)
captionDestinationSettings_burninDestinationSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CaptionDestinationSettings' {Maybe BurninDestinationSettings
burninDestinationSettings :: Maybe BurninDestinationSettings
$sel:burninDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe BurninDestinationSettings
burninDestinationSettings} -> Maybe BurninDestinationSettings
burninDestinationSettings) (\s :: CaptionDestinationSettings
s@CaptionDestinationSettings' {} Maybe BurninDestinationSettings
a -> CaptionDestinationSettings
s {$sel:burninDestinationSettings:CaptionDestinationSettings' :: Maybe BurninDestinationSettings
burninDestinationSettings = Maybe BurninDestinationSettings
a} :: CaptionDestinationSettings)

-- | Specify the format for this set of captions on this output. The default
-- format is embedded without SCTE-20. Note that your choice of video
-- output container constrains your choice of output captions format. For
-- more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/captions-support-tables.html.
-- If you are using SCTE-20 and you want to create an output that complies
-- with the SCTE-43 spec, choose SCTE-20 plus embedded
-- (SCTE20_PLUS_EMBEDDED). To create a non-compliant output where the
-- embedded captions come first, choose Embedded plus SCTE-20
-- (EMBEDDED_PLUS_SCTE20).
captionDestinationSettings_destinationType :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe CaptionDestinationType)
captionDestinationSettings_destinationType :: Lens' CaptionDestinationSettings (Maybe CaptionDestinationType)
captionDestinationSettings_destinationType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CaptionDestinationSettings' {Maybe CaptionDestinationType
destinationType :: Maybe CaptionDestinationType
$sel:destinationType:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe CaptionDestinationType
destinationType} -> Maybe CaptionDestinationType
destinationType) (\s :: CaptionDestinationSettings
s@CaptionDestinationSettings' {} Maybe CaptionDestinationType
a -> CaptionDestinationSettings
s {$sel:destinationType:CaptionDestinationSettings' :: Maybe CaptionDestinationType
destinationType = Maybe CaptionDestinationType
a} :: CaptionDestinationSettings)

-- | Settings related to DVB-Sub captions. Set up DVB-Sub captions in the
-- same output as your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/dvb-sub-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to
-- DVB_SUB.
captionDestinationSettings_dvbSubDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe DvbSubDestinationSettings)
captionDestinationSettings_dvbSubDestinationSettings :: Lens' CaptionDestinationSettings (Maybe DvbSubDestinationSettings)
captionDestinationSettings_dvbSubDestinationSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CaptionDestinationSettings' {Maybe DvbSubDestinationSettings
dvbSubDestinationSettings :: Maybe DvbSubDestinationSettings
$sel:dvbSubDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe DvbSubDestinationSettings
dvbSubDestinationSettings} -> Maybe DvbSubDestinationSettings
dvbSubDestinationSettings) (\s :: CaptionDestinationSettings
s@CaptionDestinationSettings' {} Maybe DvbSubDestinationSettings
a -> CaptionDestinationSettings
s {$sel:dvbSubDestinationSettings:CaptionDestinationSettings' :: Maybe DvbSubDestinationSettings
dvbSubDestinationSettings = Maybe DvbSubDestinationSettings
a} :: CaptionDestinationSettings)

-- | Settings related to CEA\/EIA-608 and CEA\/EIA-708 (also called embedded
-- or ancillary) captions. Set up embedded captions in the same output as
-- your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/embedded-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to
-- EMBEDDED, EMBEDDED_PLUS_SCTE20, or SCTE20_PLUS_EMBEDDED.
captionDestinationSettings_embeddedDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe EmbeddedDestinationSettings)
captionDestinationSettings_embeddedDestinationSettings :: Lens'
  CaptionDestinationSettings (Maybe EmbeddedDestinationSettings)
captionDestinationSettings_embeddedDestinationSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CaptionDestinationSettings' {Maybe EmbeddedDestinationSettings
embeddedDestinationSettings :: Maybe EmbeddedDestinationSettings
$sel:embeddedDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe EmbeddedDestinationSettings
embeddedDestinationSettings} -> Maybe EmbeddedDestinationSettings
embeddedDestinationSettings) (\s :: CaptionDestinationSettings
s@CaptionDestinationSettings' {} Maybe EmbeddedDestinationSettings
a -> CaptionDestinationSettings
s {$sel:embeddedDestinationSettings:CaptionDestinationSettings' :: Maybe EmbeddedDestinationSettings
embeddedDestinationSettings = Maybe EmbeddedDestinationSettings
a} :: CaptionDestinationSettings)

-- | Settings related to IMSC captions. IMSC is a sidecar format that holds
-- captions in a file that is separate from the video container. Set up
-- sidecar captions in the same output group, but different output from
-- your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to IMSC.
captionDestinationSettings_imscDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe ImscDestinationSettings)
captionDestinationSettings_imscDestinationSettings :: Lens' CaptionDestinationSettings (Maybe ImscDestinationSettings)
captionDestinationSettings_imscDestinationSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CaptionDestinationSettings' {Maybe ImscDestinationSettings
imscDestinationSettings :: Maybe ImscDestinationSettings
$sel:imscDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe ImscDestinationSettings
imscDestinationSettings} -> Maybe ImscDestinationSettings
imscDestinationSettings) (\s :: CaptionDestinationSettings
s@CaptionDestinationSettings' {} Maybe ImscDestinationSettings
a -> CaptionDestinationSettings
s {$sel:imscDestinationSettings:CaptionDestinationSettings' :: Maybe ImscDestinationSettings
imscDestinationSettings = Maybe ImscDestinationSettings
a} :: CaptionDestinationSettings)

-- | Settings related to SCC captions. SCC is a sidecar format that holds
-- captions in a file that is separate from the video container. Set up
-- sidecar captions in the same output group, but different output from
-- your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/scc-srt-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to SCC.
captionDestinationSettings_sccDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe SccDestinationSettings)
captionDestinationSettings_sccDestinationSettings :: Lens' CaptionDestinationSettings (Maybe SccDestinationSettings)
captionDestinationSettings_sccDestinationSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CaptionDestinationSettings' {Maybe SccDestinationSettings
sccDestinationSettings :: Maybe SccDestinationSettings
$sel:sccDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe SccDestinationSettings
sccDestinationSettings} -> Maybe SccDestinationSettings
sccDestinationSettings) (\s :: CaptionDestinationSettings
s@CaptionDestinationSettings' {} Maybe SccDestinationSettings
a -> CaptionDestinationSettings
s {$sel:sccDestinationSettings:CaptionDestinationSettings' :: Maybe SccDestinationSettings
sccDestinationSettings = Maybe SccDestinationSettings
a} :: CaptionDestinationSettings)

-- | Settings related to SRT captions. SRT is a sidecar format that holds
-- captions in a file that is separate from the video container. Set up
-- sidecar captions in the same output group, but different output from
-- your video. When you work directly in your JSON job specification,
-- include this object and any required children when you set
-- destinationType to SRT.
captionDestinationSettings_srtDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe SrtDestinationSettings)
captionDestinationSettings_srtDestinationSettings :: Lens' CaptionDestinationSettings (Maybe SrtDestinationSettings)
captionDestinationSettings_srtDestinationSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CaptionDestinationSettings' {Maybe SrtDestinationSettings
srtDestinationSettings :: Maybe SrtDestinationSettings
$sel:srtDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe SrtDestinationSettings
srtDestinationSettings} -> Maybe SrtDestinationSettings
srtDestinationSettings) (\s :: CaptionDestinationSettings
s@CaptionDestinationSettings' {} Maybe SrtDestinationSettings
a -> CaptionDestinationSettings
s {$sel:srtDestinationSettings:CaptionDestinationSettings' :: Maybe SrtDestinationSettings
srtDestinationSettings = Maybe SrtDestinationSettings
a} :: CaptionDestinationSettings)

-- | Settings related to teletext captions. Set up teletext captions in the
-- same output as your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/teletext-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to
-- TELETEXT.
captionDestinationSettings_teletextDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe TeletextDestinationSettings)
captionDestinationSettings_teletextDestinationSettings :: Lens'
  CaptionDestinationSettings (Maybe TeletextDestinationSettings)
captionDestinationSettings_teletextDestinationSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CaptionDestinationSettings' {Maybe TeletextDestinationSettings
teletextDestinationSettings :: Maybe TeletextDestinationSettings
$sel:teletextDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe TeletextDestinationSettings
teletextDestinationSettings} -> Maybe TeletextDestinationSettings
teletextDestinationSettings) (\s :: CaptionDestinationSettings
s@CaptionDestinationSettings' {} Maybe TeletextDestinationSettings
a -> CaptionDestinationSettings
s {$sel:teletextDestinationSettings:CaptionDestinationSettings' :: Maybe TeletextDestinationSettings
teletextDestinationSettings = Maybe TeletextDestinationSettings
a} :: CaptionDestinationSettings)

-- | Settings related to TTML captions. TTML is a sidecar format that holds
-- captions in a file that is separate from the video container. Set up
-- sidecar captions in the same output group, but different output from
-- your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to TTML.
captionDestinationSettings_ttmlDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe TtmlDestinationSettings)
captionDestinationSettings_ttmlDestinationSettings :: Lens' CaptionDestinationSettings (Maybe TtmlDestinationSettings)
captionDestinationSettings_ttmlDestinationSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CaptionDestinationSettings' {Maybe TtmlDestinationSettings
ttmlDestinationSettings :: Maybe TtmlDestinationSettings
$sel:ttmlDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe TtmlDestinationSettings
ttmlDestinationSettings} -> Maybe TtmlDestinationSettings
ttmlDestinationSettings) (\s :: CaptionDestinationSettings
s@CaptionDestinationSettings' {} Maybe TtmlDestinationSettings
a -> CaptionDestinationSettings
s {$sel:ttmlDestinationSettings:CaptionDestinationSettings' :: Maybe TtmlDestinationSettings
ttmlDestinationSettings = Maybe TtmlDestinationSettings
a} :: CaptionDestinationSettings)

-- | Settings related to WebVTT captions. WebVTT is a sidecar format that
-- holds captions in a file that is separate from the video container. Set
-- up sidecar captions in the same output group, but different output from
-- your video. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/ttml-and-webvtt-output-captions.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set destinationType to WebVTT.
captionDestinationSettings_webvttDestinationSettings :: Lens.Lens' CaptionDestinationSettings (Prelude.Maybe WebvttDestinationSettings)
captionDestinationSettings_webvttDestinationSettings :: Lens' CaptionDestinationSettings (Maybe WebvttDestinationSettings)
captionDestinationSettings_webvttDestinationSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CaptionDestinationSettings' {Maybe WebvttDestinationSettings
webvttDestinationSettings :: Maybe WebvttDestinationSettings
$sel:webvttDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe WebvttDestinationSettings
webvttDestinationSettings} -> Maybe WebvttDestinationSettings
webvttDestinationSettings) (\s :: CaptionDestinationSettings
s@CaptionDestinationSettings' {} Maybe WebvttDestinationSettings
a -> CaptionDestinationSettings
s {$sel:webvttDestinationSettings:CaptionDestinationSettings' :: Maybe WebvttDestinationSettings
webvttDestinationSettings = Maybe WebvttDestinationSettings
a} :: CaptionDestinationSettings)

instance Data.FromJSON CaptionDestinationSettings where
  parseJSON :: Value -> Parser CaptionDestinationSettings
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"CaptionDestinationSettings"
      ( \Object
x ->
          Maybe BurninDestinationSettings
-> Maybe CaptionDestinationType
-> Maybe DvbSubDestinationSettings
-> Maybe EmbeddedDestinationSettings
-> Maybe ImscDestinationSettings
-> Maybe SccDestinationSettings
-> Maybe SrtDestinationSettings
-> Maybe TeletextDestinationSettings
-> Maybe TtmlDestinationSettings
-> Maybe WebvttDestinationSettings
-> CaptionDestinationSettings
CaptionDestinationSettings'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"burninDestinationSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"destinationType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"dvbSubDestinationSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"embeddedDestinationSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"imscDestinationSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"sccDestinationSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"srtDestinationSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"teletextDestinationSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ttmlDestinationSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"webvttDestinationSettings")
      )

instance Prelude.Hashable CaptionDestinationSettings where
  hashWithSalt :: Int -> CaptionDestinationSettings -> Int
hashWithSalt Int
_salt CaptionDestinationSettings' {Maybe CaptionDestinationType
Maybe EmbeddedDestinationSettings
Maybe DvbSubDestinationSettings
Maybe BurninDestinationSettings
Maybe ImscDestinationSettings
Maybe SccDestinationSettings
Maybe SrtDestinationSettings
Maybe TeletextDestinationSettings
Maybe TtmlDestinationSettings
Maybe WebvttDestinationSettings
webvttDestinationSettings :: Maybe WebvttDestinationSettings
ttmlDestinationSettings :: Maybe TtmlDestinationSettings
teletextDestinationSettings :: Maybe TeletextDestinationSettings
srtDestinationSettings :: Maybe SrtDestinationSettings
sccDestinationSettings :: Maybe SccDestinationSettings
imscDestinationSettings :: Maybe ImscDestinationSettings
embeddedDestinationSettings :: Maybe EmbeddedDestinationSettings
dvbSubDestinationSettings :: Maybe DvbSubDestinationSettings
destinationType :: Maybe CaptionDestinationType
burninDestinationSettings :: Maybe BurninDestinationSettings
$sel:webvttDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe WebvttDestinationSettings
$sel:ttmlDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe TtmlDestinationSettings
$sel:teletextDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe TeletextDestinationSettings
$sel:srtDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe SrtDestinationSettings
$sel:sccDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe SccDestinationSettings
$sel:imscDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe ImscDestinationSettings
$sel:embeddedDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe EmbeddedDestinationSettings
$sel:dvbSubDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe DvbSubDestinationSettings
$sel:destinationType:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe CaptionDestinationType
$sel:burninDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe BurninDestinationSettings
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BurninDestinationSettings
burninDestinationSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CaptionDestinationType
destinationType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DvbSubDestinationSettings
dvbSubDestinationSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EmbeddedDestinationSettings
embeddedDestinationSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ImscDestinationSettings
imscDestinationSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SccDestinationSettings
sccDestinationSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SrtDestinationSettings
srtDestinationSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TeletextDestinationSettings
teletextDestinationSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TtmlDestinationSettings
ttmlDestinationSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe WebvttDestinationSettings
webvttDestinationSettings

instance Prelude.NFData CaptionDestinationSettings where
  rnf :: CaptionDestinationSettings -> ()
rnf CaptionDestinationSettings' {Maybe CaptionDestinationType
Maybe EmbeddedDestinationSettings
Maybe DvbSubDestinationSettings
Maybe BurninDestinationSettings
Maybe ImscDestinationSettings
Maybe SccDestinationSettings
Maybe SrtDestinationSettings
Maybe TeletextDestinationSettings
Maybe TtmlDestinationSettings
Maybe WebvttDestinationSettings
webvttDestinationSettings :: Maybe WebvttDestinationSettings
ttmlDestinationSettings :: Maybe TtmlDestinationSettings
teletextDestinationSettings :: Maybe TeletextDestinationSettings
srtDestinationSettings :: Maybe SrtDestinationSettings
sccDestinationSettings :: Maybe SccDestinationSettings
imscDestinationSettings :: Maybe ImscDestinationSettings
embeddedDestinationSettings :: Maybe EmbeddedDestinationSettings
dvbSubDestinationSettings :: Maybe DvbSubDestinationSettings
destinationType :: Maybe CaptionDestinationType
burninDestinationSettings :: Maybe BurninDestinationSettings
$sel:webvttDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe WebvttDestinationSettings
$sel:ttmlDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe TtmlDestinationSettings
$sel:teletextDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe TeletextDestinationSettings
$sel:srtDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe SrtDestinationSettings
$sel:sccDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe SccDestinationSettings
$sel:imscDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe ImscDestinationSettings
$sel:embeddedDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe EmbeddedDestinationSettings
$sel:dvbSubDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe DvbSubDestinationSettings
$sel:destinationType:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe CaptionDestinationType
$sel:burninDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe BurninDestinationSettings
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe BurninDestinationSettings
burninDestinationSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CaptionDestinationType
destinationType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DvbSubDestinationSettings
dvbSubDestinationSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EmbeddedDestinationSettings
embeddedDestinationSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ImscDestinationSettings
imscDestinationSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SccDestinationSettings
sccDestinationSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SrtDestinationSettings
srtDestinationSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TeletextDestinationSettings
teletextDestinationSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TtmlDestinationSettings
ttmlDestinationSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe WebvttDestinationSettings
webvttDestinationSettings

instance Data.ToJSON CaptionDestinationSettings where
  toJSON :: CaptionDestinationSettings -> Value
toJSON CaptionDestinationSettings' {Maybe CaptionDestinationType
Maybe EmbeddedDestinationSettings
Maybe DvbSubDestinationSettings
Maybe BurninDestinationSettings
Maybe ImscDestinationSettings
Maybe SccDestinationSettings
Maybe SrtDestinationSettings
Maybe TeletextDestinationSettings
Maybe TtmlDestinationSettings
Maybe WebvttDestinationSettings
webvttDestinationSettings :: Maybe WebvttDestinationSettings
ttmlDestinationSettings :: Maybe TtmlDestinationSettings
teletextDestinationSettings :: Maybe TeletextDestinationSettings
srtDestinationSettings :: Maybe SrtDestinationSettings
sccDestinationSettings :: Maybe SccDestinationSettings
imscDestinationSettings :: Maybe ImscDestinationSettings
embeddedDestinationSettings :: Maybe EmbeddedDestinationSettings
dvbSubDestinationSettings :: Maybe DvbSubDestinationSettings
destinationType :: Maybe CaptionDestinationType
burninDestinationSettings :: Maybe BurninDestinationSettings
$sel:webvttDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe WebvttDestinationSettings
$sel:ttmlDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe TtmlDestinationSettings
$sel:teletextDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe TeletextDestinationSettings
$sel:srtDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe SrtDestinationSettings
$sel:sccDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe SccDestinationSettings
$sel:imscDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe ImscDestinationSettings
$sel:embeddedDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe EmbeddedDestinationSettings
$sel:dvbSubDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe DvbSubDestinationSettings
$sel:destinationType:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe CaptionDestinationType
$sel:burninDestinationSettings:CaptionDestinationSettings' :: CaptionDestinationSettings -> Maybe BurninDestinationSettings
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"burninDestinationSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BurninDestinationSettings
burninDestinationSettings,
            (Key
"destinationType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CaptionDestinationType
destinationType,
            (Key
"dvbSubDestinationSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DvbSubDestinationSettings
dvbSubDestinationSettings,
            (Key
"embeddedDestinationSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EmbeddedDestinationSettings
embeddedDestinationSettings,
            (Key
"imscDestinationSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ImscDestinationSettings
imscDestinationSettings,
            (Key
"sccDestinationSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SccDestinationSettings
sccDestinationSettings,
            (Key
"srtDestinationSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SrtDestinationSettings
srtDestinationSettings,
            (Key
"teletextDestinationSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TeletextDestinationSettings
teletextDestinationSettings,
            (Key
"ttmlDestinationSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TtmlDestinationSettings
ttmlDestinationSettings,
            (Key
"webvttDestinationSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe WebvttDestinationSettings
webvttDestinationSettings
          ]
      )