{-# 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.XavcHdProfileBitrateClass
-- 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.XavcHdProfileBitrateClass
  ( XavcHdProfileBitrateClass
      ( ..,
        XavcHdProfileBitrateClass_BITRATE_CLASS_25,
        XavcHdProfileBitrateClass_BITRATE_CLASS_35,
        XavcHdProfileBitrateClass_BITRATE_CLASS_50
      ),
  )
where

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

-- | Specify the XAVC HD (Long GOP) Bitrate Class to set the bitrate of your
-- output. Outputs of the same class have similar image quality over the
-- operating points that are valid for that class.
newtype XavcHdProfileBitrateClass = XavcHdProfileBitrateClass'
  { XavcHdProfileBitrateClass -> Text
fromXavcHdProfileBitrateClass ::
      Core.Text
  }
  deriving stock
    ( Int -> XavcHdProfileBitrateClass -> ShowS
[XavcHdProfileBitrateClass] -> ShowS
XavcHdProfileBitrateClass -> String
(Int -> XavcHdProfileBitrateClass -> ShowS)
-> (XavcHdProfileBitrateClass -> String)
-> ([XavcHdProfileBitrateClass] -> ShowS)
-> Show XavcHdProfileBitrateClass
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [XavcHdProfileBitrateClass] -> ShowS
$cshowList :: [XavcHdProfileBitrateClass] -> ShowS
show :: XavcHdProfileBitrateClass -> String
$cshow :: XavcHdProfileBitrateClass -> String
showsPrec :: Int -> XavcHdProfileBitrateClass -> ShowS
$cshowsPrec :: Int -> XavcHdProfileBitrateClass -> ShowS
Prelude.Show,
      ReadPrec [XavcHdProfileBitrateClass]
ReadPrec XavcHdProfileBitrateClass
Int -> ReadS XavcHdProfileBitrateClass
ReadS [XavcHdProfileBitrateClass]
(Int -> ReadS XavcHdProfileBitrateClass)
-> ReadS [XavcHdProfileBitrateClass]
-> ReadPrec XavcHdProfileBitrateClass
-> ReadPrec [XavcHdProfileBitrateClass]
-> Read XavcHdProfileBitrateClass
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [XavcHdProfileBitrateClass]
$creadListPrec :: ReadPrec [XavcHdProfileBitrateClass]
readPrec :: ReadPrec XavcHdProfileBitrateClass
$creadPrec :: ReadPrec XavcHdProfileBitrateClass
readList :: ReadS [XavcHdProfileBitrateClass]
$creadList :: ReadS [XavcHdProfileBitrateClass]
readsPrec :: Int -> ReadS XavcHdProfileBitrateClass
$creadsPrec :: Int -> ReadS XavcHdProfileBitrateClass
Prelude.Read,
      XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
(XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool)
-> (XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool)
-> Eq XavcHdProfileBitrateClass
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
$c/= :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
== :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
$c== :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
Prelude.Eq,
      Eq XavcHdProfileBitrateClass
Eq XavcHdProfileBitrateClass
-> (XavcHdProfileBitrateClass
    -> XavcHdProfileBitrateClass -> Ordering)
-> (XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool)
-> (XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool)
-> (XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool)
-> (XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool)
-> (XavcHdProfileBitrateClass
    -> XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass)
-> (XavcHdProfileBitrateClass
    -> XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass)
-> Ord XavcHdProfileBitrateClass
XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Ordering
XavcHdProfileBitrateClass
-> XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass
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 :: XavcHdProfileBitrateClass
-> XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass
$cmin :: XavcHdProfileBitrateClass
-> XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass
max :: XavcHdProfileBitrateClass
-> XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass
$cmax :: XavcHdProfileBitrateClass
-> XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass
>= :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
$c>= :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
> :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
$c> :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
<= :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
$c<= :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
< :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
$c< :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Bool
compare :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Ordering
$ccompare :: XavcHdProfileBitrateClass -> XavcHdProfileBitrateClass -> Ordering
$cp1Ord :: Eq XavcHdProfileBitrateClass
Prelude.Ord,
      (forall x.
 XavcHdProfileBitrateClass -> Rep XavcHdProfileBitrateClass x)
-> (forall x.
    Rep XavcHdProfileBitrateClass x -> XavcHdProfileBitrateClass)
-> Generic XavcHdProfileBitrateClass
forall x.
Rep XavcHdProfileBitrateClass x -> XavcHdProfileBitrateClass
forall x.
XavcHdProfileBitrateClass -> Rep XavcHdProfileBitrateClass x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep XavcHdProfileBitrateClass x -> XavcHdProfileBitrateClass
$cfrom :: forall x.
XavcHdProfileBitrateClass -> Rep XavcHdProfileBitrateClass x
Prelude.Generic
    )
  deriving newtype
    ( Int -> XavcHdProfileBitrateClass -> Int
XavcHdProfileBitrateClass -> Int
(Int -> XavcHdProfileBitrateClass -> Int)
-> (XavcHdProfileBitrateClass -> Int)
-> Hashable XavcHdProfileBitrateClass
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: XavcHdProfileBitrateClass -> Int
$chash :: XavcHdProfileBitrateClass -> Int
hashWithSalt :: Int -> XavcHdProfileBitrateClass -> Int
$chashWithSalt :: Int -> XavcHdProfileBitrateClass -> Int
Prelude.Hashable,
      XavcHdProfileBitrateClass -> ()
(XavcHdProfileBitrateClass -> ())
-> NFData XavcHdProfileBitrateClass
forall a. (a -> ()) -> NFData a
rnf :: XavcHdProfileBitrateClass -> ()
$crnf :: XavcHdProfileBitrateClass -> ()
Prelude.NFData,
      Text -> Either String XavcHdProfileBitrateClass
(Text -> Either String XavcHdProfileBitrateClass)
-> FromText XavcHdProfileBitrateClass
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String XavcHdProfileBitrateClass
$cfromText :: Text -> Either String XavcHdProfileBitrateClass
Core.FromText,
      XavcHdProfileBitrateClass -> Text
(XavcHdProfileBitrateClass -> Text)
-> ToText XavcHdProfileBitrateClass
forall a. (a -> Text) -> ToText a
toText :: XavcHdProfileBitrateClass -> Text
$ctoText :: XavcHdProfileBitrateClass -> Text
Core.ToText,
      XavcHdProfileBitrateClass -> ByteString
(XavcHdProfileBitrateClass -> ByteString)
-> ToByteString XavcHdProfileBitrateClass
forall a. (a -> ByteString) -> ToByteString a
toBS :: XavcHdProfileBitrateClass -> ByteString
$ctoBS :: XavcHdProfileBitrateClass -> ByteString
Core.ToByteString,
      XavcHdProfileBitrateClass -> ByteStringBuilder
(XavcHdProfileBitrateClass -> ByteStringBuilder)
-> ToLog XavcHdProfileBitrateClass
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: XavcHdProfileBitrateClass -> ByteStringBuilder
$cbuild :: XavcHdProfileBitrateClass -> ByteStringBuilder
Core.ToLog,
      HeaderName -> XavcHdProfileBitrateClass -> [Header]
(HeaderName -> XavcHdProfileBitrateClass -> [Header])
-> ToHeader XavcHdProfileBitrateClass
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> XavcHdProfileBitrateClass -> [Header]
$ctoHeader :: HeaderName -> XavcHdProfileBitrateClass -> [Header]
Core.ToHeader,
      XavcHdProfileBitrateClass -> QueryString
(XavcHdProfileBitrateClass -> QueryString)
-> ToQuery XavcHdProfileBitrateClass
forall a. (a -> QueryString) -> ToQuery a
toQuery :: XavcHdProfileBitrateClass -> QueryString
$ctoQuery :: XavcHdProfileBitrateClass -> QueryString
Core.ToQuery,
      Value -> Parser [XavcHdProfileBitrateClass]
Value -> Parser XavcHdProfileBitrateClass
(Value -> Parser XavcHdProfileBitrateClass)
-> (Value -> Parser [XavcHdProfileBitrateClass])
-> FromJSON XavcHdProfileBitrateClass
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [XavcHdProfileBitrateClass]
$cparseJSONList :: Value -> Parser [XavcHdProfileBitrateClass]
parseJSON :: Value -> Parser XavcHdProfileBitrateClass
$cparseJSON :: Value -> Parser XavcHdProfileBitrateClass
Core.FromJSON,
      FromJSONKeyFunction [XavcHdProfileBitrateClass]
FromJSONKeyFunction XavcHdProfileBitrateClass
FromJSONKeyFunction XavcHdProfileBitrateClass
-> FromJSONKeyFunction [XavcHdProfileBitrateClass]
-> FromJSONKey XavcHdProfileBitrateClass
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [XavcHdProfileBitrateClass]
$cfromJSONKeyList :: FromJSONKeyFunction [XavcHdProfileBitrateClass]
fromJSONKey :: FromJSONKeyFunction XavcHdProfileBitrateClass
$cfromJSONKey :: FromJSONKeyFunction XavcHdProfileBitrateClass
Core.FromJSONKey,
      [XavcHdProfileBitrateClass] -> Encoding
[XavcHdProfileBitrateClass] -> Value
XavcHdProfileBitrateClass -> Encoding
XavcHdProfileBitrateClass -> Value
(XavcHdProfileBitrateClass -> Value)
-> (XavcHdProfileBitrateClass -> Encoding)
-> ([XavcHdProfileBitrateClass] -> Value)
-> ([XavcHdProfileBitrateClass] -> Encoding)
-> ToJSON XavcHdProfileBitrateClass
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [XavcHdProfileBitrateClass] -> Encoding
$ctoEncodingList :: [XavcHdProfileBitrateClass] -> Encoding
toJSONList :: [XavcHdProfileBitrateClass] -> Value
$ctoJSONList :: [XavcHdProfileBitrateClass] -> Value
toEncoding :: XavcHdProfileBitrateClass -> Encoding
$ctoEncoding :: XavcHdProfileBitrateClass -> Encoding
toJSON :: XavcHdProfileBitrateClass -> Value
$ctoJSON :: XavcHdProfileBitrateClass -> Value
Core.ToJSON,
      ToJSONKeyFunction [XavcHdProfileBitrateClass]
ToJSONKeyFunction XavcHdProfileBitrateClass
ToJSONKeyFunction XavcHdProfileBitrateClass
-> ToJSONKeyFunction [XavcHdProfileBitrateClass]
-> ToJSONKey XavcHdProfileBitrateClass
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [XavcHdProfileBitrateClass]
$ctoJSONKeyList :: ToJSONKeyFunction [XavcHdProfileBitrateClass]
toJSONKey :: ToJSONKeyFunction XavcHdProfileBitrateClass
$ctoJSONKey :: ToJSONKeyFunction XavcHdProfileBitrateClass
Core.ToJSONKey,
      [Node] -> Either String XavcHdProfileBitrateClass
([Node] -> Either String XavcHdProfileBitrateClass)
-> FromXML XavcHdProfileBitrateClass
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String XavcHdProfileBitrateClass
$cparseXML :: [Node] -> Either String XavcHdProfileBitrateClass
Core.FromXML,
      XavcHdProfileBitrateClass -> XML
(XavcHdProfileBitrateClass -> XML)
-> ToXML XavcHdProfileBitrateClass
forall a. (a -> XML) -> ToXML a
toXML :: XavcHdProfileBitrateClass -> XML
$ctoXML :: XavcHdProfileBitrateClass -> XML
Core.ToXML
    )

pattern XavcHdProfileBitrateClass_BITRATE_CLASS_25 :: XavcHdProfileBitrateClass
pattern $bXavcHdProfileBitrateClass_BITRATE_CLASS_25 :: XavcHdProfileBitrateClass
$mXavcHdProfileBitrateClass_BITRATE_CLASS_25 :: forall r.
XavcHdProfileBitrateClass -> (Void# -> r) -> (Void# -> r) -> r
XavcHdProfileBitrateClass_BITRATE_CLASS_25 = XavcHdProfileBitrateClass' "BITRATE_CLASS_25"

pattern XavcHdProfileBitrateClass_BITRATE_CLASS_35 :: XavcHdProfileBitrateClass
pattern $bXavcHdProfileBitrateClass_BITRATE_CLASS_35 :: XavcHdProfileBitrateClass
$mXavcHdProfileBitrateClass_BITRATE_CLASS_35 :: forall r.
XavcHdProfileBitrateClass -> (Void# -> r) -> (Void# -> r) -> r
XavcHdProfileBitrateClass_BITRATE_CLASS_35 = XavcHdProfileBitrateClass' "BITRATE_CLASS_35"

pattern XavcHdProfileBitrateClass_BITRATE_CLASS_50 :: XavcHdProfileBitrateClass
pattern $bXavcHdProfileBitrateClass_BITRATE_CLASS_50 :: XavcHdProfileBitrateClass
$mXavcHdProfileBitrateClass_BITRATE_CLASS_50 :: forall r.
XavcHdProfileBitrateClass -> (Void# -> r) -> (Void# -> r) -> r
XavcHdProfileBitrateClass_BITRATE_CLASS_50 = XavcHdProfileBitrateClass' "BITRATE_CLASS_50"

{-# COMPLETE
  XavcHdProfileBitrateClass_BITRATE_CLASS_25,
  XavcHdProfileBitrateClass_BITRATE_CLASS_35,
  XavcHdProfileBitrateClass_BITRATE_CLASS_50,
  XavcHdProfileBitrateClass'
  #-}