{-# 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.TimecodeSource
-- 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.TimecodeSource
  ( TimecodeSource
      ( ..,
        TimecodeSource_EMBEDDED,
        TimecodeSource_SPECIFIEDSTART,
        TimecodeSource_ZEROBASED
      ),
  )
where

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

-- | Use Source (TimecodeSource) to set how timecodes are handled within this
-- job. To make sure that your video, audio, captions, and markers are
-- synchronized and that time-based features, such as image inserter, work
-- correctly, choose the Timecode source option that matches your assets.
-- All timecodes are in a 24-hour format with frame number (HH:MM:SS:FF). *
-- Embedded (EMBEDDED) - Use the timecode that is in the input video. If no
-- embedded timecode is in the source, the service will use Start at 0
-- (ZEROBASED) instead. * Start at 0 (ZEROBASED) - Set the timecode of the
-- initial frame to 00:00:00:00. * Specified Start (SPECIFIEDSTART) - Set
-- the timecode of the initial frame to a value other than zero. You use
-- Start timecode (Start) to provide this value.
newtype TimecodeSource = TimecodeSource'
  { TimecodeSource -> Text
fromTimecodeSource ::
      Core.Text
  }
  deriving stock
    ( Int -> TimecodeSource -> ShowS
[TimecodeSource] -> ShowS
TimecodeSource -> String
(Int -> TimecodeSource -> ShowS)
-> (TimecodeSource -> String)
-> ([TimecodeSource] -> ShowS)
-> Show TimecodeSource
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TimecodeSource] -> ShowS
$cshowList :: [TimecodeSource] -> ShowS
show :: TimecodeSource -> String
$cshow :: TimecodeSource -> String
showsPrec :: Int -> TimecodeSource -> ShowS
$cshowsPrec :: Int -> TimecodeSource -> ShowS
Prelude.Show,
      ReadPrec [TimecodeSource]
ReadPrec TimecodeSource
Int -> ReadS TimecodeSource
ReadS [TimecodeSource]
(Int -> ReadS TimecodeSource)
-> ReadS [TimecodeSource]
-> ReadPrec TimecodeSource
-> ReadPrec [TimecodeSource]
-> Read TimecodeSource
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TimecodeSource]
$creadListPrec :: ReadPrec [TimecodeSource]
readPrec :: ReadPrec TimecodeSource
$creadPrec :: ReadPrec TimecodeSource
readList :: ReadS [TimecodeSource]
$creadList :: ReadS [TimecodeSource]
readsPrec :: Int -> ReadS TimecodeSource
$creadsPrec :: Int -> ReadS TimecodeSource
Prelude.Read,
      TimecodeSource -> TimecodeSource -> Bool
(TimecodeSource -> TimecodeSource -> Bool)
-> (TimecodeSource -> TimecodeSource -> Bool) -> Eq TimecodeSource
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TimecodeSource -> TimecodeSource -> Bool
$c/= :: TimecodeSource -> TimecodeSource -> Bool
== :: TimecodeSource -> TimecodeSource -> Bool
$c== :: TimecodeSource -> TimecodeSource -> Bool
Prelude.Eq,
      Eq TimecodeSource
Eq TimecodeSource
-> (TimecodeSource -> TimecodeSource -> Ordering)
-> (TimecodeSource -> TimecodeSource -> Bool)
-> (TimecodeSource -> TimecodeSource -> Bool)
-> (TimecodeSource -> TimecodeSource -> Bool)
-> (TimecodeSource -> TimecodeSource -> Bool)
-> (TimecodeSource -> TimecodeSource -> TimecodeSource)
-> (TimecodeSource -> TimecodeSource -> TimecodeSource)
-> Ord TimecodeSource
TimecodeSource -> TimecodeSource -> Bool
TimecodeSource -> TimecodeSource -> Ordering
TimecodeSource -> TimecodeSource -> TimecodeSource
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 :: TimecodeSource -> TimecodeSource -> TimecodeSource
$cmin :: TimecodeSource -> TimecodeSource -> TimecodeSource
max :: TimecodeSource -> TimecodeSource -> TimecodeSource
$cmax :: TimecodeSource -> TimecodeSource -> TimecodeSource
>= :: TimecodeSource -> TimecodeSource -> Bool
$c>= :: TimecodeSource -> TimecodeSource -> Bool
> :: TimecodeSource -> TimecodeSource -> Bool
$c> :: TimecodeSource -> TimecodeSource -> Bool
<= :: TimecodeSource -> TimecodeSource -> Bool
$c<= :: TimecodeSource -> TimecodeSource -> Bool
< :: TimecodeSource -> TimecodeSource -> Bool
$c< :: TimecodeSource -> TimecodeSource -> Bool
compare :: TimecodeSource -> TimecodeSource -> Ordering
$ccompare :: TimecodeSource -> TimecodeSource -> Ordering
$cp1Ord :: Eq TimecodeSource
Prelude.Ord,
      (forall x. TimecodeSource -> Rep TimecodeSource x)
-> (forall x. Rep TimecodeSource x -> TimecodeSource)
-> Generic TimecodeSource
forall x. Rep TimecodeSource x -> TimecodeSource
forall x. TimecodeSource -> Rep TimecodeSource x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep TimecodeSource x -> TimecodeSource
$cfrom :: forall x. TimecodeSource -> Rep TimecodeSource x
Prelude.Generic
    )
  deriving newtype
    ( Int -> TimecodeSource -> Int
TimecodeSource -> Int
(Int -> TimecodeSource -> Int)
-> (TimecodeSource -> Int) -> Hashable TimecodeSource
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: TimecodeSource -> Int
$chash :: TimecodeSource -> Int
hashWithSalt :: Int -> TimecodeSource -> Int
$chashWithSalt :: Int -> TimecodeSource -> Int
Prelude.Hashable,
      TimecodeSource -> ()
(TimecodeSource -> ()) -> NFData TimecodeSource
forall a. (a -> ()) -> NFData a
rnf :: TimecodeSource -> ()
$crnf :: TimecodeSource -> ()
Prelude.NFData,
      Text -> Either String TimecodeSource
(Text -> Either String TimecodeSource) -> FromText TimecodeSource
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String TimecodeSource
$cfromText :: Text -> Either String TimecodeSource
Core.FromText,
      TimecodeSource -> Text
(TimecodeSource -> Text) -> ToText TimecodeSource
forall a. (a -> Text) -> ToText a
toText :: TimecodeSource -> Text
$ctoText :: TimecodeSource -> Text
Core.ToText,
      TimecodeSource -> ByteString
(TimecodeSource -> ByteString) -> ToByteString TimecodeSource
forall a. (a -> ByteString) -> ToByteString a
toBS :: TimecodeSource -> ByteString
$ctoBS :: TimecodeSource -> ByteString
Core.ToByteString,
      TimecodeSource -> ByteStringBuilder
(TimecodeSource -> ByteStringBuilder) -> ToLog TimecodeSource
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: TimecodeSource -> ByteStringBuilder
$cbuild :: TimecodeSource -> ByteStringBuilder
Core.ToLog,
      HeaderName -> TimecodeSource -> [Header]
(HeaderName -> TimecodeSource -> [Header])
-> ToHeader TimecodeSource
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> TimecodeSource -> [Header]
$ctoHeader :: HeaderName -> TimecodeSource -> [Header]
Core.ToHeader,
      TimecodeSource -> QueryString
(TimecodeSource -> QueryString) -> ToQuery TimecodeSource
forall a. (a -> QueryString) -> ToQuery a
toQuery :: TimecodeSource -> QueryString
$ctoQuery :: TimecodeSource -> QueryString
Core.ToQuery,
      Value -> Parser [TimecodeSource]
Value -> Parser TimecodeSource
(Value -> Parser TimecodeSource)
-> (Value -> Parser [TimecodeSource]) -> FromJSON TimecodeSource
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [TimecodeSource]
$cparseJSONList :: Value -> Parser [TimecodeSource]
parseJSON :: Value -> Parser TimecodeSource
$cparseJSON :: Value -> Parser TimecodeSource
Core.FromJSON,
      FromJSONKeyFunction [TimecodeSource]
FromJSONKeyFunction TimecodeSource
FromJSONKeyFunction TimecodeSource
-> FromJSONKeyFunction [TimecodeSource]
-> FromJSONKey TimecodeSource
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [TimecodeSource]
$cfromJSONKeyList :: FromJSONKeyFunction [TimecodeSource]
fromJSONKey :: FromJSONKeyFunction TimecodeSource
$cfromJSONKey :: FromJSONKeyFunction TimecodeSource
Core.FromJSONKey,
      [TimecodeSource] -> Encoding
[TimecodeSource] -> Value
TimecodeSource -> Encoding
TimecodeSource -> Value
(TimecodeSource -> Value)
-> (TimecodeSource -> Encoding)
-> ([TimecodeSource] -> Value)
-> ([TimecodeSource] -> Encoding)
-> ToJSON TimecodeSource
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [TimecodeSource] -> Encoding
$ctoEncodingList :: [TimecodeSource] -> Encoding
toJSONList :: [TimecodeSource] -> Value
$ctoJSONList :: [TimecodeSource] -> Value
toEncoding :: TimecodeSource -> Encoding
$ctoEncoding :: TimecodeSource -> Encoding
toJSON :: TimecodeSource -> Value
$ctoJSON :: TimecodeSource -> Value
Core.ToJSON,
      ToJSONKeyFunction [TimecodeSource]
ToJSONKeyFunction TimecodeSource
ToJSONKeyFunction TimecodeSource
-> ToJSONKeyFunction [TimecodeSource] -> ToJSONKey TimecodeSource
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [TimecodeSource]
$ctoJSONKeyList :: ToJSONKeyFunction [TimecodeSource]
toJSONKey :: ToJSONKeyFunction TimecodeSource
$ctoJSONKey :: ToJSONKeyFunction TimecodeSource
Core.ToJSONKey,
      [Node] -> Either String TimecodeSource
([Node] -> Either String TimecodeSource) -> FromXML TimecodeSource
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String TimecodeSource
$cparseXML :: [Node] -> Either String TimecodeSource
Core.FromXML,
      TimecodeSource -> XML
(TimecodeSource -> XML) -> ToXML TimecodeSource
forall a. (a -> XML) -> ToXML a
toXML :: TimecodeSource -> XML
$ctoXML :: TimecodeSource -> XML
Core.ToXML
    )

pattern TimecodeSource_EMBEDDED :: TimecodeSource
pattern $bTimecodeSource_EMBEDDED :: TimecodeSource
$mTimecodeSource_EMBEDDED :: forall r. TimecodeSource -> (Void# -> r) -> (Void# -> r) -> r
TimecodeSource_EMBEDDED = TimecodeSource' "EMBEDDED"

pattern TimecodeSource_SPECIFIEDSTART :: TimecodeSource
pattern $bTimecodeSource_SPECIFIEDSTART :: TimecodeSource
$mTimecodeSource_SPECIFIEDSTART :: forall r. TimecodeSource -> (Void# -> r) -> (Void# -> r) -> r
TimecodeSource_SPECIFIEDSTART = TimecodeSource' "SPECIFIEDSTART"

pattern TimecodeSource_ZEROBASED :: TimecodeSource
pattern $bTimecodeSource_ZEROBASED :: TimecodeSource
$mTimecodeSource_ZEROBASED :: forall r. TimecodeSource -> (Void# -> r) -> (Void# -> r) -> r
TimecodeSource_ZEROBASED = TimecodeSource' "ZEROBASED"

{-# COMPLETE
  TimecodeSource_EMBEDDED,
  TimecodeSource_SPECIFIEDSTART,
  TimecodeSource_ZEROBASED,
  TimecodeSource'
  #-}