{-# 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.AudioCodec
-- 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.AudioCodec
  ( AudioCodec
      ( ..,
        AudioCodec_AAC,
        AudioCodec_AC3,
        AudioCodec_AIFF,
        AudioCodec_EAC3,
        AudioCodec_EAC3_ATMOS,
        AudioCodec_MP2,
        AudioCodec_MP3,
        AudioCodec_OPUS,
        AudioCodec_PASSTHROUGH,
        AudioCodec_VORBIS,
        AudioCodec_WAV
      ),
  )
where

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

-- | Choose the audio codec for this output. Note that the option Dolby
-- Digital passthrough (PASSTHROUGH) applies only to Dolby Digital and
-- Dolby Digital Plus audio inputs. Make sure that you choose a codec
-- that\'s supported with your output container:
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers.html#reference-codecs-containers-output-audio
-- For audio-only outputs, make sure that both your input audio codec and
-- your output audio codec are supported for audio-only workflows. For more
-- information, see:
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers-input.html#reference-codecs-containers-input-audio-only
-- and
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/reference-codecs-containers.html#audio-only-output
newtype AudioCodec = AudioCodec'
  { AudioCodec -> Text
fromAudioCodec ::
      Core.Text
  }
  deriving stock
    ( Int -> AudioCodec -> ShowS
[AudioCodec] -> ShowS
AudioCodec -> String
(Int -> AudioCodec -> ShowS)
-> (AudioCodec -> String)
-> ([AudioCodec] -> ShowS)
-> Show AudioCodec
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AudioCodec] -> ShowS
$cshowList :: [AudioCodec] -> ShowS
show :: AudioCodec -> String
$cshow :: AudioCodec -> String
showsPrec :: Int -> AudioCodec -> ShowS
$cshowsPrec :: Int -> AudioCodec -> ShowS
Prelude.Show,
      ReadPrec [AudioCodec]
ReadPrec AudioCodec
Int -> ReadS AudioCodec
ReadS [AudioCodec]
(Int -> ReadS AudioCodec)
-> ReadS [AudioCodec]
-> ReadPrec AudioCodec
-> ReadPrec [AudioCodec]
-> Read AudioCodec
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AudioCodec]
$creadListPrec :: ReadPrec [AudioCodec]
readPrec :: ReadPrec AudioCodec
$creadPrec :: ReadPrec AudioCodec
readList :: ReadS [AudioCodec]
$creadList :: ReadS [AudioCodec]
readsPrec :: Int -> ReadS AudioCodec
$creadsPrec :: Int -> ReadS AudioCodec
Prelude.Read,
      AudioCodec -> AudioCodec -> Bool
(AudioCodec -> AudioCodec -> Bool)
-> (AudioCodec -> AudioCodec -> Bool) -> Eq AudioCodec
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AudioCodec -> AudioCodec -> Bool
$c/= :: AudioCodec -> AudioCodec -> Bool
== :: AudioCodec -> AudioCodec -> Bool
$c== :: AudioCodec -> AudioCodec -> Bool
Prelude.Eq,
      Eq AudioCodec
Eq AudioCodec
-> (AudioCodec -> AudioCodec -> Ordering)
-> (AudioCodec -> AudioCodec -> Bool)
-> (AudioCodec -> AudioCodec -> Bool)
-> (AudioCodec -> AudioCodec -> Bool)
-> (AudioCodec -> AudioCodec -> Bool)
-> (AudioCodec -> AudioCodec -> AudioCodec)
-> (AudioCodec -> AudioCodec -> AudioCodec)
-> Ord AudioCodec
AudioCodec -> AudioCodec -> Bool
AudioCodec -> AudioCodec -> Ordering
AudioCodec -> AudioCodec -> AudioCodec
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 :: AudioCodec -> AudioCodec -> AudioCodec
$cmin :: AudioCodec -> AudioCodec -> AudioCodec
max :: AudioCodec -> AudioCodec -> AudioCodec
$cmax :: AudioCodec -> AudioCodec -> AudioCodec
>= :: AudioCodec -> AudioCodec -> Bool
$c>= :: AudioCodec -> AudioCodec -> Bool
> :: AudioCodec -> AudioCodec -> Bool
$c> :: AudioCodec -> AudioCodec -> Bool
<= :: AudioCodec -> AudioCodec -> Bool
$c<= :: AudioCodec -> AudioCodec -> Bool
< :: AudioCodec -> AudioCodec -> Bool
$c< :: AudioCodec -> AudioCodec -> Bool
compare :: AudioCodec -> AudioCodec -> Ordering
$ccompare :: AudioCodec -> AudioCodec -> Ordering
$cp1Ord :: Eq AudioCodec
Prelude.Ord,
      (forall x. AudioCodec -> Rep AudioCodec x)
-> (forall x. Rep AudioCodec x -> AudioCodec) -> Generic AudioCodec
forall x. Rep AudioCodec x -> AudioCodec
forall x. AudioCodec -> Rep AudioCodec x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AudioCodec x -> AudioCodec
$cfrom :: forall x. AudioCodec -> Rep AudioCodec x
Prelude.Generic
    )
  deriving newtype
    ( Int -> AudioCodec -> Int
AudioCodec -> Int
(Int -> AudioCodec -> Int)
-> (AudioCodec -> Int) -> Hashable AudioCodec
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: AudioCodec -> Int
$chash :: AudioCodec -> Int
hashWithSalt :: Int -> AudioCodec -> Int
$chashWithSalt :: Int -> AudioCodec -> Int
Prelude.Hashable,
      AudioCodec -> ()
(AudioCodec -> ()) -> NFData AudioCodec
forall a. (a -> ()) -> NFData a
rnf :: AudioCodec -> ()
$crnf :: AudioCodec -> ()
Prelude.NFData,
      Text -> Either String AudioCodec
(Text -> Either String AudioCodec) -> FromText AudioCodec
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String AudioCodec
$cfromText :: Text -> Either String AudioCodec
Core.FromText,
      AudioCodec -> Text
(AudioCodec -> Text) -> ToText AudioCodec
forall a. (a -> Text) -> ToText a
toText :: AudioCodec -> Text
$ctoText :: AudioCodec -> Text
Core.ToText,
      AudioCodec -> ByteString
(AudioCodec -> ByteString) -> ToByteString AudioCodec
forall a. (a -> ByteString) -> ToByteString a
toBS :: AudioCodec -> ByteString
$ctoBS :: AudioCodec -> ByteString
Core.ToByteString,
      AudioCodec -> ByteStringBuilder
(AudioCodec -> ByteStringBuilder) -> ToLog AudioCodec
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: AudioCodec -> ByteStringBuilder
$cbuild :: AudioCodec -> ByteStringBuilder
Core.ToLog,
      HeaderName -> AudioCodec -> [Header]
(HeaderName -> AudioCodec -> [Header]) -> ToHeader AudioCodec
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> AudioCodec -> [Header]
$ctoHeader :: HeaderName -> AudioCodec -> [Header]
Core.ToHeader,
      AudioCodec -> QueryString
(AudioCodec -> QueryString) -> ToQuery AudioCodec
forall a. (a -> QueryString) -> ToQuery a
toQuery :: AudioCodec -> QueryString
$ctoQuery :: AudioCodec -> QueryString
Core.ToQuery,
      Value -> Parser [AudioCodec]
Value -> Parser AudioCodec
(Value -> Parser AudioCodec)
-> (Value -> Parser [AudioCodec]) -> FromJSON AudioCodec
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [AudioCodec]
$cparseJSONList :: Value -> Parser [AudioCodec]
parseJSON :: Value -> Parser AudioCodec
$cparseJSON :: Value -> Parser AudioCodec
Core.FromJSON,
      FromJSONKeyFunction [AudioCodec]
FromJSONKeyFunction AudioCodec
FromJSONKeyFunction AudioCodec
-> FromJSONKeyFunction [AudioCodec] -> FromJSONKey AudioCodec
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [AudioCodec]
$cfromJSONKeyList :: FromJSONKeyFunction [AudioCodec]
fromJSONKey :: FromJSONKeyFunction AudioCodec
$cfromJSONKey :: FromJSONKeyFunction AudioCodec
Core.FromJSONKey,
      [AudioCodec] -> Encoding
[AudioCodec] -> Value
AudioCodec -> Encoding
AudioCodec -> Value
(AudioCodec -> Value)
-> (AudioCodec -> Encoding)
-> ([AudioCodec] -> Value)
-> ([AudioCodec] -> Encoding)
-> ToJSON AudioCodec
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [AudioCodec] -> Encoding
$ctoEncodingList :: [AudioCodec] -> Encoding
toJSONList :: [AudioCodec] -> Value
$ctoJSONList :: [AudioCodec] -> Value
toEncoding :: AudioCodec -> Encoding
$ctoEncoding :: AudioCodec -> Encoding
toJSON :: AudioCodec -> Value
$ctoJSON :: AudioCodec -> Value
Core.ToJSON,
      ToJSONKeyFunction [AudioCodec]
ToJSONKeyFunction AudioCodec
ToJSONKeyFunction AudioCodec
-> ToJSONKeyFunction [AudioCodec] -> ToJSONKey AudioCodec
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [AudioCodec]
$ctoJSONKeyList :: ToJSONKeyFunction [AudioCodec]
toJSONKey :: ToJSONKeyFunction AudioCodec
$ctoJSONKey :: ToJSONKeyFunction AudioCodec
Core.ToJSONKey,
      [Node] -> Either String AudioCodec
([Node] -> Either String AudioCodec) -> FromXML AudioCodec
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String AudioCodec
$cparseXML :: [Node] -> Either String AudioCodec
Core.FromXML,
      AudioCodec -> XML
(AudioCodec -> XML) -> ToXML AudioCodec
forall a. (a -> XML) -> ToXML a
toXML :: AudioCodec -> XML
$ctoXML :: AudioCodec -> XML
Core.ToXML
    )

pattern AudioCodec_AAC :: AudioCodec
pattern $bAudioCodec_AAC :: AudioCodec
$mAudioCodec_AAC :: forall r. AudioCodec -> (Void# -> r) -> (Void# -> r) -> r
AudioCodec_AAC = AudioCodec' "AAC"

pattern AudioCodec_AC3 :: AudioCodec
pattern $bAudioCodec_AC3 :: AudioCodec
$mAudioCodec_AC3 :: forall r. AudioCodec -> (Void# -> r) -> (Void# -> r) -> r
AudioCodec_AC3 = AudioCodec' "AC3"

pattern AudioCodec_AIFF :: AudioCodec
pattern $bAudioCodec_AIFF :: AudioCodec
$mAudioCodec_AIFF :: forall r. AudioCodec -> (Void# -> r) -> (Void# -> r) -> r
AudioCodec_AIFF = AudioCodec' "AIFF"

pattern AudioCodec_EAC3 :: AudioCodec
pattern $bAudioCodec_EAC3 :: AudioCodec
$mAudioCodec_EAC3 :: forall r. AudioCodec -> (Void# -> r) -> (Void# -> r) -> r
AudioCodec_EAC3 = AudioCodec' "EAC3"

pattern AudioCodec_EAC3_ATMOS :: AudioCodec
pattern $bAudioCodec_EAC3_ATMOS :: AudioCodec
$mAudioCodec_EAC3_ATMOS :: forall r. AudioCodec -> (Void# -> r) -> (Void# -> r) -> r
AudioCodec_EAC3_ATMOS = AudioCodec' "EAC3_ATMOS"

pattern AudioCodec_MP2 :: AudioCodec
pattern $bAudioCodec_MP2 :: AudioCodec
$mAudioCodec_MP2 :: forall r. AudioCodec -> (Void# -> r) -> (Void# -> r) -> r
AudioCodec_MP2 = AudioCodec' "MP2"

pattern AudioCodec_MP3 :: AudioCodec
pattern $bAudioCodec_MP3 :: AudioCodec
$mAudioCodec_MP3 :: forall r. AudioCodec -> (Void# -> r) -> (Void# -> r) -> r
AudioCodec_MP3 = AudioCodec' "MP3"

pattern AudioCodec_OPUS :: AudioCodec
pattern $bAudioCodec_OPUS :: AudioCodec
$mAudioCodec_OPUS :: forall r. AudioCodec -> (Void# -> r) -> (Void# -> r) -> r
AudioCodec_OPUS = AudioCodec' "OPUS"

pattern AudioCodec_PASSTHROUGH :: AudioCodec
pattern $bAudioCodec_PASSTHROUGH :: AudioCodec
$mAudioCodec_PASSTHROUGH :: forall r. AudioCodec -> (Void# -> r) -> (Void# -> r) -> r
AudioCodec_PASSTHROUGH = AudioCodec' "PASSTHROUGH"

pattern AudioCodec_VORBIS :: AudioCodec
pattern $bAudioCodec_VORBIS :: AudioCodec
$mAudioCodec_VORBIS :: forall r. AudioCodec -> (Void# -> r) -> (Void# -> r) -> r
AudioCodec_VORBIS = AudioCodec' "VORBIS"

pattern AudioCodec_WAV :: AudioCodec
pattern $bAudioCodec_WAV :: AudioCodec
$mAudioCodec_WAV :: forall r. AudioCodec -> (Void# -> r) -> (Void# -> r) -> r
AudioCodec_WAV = AudioCodec' "WAV"

{-# COMPLETE
  AudioCodec_AAC,
  AudioCodec_AC3,
  AudioCodec_AIFF,
  AudioCodec_EAC3,
  AudioCodec_EAC3_ATMOS,
  AudioCodec_MP2,
  AudioCodec_MP3,
  AudioCodec_OPUS,
  AudioCodec_PASSTHROUGH,
  AudioCodec_VORBIS,
  AudioCodec_WAV,
  AudioCodec'
  #-}