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

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import Amazonka.MediaConvert.Types.Av1Settings
import Amazonka.MediaConvert.Types.AvcIntraSettings
import Amazonka.MediaConvert.Types.FrameCaptureSettings
import Amazonka.MediaConvert.Types.H264Settings
import Amazonka.MediaConvert.Types.H265Settings
import Amazonka.MediaConvert.Types.Mpeg2Settings
import Amazonka.MediaConvert.Types.ProresSettings
import Amazonka.MediaConvert.Types.Vc3Settings
import Amazonka.MediaConvert.Types.VideoCodec
import Amazonka.MediaConvert.Types.Vp8Settings
import Amazonka.MediaConvert.Types.Vp9Settings
import Amazonka.MediaConvert.Types.XavcSettings
import qualified Amazonka.Prelude as Prelude

-- | Video codec settings, (CodecSettings) under (VideoDescription), contains
-- the group of settings related to video encoding. The settings in this
-- group vary depending on the value that you choose for Video codec
-- (Codec). For each codec enum that you choose, define the corresponding
-- settings object. The following lists the codec enum, settings object
-- pairs. * AV1, Av1Settings * AVC_INTRA, AvcIntraSettings * FRAME_CAPTURE,
-- FrameCaptureSettings * H_264, H264Settings * H_265, H265Settings *
-- MPEG2, Mpeg2Settings * PRORES, ProresSettings * VC3, Vc3Settings * VP8,
-- Vp8Settings * VP9, Vp9Settings * XAVC, XavcSettings
--
-- /See:/ 'newVideoCodecSettings' smart constructor.
data VideoCodecSettings = VideoCodecSettings'
  { -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
    -- to the value FRAME_CAPTURE.
    VideoCodecSettings -> Maybe FrameCaptureSettings
frameCaptureSettings :: Prelude.Maybe FrameCaptureSettings,
    -- | Required when you set Codec, under VideoDescription>CodecSettings to the
    -- value AV1.
    VideoCodecSettings -> Maybe Av1Settings
av1Settings :: Prelude.Maybe Av1Settings,
    -- | Specifies the video codec. This must be equal to one of the enum values
    -- defined by the object VideoCodec.
    VideoCodecSettings -> Maybe VideoCodec
codec :: Prelude.Maybe VideoCodec,
    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
    -- to the value XAVC.
    VideoCodecSettings -> Maybe XavcSettings
xavcSettings :: Prelude.Maybe XavcSettings,
    -- | Settings for H265 codec
    VideoCodecSettings -> Maybe H265Settings
h265Settings :: Prelude.Maybe H265Settings,
    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
    -- to the value PRORES.
    VideoCodecSettings -> Maybe ProresSettings
proresSettings :: Prelude.Maybe ProresSettings,
    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
    -- to the value VP9.
    VideoCodecSettings -> Maybe Vp9Settings
vp9Settings :: Prelude.Maybe Vp9Settings,
    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
    -- to the value H_264.
    VideoCodecSettings -> Maybe H264Settings
h264Settings :: Prelude.Maybe H264Settings,
    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
    -- to the value MPEG2.
    VideoCodecSettings -> Maybe Mpeg2Settings
mpeg2Settings :: Prelude.Maybe Mpeg2Settings,
    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
    -- to the value VP8.
    VideoCodecSettings -> Maybe Vp8Settings
vp8Settings :: Prelude.Maybe Vp8Settings,
    -- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
    -- to the value VC3
    VideoCodecSettings -> Maybe Vc3Settings
vc3Settings :: Prelude.Maybe Vc3Settings,
    -- | Required when you choose AVC-Intra for your output video codec. For more
    -- information about the AVC-Intra settings, see the relevant
    -- specification. For detailed information about SD and HD in AVC-Intra,
    -- see https:\/\/ieeexplore.ieee.org\/document\/7290936. For information
    -- about 4K\/2K in AVC-Intra, see
    -- https:\/\/pro-av.panasonic.net\/en\/avc-ultra\/AVC-ULTRAoverview.pdf.
    VideoCodecSettings -> Maybe AvcIntraSettings
avcIntraSettings :: Prelude.Maybe AvcIntraSettings
  }
  deriving (VideoCodecSettings -> VideoCodecSettings -> Bool
(VideoCodecSettings -> VideoCodecSettings -> Bool)
-> (VideoCodecSettings -> VideoCodecSettings -> Bool)
-> Eq VideoCodecSettings
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VideoCodecSettings -> VideoCodecSettings -> Bool
$c/= :: VideoCodecSettings -> VideoCodecSettings -> Bool
== :: VideoCodecSettings -> VideoCodecSettings -> Bool
$c== :: VideoCodecSettings -> VideoCodecSettings -> Bool
Prelude.Eq, ReadPrec [VideoCodecSettings]
ReadPrec VideoCodecSettings
Int -> ReadS VideoCodecSettings
ReadS [VideoCodecSettings]
(Int -> ReadS VideoCodecSettings)
-> ReadS [VideoCodecSettings]
-> ReadPrec VideoCodecSettings
-> ReadPrec [VideoCodecSettings]
-> Read VideoCodecSettings
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [VideoCodecSettings]
$creadListPrec :: ReadPrec [VideoCodecSettings]
readPrec :: ReadPrec VideoCodecSettings
$creadPrec :: ReadPrec VideoCodecSettings
readList :: ReadS [VideoCodecSettings]
$creadList :: ReadS [VideoCodecSettings]
readsPrec :: Int -> ReadS VideoCodecSettings
$creadsPrec :: Int -> ReadS VideoCodecSettings
Prelude.Read, Int -> VideoCodecSettings -> ShowS
[VideoCodecSettings] -> ShowS
VideoCodecSettings -> String
(Int -> VideoCodecSettings -> ShowS)
-> (VideoCodecSettings -> String)
-> ([VideoCodecSettings] -> ShowS)
-> Show VideoCodecSettings
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VideoCodecSettings] -> ShowS
$cshowList :: [VideoCodecSettings] -> ShowS
show :: VideoCodecSettings -> String
$cshow :: VideoCodecSettings -> String
showsPrec :: Int -> VideoCodecSettings -> ShowS
$cshowsPrec :: Int -> VideoCodecSettings -> ShowS
Prelude.Show, (forall x. VideoCodecSettings -> Rep VideoCodecSettings x)
-> (forall x. Rep VideoCodecSettings x -> VideoCodecSettings)
-> Generic VideoCodecSettings
forall x. Rep VideoCodecSettings x -> VideoCodecSettings
forall x. VideoCodecSettings -> Rep VideoCodecSettings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep VideoCodecSettings x -> VideoCodecSettings
$cfrom :: forall x. VideoCodecSettings -> Rep VideoCodecSettings x
Prelude.Generic)

-- |
-- Create a value of 'VideoCodecSettings' 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:
--
-- 'frameCaptureSettings', 'videoCodecSettings_frameCaptureSettings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value FRAME_CAPTURE.
--
-- 'av1Settings', 'videoCodecSettings_av1Settings' - Required when you set Codec, under VideoDescription>CodecSettings to the
-- value AV1.
--
-- 'codec', 'videoCodecSettings_codec' - Specifies the video codec. This must be equal to one of the enum values
-- defined by the object VideoCodec.
--
-- 'xavcSettings', 'videoCodecSettings_xavcSettings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value XAVC.
--
-- 'h265Settings', 'videoCodecSettings_h265Settings' - Settings for H265 codec
--
-- 'proresSettings', 'videoCodecSettings_proresSettings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value PRORES.
--
-- 'vp9Settings', 'videoCodecSettings_vp9Settings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value VP9.
--
-- 'h264Settings', 'videoCodecSettings_h264Settings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value H_264.
--
-- 'mpeg2Settings', 'videoCodecSettings_mpeg2Settings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value MPEG2.
--
-- 'vp8Settings', 'videoCodecSettings_vp8Settings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value VP8.
--
-- 'vc3Settings', 'videoCodecSettings_vc3Settings' - Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value VC3
--
-- 'avcIntraSettings', 'videoCodecSettings_avcIntraSettings' - Required when you choose AVC-Intra for your output video codec. For more
-- information about the AVC-Intra settings, see the relevant
-- specification. For detailed information about SD and HD in AVC-Intra,
-- see https:\/\/ieeexplore.ieee.org\/document\/7290936. For information
-- about 4K\/2K in AVC-Intra, see
-- https:\/\/pro-av.panasonic.net\/en\/avc-ultra\/AVC-ULTRAoverview.pdf.
newVideoCodecSettings ::
  VideoCodecSettings
newVideoCodecSettings :: VideoCodecSettings
newVideoCodecSettings =
  VideoCodecSettings' :: Maybe FrameCaptureSettings
-> Maybe Av1Settings
-> Maybe VideoCodec
-> Maybe XavcSettings
-> Maybe H265Settings
-> Maybe ProresSettings
-> Maybe Vp9Settings
-> Maybe H264Settings
-> Maybe Mpeg2Settings
-> Maybe Vp8Settings
-> Maybe Vc3Settings
-> Maybe AvcIntraSettings
-> VideoCodecSettings
VideoCodecSettings'
    { $sel:frameCaptureSettings:VideoCodecSettings' :: Maybe FrameCaptureSettings
frameCaptureSettings =
        Maybe FrameCaptureSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:av1Settings:VideoCodecSettings' :: Maybe Av1Settings
av1Settings = Maybe Av1Settings
forall a. Maybe a
Prelude.Nothing,
      $sel:codec:VideoCodecSettings' :: Maybe VideoCodec
codec = Maybe VideoCodec
forall a. Maybe a
Prelude.Nothing,
      $sel:xavcSettings:VideoCodecSettings' :: Maybe XavcSettings
xavcSettings = Maybe XavcSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:h265Settings:VideoCodecSettings' :: Maybe H265Settings
h265Settings = Maybe H265Settings
forall a. Maybe a
Prelude.Nothing,
      $sel:proresSettings:VideoCodecSettings' :: Maybe ProresSettings
proresSettings = Maybe ProresSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:vp9Settings:VideoCodecSettings' :: Maybe Vp9Settings
vp9Settings = Maybe Vp9Settings
forall a. Maybe a
Prelude.Nothing,
      $sel:h264Settings:VideoCodecSettings' :: Maybe H264Settings
h264Settings = Maybe H264Settings
forall a. Maybe a
Prelude.Nothing,
      $sel:mpeg2Settings:VideoCodecSettings' :: Maybe Mpeg2Settings
mpeg2Settings = Maybe Mpeg2Settings
forall a. Maybe a
Prelude.Nothing,
      $sel:vp8Settings:VideoCodecSettings' :: Maybe Vp8Settings
vp8Settings = Maybe Vp8Settings
forall a. Maybe a
Prelude.Nothing,
      $sel:vc3Settings:VideoCodecSettings' :: Maybe Vc3Settings
vc3Settings = Maybe Vc3Settings
forall a. Maybe a
Prelude.Nothing,
      $sel:avcIntraSettings:VideoCodecSettings' :: Maybe AvcIntraSettings
avcIntraSettings = Maybe AvcIntraSettings
forall a. Maybe a
Prelude.Nothing
    }

-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value FRAME_CAPTURE.
videoCodecSettings_frameCaptureSettings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe FrameCaptureSettings)
videoCodecSettings_frameCaptureSettings :: (Maybe FrameCaptureSettings -> f (Maybe FrameCaptureSettings))
-> VideoCodecSettings -> f VideoCodecSettings
videoCodecSettings_frameCaptureSettings = (VideoCodecSettings -> Maybe FrameCaptureSettings)
-> (VideoCodecSettings
    -> Maybe FrameCaptureSettings -> VideoCodecSettings)
-> Lens
     VideoCodecSettings
     VideoCodecSettings
     (Maybe FrameCaptureSettings)
     (Maybe FrameCaptureSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoCodecSettings' {Maybe FrameCaptureSettings
frameCaptureSettings :: Maybe FrameCaptureSettings
$sel:frameCaptureSettings:VideoCodecSettings' :: VideoCodecSettings -> Maybe FrameCaptureSettings
frameCaptureSettings} -> Maybe FrameCaptureSettings
frameCaptureSettings) (\s :: VideoCodecSettings
s@VideoCodecSettings' {} Maybe FrameCaptureSettings
a -> VideoCodecSettings
s {$sel:frameCaptureSettings:VideoCodecSettings' :: Maybe FrameCaptureSettings
frameCaptureSettings = Maybe FrameCaptureSettings
a} :: VideoCodecSettings)

-- | Required when you set Codec, under VideoDescription>CodecSettings to the
-- value AV1.
videoCodecSettings_av1Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe Av1Settings)
videoCodecSettings_av1Settings :: (Maybe Av1Settings -> f (Maybe Av1Settings))
-> VideoCodecSettings -> f VideoCodecSettings
videoCodecSettings_av1Settings = (VideoCodecSettings -> Maybe Av1Settings)
-> (VideoCodecSettings -> Maybe Av1Settings -> VideoCodecSettings)
-> Lens
     VideoCodecSettings
     VideoCodecSettings
     (Maybe Av1Settings)
     (Maybe Av1Settings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoCodecSettings' {Maybe Av1Settings
av1Settings :: Maybe Av1Settings
$sel:av1Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe Av1Settings
av1Settings} -> Maybe Av1Settings
av1Settings) (\s :: VideoCodecSettings
s@VideoCodecSettings' {} Maybe Av1Settings
a -> VideoCodecSettings
s {$sel:av1Settings:VideoCodecSettings' :: Maybe Av1Settings
av1Settings = Maybe Av1Settings
a} :: VideoCodecSettings)

-- | Specifies the video codec. This must be equal to one of the enum values
-- defined by the object VideoCodec.
videoCodecSettings_codec :: Lens.Lens' VideoCodecSettings (Prelude.Maybe VideoCodec)
videoCodecSettings_codec :: (Maybe VideoCodec -> f (Maybe VideoCodec))
-> VideoCodecSettings -> f VideoCodecSettings
videoCodecSettings_codec = (VideoCodecSettings -> Maybe VideoCodec)
-> (VideoCodecSettings -> Maybe VideoCodec -> VideoCodecSettings)
-> Lens
     VideoCodecSettings
     VideoCodecSettings
     (Maybe VideoCodec)
     (Maybe VideoCodec)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoCodecSettings' {Maybe VideoCodec
codec :: Maybe VideoCodec
$sel:codec:VideoCodecSettings' :: VideoCodecSettings -> Maybe VideoCodec
codec} -> Maybe VideoCodec
codec) (\s :: VideoCodecSettings
s@VideoCodecSettings' {} Maybe VideoCodec
a -> VideoCodecSettings
s {$sel:codec:VideoCodecSettings' :: Maybe VideoCodec
codec = Maybe VideoCodec
a} :: VideoCodecSettings)

-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value XAVC.
videoCodecSettings_xavcSettings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe XavcSettings)
videoCodecSettings_xavcSettings :: (Maybe XavcSettings -> f (Maybe XavcSettings))
-> VideoCodecSettings -> f VideoCodecSettings
videoCodecSettings_xavcSettings = (VideoCodecSettings -> Maybe XavcSettings)
-> (VideoCodecSettings -> Maybe XavcSettings -> VideoCodecSettings)
-> Lens
     VideoCodecSettings
     VideoCodecSettings
     (Maybe XavcSettings)
     (Maybe XavcSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoCodecSettings' {Maybe XavcSettings
xavcSettings :: Maybe XavcSettings
$sel:xavcSettings:VideoCodecSettings' :: VideoCodecSettings -> Maybe XavcSettings
xavcSettings} -> Maybe XavcSettings
xavcSettings) (\s :: VideoCodecSettings
s@VideoCodecSettings' {} Maybe XavcSettings
a -> VideoCodecSettings
s {$sel:xavcSettings:VideoCodecSettings' :: Maybe XavcSettings
xavcSettings = Maybe XavcSettings
a} :: VideoCodecSettings)

-- | Settings for H265 codec
videoCodecSettings_h265Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe H265Settings)
videoCodecSettings_h265Settings :: (Maybe H265Settings -> f (Maybe H265Settings))
-> VideoCodecSettings -> f VideoCodecSettings
videoCodecSettings_h265Settings = (VideoCodecSettings -> Maybe H265Settings)
-> (VideoCodecSettings -> Maybe H265Settings -> VideoCodecSettings)
-> Lens
     VideoCodecSettings
     VideoCodecSettings
     (Maybe H265Settings)
     (Maybe H265Settings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoCodecSettings' {Maybe H265Settings
h265Settings :: Maybe H265Settings
$sel:h265Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe H265Settings
h265Settings} -> Maybe H265Settings
h265Settings) (\s :: VideoCodecSettings
s@VideoCodecSettings' {} Maybe H265Settings
a -> VideoCodecSettings
s {$sel:h265Settings:VideoCodecSettings' :: Maybe H265Settings
h265Settings = Maybe H265Settings
a} :: VideoCodecSettings)

-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value PRORES.
videoCodecSettings_proresSettings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe ProresSettings)
videoCodecSettings_proresSettings :: (Maybe ProresSettings -> f (Maybe ProresSettings))
-> VideoCodecSettings -> f VideoCodecSettings
videoCodecSettings_proresSettings = (VideoCodecSettings -> Maybe ProresSettings)
-> (VideoCodecSettings
    -> Maybe ProresSettings -> VideoCodecSettings)
-> Lens
     VideoCodecSettings
     VideoCodecSettings
     (Maybe ProresSettings)
     (Maybe ProresSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoCodecSettings' {Maybe ProresSettings
proresSettings :: Maybe ProresSettings
$sel:proresSettings:VideoCodecSettings' :: VideoCodecSettings -> Maybe ProresSettings
proresSettings} -> Maybe ProresSettings
proresSettings) (\s :: VideoCodecSettings
s@VideoCodecSettings' {} Maybe ProresSettings
a -> VideoCodecSettings
s {$sel:proresSettings:VideoCodecSettings' :: Maybe ProresSettings
proresSettings = Maybe ProresSettings
a} :: VideoCodecSettings)

-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value VP9.
videoCodecSettings_vp9Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe Vp9Settings)
videoCodecSettings_vp9Settings :: (Maybe Vp9Settings -> f (Maybe Vp9Settings))
-> VideoCodecSettings -> f VideoCodecSettings
videoCodecSettings_vp9Settings = (VideoCodecSettings -> Maybe Vp9Settings)
-> (VideoCodecSettings -> Maybe Vp9Settings -> VideoCodecSettings)
-> Lens
     VideoCodecSettings
     VideoCodecSettings
     (Maybe Vp9Settings)
     (Maybe Vp9Settings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoCodecSettings' {Maybe Vp9Settings
vp9Settings :: Maybe Vp9Settings
$sel:vp9Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe Vp9Settings
vp9Settings} -> Maybe Vp9Settings
vp9Settings) (\s :: VideoCodecSettings
s@VideoCodecSettings' {} Maybe Vp9Settings
a -> VideoCodecSettings
s {$sel:vp9Settings:VideoCodecSettings' :: Maybe Vp9Settings
vp9Settings = Maybe Vp9Settings
a} :: VideoCodecSettings)

-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value H_264.
videoCodecSettings_h264Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe H264Settings)
videoCodecSettings_h264Settings :: (Maybe H264Settings -> f (Maybe H264Settings))
-> VideoCodecSettings -> f VideoCodecSettings
videoCodecSettings_h264Settings = (VideoCodecSettings -> Maybe H264Settings)
-> (VideoCodecSettings -> Maybe H264Settings -> VideoCodecSettings)
-> Lens
     VideoCodecSettings
     VideoCodecSettings
     (Maybe H264Settings)
     (Maybe H264Settings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoCodecSettings' {Maybe H264Settings
h264Settings :: Maybe H264Settings
$sel:h264Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe H264Settings
h264Settings} -> Maybe H264Settings
h264Settings) (\s :: VideoCodecSettings
s@VideoCodecSettings' {} Maybe H264Settings
a -> VideoCodecSettings
s {$sel:h264Settings:VideoCodecSettings' :: Maybe H264Settings
h264Settings = Maybe H264Settings
a} :: VideoCodecSettings)

-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value MPEG2.
videoCodecSettings_mpeg2Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe Mpeg2Settings)
videoCodecSettings_mpeg2Settings :: (Maybe Mpeg2Settings -> f (Maybe Mpeg2Settings))
-> VideoCodecSettings -> f VideoCodecSettings
videoCodecSettings_mpeg2Settings = (VideoCodecSettings -> Maybe Mpeg2Settings)
-> (VideoCodecSettings
    -> Maybe Mpeg2Settings -> VideoCodecSettings)
-> Lens
     VideoCodecSettings
     VideoCodecSettings
     (Maybe Mpeg2Settings)
     (Maybe Mpeg2Settings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoCodecSettings' {Maybe Mpeg2Settings
mpeg2Settings :: Maybe Mpeg2Settings
$sel:mpeg2Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe Mpeg2Settings
mpeg2Settings} -> Maybe Mpeg2Settings
mpeg2Settings) (\s :: VideoCodecSettings
s@VideoCodecSettings' {} Maybe Mpeg2Settings
a -> VideoCodecSettings
s {$sel:mpeg2Settings:VideoCodecSettings' :: Maybe Mpeg2Settings
mpeg2Settings = Maybe Mpeg2Settings
a} :: VideoCodecSettings)

-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value VP8.
videoCodecSettings_vp8Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe Vp8Settings)
videoCodecSettings_vp8Settings :: (Maybe Vp8Settings -> f (Maybe Vp8Settings))
-> VideoCodecSettings -> f VideoCodecSettings
videoCodecSettings_vp8Settings = (VideoCodecSettings -> Maybe Vp8Settings)
-> (VideoCodecSettings -> Maybe Vp8Settings -> VideoCodecSettings)
-> Lens
     VideoCodecSettings
     VideoCodecSettings
     (Maybe Vp8Settings)
     (Maybe Vp8Settings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoCodecSettings' {Maybe Vp8Settings
vp8Settings :: Maybe Vp8Settings
$sel:vp8Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe Vp8Settings
vp8Settings} -> Maybe Vp8Settings
vp8Settings) (\s :: VideoCodecSettings
s@VideoCodecSettings' {} Maybe Vp8Settings
a -> VideoCodecSettings
s {$sel:vp8Settings:VideoCodecSettings' :: Maybe Vp8Settings
vp8Settings = Maybe Vp8Settings
a} :: VideoCodecSettings)

-- | Required when you set (Codec) under (VideoDescription)>(CodecSettings)
-- to the value VC3
videoCodecSettings_vc3Settings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe Vc3Settings)
videoCodecSettings_vc3Settings :: (Maybe Vc3Settings -> f (Maybe Vc3Settings))
-> VideoCodecSettings -> f VideoCodecSettings
videoCodecSettings_vc3Settings = (VideoCodecSettings -> Maybe Vc3Settings)
-> (VideoCodecSettings -> Maybe Vc3Settings -> VideoCodecSettings)
-> Lens
     VideoCodecSettings
     VideoCodecSettings
     (Maybe Vc3Settings)
     (Maybe Vc3Settings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoCodecSettings' {Maybe Vc3Settings
vc3Settings :: Maybe Vc3Settings
$sel:vc3Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe Vc3Settings
vc3Settings} -> Maybe Vc3Settings
vc3Settings) (\s :: VideoCodecSettings
s@VideoCodecSettings' {} Maybe Vc3Settings
a -> VideoCodecSettings
s {$sel:vc3Settings:VideoCodecSettings' :: Maybe Vc3Settings
vc3Settings = Maybe Vc3Settings
a} :: VideoCodecSettings)

-- | Required when you choose AVC-Intra for your output video codec. For more
-- information about the AVC-Intra settings, see the relevant
-- specification. For detailed information about SD and HD in AVC-Intra,
-- see https:\/\/ieeexplore.ieee.org\/document\/7290936. For information
-- about 4K\/2K in AVC-Intra, see
-- https:\/\/pro-av.panasonic.net\/en\/avc-ultra\/AVC-ULTRAoverview.pdf.
videoCodecSettings_avcIntraSettings :: Lens.Lens' VideoCodecSettings (Prelude.Maybe AvcIntraSettings)
videoCodecSettings_avcIntraSettings :: (Maybe AvcIntraSettings -> f (Maybe AvcIntraSettings))
-> VideoCodecSettings -> f VideoCodecSettings
videoCodecSettings_avcIntraSettings = (VideoCodecSettings -> Maybe AvcIntraSettings)
-> (VideoCodecSettings
    -> Maybe AvcIntraSettings -> VideoCodecSettings)
-> Lens
     VideoCodecSettings
     VideoCodecSettings
     (Maybe AvcIntraSettings)
     (Maybe AvcIntraSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoCodecSettings' {Maybe AvcIntraSettings
avcIntraSettings :: Maybe AvcIntraSettings
$sel:avcIntraSettings:VideoCodecSettings' :: VideoCodecSettings -> Maybe AvcIntraSettings
avcIntraSettings} -> Maybe AvcIntraSettings
avcIntraSettings) (\s :: VideoCodecSettings
s@VideoCodecSettings' {} Maybe AvcIntraSettings
a -> VideoCodecSettings
s {$sel:avcIntraSettings:VideoCodecSettings' :: Maybe AvcIntraSettings
avcIntraSettings = Maybe AvcIntraSettings
a} :: VideoCodecSettings)

instance Core.FromJSON VideoCodecSettings where
  parseJSON :: Value -> Parser VideoCodecSettings
parseJSON =
    String
-> (Object -> Parser VideoCodecSettings)
-> Value
-> Parser VideoCodecSettings
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"VideoCodecSettings"
      ( \Object
x ->
          Maybe FrameCaptureSettings
-> Maybe Av1Settings
-> Maybe VideoCodec
-> Maybe XavcSettings
-> Maybe H265Settings
-> Maybe ProresSettings
-> Maybe Vp9Settings
-> Maybe H264Settings
-> Maybe Mpeg2Settings
-> Maybe Vp8Settings
-> Maybe Vc3Settings
-> Maybe AvcIntraSettings
-> VideoCodecSettings
VideoCodecSettings'
            (Maybe FrameCaptureSettings
 -> Maybe Av1Settings
 -> Maybe VideoCodec
 -> Maybe XavcSettings
 -> Maybe H265Settings
 -> Maybe ProresSettings
 -> Maybe Vp9Settings
 -> Maybe H264Settings
 -> Maybe Mpeg2Settings
 -> Maybe Vp8Settings
 -> Maybe Vc3Settings
 -> Maybe AvcIntraSettings
 -> VideoCodecSettings)
-> Parser (Maybe FrameCaptureSettings)
-> Parser
     (Maybe Av1Settings
      -> Maybe VideoCodec
      -> Maybe XavcSettings
      -> Maybe H265Settings
      -> Maybe ProresSettings
      -> Maybe Vp9Settings
      -> Maybe H264Settings
      -> Maybe Mpeg2Settings
      -> Maybe Vp8Settings
      -> Maybe Vc3Settings
      -> Maybe AvcIntraSettings
      -> VideoCodecSettings)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe FrameCaptureSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"frameCaptureSettings")
            Parser
  (Maybe Av1Settings
   -> Maybe VideoCodec
   -> Maybe XavcSettings
   -> Maybe H265Settings
   -> Maybe ProresSettings
   -> Maybe Vp9Settings
   -> Maybe H264Settings
   -> Maybe Mpeg2Settings
   -> Maybe Vp8Settings
   -> Maybe Vc3Settings
   -> Maybe AvcIntraSettings
   -> VideoCodecSettings)
-> Parser (Maybe Av1Settings)
-> Parser
     (Maybe VideoCodec
      -> Maybe XavcSettings
      -> Maybe H265Settings
      -> Maybe ProresSettings
      -> Maybe Vp9Settings
      -> Maybe H264Settings
      -> Maybe Mpeg2Settings
      -> Maybe Vp8Settings
      -> Maybe Vc3Settings
      -> Maybe AvcIntraSettings
      -> VideoCodecSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Av1Settings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"av1Settings")
            Parser
  (Maybe VideoCodec
   -> Maybe XavcSettings
   -> Maybe H265Settings
   -> Maybe ProresSettings
   -> Maybe Vp9Settings
   -> Maybe H264Settings
   -> Maybe Mpeg2Settings
   -> Maybe Vp8Settings
   -> Maybe Vc3Settings
   -> Maybe AvcIntraSettings
   -> VideoCodecSettings)
-> Parser (Maybe VideoCodec)
-> Parser
     (Maybe XavcSettings
      -> Maybe H265Settings
      -> Maybe ProresSettings
      -> Maybe Vp9Settings
      -> Maybe H264Settings
      -> Maybe Mpeg2Settings
      -> Maybe Vp8Settings
      -> Maybe Vc3Settings
      -> Maybe AvcIntraSettings
      -> VideoCodecSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe VideoCodec)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"codec")
            Parser
  (Maybe XavcSettings
   -> Maybe H265Settings
   -> Maybe ProresSettings
   -> Maybe Vp9Settings
   -> Maybe H264Settings
   -> Maybe Mpeg2Settings
   -> Maybe Vp8Settings
   -> Maybe Vc3Settings
   -> Maybe AvcIntraSettings
   -> VideoCodecSettings)
-> Parser (Maybe XavcSettings)
-> Parser
     (Maybe H265Settings
      -> Maybe ProresSettings
      -> Maybe Vp9Settings
      -> Maybe H264Settings
      -> Maybe Mpeg2Settings
      -> Maybe Vp8Settings
      -> Maybe Vc3Settings
      -> Maybe AvcIntraSettings
      -> VideoCodecSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe XavcSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"xavcSettings")
            Parser
  (Maybe H265Settings
   -> Maybe ProresSettings
   -> Maybe Vp9Settings
   -> Maybe H264Settings
   -> Maybe Mpeg2Settings
   -> Maybe Vp8Settings
   -> Maybe Vc3Settings
   -> Maybe AvcIntraSettings
   -> VideoCodecSettings)
-> Parser (Maybe H265Settings)
-> Parser
     (Maybe ProresSettings
      -> Maybe Vp9Settings
      -> Maybe H264Settings
      -> Maybe Mpeg2Settings
      -> Maybe Vp8Settings
      -> Maybe Vc3Settings
      -> Maybe AvcIntraSettings
      -> VideoCodecSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe H265Settings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"h265Settings")
            Parser
  (Maybe ProresSettings
   -> Maybe Vp9Settings
   -> Maybe H264Settings
   -> Maybe Mpeg2Settings
   -> Maybe Vp8Settings
   -> Maybe Vc3Settings
   -> Maybe AvcIntraSettings
   -> VideoCodecSettings)
-> Parser (Maybe ProresSettings)
-> Parser
     (Maybe Vp9Settings
      -> Maybe H264Settings
      -> Maybe Mpeg2Settings
      -> Maybe Vp8Settings
      -> Maybe Vc3Settings
      -> Maybe AvcIntraSettings
      -> VideoCodecSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ProresSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"proresSettings")
            Parser
  (Maybe Vp9Settings
   -> Maybe H264Settings
   -> Maybe Mpeg2Settings
   -> Maybe Vp8Settings
   -> Maybe Vc3Settings
   -> Maybe AvcIntraSettings
   -> VideoCodecSettings)
-> Parser (Maybe Vp9Settings)
-> Parser
     (Maybe H264Settings
      -> Maybe Mpeg2Settings
      -> Maybe Vp8Settings
      -> Maybe Vc3Settings
      -> Maybe AvcIntraSettings
      -> VideoCodecSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Vp9Settings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"vp9Settings")
            Parser
  (Maybe H264Settings
   -> Maybe Mpeg2Settings
   -> Maybe Vp8Settings
   -> Maybe Vc3Settings
   -> Maybe AvcIntraSettings
   -> VideoCodecSettings)
-> Parser (Maybe H264Settings)
-> Parser
     (Maybe Mpeg2Settings
      -> Maybe Vp8Settings
      -> Maybe Vc3Settings
      -> Maybe AvcIntraSettings
      -> VideoCodecSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe H264Settings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"h264Settings")
            Parser
  (Maybe Mpeg2Settings
   -> Maybe Vp8Settings
   -> Maybe Vc3Settings
   -> Maybe AvcIntraSettings
   -> VideoCodecSettings)
-> Parser (Maybe Mpeg2Settings)
-> Parser
     (Maybe Vp8Settings
      -> Maybe Vc3Settings
      -> Maybe AvcIntraSettings
      -> VideoCodecSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Mpeg2Settings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"mpeg2Settings")
            Parser
  (Maybe Vp8Settings
   -> Maybe Vc3Settings
   -> Maybe AvcIntraSettings
   -> VideoCodecSettings)
-> Parser (Maybe Vp8Settings)
-> Parser
     (Maybe Vc3Settings -> Maybe AvcIntraSettings -> VideoCodecSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Vp8Settings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"vp8Settings")
            Parser
  (Maybe Vc3Settings -> Maybe AvcIntraSettings -> VideoCodecSettings)
-> Parser (Maybe Vc3Settings)
-> Parser (Maybe AvcIntraSettings -> VideoCodecSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Vc3Settings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"vc3Settings")
            Parser (Maybe AvcIntraSettings -> VideoCodecSettings)
-> Parser (Maybe AvcIntraSettings) -> Parser VideoCodecSettings
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AvcIntraSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"avcIntraSettings")
      )

instance Prelude.Hashable VideoCodecSettings

instance Prelude.NFData VideoCodecSettings

instance Core.ToJSON VideoCodecSettings where
  toJSON :: VideoCodecSettings -> Value
toJSON VideoCodecSettings' {Maybe Av1Settings
Maybe AvcIntraSettings
Maybe FrameCaptureSettings
Maybe H264Settings
Maybe H265Settings
Maybe Mpeg2Settings
Maybe ProresSettings
Maybe Vc3Settings
Maybe VideoCodec
Maybe Vp8Settings
Maybe Vp9Settings
Maybe XavcSettings
avcIntraSettings :: Maybe AvcIntraSettings
vc3Settings :: Maybe Vc3Settings
vp8Settings :: Maybe Vp8Settings
mpeg2Settings :: Maybe Mpeg2Settings
h264Settings :: Maybe H264Settings
vp9Settings :: Maybe Vp9Settings
proresSettings :: Maybe ProresSettings
h265Settings :: Maybe H265Settings
xavcSettings :: Maybe XavcSettings
codec :: Maybe VideoCodec
av1Settings :: Maybe Av1Settings
frameCaptureSettings :: Maybe FrameCaptureSettings
$sel:avcIntraSettings:VideoCodecSettings' :: VideoCodecSettings -> Maybe AvcIntraSettings
$sel:vc3Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe Vc3Settings
$sel:vp8Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe Vp8Settings
$sel:mpeg2Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe Mpeg2Settings
$sel:h264Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe H264Settings
$sel:vp9Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe Vp9Settings
$sel:proresSettings:VideoCodecSettings' :: VideoCodecSettings -> Maybe ProresSettings
$sel:h265Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe H265Settings
$sel:xavcSettings:VideoCodecSettings' :: VideoCodecSettings -> Maybe XavcSettings
$sel:codec:VideoCodecSettings' :: VideoCodecSettings -> Maybe VideoCodec
$sel:av1Settings:VideoCodecSettings' :: VideoCodecSettings -> Maybe Av1Settings
$sel:frameCaptureSettings:VideoCodecSettings' :: VideoCodecSettings -> Maybe FrameCaptureSettings
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"frameCaptureSettings" Text -> FrameCaptureSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (FrameCaptureSettings -> Pair)
-> Maybe FrameCaptureSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FrameCaptureSettings
frameCaptureSettings,
            (Text
"av1Settings" Text -> Av1Settings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Av1Settings -> Pair) -> Maybe Av1Settings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Av1Settings
av1Settings,
            (Text
"codec" Text -> VideoCodec -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (VideoCodec -> Pair) -> Maybe VideoCodec -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe VideoCodec
codec,
            (Text
"xavcSettings" Text -> XavcSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (XavcSettings -> Pair) -> Maybe XavcSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe XavcSettings
xavcSettings,
            (Text
"h265Settings" Text -> H265Settings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (H265Settings -> Pair) -> Maybe H265Settings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H265Settings
h265Settings,
            (Text
"proresSettings" Text -> ProresSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (ProresSettings -> Pair) -> Maybe ProresSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ProresSettings
proresSettings,
            (Text
"vp9Settings" Text -> Vp9Settings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Vp9Settings -> Pair) -> Maybe Vp9Settings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Vp9Settings
vp9Settings,
            (Text
"h264Settings" Text -> H264Settings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (H264Settings -> Pair) -> Maybe H264Settings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe H264Settings
h264Settings,
            (Text
"mpeg2Settings" Text -> Mpeg2Settings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Mpeg2Settings -> Pair) -> Maybe Mpeg2Settings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Mpeg2Settings
mpeg2Settings,
            (Text
"vp8Settings" Text -> Vp8Settings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Vp8Settings -> Pair) -> Maybe Vp8Settings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Vp8Settings
vp8Settings,
            (Text
"vc3Settings" Text -> Vc3Settings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Vc3Settings -> Pair) -> Maybe Vc3Settings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Vc3Settings
vc3Settings,
            (Text
"avcIntraSettings" Text -> AvcIntraSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (AvcIntraSettings -> Pair) -> Maybe AvcIntraSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AvcIntraSettings
avcIntraSettings
          ]
      )