{-# 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.SccDestinationFramerate
-- 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.SccDestinationFramerate
  ( SccDestinationFramerate
      ( ..,
        SccDestinationFramerate_FRAMERATE_23_97,
        SccDestinationFramerate_FRAMERATE_24,
        SccDestinationFramerate_FRAMERATE_25,
        SccDestinationFramerate_FRAMERATE_29_97_DROPFRAME,
        SccDestinationFramerate_FRAMERATE_29_97_NON_DROPFRAME
      ),
  )
where

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

-- | Set Framerate (SccDestinationFramerate) to make sure that the captions
-- and the video are synchronized in the output. Specify a frame rate that
-- matches the frame rate of the associated video. If the video frame rate
-- is 29.97, choose 29.97 dropframe (FRAMERATE_29_97_DROPFRAME) only if the
-- video has video_insertion=true and drop_frame_timecode=true; otherwise,
-- choose 29.97 non-dropframe (FRAMERATE_29_97_NON_DROPFRAME).
newtype SccDestinationFramerate = SccDestinationFramerate'
  { SccDestinationFramerate -> Text
fromSccDestinationFramerate ::
      Core.Text
  }
  deriving stock
    ( Int -> SccDestinationFramerate -> ShowS
[SccDestinationFramerate] -> ShowS
SccDestinationFramerate -> String
(Int -> SccDestinationFramerate -> ShowS)
-> (SccDestinationFramerate -> String)
-> ([SccDestinationFramerate] -> ShowS)
-> Show SccDestinationFramerate
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SccDestinationFramerate] -> ShowS
$cshowList :: [SccDestinationFramerate] -> ShowS
show :: SccDestinationFramerate -> String
$cshow :: SccDestinationFramerate -> String
showsPrec :: Int -> SccDestinationFramerate -> ShowS
$cshowsPrec :: Int -> SccDestinationFramerate -> ShowS
Prelude.Show,
      ReadPrec [SccDestinationFramerate]
ReadPrec SccDestinationFramerate
Int -> ReadS SccDestinationFramerate
ReadS [SccDestinationFramerate]
(Int -> ReadS SccDestinationFramerate)
-> ReadS [SccDestinationFramerate]
-> ReadPrec SccDestinationFramerate
-> ReadPrec [SccDestinationFramerate]
-> Read SccDestinationFramerate
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SccDestinationFramerate]
$creadListPrec :: ReadPrec [SccDestinationFramerate]
readPrec :: ReadPrec SccDestinationFramerate
$creadPrec :: ReadPrec SccDestinationFramerate
readList :: ReadS [SccDestinationFramerate]
$creadList :: ReadS [SccDestinationFramerate]
readsPrec :: Int -> ReadS SccDestinationFramerate
$creadsPrec :: Int -> ReadS SccDestinationFramerate
Prelude.Read,
      SccDestinationFramerate -> SccDestinationFramerate -> Bool
(SccDestinationFramerate -> SccDestinationFramerate -> Bool)
-> (SccDestinationFramerate -> SccDestinationFramerate -> Bool)
-> Eq SccDestinationFramerate
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SccDestinationFramerate -> SccDestinationFramerate -> Bool
$c/= :: SccDestinationFramerate -> SccDestinationFramerate -> Bool
== :: SccDestinationFramerate -> SccDestinationFramerate -> Bool
$c== :: SccDestinationFramerate -> SccDestinationFramerate -> Bool
Prelude.Eq,
      Eq SccDestinationFramerate
Eq SccDestinationFramerate
-> (SccDestinationFramerate -> SccDestinationFramerate -> Ordering)
-> (SccDestinationFramerate -> SccDestinationFramerate -> Bool)
-> (SccDestinationFramerate -> SccDestinationFramerate -> Bool)
-> (SccDestinationFramerate -> SccDestinationFramerate -> Bool)
-> (SccDestinationFramerate -> SccDestinationFramerate -> Bool)
-> (SccDestinationFramerate
    -> SccDestinationFramerate -> SccDestinationFramerate)
-> (SccDestinationFramerate
    -> SccDestinationFramerate -> SccDestinationFramerate)
-> Ord SccDestinationFramerate
SccDestinationFramerate -> SccDestinationFramerate -> Bool
SccDestinationFramerate -> SccDestinationFramerate -> Ordering
SccDestinationFramerate
-> SccDestinationFramerate -> SccDestinationFramerate
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 :: SccDestinationFramerate
-> SccDestinationFramerate -> SccDestinationFramerate
$cmin :: SccDestinationFramerate
-> SccDestinationFramerate -> SccDestinationFramerate
max :: SccDestinationFramerate
-> SccDestinationFramerate -> SccDestinationFramerate
$cmax :: SccDestinationFramerate
-> SccDestinationFramerate -> SccDestinationFramerate
>= :: SccDestinationFramerate -> SccDestinationFramerate -> Bool
$c>= :: SccDestinationFramerate -> SccDestinationFramerate -> Bool
> :: SccDestinationFramerate -> SccDestinationFramerate -> Bool
$c> :: SccDestinationFramerate -> SccDestinationFramerate -> Bool
<= :: SccDestinationFramerate -> SccDestinationFramerate -> Bool
$c<= :: SccDestinationFramerate -> SccDestinationFramerate -> Bool
< :: SccDestinationFramerate -> SccDestinationFramerate -> Bool
$c< :: SccDestinationFramerate -> SccDestinationFramerate -> Bool
compare :: SccDestinationFramerate -> SccDestinationFramerate -> Ordering
$ccompare :: SccDestinationFramerate -> SccDestinationFramerate -> Ordering
$cp1Ord :: Eq SccDestinationFramerate
Prelude.Ord,
      (forall x.
 SccDestinationFramerate -> Rep SccDestinationFramerate x)
-> (forall x.
    Rep SccDestinationFramerate x -> SccDestinationFramerate)
-> Generic SccDestinationFramerate
forall x. Rep SccDestinationFramerate x -> SccDestinationFramerate
forall x. SccDestinationFramerate -> Rep SccDestinationFramerate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SccDestinationFramerate x -> SccDestinationFramerate
$cfrom :: forall x. SccDestinationFramerate -> Rep SccDestinationFramerate x
Prelude.Generic
    )
  deriving newtype
    ( Int -> SccDestinationFramerate -> Int
SccDestinationFramerate -> Int
(Int -> SccDestinationFramerate -> Int)
-> (SccDestinationFramerate -> Int)
-> Hashable SccDestinationFramerate
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: SccDestinationFramerate -> Int
$chash :: SccDestinationFramerate -> Int
hashWithSalt :: Int -> SccDestinationFramerate -> Int
$chashWithSalt :: Int -> SccDestinationFramerate -> Int
Prelude.Hashable,
      SccDestinationFramerate -> ()
(SccDestinationFramerate -> ()) -> NFData SccDestinationFramerate
forall a. (a -> ()) -> NFData a
rnf :: SccDestinationFramerate -> ()
$crnf :: SccDestinationFramerate -> ()
Prelude.NFData,
      Text -> Either String SccDestinationFramerate
(Text -> Either String SccDestinationFramerate)
-> FromText SccDestinationFramerate
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String SccDestinationFramerate
$cfromText :: Text -> Either String SccDestinationFramerate
Core.FromText,
      SccDestinationFramerate -> Text
(SccDestinationFramerate -> Text) -> ToText SccDestinationFramerate
forall a. (a -> Text) -> ToText a
toText :: SccDestinationFramerate -> Text
$ctoText :: SccDestinationFramerate -> Text
Core.ToText,
      SccDestinationFramerate -> ByteString
(SccDestinationFramerate -> ByteString)
-> ToByteString SccDestinationFramerate
forall a. (a -> ByteString) -> ToByteString a
toBS :: SccDestinationFramerate -> ByteString
$ctoBS :: SccDestinationFramerate -> ByteString
Core.ToByteString,
      SccDestinationFramerate -> ByteStringBuilder
(SccDestinationFramerate -> ByteStringBuilder)
-> ToLog SccDestinationFramerate
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: SccDestinationFramerate -> ByteStringBuilder
$cbuild :: SccDestinationFramerate -> ByteStringBuilder
Core.ToLog,
      HeaderName -> SccDestinationFramerate -> [Header]
(HeaderName -> SccDestinationFramerate -> [Header])
-> ToHeader SccDestinationFramerate
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> SccDestinationFramerate -> [Header]
$ctoHeader :: HeaderName -> SccDestinationFramerate -> [Header]
Core.ToHeader,
      SccDestinationFramerate -> QueryString
(SccDestinationFramerate -> QueryString)
-> ToQuery SccDestinationFramerate
forall a. (a -> QueryString) -> ToQuery a
toQuery :: SccDestinationFramerate -> QueryString
$ctoQuery :: SccDestinationFramerate -> QueryString
Core.ToQuery,
      Value -> Parser [SccDestinationFramerate]
Value -> Parser SccDestinationFramerate
(Value -> Parser SccDestinationFramerate)
-> (Value -> Parser [SccDestinationFramerate])
-> FromJSON SccDestinationFramerate
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [SccDestinationFramerate]
$cparseJSONList :: Value -> Parser [SccDestinationFramerate]
parseJSON :: Value -> Parser SccDestinationFramerate
$cparseJSON :: Value -> Parser SccDestinationFramerate
Core.FromJSON,
      FromJSONKeyFunction [SccDestinationFramerate]
FromJSONKeyFunction SccDestinationFramerate
FromJSONKeyFunction SccDestinationFramerate
-> FromJSONKeyFunction [SccDestinationFramerate]
-> FromJSONKey SccDestinationFramerate
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [SccDestinationFramerate]
$cfromJSONKeyList :: FromJSONKeyFunction [SccDestinationFramerate]
fromJSONKey :: FromJSONKeyFunction SccDestinationFramerate
$cfromJSONKey :: FromJSONKeyFunction SccDestinationFramerate
Core.FromJSONKey,
      [SccDestinationFramerate] -> Encoding
[SccDestinationFramerate] -> Value
SccDestinationFramerate -> Encoding
SccDestinationFramerate -> Value
(SccDestinationFramerate -> Value)
-> (SccDestinationFramerate -> Encoding)
-> ([SccDestinationFramerate] -> Value)
-> ([SccDestinationFramerate] -> Encoding)
-> ToJSON SccDestinationFramerate
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [SccDestinationFramerate] -> Encoding
$ctoEncodingList :: [SccDestinationFramerate] -> Encoding
toJSONList :: [SccDestinationFramerate] -> Value
$ctoJSONList :: [SccDestinationFramerate] -> Value
toEncoding :: SccDestinationFramerate -> Encoding
$ctoEncoding :: SccDestinationFramerate -> Encoding
toJSON :: SccDestinationFramerate -> Value
$ctoJSON :: SccDestinationFramerate -> Value
Core.ToJSON,
      ToJSONKeyFunction [SccDestinationFramerate]
ToJSONKeyFunction SccDestinationFramerate
ToJSONKeyFunction SccDestinationFramerate
-> ToJSONKeyFunction [SccDestinationFramerate]
-> ToJSONKey SccDestinationFramerate
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [SccDestinationFramerate]
$ctoJSONKeyList :: ToJSONKeyFunction [SccDestinationFramerate]
toJSONKey :: ToJSONKeyFunction SccDestinationFramerate
$ctoJSONKey :: ToJSONKeyFunction SccDestinationFramerate
Core.ToJSONKey,
      [Node] -> Either String SccDestinationFramerate
([Node] -> Either String SccDestinationFramerate)
-> FromXML SccDestinationFramerate
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String SccDestinationFramerate
$cparseXML :: [Node] -> Either String SccDestinationFramerate
Core.FromXML,
      SccDestinationFramerate -> XML
(SccDestinationFramerate -> XML) -> ToXML SccDestinationFramerate
forall a. (a -> XML) -> ToXML a
toXML :: SccDestinationFramerate -> XML
$ctoXML :: SccDestinationFramerate -> XML
Core.ToXML
    )

pattern SccDestinationFramerate_FRAMERATE_23_97 :: SccDestinationFramerate
pattern $bSccDestinationFramerate_FRAMERATE_23_97 :: SccDestinationFramerate
$mSccDestinationFramerate_FRAMERATE_23_97 :: forall r.
SccDestinationFramerate -> (Void# -> r) -> (Void# -> r) -> r
SccDestinationFramerate_FRAMERATE_23_97 = SccDestinationFramerate' "FRAMERATE_23_97"

pattern SccDestinationFramerate_FRAMERATE_24 :: SccDestinationFramerate
pattern $bSccDestinationFramerate_FRAMERATE_24 :: SccDestinationFramerate
$mSccDestinationFramerate_FRAMERATE_24 :: forall r.
SccDestinationFramerate -> (Void# -> r) -> (Void# -> r) -> r
SccDestinationFramerate_FRAMERATE_24 = SccDestinationFramerate' "FRAMERATE_24"

pattern SccDestinationFramerate_FRAMERATE_25 :: SccDestinationFramerate
pattern $bSccDestinationFramerate_FRAMERATE_25 :: SccDestinationFramerate
$mSccDestinationFramerate_FRAMERATE_25 :: forall r.
SccDestinationFramerate -> (Void# -> r) -> (Void# -> r) -> r
SccDestinationFramerate_FRAMERATE_25 = SccDestinationFramerate' "FRAMERATE_25"

pattern SccDestinationFramerate_FRAMERATE_29_97_DROPFRAME :: SccDestinationFramerate
pattern $bSccDestinationFramerate_FRAMERATE_29_97_DROPFRAME :: SccDestinationFramerate
$mSccDestinationFramerate_FRAMERATE_29_97_DROPFRAME :: forall r.
SccDestinationFramerate -> (Void# -> r) -> (Void# -> r) -> r
SccDestinationFramerate_FRAMERATE_29_97_DROPFRAME = SccDestinationFramerate' "FRAMERATE_29_97_DROPFRAME"

pattern SccDestinationFramerate_FRAMERATE_29_97_NON_DROPFRAME :: SccDestinationFramerate
pattern $bSccDestinationFramerate_FRAMERATE_29_97_NON_DROPFRAME :: SccDestinationFramerate
$mSccDestinationFramerate_FRAMERATE_29_97_NON_DROPFRAME :: forall r.
SccDestinationFramerate -> (Void# -> r) -> (Void# -> r) -> r
SccDestinationFramerate_FRAMERATE_29_97_NON_DROPFRAME = SccDestinationFramerate' "FRAMERATE_29_97_NON_DROPFRAME"

{-# COMPLETE
  SccDestinationFramerate_FRAMERATE_23_97,
  SccDestinationFramerate_FRAMERATE_24,
  SccDestinationFramerate_FRAMERATE_25,
  SccDestinationFramerate_FRAMERATE_29_97_DROPFRAME,
  SccDestinationFramerate_FRAMERATE_29_97_NON_DROPFRAME,
  SccDestinationFramerate'
  #-}