{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.MediaConvert.Types.ContainerType
-- 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.ContainerType
  ( ContainerType
      ( ..,
        ContainerType_CMFC,
        ContainerType_F4V,
        ContainerType_ISMV,
        ContainerType_M2TS,
        ContainerType_M3U8,
        ContainerType_MOV,
        ContainerType_MP4,
        ContainerType_MPD,
        ContainerType_MXF,
        ContainerType_RAW,
        ContainerType_WEBM
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude

-- | Container for this output. Some containers require a container settings
-- object. If not specified, the default object will be created.
newtype ContainerType = ContainerType'
  { ContainerType -> Text
fromContainerType ::
      Core.Text
  }
  deriving stock
    ( Int -> ContainerType -> ShowS
[ContainerType] -> ShowS
ContainerType -> String
(Int -> ContainerType -> ShowS)
-> (ContainerType -> String)
-> ([ContainerType] -> ShowS)
-> Show ContainerType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ContainerType] -> ShowS
$cshowList :: [ContainerType] -> ShowS
show :: ContainerType -> String
$cshow :: ContainerType -> String
showsPrec :: Int -> ContainerType -> ShowS
$cshowsPrec :: Int -> ContainerType -> ShowS
Prelude.Show,
      ReadPrec [ContainerType]
ReadPrec ContainerType
Int -> ReadS ContainerType
ReadS [ContainerType]
(Int -> ReadS ContainerType)
-> ReadS [ContainerType]
-> ReadPrec ContainerType
-> ReadPrec [ContainerType]
-> Read ContainerType
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ContainerType]
$creadListPrec :: ReadPrec [ContainerType]
readPrec :: ReadPrec ContainerType
$creadPrec :: ReadPrec ContainerType
readList :: ReadS [ContainerType]
$creadList :: ReadS [ContainerType]
readsPrec :: Int -> ReadS ContainerType
$creadsPrec :: Int -> ReadS ContainerType
Prelude.Read,
      ContainerType -> ContainerType -> Bool
(ContainerType -> ContainerType -> Bool)
-> (ContainerType -> ContainerType -> Bool) -> Eq ContainerType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ContainerType -> ContainerType -> Bool
$c/= :: ContainerType -> ContainerType -> Bool
== :: ContainerType -> ContainerType -> Bool
$c== :: ContainerType -> ContainerType -> Bool
Prelude.Eq,
      Eq ContainerType
Eq ContainerType
-> (ContainerType -> ContainerType -> Ordering)
-> (ContainerType -> ContainerType -> Bool)
-> (ContainerType -> ContainerType -> Bool)
-> (ContainerType -> ContainerType -> Bool)
-> (ContainerType -> ContainerType -> Bool)
-> (ContainerType -> ContainerType -> ContainerType)
-> (ContainerType -> ContainerType -> ContainerType)
-> Ord ContainerType
ContainerType -> ContainerType -> Bool
ContainerType -> ContainerType -> Ordering
ContainerType -> ContainerType -> ContainerType
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ContainerType -> ContainerType -> ContainerType
$cmin :: ContainerType -> ContainerType -> ContainerType
max :: ContainerType -> ContainerType -> ContainerType
$cmax :: ContainerType -> ContainerType -> ContainerType
>= :: ContainerType -> ContainerType -> Bool
$c>= :: ContainerType -> ContainerType -> Bool
> :: ContainerType -> ContainerType -> Bool
$c> :: ContainerType -> ContainerType -> Bool
<= :: ContainerType -> ContainerType -> Bool
$c<= :: ContainerType -> ContainerType -> Bool
< :: ContainerType -> ContainerType -> Bool
$c< :: ContainerType -> ContainerType -> Bool
compare :: ContainerType -> ContainerType -> Ordering
$ccompare :: ContainerType -> ContainerType -> Ordering
$cp1Ord :: Eq ContainerType
Prelude.Ord,
      (forall x. ContainerType -> Rep ContainerType x)
-> (forall x. Rep ContainerType x -> ContainerType)
-> Generic ContainerType
forall x. Rep ContainerType x -> ContainerType
forall x. ContainerType -> Rep ContainerType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ContainerType x -> ContainerType
$cfrom :: forall x. ContainerType -> Rep ContainerType x
Prelude.Generic
    )
  deriving newtype
    ( Int -> ContainerType -> Int
ContainerType -> Int
(Int -> ContainerType -> Int)
-> (ContainerType -> Int) -> Hashable ContainerType
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: ContainerType -> Int
$chash :: ContainerType -> Int
hashWithSalt :: Int -> ContainerType -> Int
$chashWithSalt :: Int -> ContainerType -> Int
Prelude.Hashable,
      ContainerType -> ()
(ContainerType -> ()) -> NFData ContainerType
forall a. (a -> ()) -> NFData a
rnf :: ContainerType -> ()
$crnf :: ContainerType -> ()
Prelude.NFData,
      Text -> Either String ContainerType
(Text -> Either String ContainerType) -> FromText ContainerType
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String ContainerType
$cfromText :: Text -> Either String ContainerType
Core.FromText,
      ContainerType -> Text
(ContainerType -> Text) -> ToText ContainerType
forall a. (a -> Text) -> ToText a
toText :: ContainerType -> Text
$ctoText :: ContainerType -> Text
Core.ToText,
      ContainerType -> ByteString
(ContainerType -> ByteString) -> ToByteString ContainerType
forall a. (a -> ByteString) -> ToByteString a
toBS :: ContainerType -> ByteString
$ctoBS :: ContainerType -> ByteString
Core.ToByteString,
      ContainerType -> ByteStringBuilder
(ContainerType -> ByteStringBuilder) -> ToLog ContainerType
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: ContainerType -> ByteStringBuilder
$cbuild :: ContainerType -> ByteStringBuilder
Core.ToLog,
      HeaderName -> ContainerType -> [Header]
(HeaderName -> ContainerType -> [Header]) -> ToHeader ContainerType
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> ContainerType -> [Header]
$ctoHeader :: HeaderName -> ContainerType -> [Header]
Core.ToHeader,
      ContainerType -> QueryString
(ContainerType -> QueryString) -> ToQuery ContainerType
forall a. (a -> QueryString) -> ToQuery a
toQuery :: ContainerType -> QueryString
$ctoQuery :: ContainerType -> QueryString
Core.ToQuery,
      Value -> Parser [ContainerType]
Value -> Parser ContainerType
(Value -> Parser ContainerType)
-> (Value -> Parser [ContainerType]) -> FromJSON ContainerType
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [ContainerType]
$cparseJSONList :: Value -> Parser [ContainerType]
parseJSON :: Value -> Parser ContainerType
$cparseJSON :: Value -> Parser ContainerType
Core.FromJSON,
      FromJSONKeyFunction [ContainerType]
FromJSONKeyFunction ContainerType
FromJSONKeyFunction ContainerType
-> FromJSONKeyFunction [ContainerType] -> FromJSONKey ContainerType
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [ContainerType]
$cfromJSONKeyList :: FromJSONKeyFunction [ContainerType]
fromJSONKey :: FromJSONKeyFunction ContainerType
$cfromJSONKey :: FromJSONKeyFunction ContainerType
Core.FromJSONKey,
      [ContainerType] -> Encoding
[ContainerType] -> Value
ContainerType -> Encoding
ContainerType -> Value
(ContainerType -> Value)
-> (ContainerType -> Encoding)
-> ([ContainerType] -> Value)
-> ([ContainerType] -> Encoding)
-> ToJSON ContainerType
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [ContainerType] -> Encoding
$ctoEncodingList :: [ContainerType] -> Encoding
toJSONList :: [ContainerType] -> Value
$ctoJSONList :: [ContainerType] -> Value
toEncoding :: ContainerType -> Encoding
$ctoEncoding :: ContainerType -> Encoding
toJSON :: ContainerType -> Value
$ctoJSON :: ContainerType -> Value
Core.ToJSON,
      ToJSONKeyFunction [ContainerType]
ToJSONKeyFunction ContainerType
ToJSONKeyFunction ContainerType
-> ToJSONKeyFunction [ContainerType] -> ToJSONKey ContainerType
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [ContainerType]
$ctoJSONKeyList :: ToJSONKeyFunction [ContainerType]
toJSONKey :: ToJSONKeyFunction ContainerType
$ctoJSONKey :: ToJSONKeyFunction ContainerType
Core.ToJSONKey,
      [Node] -> Either String ContainerType
([Node] -> Either String ContainerType) -> FromXML ContainerType
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String ContainerType
$cparseXML :: [Node] -> Either String ContainerType
Core.FromXML,
      ContainerType -> XML
(ContainerType -> XML) -> ToXML ContainerType
forall a. (a -> XML) -> ToXML a
toXML :: ContainerType -> XML
$ctoXML :: ContainerType -> XML
Core.ToXML
    )

pattern ContainerType_CMFC :: ContainerType
pattern $bContainerType_CMFC :: ContainerType
$mContainerType_CMFC :: forall r. ContainerType -> (Void# -> r) -> (Void# -> r) -> r
ContainerType_CMFC = ContainerType' "CMFC"

pattern ContainerType_F4V :: ContainerType
pattern $bContainerType_F4V :: ContainerType
$mContainerType_F4V :: forall r. ContainerType -> (Void# -> r) -> (Void# -> r) -> r
ContainerType_F4V = ContainerType' "F4V"

pattern ContainerType_ISMV :: ContainerType
pattern $bContainerType_ISMV :: ContainerType
$mContainerType_ISMV :: forall r. ContainerType -> (Void# -> r) -> (Void# -> r) -> r
ContainerType_ISMV = ContainerType' "ISMV"

pattern ContainerType_M2TS :: ContainerType
pattern $bContainerType_M2TS :: ContainerType
$mContainerType_M2TS :: forall r. ContainerType -> (Void# -> r) -> (Void# -> r) -> r
ContainerType_M2TS = ContainerType' "M2TS"

pattern ContainerType_M3U8 :: ContainerType
pattern $bContainerType_M3U8 :: ContainerType
$mContainerType_M3U8 :: forall r. ContainerType -> (Void# -> r) -> (Void# -> r) -> r
ContainerType_M3U8 = ContainerType' "M3U8"

pattern ContainerType_MOV :: ContainerType
pattern $bContainerType_MOV :: ContainerType
$mContainerType_MOV :: forall r. ContainerType -> (Void# -> r) -> (Void# -> r) -> r
ContainerType_MOV = ContainerType' "MOV"

pattern ContainerType_MP4 :: ContainerType
pattern $bContainerType_MP4 :: ContainerType
$mContainerType_MP4 :: forall r. ContainerType -> (Void# -> r) -> (Void# -> r) -> r
ContainerType_MP4 = ContainerType' "MP4"

pattern ContainerType_MPD :: ContainerType
pattern $bContainerType_MPD :: ContainerType
$mContainerType_MPD :: forall r. ContainerType -> (Void# -> r) -> (Void# -> r) -> r
ContainerType_MPD = ContainerType' "MPD"

pattern ContainerType_MXF :: ContainerType
pattern $bContainerType_MXF :: ContainerType
$mContainerType_MXF :: forall r. ContainerType -> (Void# -> r) -> (Void# -> r) -> r
ContainerType_MXF = ContainerType' "MXF"

pattern ContainerType_RAW :: ContainerType
pattern $bContainerType_RAW :: ContainerType
$mContainerType_RAW :: forall r. ContainerType -> (Void# -> r) -> (Void# -> r) -> r
ContainerType_RAW = ContainerType' "RAW"

pattern ContainerType_WEBM :: ContainerType
pattern $bContainerType_WEBM :: ContainerType
$mContainerType_WEBM :: forall r. ContainerType -> (Void# -> r) -> (Void# -> r) -> r
ContainerType_WEBM = ContainerType' "WEBM"

{-# COMPLETE
  ContainerType_CMFC,
  ContainerType_F4V,
  ContainerType_ISMV,
  ContainerType_M2TS,
  ContainerType_M3U8,
  ContainerType_MOV,
  ContainerType_MP4,
  ContainerType_MPD,
  ContainerType_MXF,
  ContainerType_RAW,
  ContainerType_WEBM,
  ContainerType'
  #-}