{-# 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-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- 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.Data as Data
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 ::
      Data.Text
  }
  deriving stock
    ( Int -> SccDestinationFramerate -> ShowS
[SccDestinationFramerate] -> ShowS
SccDestinationFramerate -> String
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]
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
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
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
Prelude.Ord,
      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
    ( Eq SccDestinationFramerate
Int -> SccDestinationFramerate -> Int
SccDestinationFramerate -> Int
forall a. Eq 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 -> ()
forall a. (a -> ()) -> NFData a
rnf :: SccDestinationFramerate -> ()
$crnf :: SccDestinationFramerate -> ()
Prelude.NFData,
      Text -> Either String SccDestinationFramerate
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String SccDestinationFramerate
$cfromText :: Text -> Either String SccDestinationFramerate
Data.FromText,
      SccDestinationFramerate -> Text
forall a. (a -> Text) -> ToText a
toText :: SccDestinationFramerate -> Text
$ctoText :: SccDestinationFramerate -> Text
Data.ToText,
      SccDestinationFramerate -> ByteString
forall a. (a -> ByteString) -> ToByteString a
toBS :: SccDestinationFramerate -> ByteString
$ctoBS :: SccDestinationFramerate -> ByteString
Data.ToByteString,
      SccDestinationFramerate -> ByteStringBuilder
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: SccDestinationFramerate -> ByteStringBuilder
$cbuild :: SccDestinationFramerate -> ByteStringBuilder
Data.ToLog,
      HeaderName -> SccDestinationFramerate -> [Header]
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> SccDestinationFramerate -> [Header]
$ctoHeader :: HeaderName -> SccDestinationFramerate -> [Header]
Data.ToHeader,
      SccDestinationFramerate -> QueryString
forall a. (a -> QueryString) -> ToQuery a
toQuery :: SccDestinationFramerate -> QueryString
$ctoQuery :: SccDestinationFramerate -> QueryString
Data.ToQuery,
      Value -> Parser [SccDestinationFramerate]
Value -> Parser 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
Data.FromJSON,
      FromJSONKeyFunction [SccDestinationFramerate]
FromJSONKeyFunction SccDestinationFramerate
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [SccDestinationFramerate]
$cfromJSONKeyList :: FromJSONKeyFunction [SccDestinationFramerate]
fromJSONKey :: FromJSONKeyFunction SccDestinationFramerate
$cfromJSONKey :: FromJSONKeyFunction SccDestinationFramerate
Data.FromJSONKey,
      [SccDestinationFramerate] -> Encoding
[SccDestinationFramerate] -> Value
SccDestinationFramerate -> Encoding
SccDestinationFramerate -> Value
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
Data.ToJSON,
      ToJSONKeyFunction [SccDestinationFramerate]
ToJSONKeyFunction SccDestinationFramerate
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [SccDestinationFramerate]
$ctoJSONKeyList :: ToJSONKeyFunction [SccDestinationFramerate]
toJSONKey :: ToJSONKeyFunction SccDestinationFramerate
$ctoJSONKey :: ToJSONKeyFunction SccDestinationFramerate
Data.ToJSONKey,
      [Node] -> Either String SccDestinationFramerate
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String SccDestinationFramerate
$cparseXML :: [Node] -> Either String SccDestinationFramerate
Data.FromXML,
      SccDestinationFramerate -> XML
forall a. (a -> XML) -> ToXML a
toXML :: SccDestinationFramerate -> XML
$ctoXML :: SccDestinationFramerate -> XML
Data.ToXML
    )

pattern SccDestinationFramerate_FRAMERATE_23_97 :: SccDestinationFramerate
pattern $bSccDestinationFramerate_FRAMERATE_23_97 :: SccDestinationFramerate
$mSccDestinationFramerate_FRAMERATE_23_97 :: forall {r}.
SccDestinationFramerate -> ((# #) -> r) -> ((# #) -> 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 -> ((# #) -> r) -> ((# #) -> r) -> r
SccDestinationFramerate_FRAMERATE_24 = SccDestinationFramerate' "FRAMERATE_24"

pattern SccDestinationFramerate_FRAMERATE_25 :: SccDestinationFramerate
pattern $bSccDestinationFramerate_FRAMERATE_25 :: SccDestinationFramerate
$mSccDestinationFramerate_FRAMERATE_25 :: forall {r}.
SccDestinationFramerate -> ((# #) -> r) -> ((# #) -> 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 -> ((# #) -> r) -> ((# #) -> 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 -> ((# #) -> r) -> ((# #) -> 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'
  #-}