{-# 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.OutputGroupSettings
-- 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.OutputGroupSettings 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.CmafGroupSettings
import Amazonka.MediaConvert.Types.DashIsoGroupSettings
import Amazonka.MediaConvert.Types.FileGroupSettings
import Amazonka.MediaConvert.Types.HlsGroupSettings
import Amazonka.MediaConvert.Types.MsSmoothGroupSettings
import Amazonka.MediaConvert.Types.OutputGroupType
import qualified Amazonka.Prelude as Prelude

-- | Output Group settings, including type
--
-- /See:/ 'newOutputGroupSettings' smart constructor.
data OutputGroupSettings = OutputGroupSettings'
  { -- | Settings related to your CMAF output package. For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
    -- When you work directly in your JSON job specification, include this
    -- object and any required children when you set Type, under
    -- OutputGroupSettings, to CMAF_GROUP_SETTINGS.
    OutputGroupSettings -> Maybe CmafGroupSettings
cmafGroupSettings :: Prelude.Maybe CmafGroupSettings,
    -- | Settings related to your DASH output package. For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
    -- When you work directly in your JSON job specification, include this
    -- object and any required children when you set Type, under
    -- OutputGroupSettings, to DASH_ISO_GROUP_SETTINGS.
    OutputGroupSettings -> Maybe DashIsoGroupSettings
dashIsoGroupSettings :: Prelude.Maybe DashIsoGroupSettings,
    -- | Settings related to your File output group. MediaConvert uses this group
    -- of settings to generate a single standalone file, rather than a
    -- streaming package. When you work directly in your JSON job
    -- specification, include this object and any required children when you
    -- set Type, under OutputGroupSettings, to FILE_GROUP_SETTINGS.
    OutputGroupSettings -> Maybe FileGroupSettings
fileGroupSettings :: Prelude.Maybe FileGroupSettings,
    -- | Settings related to your HLS output package. For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
    -- When you work directly in your JSON job specification, include this
    -- object and any required children when you set Type, under
    -- OutputGroupSettings, to HLS_GROUP_SETTINGS.
    OutputGroupSettings -> Maybe HlsGroupSettings
hlsGroupSettings :: Prelude.Maybe HlsGroupSettings,
    -- | Settings related to your Microsoft Smooth Streaming output package. For
    -- more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
    -- When you work directly in your JSON job specification, include this
    -- object and any required children when you set Type, under
    -- OutputGroupSettings, to MS_SMOOTH_GROUP_SETTINGS.
    OutputGroupSettings -> Maybe MsSmoothGroupSettings
msSmoothGroupSettings :: Prelude.Maybe MsSmoothGroupSettings,
    -- | Type of output group (File group, Apple HLS, DASH ISO, Microsoft Smooth
    -- Streaming, CMAF)
    OutputGroupSettings -> Maybe OutputGroupType
type' :: Prelude.Maybe OutputGroupType
  }
  deriving (OutputGroupSettings -> OutputGroupSettings -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: OutputGroupSettings -> OutputGroupSettings -> Bool
$c/= :: OutputGroupSettings -> OutputGroupSettings -> Bool
== :: OutputGroupSettings -> OutputGroupSettings -> Bool
$c== :: OutputGroupSettings -> OutputGroupSettings -> Bool
Prelude.Eq, ReadPrec [OutputGroupSettings]
ReadPrec OutputGroupSettings
Int -> ReadS OutputGroupSettings
ReadS [OutputGroupSettings]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [OutputGroupSettings]
$creadListPrec :: ReadPrec [OutputGroupSettings]
readPrec :: ReadPrec OutputGroupSettings
$creadPrec :: ReadPrec OutputGroupSettings
readList :: ReadS [OutputGroupSettings]
$creadList :: ReadS [OutputGroupSettings]
readsPrec :: Int -> ReadS OutputGroupSettings
$creadsPrec :: Int -> ReadS OutputGroupSettings
Prelude.Read, Int -> OutputGroupSettings -> ShowS
[OutputGroupSettings] -> ShowS
OutputGroupSettings -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [OutputGroupSettings] -> ShowS
$cshowList :: [OutputGroupSettings] -> ShowS
show :: OutputGroupSettings -> String
$cshow :: OutputGroupSettings -> String
showsPrec :: Int -> OutputGroupSettings -> ShowS
$cshowsPrec :: Int -> OutputGroupSettings -> ShowS
Prelude.Show, forall x. Rep OutputGroupSettings x -> OutputGroupSettings
forall x. OutputGroupSettings -> Rep OutputGroupSettings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep OutputGroupSettings x -> OutputGroupSettings
$cfrom :: forall x. OutputGroupSettings -> Rep OutputGroupSettings x
Prelude.Generic)

-- |
-- Create a value of 'OutputGroupSettings' 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:
--
-- 'cmafGroupSettings', 'outputGroupSettings_cmafGroupSettings' - Settings related to your CMAF output package. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set Type, under
-- OutputGroupSettings, to CMAF_GROUP_SETTINGS.
--
-- 'dashIsoGroupSettings', 'outputGroupSettings_dashIsoGroupSettings' - Settings related to your DASH output package. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set Type, under
-- OutputGroupSettings, to DASH_ISO_GROUP_SETTINGS.
--
-- 'fileGroupSettings', 'outputGroupSettings_fileGroupSettings' - Settings related to your File output group. MediaConvert uses this group
-- of settings to generate a single standalone file, rather than a
-- streaming package. When you work directly in your JSON job
-- specification, include this object and any required children when you
-- set Type, under OutputGroupSettings, to FILE_GROUP_SETTINGS.
--
-- 'hlsGroupSettings', 'outputGroupSettings_hlsGroupSettings' - Settings related to your HLS output package. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set Type, under
-- OutputGroupSettings, to HLS_GROUP_SETTINGS.
--
-- 'msSmoothGroupSettings', 'outputGroupSettings_msSmoothGroupSettings' - Settings related to your Microsoft Smooth Streaming output package. For
-- more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set Type, under
-- OutputGroupSettings, to MS_SMOOTH_GROUP_SETTINGS.
--
-- 'type'', 'outputGroupSettings_type' - Type of output group (File group, Apple HLS, DASH ISO, Microsoft Smooth
-- Streaming, CMAF)
newOutputGroupSettings ::
  OutputGroupSettings
newOutputGroupSettings :: OutputGroupSettings
newOutputGroupSettings =
  OutputGroupSettings'
    { $sel:cmafGroupSettings:OutputGroupSettings' :: Maybe CmafGroupSettings
cmafGroupSettings =
        forall a. Maybe a
Prelude.Nothing,
      $sel:dashIsoGroupSettings:OutputGroupSettings' :: Maybe DashIsoGroupSettings
dashIsoGroupSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:fileGroupSettings:OutputGroupSettings' :: Maybe FileGroupSettings
fileGroupSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:hlsGroupSettings:OutputGroupSettings' :: Maybe HlsGroupSettings
hlsGroupSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:msSmoothGroupSettings:OutputGroupSettings' :: Maybe MsSmoothGroupSettings
msSmoothGroupSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:type':OutputGroupSettings' :: Maybe OutputGroupType
type' = forall a. Maybe a
Prelude.Nothing
    }

-- | Settings related to your CMAF output package. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set Type, under
-- OutputGroupSettings, to CMAF_GROUP_SETTINGS.
outputGroupSettings_cmafGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe CmafGroupSettings)
outputGroupSettings_cmafGroupSettings :: Lens' OutputGroupSettings (Maybe CmafGroupSettings)
outputGroupSettings_cmafGroupSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe CmafGroupSettings
cmafGroupSettings :: Maybe CmafGroupSettings
$sel:cmafGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe CmafGroupSettings
cmafGroupSettings} -> Maybe CmafGroupSettings
cmafGroupSettings) (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe CmafGroupSettings
a -> OutputGroupSettings
s {$sel:cmafGroupSettings:OutputGroupSettings' :: Maybe CmafGroupSettings
cmafGroupSettings = Maybe CmafGroupSettings
a} :: OutputGroupSettings)

-- | Settings related to your DASH output package. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set Type, under
-- OutputGroupSettings, to DASH_ISO_GROUP_SETTINGS.
outputGroupSettings_dashIsoGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe DashIsoGroupSettings)
outputGroupSettings_dashIsoGroupSettings :: Lens' OutputGroupSettings (Maybe DashIsoGroupSettings)
outputGroupSettings_dashIsoGroupSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe DashIsoGroupSettings
dashIsoGroupSettings :: Maybe DashIsoGroupSettings
$sel:dashIsoGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe DashIsoGroupSettings
dashIsoGroupSettings} -> Maybe DashIsoGroupSettings
dashIsoGroupSettings) (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe DashIsoGroupSettings
a -> OutputGroupSettings
s {$sel:dashIsoGroupSettings:OutputGroupSettings' :: Maybe DashIsoGroupSettings
dashIsoGroupSettings = Maybe DashIsoGroupSettings
a} :: OutputGroupSettings)

-- | Settings related to your File output group. MediaConvert uses this group
-- of settings to generate a single standalone file, rather than a
-- streaming package. When you work directly in your JSON job
-- specification, include this object and any required children when you
-- set Type, under OutputGroupSettings, to FILE_GROUP_SETTINGS.
outputGroupSettings_fileGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe FileGroupSettings)
outputGroupSettings_fileGroupSettings :: Lens' OutputGroupSettings (Maybe FileGroupSettings)
outputGroupSettings_fileGroupSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe FileGroupSettings
fileGroupSettings :: Maybe FileGroupSettings
$sel:fileGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe FileGroupSettings
fileGroupSettings} -> Maybe FileGroupSettings
fileGroupSettings) (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe FileGroupSettings
a -> OutputGroupSettings
s {$sel:fileGroupSettings:OutputGroupSettings' :: Maybe FileGroupSettings
fileGroupSettings = Maybe FileGroupSettings
a} :: OutputGroupSettings)

-- | Settings related to your HLS output package. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set Type, under
-- OutputGroupSettings, to HLS_GROUP_SETTINGS.
outputGroupSettings_hlsGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe HlsGroupSettings)
outputGroupSettings_hlsGroupSettings :: Lens' OutputGroupSettings (Maybe HlsGroupSettings)
outputGroupSettings_hlsGroupSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe HlsGroupSettings
hlsGroupSettings :: Maybe HlsGroupSettings
$sel:hlsGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe HlsGroupSettings
hlsGroupSettings} -> Maybe HlsGroupSettings
hlsGroupSettings) (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe HlsGroupSettings
a -> OutputGroupSettings
s {$sel:hlsGroupSettings:OutputGroupSettings' :: Maybe HlsGroupSettings
hlsGroupSettings = Maybe HlsGroupSettings
a} :: OutputGroupSettings)

-- | Settings related to your Microsoft Smooth Streaming output package. For
-- more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/outputs-file-ABR.html.
-- When you work directly in your JSON job specification, include this
-- object and any required children when you set Type, under
-- OutputGroupSettings, to MS_SMOOTH_GROUP_SETTINGS.
outputGroupSettings_msSmoothGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe MsSmoothGroupSettings)
outputGroupSettings_msSmoothGroupSettings :: Lens' OutputGroupSettings (Maybe MsSmoothGroupSettings)
outputGroupSettings_msSmoothGroupSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe MsSmoothGroupSettings
msSmoothGroupSettings :: Maybe MsSmoothGroupSettings
$sel:msSmoothGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MsSmoothGroupSettings
msSmoothGroupSettings} -> Maybe MsSmoothGroupSettings
msSmoothGroupSettings) (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe MsSmoothGroupSettings
a -> OutputGroupSettings
s {$sel:msSmoothGroupSettings:OutputGroupSettings' :: Maybe MsSmoothGroupSettings
msSmoothGroupSettings = Maybe MsSmoothGroupSettings
a} :: OutputGroupSettings)

-- | Type of output group (File group, Apple HLS, DASH ISO, Microsoft Smooth
-- Streaming, CMAF)
outputGroupSettings_type :: Lens.Lens' OutputGroupSettings (Prelude.Maybe OutputGroupType)
outputGroupSettings_type :: Lens' OutputGroupSettings (Maybe OutputGroupType)
outputGroupSettings_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe OutputGroupType
type' :: Maybe OutputGroupType
$sel:type':OutputGroupSettings' :: OutputGroupSettings -> Maybe OutputGroupType
type'} -> Maybe OutputGroupType
type') (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe OutputGroupType
a -> OutputGroupSettings
s {$sel:type':OutputGroupSettings' :: Maybe OutputGroupType
type' = Maybe OutputGroupType
a} :: OutputGroupSettings)

instance Data.FromJSON OutputGroupSettings where
  parseJSON :: Value -> Parser OutputGroupSettings
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"OutputGroupSettings"
      ( \Object
x ->
          Maybe CmafGroupSettings
-> Maybe DashIsoGroupSettings
-> Maybe FileGroupSettings
-> Maybe HlsGroupSettings
-> Maybe MsSmoothGroupSettings
-> Maybe OutputGroupType
-> OutputGroupSettings
OutputGroupSettings'
            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
"cmafGroupSettings")
            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
"dashIsoGroupSettings")
            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
"fileGroupSettings")
            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
"hlsGroupSettings")
            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
"msSmoothGroupSettings")
            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
"type")
      )

instance Prelude.Hashable OutputGroupSettings where
  hashWithSalt :: Int -> OutputGroupSettings -> Int
hashWithSalt Int
_salt OutputGroupSettings' {Maybe OutputGroupType
Maybe FileGroupSettings
Maybe MsSmoothGroupSettings
Maybe DashIsoGroupSettings
Maybe HlsGroupSettings
Maybe CmafGroupSettings
type' :: Maybe OutputGroupType
msSmoothGroupSettings :: Maybe MsSmoothGroupSettings
hlsGroupSettings :: Maybe HlsGroupSettings
fileGroupSettings :: Maybe FileGroupSettings
dashIsoGroupSettings :: Maybe DashIsoGroupSettings
cmafGroupSettings :: Maybe CmafGroupSettings
$sel:type':OutputGroupSettings' :: OutputGroupSettings -> Maybe OutputGroupType
$sel:msSmoothGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MsSmoothGroupSettings
$sel:hlsGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe HlsGroupSettings
$sel:fileGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe FileGroupSettings
$sel:dashIsoGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe DashIsoGroupSettings
$sel:cmafGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe CmafGroupSettings
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CmafGroupSettings
cmafGroupSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DashIsoGroupSettings
dashIsoGroupSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FileGroupSettings
fileGroupSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsGroupSettings
hlsGroupSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MsSmoothGroupSettings
msSmoothGroupSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OutputGroupType
type'

instance Prelude.NFData OutputGroupSettings where
  rnf :: OutputGroupSettings -> ()
rnf OutputGroupSettings' {Maybe OutputGroupType
Maybe FileGroupSettings
Maybe MsSmoothGroupSettings
Maybe DashIsoGroupSettings
Maybe HlsGroupSettings
Maybe CmafGroupSettings
type' :: Maybe OutputGroupType
msSmoothGroupSettings :: Maybe MsSmoothGroupSettings
hlsGroupSettings :: Maybe HlsGroupSettings
fileGroupSettings :: Maybe FileGroupSettings
dashIsoGroupSettings :: Maybe DashIsoGroupSettings
cmafGroupSettings :: Maybe CmafGroupSettings
$sel:type':OutputGroupSettings' :: OutputGroupSettings -> Maybe OutputGroupType
$sel:msSmoothGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MsSmoothGroupSettings
$sel:hlsGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe HlsGroupSettings
$sel:fileGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe FileGroupSettings
$sel:dashIsoGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe DashIsoGroupSettings
$sel:cmafGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe CmafGroupSettings
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe CmafGroupSettings
cmafGroupSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DashIsoGroupSettings
dashIsoGroupSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FileGroupSettings
fileGroupSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsGroupSettings
hlsGroupSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MsSmoothGroupSettings
msSmoothGroupSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OutputGroupType
type'

instance Data.ToJSON OutputGroupSettings where
  toJSON :: OutputGroupSettings -> Value
toJSON OutputGroupSettings' {Maybe OutputGroupType
Maybe FileGroupSettings
Maybe MsSmoothGroupSettings
Maybe DashIsoGroupSettings
Maybe HlsGroupSettings
Maybe CmafGroupSettings
type' :: Maybe OutputGroupType
msSmoothGroupSettings :: Maybe MsSmoothGroupSettings
hlsGroupSettings :: Maybe HlsGroupSettings
fileGroupSettings :: Maybe FileGroupSettings
dashIsoGroupSettings :: Maybe DashIsoGroupSettings
cmafGroupSettings :: Maybe CmafGroupSettings
$sel:type':OutputGroupSettings' :: OutputGroupSettings -> Maybe OutputGroupType
$sel:msSmoothGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MsSmoothGroupSettings
$sel:hlsGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe HlsGroupSettings
$sel:fileGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe FileGroupSettings
$sel:dashIsoGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe DashIsoGroupSettings
$sel:cmafGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe CmafGroupSettings
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"cmafGroupSettings" 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 CmafGroupSettings
cmafGroupSettings,
            (Key
"dashIsoGroupSettings" 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 DashIsoGroupSettings
dashIsoGroupSettings,
            (Key
"fileGroupSettings" 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 FileGroupSettings
fileGroupSettings,
            (Key
"hlsGroupSettings" 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 HlsGroupSettings
hlsGroupSettings,
            (Key
"msSmoothGroupSettings" 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 MsSmoothGroupSettings
msSmoothGroupSettings,
            (Key
"type" 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 OutputGroupType
type'
          ]
      )