{-# 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.VideoTimecodeInsertion
-- 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.VideoTimecodeInsertion
  ( VideoTimecodeInsertion
      ( ..,
        VideoTimecodeInsertion_DISABLED,
        VideoTimecodeInsertion_PIC_TIMING_SEI
      ),
  )
where

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

-- | Applies only to H.264, H.265, MPEG2, and ProRes outputs. Only enable
-- Timecode insertion when the input frame rate is identical to the output
-- frame rate. To include timecodes in this output, set Timecode insertion
-- (VideoTimecodeInsertion) to PIC_TIMING_SEI. To leave them out, set it to
-- DISABLED. Default is DISABLED. When the service inserts timecodes in an
-- output, by default, it uses any embedded timecodes from the input. If
-- none are present, the service will set the timecode for the first output
-- frame to zero. To change this default behavior, adjust the settings
-- under Timecode configuration (TimecodeConfig). In the console, these
-- settings are located under Job > Job settings > Timecode configuration.
-- Note - Timecode source under input settings (InputTimecodeSource) does
-- not affect the timecodes that are inserted in the output. Source under
-- Job settings > Timecode configuration (TimecodeSource) does.
newtype VideoTimecodeInsertion = VideoTimecodeInsertion'
  { VideoTimecodeInsertion -> Text
fromVideoTimecodeInsertion ::
      Data.Text
  }
  deriving stock
    ( Int -> VideoTimecodeInsertion -> ShowS
[VideoTimecodeInsertion] -> ShowS
VideoTimecodeInsertion -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VideoTimecodeInsertion] -> ShowS
$cshowList :: [VideoTimecodeInsertion] -> ShowS
show :: VideoTimecodeInsertion -> String
$cshow :: VideoTimecodeInsertion -> String
showsPrec :: Int -> VideoTimecodeInsertion -> ShowS
$cshowsPrec :: Int -> VideoTimecodeInsertion -> ShowS
Prelude.Show,
      ReadPrec [VideoTimecodeInsertion]
ReadPrec VideoTimecodeInsertion
Int -> ReadS VideoTimecodeInsertion
ReadS [VideoTimecodeInsertion]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [VideoTimecodeInsertion]
$creadListPrec :: ReadPrec [VideoTimecodeInsertion]
readPrec :: ReadPrec VideoTimecodeInsertion
$creadPrec :: ReadPrec VideoTimecodeInsertion
readList :: ReadS [VideoTimecodeInsertion]
$creadList :: ReadS [VideoTimecodeInsertion]
readsPrec :: Int -> ReadS VideoTimecodeInsertion
$creadsPrec :: Int -> ReadS VideoTimecodeInsertion
Prelude.Read,
      VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
$c/= :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
== :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
$c== :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
Prelude.Eq,
      Eq VideoTimecodeInsertion
VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
VideoTimecodeInsertion -> VideoTimecodeInsertion -> Ordering
VideoTimecodeInsertion
-> VideoTimecodeInsertion -> VideoTimecodeInsertion
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 :: VideoTimecodeInsertion
-> VideoTimecodeInsertion -> VideoTimecodeInsertion
$cmin :: VideoTimecodeInsertion
-> VideoTimecodeInsertion -> VideoTimecodeInsertion
max :: VideoTimecodeInsertion
-> VideoTimecodeInsertion -> VideoTimecodeInsertion
$cmax :: VideoTimecodeInsertion
-> VideoTimecodeInsertion -> VideoTimecodeInsertion
>= :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
$c>= :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
> :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
$c> :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
<= :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
$c<= :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
< :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
$c< :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool
compare :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Ordering
$ccompare :: VideoTimecodeInsertion -> VideoTimecodeInsertion -> Ordering
Prelude.Ord,
      forall x. Rep VideoTimecodeInsertion x -> VideoTimecodeInsertion
forall x. VideoTimecodeInsertion -> Rep VideoTimecodeInsertion x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep VideoTimecodeInsertion x -> VideoTimecodeInsertion
$cfrom :: forall x. VideoTimecodeInsertion -> Rep VideoTimecodeInsertion x
Prelude.Generic
    )
  deriving newtype
    ( Eq VideoTimecodeInsertion
Int -> VideoTimecodeInsertion -> Int
VideoTimecodeInsertion -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: VideoTimecodeInsertion -> Int
$chash :: VideoTimecodeInsertion -> Int
hashWithSalt :: Int -> VideoTimecodeInsertion -> Int
$chashWithSalt :: Int -> VideoTimecodeInsertion -> Int
Prelude.Hashable,
      VideoTimecodeInsertion -> ()
forall a. (a -> ()) -> NFData a
rnf :: VideoTimecodeInsertion -> ()
$crnf :: VideoTimecodeInsertion -> ()
Prelude.NFData,
      Text -> Either String VideoTimecodeInsertion
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String VideoTimecodeInsertion
$cfromText :: Text -> Either String VideoTimecodeInsertion
Data.FromText,
      VideoTimecodeInsertion -> Text
forall a. (a -> Text) -> ToText a
toText :: VideoTimecodeInsertion -> Text
$ctoText :: VideoTimecodeInsertion -> Text
Data.ToText,
      VideoTimecodeInsertion -> ByteString
forall a. (a -> ByteString) -> ToByteString a
toBS :: VideoTimecodeInsertion -> ByteString
$ctoBS :: VideoTimecodeInsertion -> ByteString
Data.ToByteString,
      VideoTimecodeInsertion -> ByteStringBuilder
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: VideoTimecodeInsertion -> ByteStringBuilder
$cbuild :: VideoTimecodeInsertion -> ByteStringBuilder
Data.ToLog,
      HeaderName -> VideoTimecodeInsertion -> [Header]
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> VideoTimecodeInsertion -> [Header]
$ctoHeader :: HeaderName -> VideoTimecodeInsertion -> [Header]
Data.ToHeader,
      VideoTimecodeInsertion -> QueryString
forall a. (a -> QueryString) -> ToQuery a
toQuery :: VideoTimecodeInsertion -> QueryString
$ctoQuery :: VideoTimecodeInsertion -> QueryString
Data.ToQuery,
      Value -> Parser [VideoTimecodeInsertion]
Value -> Parser VideoTimecodeInsertion
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [VideoTimecodeInsertion]
$cparseJSONList :: Value -> Parser [VideoTimecodeInsertion]
parseJSON :: Value -> Parser VideoTimecodeInsertion
$cparseJSON :: Value -> Parser VideoTimecodeInsertion
Data.FromJSON,
      FromJSONKeyFunction [VideoTimecodeInsertion]
FromJSONKeyFunction VideoTimecodeInsertion
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [VideoTimecodeInsertion]
$cfromJSONKeyList :: FromJSONKeyFunction [VideoTimecodeInsertion]
fromJSONKey :: FromJSONKeyFunction VideoTimecodeInsertion
$cfromJSONKey :: FromJSONKeyFunction VideoTimecodeInsertion
Data.FromJSONKey,
      [VideoTimecodeInsertion] -> Encoding
[VideoTimecodeInsertion] -> Value
VideoTimecodeInsertion -> Encoding
VideoTimecodeInsertion -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [VideoTimecodeInsertion] -> Encoding
$ctoEncodingList :: [VideoTimecodeInsertion] -> Encoding
toJSONList :: [VideoTimecodeInsertion] -> Value
$ctoJSONList :: [VideoTimecodeInsertion] -> Value
toEncoding :: VideoTimecodeInsertion -> Encoding
$ctoEncoding :: VideoTimecodeInsertion -> Encoding
toJSON :: VideoTimecodeInsertion -> Value
$ctoJSON :: VideoTimecodeInsertion -> Value
Data.ToJSON,
      ToJSONKeyFunction [VideoTimecodeInsertion]
ToJSONKeyFunction VideoTimecodeInsertion
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [VideoTimecodeInsertion]
$ctoJSONKeyList :: ToJSONKeyFunction [VideoTimecodeInsertion]
toJSONKey :: ToJSONKeyFunction VideoTimecodeInsertion
$ctoJSONKey :: ToJSONKeyFunction VideoTimecodeInsertion
Data.ToJSONKey,
      [Node] -> Either String VideoTimecodeInsertion
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String VideoTimecodeInsertion
$cparseXML :: [Node] -> Either String VideoTimecodeInsertion
Data.FromXML,
      VideoTimecodeInsertion -> XML
forall a. (a -> XML) -> ToXML a
toXML :: VideoTimecodeInsertion -> XML
$ctoXML :: VideoTimecodeInsertion -> XML
Data.ToXML
    )

pattern VideoTimecodeInsertion_DISABLED :: VideoTimecodeInsertion
pattern $bVideoTimecodeInsertion_DISABLED :: VideoTimecodeInsertion
$mVideoTimecodeInsertion_DISABLED :: forall {r}.
VideoTimecodeInsertion -> ((# #) -> r) -> ((# #) -> r) -> r
VideoTimecodeInsertion_DISABLED = VideoTimecodeInsertion' "DISABLED"

pattern VideoTimecodeInsertion_PIC_TIMING_SEI :: VideoTimecodeInsertion
pattern $bVideoTimecodeInsertion_PIC_TIMING_SEI :: VideoTimecodeInsertion
$mVideoTimecodeInsertion_PIC_TIMING_SEI :: forall {r}.
VideoTimecodeInsertion -> ((# #) -> r) -> ((# #) -> r) -> r
VideoTimecodeInsertion_PIC_TIMING_SEI = VideoTimecodeInsertion' "PIC_TIMING_SEI"

{-# COMPLETE
  VideoTimecodeInsertion_DISABLED,
  VideoTimecodeInsertion_PIC_TIMING_SEI,
  VideoTimecodeInsertion'
  #-}