{-# 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.AvcIntraClass
-- 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.AvcIntraClass
  ( AvcIntraClass
      ( ..,
        AvcIntraClass_CLASS_100,
        AvcIntraClass_CLASS_200,
        AvcIntraClass_CLASS_4K_2K,
        AvcIntraClass_CLASS_50
      ),
  )
where

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

-- | Specify the AVC-Intra class of your output. The AVC-Intra class
-- selection determines the output video bit rate depending on the frame
-- rate of the output. Outputs with higher class values have higher
-- bitrates and improved image quality. Note that for Class 4K\/2K,
-- MediaConvert supports only 4:2:2 chroma subsampling.
newtype AvcIntraClass = AvcIntraClass'
  { AvcIntraClass -> Text
fromAvcIntraClass ::
      Core.Text
  }
  deriving stock
    ( Int -> AvcIntraClass -> ShowS
[AvcIntraClass] -> ShowS
AvcIntraClass -> String
(Int -> AvcIntraClass -> ShowS)
-> (AvcIntraClass -> String)
-> ([AvcIntraClass] -> ShowS)
-> Show AvcIntraClass
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AvcIntraClass] -> ShowS
$cshowList :: [AvcIntraClass] -> ShowS
show :: AvcIntraClass -> String
$cshow :: AvcIntraClass -> String
showsPrec :: Int -> AvcIntraClass -> ShowS
$cshowsPrec :: Int -> AvcIntraClass -> ShowS
Prelude.Show,
      ReadPrec [AvcIntraClass]
ReadPrec AvcIntraClass
Int -> ReadS AvcIntraClass
ReadS [AvcIntraClass]
(Int -> ReadS AvcIntraClass)
-> ReadS [AvcIntraClass]
-> ReadPrec AvcIntraClass
-> ReadPrec [AvcIntraClass]
-> Read AvcIntraClass
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AvcIntraClass]
$creadListPrec :: ReadPrec [AvcIntraClass]
readPrec :: ReadPrec AvcIntraClass
$creadPrec :: ReadPrec AvcIntraClass
readList :: ReadS [AvcIntraClass]
$creadList :: ReadS [AvcIntraClass]
readsPrec :: Int -> ReadS AvcIntraClass
$creadsPrec :: Int -> ReadS AvcIntraClass
Prelude.Read,
      AvcIntraClass -> AvcIntraClass -> Bool
(AvcIntraClass -> AvcIntraClass -> Bool)
-> (AvcIntraClass -> AvcIntraClass -> Bool) -> Eq AvcIntraClass
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AvcIntraClass -> AvcIntraClass -> Bool
$c/= :: AvcIntraClass -> AvcIntraClass -> Bool
== :: AvcIntraClass -> AvcIntraClass -> Bool
$c== :: AvcIntraClass -> AvcIntraClass -> Bool
Prelude.Eq,
      Eq AvcIntraClass
Eq AvcIntraClass
-> (AvcIntraClass -> AvcIntraClass -> Ordering)
-> (AvcIntraClass -> AvcIntraClass -> Bool)
-> (AvcIntraClass -> AvcIntraClass -> Bool)
-> (AvcIntraClass -> AvcIntraClass -> Bool)
-> (AvcIntraClass -> AvcIntraClass -> Bool)
-> (AvcIntraClass -> AvcIntraClass -> AvcIntraClass)
-> (AvcIntraClass -> AvcIntraClass -> AvcIntraClass)
-> Ord AvcIntraClass
AvcIntraClass -> AvcIntraClass -> Bool
AvcIntraClass -> AvcIntraClass -> Ordering
AvcIntraClass -> AvcIntraClass -> AvcIntraClass
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 :: AvcIntraClass -> AvcIntraClass -> AvcIntraClass
$cmin :: AvcIntraClass -> AvcIntraClass -> AvcIntraClass
max :: AvcIntraClass -> AvcIntraClass -> AvcIntraClass
$cmax :: AvcIntraClass -> AvcIntraClass -> AvcIntraClass
>= :: AvcIntraClass -> AvcIntraClass -> Bool
$c>= :: AvcIntraClass -> AvcIntraClass -> Bool
> :: AvcIntraClass -> AvcIntraClass -> Bool
$c> :: AvcIntraClass -> AvcIntraClass -> Bool
<= :: AvcIntraClass -> AvcIntraClass -> Bool
$c<= :: AvcIntraClass -> AvcIntraClass -> Bool
< :: AvcIntraClass -> AvcIntraClass -> Bool
$c< :: AvcIntraClass -> AvcIntraClass -> Bool
compare :: AvcIntraClass -> AvcIntraClass -> Ordering
$ccompare :: AvcIntraClass -> AvcIntraClass -> Ordering
$cp1Ord :: Eq AvcIntraClass
Prelude.Ord,
      (forall x. AvcIntraClass -> Rep AvcIntraClass x)
-> (forall x. Rep AvcIntraClass x -> AvcIntraClass)
-> Generic AvcIntraClass
forall x. Rep AvcIntraClass x -> AvcIntraClass
forall x. AvcIntraClass -> Rep AvcIntraClass x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AvcIntraClass x -> AvcIntraClass
$cfrom :: forall x. AvcIntraClass -> Rep AvcIntraClass x
Prelude.Generic
    )
  deriving newtype
    ( Int -> AvcIntraClass -> Int
AvcIntraClass -> Int
(Int -> AvcIntraClass -> Int)
-> (AvcIntraClass -> Int) -> Hashable AvcIntraClass
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: AvcIntraClass -> Int
$chash :: AvcIntraClass -> Int
hashWithSalt :: Int -> AvcIntraClass -> Int
$chashWithSalt :: Int -> AvcIntraClass -> Int
Prelude.Hashable,
      AvcIntraClass -> ()
(AvcIntraClass -> ()) -> NFData AvcIntraClass
forall a. (a -> ()) -> NFData a
rnf :: AvcIntraClass -> ()
$crnf :: AvcIntraClass -> ()
Prelude.NFData,
      Text -> Either String AvcIntraClass
(Text -> Either String AvcIntraClass) -> FromText AvcIntraClass
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String AvcIntraClass
$cfromText :: Text -> Either String AvcIntraClass
Core.FromText,
      AvcIntraClass -> Text
(AvcIntraClass -> Text) -> ToText AvcIntraClass
forall a. (a -> Text) -> ToText a
toText :: AvcIntraClass -> Text
$ctoText :: AvcIntraClass -> Text
Core.ToText,
      AvcIntraClass -> ByteString
(AvcIntraClass -> ByteString) -> ToByteString AvcIntraClass
forall a. (a -> ByteString) -> ToByteString a
toBS :: AvcIntraClass -> ByteString
$ctoBS :: AvcIntraClass -> ByteString
Core.ToByteString,
      AvcIntraClass -> ByteStringBuilder
(AvcIntraClass -> ByteStringBuilder) -> ToLog AvcIntraClass
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: AvcIntraClass -> ByteStringBuilder
$cbuild :: AvcIntraClass -> ByteStringBuilder
Core.ToLog,
      HeaderName -> AvcIntraClass -> [Header]
(HeaderName -> AvcIntraClass -> [Header]) -> ToHeader AvcIntraClass
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> AvcIntraClass -> [Header]
$ctoHeader :: HeaderName -> AvcIntraClass -> [Header]
Core.ToHeader,
      AvcIntraClass -> QueryString
(AvcIntraClass -> QueryString) -> ToQuery AvcIntraClass
forall a. (a -> QueryString) -> ToQuery a
toQuery :: AvcIntraClass -> QueryString
$ctoQuery :: AvcIntraClass -> QueryString
Core.ToQuery,
      Value -> Parser [AvcIntraClass]
Value -> Parser AvcIntraClass
(Value -> Parser AvcIntraClass)
-> (Value -> Parser [AvcIntraClass]) -> FromJSON AvcIntraClass
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [AvcIntraClass]
$cparseJSONList :: Value -> Parser [AvcIntraClass]
parseJSON :: Value -> Parser AvcIntraClass
$cparseJSON :: Value -> Parser AvcIntraClass
Core.FromJSON,
      FromJSONKeyFunction [AvcIntraClass]
FromJSONKeyFunction AvcIntraClass
FromJSONKeyFunction AvcIntraClass
-> FromJSONKeyFunction [AvcIntraClass] -> FromJSONKey AvcIntraClass
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [AvcIntraClass]
$cfromJSONKeyList :: FromJSONKeyFunction [AvcIntraClass]
fromJSONKey :: FromJSONKeyFunction AvcIntraClass
$cfromJSONKey :: FromJSONKeyFunction AvcIntraClass
Core.FromJSONKey,
      [AvcIntraClass] -> Encoding
[AvcIntraClass] -> Value
AvcIntraClass -> Encoding
AvcIntraClass -> Value
(AvcIntraClass -> Value)
-> (AvcIntraClass -> Encoding)
-> ([AvcIntraClass] -> Value)
-> ([AvcIntraClass] -> Encoding)
-> ToJSON AvcIntraClass
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [AvcIntraClass] -> Encoding
$ctoEncodingList :: [AvcIntraClass] -> Encoding
toJSONList :: [AvcIntraClass] -> Value
$ctoJSONList :: [AvcIntraClass] -> Value
toEncoding :: AvcIntraClass -> Encoding
$ctoEncoding :: AvcIntraClass -> Encoding
toJSON :: AvcIntraClass -> Value
$ctoJSON :: AvcIntraClass -> Value
Core.ToJSON,
      ToJSONKeyFunction [AvcIntraClass]
ToJSONKeyFunction AvcIntraClass
ToJSONKeyFunction AvcIntraClass
-> ToJSONKeyFunction [AvcIntraClass] -> ToJSONKey AvcIntraClass
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [AvcIntraClass]
$ctoJSONKeyList :: ToJSONKeyFunction [AvcIntraClass]
toJSONKey :: ToJSONKeyFunction AvcIntraClass
$ctoJSONKey :: ToJSONKeyFunction AvcIntraClass
Core.ToJSONKey,
      [Node] -> Either String AvcIntraClass
([Node] -> Either String AvcIntraClass) -> FromXML AvcIntraClass
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String AvcIntraClass
$cparseXML :: [Node] -> Either String AvcIntraClass
Core.FromXML,
      AvcIntraClass -> XML
(AvcIntraClass -> XML) -> ToXML AvcIntraClass
forall a. (a -> XML) -> ToXML a
toXML :: AvcIntraClass -> XML
$ctoXML :: AvcIntraClass -> XML
Core.ToXML
    )

pattern AvcIntraClass_CLASS_100 :: AvcIntraClass
pattern $bAvcIntraClass_CLASS_100 :: AvcIntraClass
$mAvcIntraClass_CLASS_100 :: forall r. AvcIntraClass -> (Void# -> r) -> (Void# -> r) -> r
AvcIntraClass_CLASS_100 = AvcIntraClass' "CLASS_100"

pattern AvcIntraClass_CLASS_200 :: AvcIntraClass
pattern $bAvcIntraClass_CLASS_200 :: AvcIntraClass
$mAvcIntraClass_CLASS_200 :: forall r. AvcIntraClass -> (Void# -> r) -> (Void# -> r) -> r
AvcIntraClass_CLASS_200 = AvcIntraClass' "CLASS_200"

pattern AvcIntraClass_CLASS_4K_2K :: AvcIntraClass
pattern $bAvcIntraClass_CLASS_4K_2K :: AvcIntraClass
$mAvcIntraClass_CLASS_4K_2K :: forall r. AvcIntraClass -> (Void# -> r) -> (Void# -> r) -> r
AvcIntraClass_CLASS_4K_2K = AvcIntraClass' "CLASS_4K_2K"

pattern AvcIntraClass_CLASS_50 :: AvcIntraClass
pattern $bAvcIntraClass_CLASS_50 :: AvcIntraClass
$mAvcIntraClass_CLASS_50 :: forall r. AvcIntraClass -> (Void# -> r) -> (Void# -> r) -> r
AvcIntraClass_CLASS_50 = AvcIntraClass' "CLASS_50"

{-# COMPLETE
  AvcIntraClass_CLASS_100,
  AvcIntraClass_CLASS_200,
  AvcIntraClass_CLASS_4K_2K,
  AvcIntraClass_CLASS_50,
  AvcIntraClass'
  #-}