{-# 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.VideoCodec
-- 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.VideoCodec
  ( VideoCodec
      ( ..,
        VideoCodec_AV1,
        VideoCodec_AVC_INTRA,
        VideoCodec_FRAME_CAPTURE,
        VideoCodec_H_264,
        VideoCodec_H_265,
        VideoCodec_MPEG2,
        VideoCodec_PRORES,
        VideoCodec_VC3,
        VideoCodec_VP8,
        VideoCodec_VP9,
        VideoCodec_XAVC
      ),
  )
where

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

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

pattern VideoCodec_AV1 :: VideoCodec
pattern $bVideoCodec_AV1 :: VideoCodec
$mVideoCodec_AV1 :: forall r. VideoCodec -> (Void# -> r) -> (Void# -> r) -> r
VideoCodec_AV1 = VideoCodec' "AV1"

pattern VideoCodec_AVC_INTRA :: VideoCodec
pattern $bVideoCodec_AVC_INTRA :: VideoCodec
$mVideoCodec_AVC_INTRA :: forall r. VideoCodec -> (Void# -> r) -> (Void# -> r) -> r
VideoCodec_AVC_INTRA = VideoCodec' "AVC_INTRA"

pattern VideoCodec_FRAME_CAPTURE :: VideoCodec
pattern $bVideoCodec_FRAME_CAPTURE :: VideoCodec
$mVideoCodec_FRAME_CAPTURE :: forall r. VideoCodec -> (Void# -> r) -> (Void# -> r) -> r
VideoCodec_FRAME_CAPTURE = VideoCodec' "FRAME_CAPTURE"

pattern VideoCodec_H_264 :: VideoCodec
pattern $bVideoCodec_H_264 :: VideoCodec
$mVideoCodec_H_264 :: forall r. VideoCodec -> (Void# -> r) -> (Void# -> r) -> r
VideoCodec_H_264 = VideoCodec' "H_264"

pattern VideoCodec_H_265 :: VideoCodec
pattern $bVideoCodec_H_265 :: VideoCodec
$mVideoCodec_H_265 :: forall r. VideoCodec -> (Void# -> r) -> (Void# -> r) -> r
VideoCodec_H_265 = VideoCodec' "H_265"

pattern VideoCodec_MPEG2 :: VideoCodec
pattern $bVideoCodec_MPEG2 :: VideoCodec
$mVideoCodec_MPEG2 :: forall r. VideoCodec -> (Void# -> r) -> (Void# -> r) -> r
VideoCodec_MPEG2 = VideoCodec' "MPEG2"

pattern VideoCodec_PRORES :: VideoCodec
pattern $bVideoCodec_PRORES :: VideoCodec
$mVideoCodec_PRORES :: forall r. VideoCodec -> (Void# -> r) -> (Void# -> r) -> r
VideoCodec_PRORES = VideoCodec' "PRORES"

pattern VideoCodec_VC3 :: VideoCodec
pattern $bVideoCodec_VC3 :: VideoCodec
$mVideoCodec_VC3 :: forall r. VideoCodec -> (Void# -> r) -> (Void# -> r) -> r
VideoCodec_VC3 = VideoCodec' "VC3"

pattern VideoCodec_VP8 :: VideoCodec
pattern $bVideoCodec_VP8 :: VideoCodec
$mVideoCodec_VP8 :: forall r. VideoCodec -> (Void# -> r) -> (Void# -> r) -> r
VideoCodec_VP8 = VideoCodec' "VP8"

pattern VideoCodec_VP9 :: VideoCodec
pattern $bVideoCodec_VP9 :: VideoCodec
$mVideoCodec_VP9 :: forall r. VideoCodec -> (Void# -> r) -> (Void# -> r) -> r
VideoCodec_VP9 = VideoCodec' "VP9"

pattern VideoCodec_XAVC :: VideoCodec
pattern $bVideoCodec_XAVC :: VideoCodec
$mVideoCodec_XAVC :: forall r. VideoCodec -> (Void# -> r) -> (Void# -> r) -> r
VideoCodec_XAVC = VideoCodec' "XAVC"

{-# COMPLETE
  VideoCodec_AV1,
  VideoCodec_AVC_INTRA,
  VideoCodec_FRAME_CAPTURE,
  VideoCodec_H_264,
  VideoCodec_H_265,
  VideoCodec_MPEG2,
  VideoCodec_PRORES,
  VideoCodec_VC3,
  VideoCodec_VP8,
  VideoCodec_VP9,
  VideoCodec_XAVC,
  VideoCodec'
  #-}