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

import qualified Amazonka.Core as Core
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 ::
      Core.Text
  }
  deriving stock
    ( Int -> VideoTimecodeInsertion -> ShowS
[VideoTimecodeInsertion] -> ShowS
VideoTimecodeInsertion -> String
(Int -> VideoTimecodeInsertion -> ShowS)
-> (VideoTimecodeInsertion -> String)
-> ([VideoTimecodeInsertion] -> ShowS)
-> Show VideoTimecodeInsertion
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]
(Int -> ReadS VideoTimecodeInsertion)
-> ReadS [VideoTimecodeInsertion]
-> ReadPrec VideoTimecodeInsertion
-> ReadPrec [VideoTimecodeInsertion]
-> Read 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
(VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool)
-> (VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool)
-> Eq VideoTimecodeInsertion
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
Eq VideoTimecodeInsertion
-> (VideoTimecodeInsertion -> VideoTimecodeInsertion -> Ordering)
-> (VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool)
-> (VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool)
-> (VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool)
-> (VideoTimecodeInsertion -> VideoTimecodeInsertion -> Bool)
-> (VideoTimecodeInsertion
    -> VideoTimecodeInsertion -> VideoTimecodeInsertion)
-> (VideoTimecodeInsertion
    -> VideoTimecodeInsertion -> VideoTimecodeInsertion)
-> Ord 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
$cp1Ord :: Eq VideoTimecodeInsertion
Prelude.Ord,
      (forall x. VideoTimecodeInsertion -> Rep VideoTimecodeInsertion x)
-> (forall x.
    Rep VideoTimecodeInsertion x -> VideoTimecodeInsertion)
-> Generic VideoTimecodeInsertion
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
    ( Int -> VideoTimecodeInsertion -> Int
VideoTimecodeInsertion -> Int
(Int -> VideoTimecodeInsertion -> Int)
-> (VideoTimecodeInsertion -> Int)
-> Hashable VideoTimecodeInsertion
forall 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 -> ()
(VideoTimecodeInsertion -> ()) -> NFData VideoTimecodeInsertion
forall a. (a -> ()) -> NFData a
rnf :: VideoTimecodeInsertion -> ()
$crnf :: VideoTimecodeInsertion -> ()
Prelude.NFData,
      Text -> Either String VideoTimecodeInsertion
(Text -> Either String VideoTimecodeInsertion)
-> FromText VideoTimecodeInsertion
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String VideoTimecodeInsertion
$cfromText :: Text -> Either String VideoTimecodeInsertion
Core.FromText,
      VideoTimecodeInsertion -> Text
(VideoTimecodeInsertion -> Text) -> ToText VideoTimecodeInsertion
forall a. (a -> Text) -> ToText a
toText :: VideoTimecodeInsertion -> Text
$ctoText :: VideoTimecodeInsertion -> Text
Core.ToText,
      VideoTimecodeInsertion -> ByteString
(VideoTimecodeInsertion -> ByteString)
-> ToByteString VideoTimecodeInsertion
forall a. (a -> ByteString) -> ToByteString a
toBS :: VideoTimecodeInsertion -> ByteString
$ctoBS :: VideoTimecodeInsertion -> ByteString
Core.ToByteString,
      VideoTimecodeInsertion -> ByteStringBuilder
(VideoTimecodeInsertion -> ByteStringBuilder)
-> ToLog VideoTimecodeInsertion
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: VideoTimecodeInsertion -> ByteStringBuilder
$cbuild :: VideoTimecodeInsertion -> ByteStringBuilder
Core.ToLog,
      HeaderName -> VideoTimecodeInsertion -> [Header]
(HeaderName -> VideoTimecodeInsertion -> [Header])
-> ToHeader VideoTimecodeInsertion
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> VideoTimecodeInsertion -> [Header]
$ctoHeader :: HeaderName -> VideoTimecodeInsertion -> [Header]
Core.ToHeader,
      VideoTimecodeInsertion -> QueryString
(VideoTimecodeInsertion -> QueryString)
-> ToQuery VideoTimecodeInsertion
forall a. (a -> QueryString) -> ToQuery a
toQuery :: VideoTimecodeInsertion -> QueryString
$ctoQuery :: VideoTimecodeInsertion -> QueryString
Core.ToQuery,
      Value -> Parser [VideoTimecodeInsertion]
Value -> Parser VideoTimecodeInsertion
(Value -> Parser VideoTimecodeInsertion)
-> (Value -> Parser [VideoTimecodeInsertion])
-> FromJSON 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
Core.FromJSON,
      FromJSONKeyFunction [VideoTimecodeInsertion]
FromJSONKeyFunction VideoTimecodeInsertion
FromJSONKeyFunction VideoTimecodeInsertion
-> FromJSONKeyFunction [VideoTimecodeInsertion]
-> FromJSONKey VideoTimecodeInsertion
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [VideoTimecodeInsertion]
$cfromJSONKeyList :: FromJSONKeyFunction [VideoTimecodeInsertion]
fromJSONKey :: FromJSONKeyFunction VideoTimecodeInsertion
$cfromJSONKey :: FromJSONKeyFunction VideoTimecodeInsertion
Core.FromJSONKey,
      [VideoTimecodeInsertion] -> Encoding
[VideoTimecodeInsertion] -> Value
VideoTimecodeInsertion -> Encoding
VideoTimecodeInsertion -> Value
(VideoTimecodeInsertion -> Value)
-> (VideoTimecodeInsertion -> Encoding)
-> ([VideoTimecodeInsertion] -> Value)
-> ([VideoTimecodeInsertion] -> Encoding)
-> ToJSON VideoTimecodeInsertion
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
Core.ToJSON,
      ToJSONKeyFunction [VideoTimecodeInsertion]
ToJSONKeyFunction VideoTimecodeInsertion
ToJSONKeyFunction VideoTimecodeInsertion
-> ToJSONKeyFunction [VideoTimecodeInsertion]
-> ToJSONKey VideoTimecodeInsertion
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [VideoTimecodeInsertion]
$ctoJSONKeyList :: ToJSONKeyFunction [VideoTimecodeInsertion]
toJSONKey :: ToJSONKeyFunction VideoTimecodeInsertion
$ctoJSONKey :: ToJSONKeyFunction VideoTimecodeInsertion
Core.ToJSONKey,
      [Node] -> Either String VideoTimecodeInsertion
([Node] -> Either String VideoTimecodeInsertion)
-> FromXML VideoTimecodeInsertion
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String VideoTimecodeInsertion
$cparseXML :: [Node] -> Either String VideoTimecodeInsertion
Core.FromXML,
      VideoTimecodeInsertion -> XML
(VideoTimecodeInsertion -> XML) -> ToXML VideoTimecodeInsertion
forall a. (a -> XML) -> ToXML a
toXML :: VideoTimecodeInsertion -> XML
$ctoXML :: VideoTimecodeInsertion -> XML
Core.ToXML
    )

pattern VideoTimecodeInsertion_DISABLED :: VideoTimecodeInsertion
pattern $bVideoTimecodeInsertion_DISABLED :: VideoTimecodeInsertion
$mVideoTimecodeInsertion_DISABLED :: forall r.
VideoTimecodeInsertion -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> r) -> r
VideoTimecodeInsertion_PIC_TIMING_SEI = VideoTimecodeInsertion' "PIC_TIMING_SEI"

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