-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Amazon Elastic Transcoder SDK.
--   
--   The types from this library are intended to be used with
--   <a>amazonka</a>, which provides mechanisms for specifying AuthN/AuthZ
--   information, sending requests, and receiving responses.
--   
--   Lenses are used for constructing and manipulating types, due to the
--   depth of nesting of AWS types and transparency regarding
--   de/serialisation into more palatable Haskell values. The provided
--   lenses should be compatible with any of the major lens libraries such
--   as <a>lens</a> or <a>lens-family-core</a>.
--   
--   See <a>Network.AWS.ElasticTranscoder</a> or <a>the AWS
--   documentation</a> to get started.
@package amazonka-elastictranscoder
@version 1.6.0


module Network.AWS.ElasticTranscoder.Types

-- | API version <tt>2012-09-25</tt> of the Amazon Elastic Transcoder SDK
--   configuration.
elasticTranscoder :: Service

-- | Prism for IncompatibleVersionException' errors.
_IncompatibleVersionException :: AsError a => Getting (First ServiceError) a ServiceError

-- | One or more required parameter values were not provided in the
--   request.
_ValidationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | General authentication failure. The request was not signed correctly.
_AccessDeniedException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Elastic Transcoder encountered an unexpected exception while trying to
--   fulfill the request.
_InternalServiceException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested resource does not exist or is not available. For
--   example, the pipeline to which you're trying to add a job doesn't
--   exist or is still being created.
_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Too many operations for a given AWS account. For example, the number
--   of pipelines exceeds the maximum allowed.
_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The resource you are attempting to change is in use. For example, you
--   are attempting to delete a pipeline that is currently in use.
_ResourceInUseException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The file to be used as album art. There can be multiple artworks
--   associated with an audio file, to a maximum of 20.
--   
--   To remove artwork or leave the artwork empty, you can either set
--   <tt>Artwork</tt> to null, or set the <tt>Merge Policy</tt> to
--   <a>Replace</a> and use an empty <tt>Artwork</tt> array.
--   
--   To pass through existing artwork unchanged, set the <tt>Merge
--   Policy</tt> to <a>Prepend</a>, <a>Append</a>, or <a>Fallback</a>, and
--   use an empty <tt>Artwork</tt> array.
--   
--   <i>See:</i> <a>artwork</a> smart constructor.
data Artwork

-- | Creates a value of <a>Artwork</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aSizingPolicy</a> - Specify one of the following values to
--   control scaling of the output album art: * <tt>Fit:</tt> Elastic
--   Transcoder scales the output art so it matches the value that you
--   specified in either <tt>MaxWidth</tt> or <tt>MaxHeight</tt> without
--   exceeding the other value. * <tt>Fill:</tt> Elastic Transcoder scales
--   the output art so it matches the value that you specified in either
--   <tt>MaxWidth</tt> or <tt>MaxHeight</tt> and matches or exceeds the
--   other value. Elastic Transcoder centers the output art and then crops
--   it in the dimension (if any) that exceeds the maximum value. *
--   <tt>Stretch:</tt> Elastic Transcoder stretches the output art to match
--   the values that you specified for <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> . If the relative proportions of the input art and
--   the output art are different, the output art will be distorted. *
--   <tt>Keep:</tt> Elastic Transcoder does not scale the output art. If
--   either dimension of the input art exceeds the values that you
--   specified for <tt>MaxWidth</tt> and <tt>MaxHeight</tt> , Elastic
--   Transcoder crops the output art. * <tt>ShrinkToFit:</tt> Elastic
--   Transcoder scales the output art down so that its dimensions match the
--   values that you specified for at least one of <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> without exceeding either value. If you specify this
--   option, Elastic Transcoder does not scale the art up. *
--   <tt>ShrinkToFill</tt> Elastic Transcoder scales the output art down so
--   that its dimensions match the values that you specified for at least
--   one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without dropping below
--   either value. If you specify this option, Elastic Transcoder does not
--   scale the art up.</li>
--   <li><a>aAlbumArtFormat</a> - The format of album art, if any. Valid
--   formats are <tt>.jpg</tt> and <tt>.png</tt> .</li>
--   <li><a>aMaxHeight</a> - The maximum height of the output album art in
--   pixels. If you specify <tt>auto</tt> , Elastic Transcoder uses 600 as
--   the default value. If you specify a numeric value, enter an even
--   integer between 32 and 3072, inclusive.</li>
--   <li><a>aInputKey</a> - The name of the file to be used as album art.
--   To determine which Amazon S3 bucket contains the specified file,
--   Elastic Transcoder checks the pipeline specified by
--   <tt>PipelineId</tt> ; the <tt>InputBucket</tt> object in that pipeline
--   identifies the bucket. If the file name includes a prefix, for
--   example, <tt>cooking/pie.jpg</tt> , include the prefix in the key. If
--   the file isn't in the specified bucket, Elastic Transcoder returns an
--   error.</li>
--   <li><a>aPaddingPolicy</a> - When you set <tt>PaddingPolicy</tt> to
--   <tt>Pad</tt> , Elastic Transcoder may add white bars to the top and
--   bottom and/or left and right sides of the output album art to make the
--   total size of the output art match the values that you specified for
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> .</li>
--   <li><a>aEncryption</a> - The encryption settings, if any, that you
--   want Elastic Transcoder to apply to your artwork.</li>
--   <li><a>aMaxWidth</a> - The maximum width of the output album art in
--   pixels. If you specify <tt>auto</tt> , Elastic Transcoder uses 600 as
--   the default value. If you specify a numeric value, enter an even
--   integer between 32 and 4096, inclusive.</li>
--   </ul>
artwork :: Artwork

-- | Specify one of the following values to control scaling of the output
--   album art: * <tt>Fit:</tt> Elastic Transcoder scales the output art so
--   it matches the value that you specified in either <tt>MaxWidth</tt> or
--   <tt>MaxHeight</tt> without exceeding the other value. * <tt>Fill:</tt>
--   Elastic Transcoder scales the output art so it matches the value that
--   you specified in either <tt>MaxWidth</tt> or <tt>MaxHeight</tt> and
--   matches or exceeds the other value. Elastic Transcoder centers the
--   output art and then crops it in the dimension (if any) that exceeds
--   the maximum value. * <tt>Stretch:</tt> Elastic Transcoder stretches
--   the output art to match the values that you specified for
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> . If the relative proportions
--   of the input art and the output art are different, the output art will
--   be distorted. * <tt>Keep:</tt> Elastic Transcoder does not scale the
--   output art. If either dimension of the input art exceeds the values
--   that you specified for <tt>MaxWidth</tt> and <tt>MaxHeight</tt> ,
--   Elastic Transcoder crops the output art. * <tt>ShrinkToFit:</tt>
--   Elastic Transcoder scales the output art down so that its dimensions
--   match the values that you specified for at least one of
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without exceeding either
--   value. If you specify this option, Elastic Transcoder does not scale
--   the art up. * <tt>ShrinkToFill</tt> Elastic Transcoder scales the
--   output art down so that its dimensions match the values that you
--   specified for at least one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt>
--   without dropping below either value. If you specify this option,
--   Elastic Transcoder does not scale the art up.
aSizingPolicy :: Lens' Artwork (Maybe Text)

-- | The format of album art, if any. Valid formats are <tt>.jpg</tt> and
--   <tt>.png</tt> .
aAlbumArtFormat :: Lens' Artwork (Maybe Text)

-- | The maximum height of the output album art in pixels. If you specify
--   <tt>auto</tt> , Elastic Transcoder uses 600 as the default value. If
--   you specify a numeric value, enter an even integer between 32 and
--   3072, inclusive.
aMaxHeight :: Lens' Artwork (Maybe Text)

-- | The name of the file to be used as album art. To determine which
--   Amazon S3 bucket contains the specified file, Elastic Transcoder
--   checks the pipeline specified by <tt>PipelineId</tt> ; the
--   <tt>InputBucket</tt> object in that pipeline identifies the bucket. If
--   the file name includes a prefix, for example, <tt>cooking/pie.jpg</tt>
--   , include the prefix in the key. If the file isn't in the specified
--   bucket, Elastic Transcoder returns an error.
aInputKey :: Lens' Artwork (Maybe Text)

-- | When you set <tt>PaddingPolicy</tt> to <tt>Pad</tt> , Elastic
--   Transcoder may add white bars to the top and bottom and/or left and
--   right sides of the output album art to make the total size of the
--   output art match the values that you specified for <tt>MaxWidth</tt>
--   and <tt>MaxHeight</tt> .
aPaddingPolicy :: Lens' Artwork (Maybe Text)

-- | The encryption settings, if any, that you want Elastic Transcoder to
--   apply to your artwork.
aEncryption :: Lens' Artwork (Maybe Encryption)

-- | The maximum width of the output album art in pixels. If you specify
--   <tt>auto</tt> , Elastic Transcoder uses 600 as the default value. If
--   you specify a numeric value, enter an even integer between 32 and
--   4096, inclusive.
aMaxWidth :: Lens' Artwork (Maybe Text)

-- | Options associated with your audio codec.
--   
--   <i>See:</i> <a>audioCodecOptions</a> smart constructor.
data AudioCodecOptions

-- | Creates a value of <a>AudioCodecOptions</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acoSigned</a> - You can only choose whether an audio sample is
--   signed when you specify <tt>pcm</tt> for the value of Audio:Codec.
--   Whether audio samples are represented with negative and positive
--   numbers (signed) or only positive numbers (unsigned). The supported
--   value is <tt>Signed</tt> .</li>
--   <li><a>acoBitDepth</a> - You can only choose an audio bit depth when
--   you specify <tt>flac</tt> or <tt>pcm</tt> for the value of
--   Audio:Codec. The bit depth of a sample is how many bits of information
--   are included in the audio samples. The higher the bit depth, the
--   better the audio, but the larger the file. Valid values are
--   <tt>16</tt> and <tt>24</tt> . The most common bit depth is <tt>24</tt>
--   .</li>
--   <li><a>acoProfile</a> - You can only choose an audio profile when you
--   specify AAC for the value of Audio:Codec. Specify the AAC profile for
--   the output file. Elastic Transcoder supports the following profiles: *
--   <tt>auto</tt> : If you specify <tt>auto</tt> , Elastic Transcoder
--   selects the profile based on the bit rate selected for the output
--   file. * <tt>AAC-LC</tt> : The most common AAC profile. Use for bit
--   rates larger than 64 kbps. * <tt>HE-AAC</tt> : Not supported on some
--   older players and devices. Use for bit rates between 40 and 80 kbps. *
--   <tt>HE-AACv2</tt> : Not supported on some players and devices. Use for
--   bit rates less than 48 kbps. All outputs in a <tt>Smooth</tt> playlist
--   must have the same value for <tt>Profile</tt> .</li>
--   <li><a>acoBitOrder</a> - You can only choose an audio bit order when
--   you specify <tt>pcm</tt> for the value of Audio:Codec. The order the
--   bits of a PCM sample are stored in. The supported value is
--   <tt>LittleEndian</tt> .</li>
--   </ul>
audioCodecOptions :: AudioCodecOptions

-- | You can only choose whether an audio sample is signed when you specify
--   <tt>pcm</tt> for the value of Audio:Codec. Whether audio samples are
--   represented with negative and positive numbers (signed) or only
--   positive numbers (unsigned). The supported value is <tt>Signed</tt> .
acoSigned :: Lens' AudioCodecOptions (Maybe Text)

-- | You can only choose an audio bit depth when you specify <tt>flac</tt>
--   or <tt>pcm</tt> for the value of Audio:Codec. The bit depth of a
--   sample is how many bits of information are included in the audio
--   samples. The higher the bit depth, the better the audio, but the
--   larger the file. Valid values are <tt>16</tt> and <tt>24</tt> . The
--   most common bit depth is <tt>24</tt> .
acoBitDepth :: Lens' AudioCodecOptions (Maybe Text)

-- | You can only choose an audio profile when you specify AAC for the
--   value of Audio:Codec. Specify the AAC profile for the output file.
--   Elastic Transcoder supports the following profiles: * <tt>auto</tt> :
--   If you specify <tt>auto</tt> , Elastic Transcoder selects the profile
--   based on the bit rate selected for the output file. * <tt>AAC-LC</tt>
--   : The most common AAC profile. Use for bit rates larger than 64 kbps.
--   * <tt>HE-AAC</tt> : Not supported on some older players and devices.
--   Use for bit rates between 40 and 80 kbps. * <tt>HE-AACv2</tt> : Not
--   supported on some players and devices. Use for bit rates less than 48
--   kbps. All outputs in a <tt>Smooth</tt> playlist must have the same
--   value for <tt>Profile</tt> .
acoProfile :: Lens' AudioCodecOptions (Maybe Text)

-- | You can only choose an audio bit order when you specify <tt>pcm</tt>
--   for the value of Audio:Codec. The order the bits of a PCM sample are
--   stored in. The supported value is <tt>LittleEndian</tt> .
acoBitOrder :: Lens' AudioCodecOptions (Maybe Text)

-- | Parameters required for transcoding audio.
--   
--   <i>See:</i> <a>audioParameters</a> smart constructor.
data AudioParameters

-- | Creates a value of <a>AudioParameters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apChannels</a> - The number of audio channels in the output
--   file. The following values are valid: <tt>auto</tt> , <tt>0</tt> ,
--   <tt>1</tt> , <tt>2</tt> One channel carries the information played by
--   a single speaker. For example, a stereo track with two channels sends
--   one channel to the left speaker, and the other channel to the right
--   speaker. The output channels are organized into tracks. If you want
--   Elastic Transcoder to automatically detect the number of audio
--   channels in the input file and use that value for the output file,
--   select <tt>auto</tt> . The output of a specific channel value and
--   inputs are as follows: * <tt>auto</tt> <b>channel specified, with any
--   input:</b> Pass through up to eight input channels. * <tt>0</tt>
--   <b>channels specified, with any input:</b> Audio omitted from the
--   output. * <tt>1</tt> <b>channel specified, with at least one input
--   channel:</b> Mono sound. * <tt>2</tt> <b>channels specified, with any
--   input:</b> Two identical mono channels or stereo. For more information
--   about tracks, see <tt>Audio:AudioPackingMode.</tt> For more
--   information about how Elastic Transcoder organizes channels and
--   tracks, see <tt>Audio:AudioPackingMode</tt> .</li>
--   <li><a>apCodec</a> - The audio codec for the output file. Valid values
--   include <tt>aac</tt> , <tt>flac</tt> , <tt>mp2</tt> , <tt>mp3</tt> ,
--   <tt>pcm</tt> , and <tt>vorbis</tt> .</li>
--   <li><a>apAudioPackingMode</a> - The method of organizing audio
--   channels and tracks. Use <tt>Audio:Channels</tt> to specify the number
--   of channels in your output, and <tt>Audio:AudioPackingMode</tt> to
--   specify the number of tracks and their relation to the channels. If
--   you do not specify an <tt>Audio:AudioPackingMode</tt> , Elastic
--   Transcoder uses <tt>SingleTrack</tt> . The following values are valid:
--   <tt>SingleTrack</tt> , <tt>OneChannelPerTrack</tt> , and
--   <tt>OneChannelPerTrackWithMosTo8Tracks</tt> When you specify
--   <tt>SingleTrack</tt> , Elastic Transcoder creates a single track for
--   your output. The track can have up to eight channels. Use
--   <tt>SingleTrack</tt> for all non-<tt>mxf</tt> containers. The outputs
--   of <tt>SingleTrack</tt> for a specific channel value and inputs are as
--   follows: * <tt>0</tt> <b>channels with any input:</b> Audio omitted
--   from the output * <tt>1, 2, or auto </tt> <b>channels with no audio
--   input:</b> Audio omitted from the output * <tt>1 </tt> <b>channel with
--   any input with audio:</b> One track with one channel, downmixed if
--   necessary * <tt>2 </tt> <b>channels with one track with one
--   channel:</b> One track with two identical channels * <tt>2 or auto
--   </tt> <b>channels with two tracks with one channel each:</b> One track
--   with two channels * <tt>2 or auto </tt> <b>channels with one track
--   with two channels:</b> One track with two channels * <tt>2 </tt>
--   <b>channels with one track with multiple channels:</b> One track with
--   two channels * <tt>auto </tt> <b>channels with one track with one
--   channel:</b> One track with one channel * <tt>auto </tt> <b>channels
--   with one track with multiple channels:</b> One track with multiple
--   channels When you specify <tt>OneChannelPerTrack</tt> , Elastic
--   Transcoder creates a new track for every channel in your output. Your
--   output can have up to eight single-channel tracks. The outputs of
--   <tt>OneChannelPerTrack</tt> for a specific channel value and inputs
--   are as follows: * <tt>0 </tt> <b>channels with any input:</b> Audio
--   omitted from the output * <tt>1, 2, or auto </tt> <b>channels with no
--   audio input:</b> Audio omitted from the output * <tt>1 </tt>
--   <b>channel with any input with audio:</b> One track with one channel,
--   downmixed if necessary * <tt>2 </tt> <b>channels with one track with
--   one channel:</b> Two tracks with one identical channel each * <tt>2 or
--   auto </tt> <b>channels with two tracks with one channel each:</b> Two
--   tracks with one channel each * <tt>2 or auto </tt> <b>channels with
--   one track with two channels:</b> Two tracks with one channel each *
--   <tt>2 </tt> <b>channels with one track with multiple channels:</b> Two
--   tracks with one channel each * <tt>auto </tt> <b>channels with one
--   track with one channel:</b> One track with one channel * <tt>auto
--   </tt> <b>channels with one track with multiple channels:</b> Up to
--   eight tracks with one channel each When you specify
--   <tt>OneChannelPerTrackWithMosTo8Tracks</tt> , Elastic Transcoder
--   creates eight single-channel tracks for your output. All tracks that
--   do not contain audio data from an input channel are MOS, or Mit Out
--   Sound, tracks. The outputs of
--   <tt>OneChannelPerTrackWithMosTo8Tracks</tt> for a specific channel
--   value and inputs are as follows: * <tt>0 </tt> <b>channels with any
--   input:</b> Audio omitted from the output * <tt>1, 2, or auto </tt>
--   <b>channels with no audio input:</b> Audio omitted from the output *
--   <tt>1 </tt> <b>channel with any input with audio:</b> One track with
--   one channel, downmixed if necessary, plus six MOS tracks * <tt>2 </tt>
--   <b>channels with one track with one channel:</b> Two tracks with one
--   identical channel each, plus six MOS tracks * <tt>2 or auto </tt>
--   <b>channels with two tracks with one channel each:</b> Two tracks with
--   one channel each, plus six MOS tracks * <tt>2 or auto </tt>
--   <b>channels with one track with two channels:</b> Two tracks with one
--   channel each, plus six MOS tracks * <tt>2 </tt> <b>channels with one
--   track with multiple channels:</b> Two tracks with one channel each,
--   plus six MOS tracks * <tt>auto </tt> <b>channels with one track with
--   one channel:</b> One track with one channel, plus seven MOS tracks *
--   <tt>auto </tt> <b>channels with one track with multiple channels:</b>
--   Up to eight tracks with one channel each, plus MOS tracks until there
--   are eight tracks in all</li>
--   <li><a>apSampleRate</a> - The sample rate of the audio stream in the
--   output file, in Hertz. Valid values include: <tt>auto</tt> ,
--   <tt>22050</tt> , <tt>32000</tt> , <tt>44100</tt> , <tt>48000</tt> ,
--   <tt>96000</tt> If you specify <tt>auto</tt> , Elastic Transcoder
--   automatically detects the sample rate.</li>
--   <li><a>apBitRate</a> - The bit rate of the audio stream in the output
--   file, in kilobits/second. Enter an integer between 64 and 320,
--   inclusive.</li>
--   <li><a>apCodecOptions</a> - If you specified <tt>AAC</tt> for
--   <tt>Audio:Codec</tt> , this is the <tt>AAC</tt> compression profile to
--   use. Valid values include: <tt>auto</tt> , <tt>AAC-LC</tt> ,
--   <tt>HE-AAC</tt> , <tt>HE-AACv2</tt> If you specify <tt>auto</tt> ,
--   Elastic Transcoder chooses a profile based on the bit rate of the
--   output file.</li>
--   </ul>
audioParameters :: AudioParameters

-- | The number of audio channels in the output file. The following values
--   are valid: <tt>auto</tt> , <tt>0</tt> , <tt>1</tt> , <tt>2</tt> One
--   channel carries the information played by a single speaker. For
--   example, a stereo track with two channels sends one channel to the
--   left speaker, and the other channel to the right speaker. The output
--   channels are organized into tracks. If you want Elastic Transcoder to
--   automatically detect the number of audio channels in the input file
--   and use that value for the output file, select <tt>auto</tt> . The
--   output of a specific channel value and inputs are as follows: *
--   <tt>auto</tt> <b>channel specified, with any input:</b> Pass through
--   up to eight input channels. * <tt>0</tt> <b>channels specified, with
--   any input:</b> Audio omitted from the output. * <tt>1</tt> <b>channel
--   specified, with at least one input channel:</b> Mono sound. *
--   <tt>2</tt> <b>channels specified, with any input:</b> Two identical
--   mono channels or stereo. For more information about tracks, see
--   <tt>Audio:AudioPackingMode.</tt> For more information about how
--   Elastic Transcoder organizes channels and tracks, see
--   <tt>Audio:AudioPackingMode</tt> .
apChannels :: Lens' AudioParameters (Maybe Text)

-- | The audio codec for the output file. Valid values include <tt>aac</tt>
--   , <tt>flac</tt> , <tt>mp2</tt> , <tt>mp3</tt> , <tt>pcm</tt> , and
--   <tt>vorbis</tt> .
apCodec :: Lens' AudioParameters (Maybe Text)

-- | The method of organizing audio channels and tracks. Use
--   <tt>Audio:Channels</tt> to specify the number of channels in your
--   output, and <tt>Audio:AudioPackingMode</tt> to specify the number of
--   tracks and their relation to the channels. If you do not specify an
--   <tt>Audio:AudioPackingMode</tt> , Elastic Transcoder uses
--   <tt>SingleTrack</tt> . The following values are valid:
--   <tt>SingleTrack</tt> , <tt>OneChannelPerTrack</tt> , and
--   <tt>OneChannelPerTrackWithMosTo8Tracks</tt> When you specify
--   <tt>SingleTrack</tt> , Elastic Transcoder creates a single track for
--   your output. The track can have up to eight channels. Use
--   <tt>SingleTrack</tt> for all non-<tt>mxf</tt> containers. The outputs
--   of <tt>SingleTrack</tt> for a specific channel value and inputs are as
--   follows: * <tt>0</tt> <b>channels with any input:</b> Audio omitted
--   from the output * <tt>1, 2, or auto </tt> <b>channels with no audio
--   input:</b> Audio omitted from the output * <tt>1 </tt> <b>channel with
--   any input with audio:</b> One track with one channel, downmixed if
--   necessary * <tt>2 </tt> <b>channels with one track with one
--   channel:</b> One track with two identical channels * <tt>2 or auto
--   </tt> <b>channels with two tracks with one channel each:</b> One track
--   with two channels * <tt>2 or auto </tt> <b>channels with one track
--   with two channels:</b> One track with two channels * <tt>2 </tt>
--   <b>channels with one track with multiple channels:</b> One track with
--   two channels * <tt>auto </tt> <b>channels with one track with one
--   channel:</b> One track with one channel * <tt>auto </tt> <b>channels
--   with one track with multiple channels:</b> One track with multiple
--   channels When you specify <tt>OneChannelPerTrack</tt> , Elastic
--   Transcoder creates a new track for every channel in your output. Your
--   output can have up to eight single-channel tracks. The outputs of
--   <tt>OneChannelPerTrack</tt> for a specific channel value and inputs
--   are as follows: * <tt>0 </tt> <b>channels with any input:</b> Audio
--   omitted from the output * <tt>1, 2, or auto </tt> <b>channels with no
--   audio input:</b> Audio omitted from the output * <tt>1 </tt>
--   <b>channel with any input with audio:</b> One track with one channel,
--   downmixed if necessary * <tt>2 </tt> <b>channels with one track with
--   one channel:</b> Two tracks with one identical channel each * <tt>2 or
--   auto </tt> <b>channels with two tracks with one channel each:</b> Two
--   tracks with one channel each * <tt>2 or auto </tt> <b>channels with
--   one track with two channels:</b> Two tracks with one channel each *
--   <tt>2 </tt> <b>channels with one track with multiple channels:</b> Two
--   tracks with one channel each * <tt>auto </tt> <b>channels with one
--   track with one channel:</b> One track with one channel * <tt>auto
--   </tt> <b>channels with one track with multiple channels:</b> Up to
--   eight tracks with one channel each When you specify
--   <tt>OneChannelPerTrackWithMosTo8Tracks</tt> , Elastic Transcoder
--   creates eight single-channel tracks for your output. All tracks that
--   do not contain audio data from an input channel are MOS, or Mit Out
--   Sound, tracks. The outputs of
--   <tt>OneChannelPerTrackWithMosTo8Tracks</tt> for a specific channel
--   value and inputs are as follows: * <tt>0 </tt> <b>channels with any
--   input:</b> Audio omitted from the output * <tt>1, 2, or auto </tt>
--   <b>channels with no audio input:</b> Audio omitted from the output *
--   <tt>1 </tt> <b>channel with any input with audio:</b> One track with
--   one channel, downmixed if necessary, plus six MOS tracks * <tt>2 </tt>
--   <b>channels with one track with one channel:</b> Two tracks with one
--   identical channel each, plus six MOS tracks * <tt>2 or auto </tt>
--   <b>channels with two tracks with one channel each:</b> Two tracks with
--   one channel each, plus six MOS tracks * <tt>2 or auto </tt>
--   <b>channels with one track with two channels:</b> Two tracks with one
--   channel each, plus six MOS tracks * <tt>2 </tt> <b>channels with one
--   track with multiple channels:</b> Two tracks with one channel each,
--   plus six MOS tracks * <tt>auto </tt> <b>channels with one track with
--   one channel:</b> One track with one channel, plus seven MOS tracks *
--   <tt>auto </tt> <b>channels with one track with multiple channels:</b>
--   Up to eight tracks with one channel each, plus MOS tracks until there
--   are eight tracks in all
apAudioPackingMode :: Lens' AudioParameters (Maybe Text)

-- | The sample rate of the audio stream in the output file, in Hertz.
--   Valid values include: <tt>auto</tt> , <tt>22050</tt> , <tt>32000</tt>
--   , <tt>44100</tt> , <tt>48000</tt> , <tt>96000</tt> If you specify
--   <tt>auto</tt> , Elastic Transcoder automatically detects the sample
--   rate.
apSampleRate :: Lens' AudioParameters (Maybe Text)

-- | The bit rate of the audio stream in the output file, in
--   kilobits/second. Enter an integer between 64 and 320, inclusive.
apBitRate :: Lens' AudioParameters (Maybe Text)

-- | If you specified <tt>AAC</tt> for <tt>Audio:Codec</tt> , this is the
--   <tt>AAC</tt> compression profile to use. Valid values include:
--   <tt>auto</tt> , <tt>AAC-LC</tt> , <tt>HE-AAC</tt> , <tt>HE-AACv2</tt>
--   If you specify <tt>auto</tt> , Elastic Transcoder chooses a profile
--   based on the bit rate of the output file.
apCodecOptions :: Lens' AudioParameters (Maybe AudioCodecOptions)

-- | The file format of the output captions. If you leave this value blank,
--   Elastic Transcoder returns an error.
--   
--   <i>See:</i> <a>captionFormat</a> smart constructor.
data CaptionFormat

-- | Creates a value of <a>CaptionFormat</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cfPattern</a> - The prefix for caption filenames, in the form
--   <i>description</i> -<tt>{language}</tt> , where: * <i>description</i>
--   is a description of the video. * <tt>{language}</tt> is a literal
--   value that Elastic Transcoder replaces with the two- or three-letter
--   code for the language of the caption in the output file names. If you
--   don't include <tt>{language}</tt> in the file name pattern, Elastic
--   Transcoder automatically appends "<tt>{language}</tt> " to the value
--   that you specify for the description. In addition, Elastic Transcoder
--   automatically appends the count to the end of the segment files. For
--   example, suppose you're transcoding into srt format. When you enter
--   "Sydney-{language}-sunrise", and the language of the captions is
--   English (en), the name of the first caption file is be
--   Sydney-en-sunrise00000.srt.</li>
--   <li><a>cfFormat</a> - The format you specify determines whether
--   Elastic Transcoder generates an embedded or sidecar caption for this
--   output. * <b>Valid Embedded Caption Formats:</b> * <b>for FLAC</b> :
--   None * <b>For MP3</b> : None * <b>For MP4</b> : mov-text * <b>For
--   MPEG-TS</b> : None * <b>For ogg</b> : None * <b>For webm</b> : None *
--   <b>Valid Sidecar Caption Formats:</b> Elastic Transcoder supports dfxp
--   (first div element only), scc, srt, and webvtt. If you want ttml or
--   smpte-tt compatible captions, specify dfxp as your output format. *
--   <b>For FMP4</b> : dfxp * <b>Non-FMP4 outputs</b> : All sidecar types
--   <tt>fmp4</tt> captions have an extension of <tt>.ismt</tt></li>
--   <li><a>cfEncryption</a> - The encryption settings, if any, that you
--   want Elastic Transcoder to apply to your caption formats.</li>
--   </ul>
captionFormat :: CaptionFormat

-- | The prefix for caption filenames, in the form <i>description</i>
--   -<tt>{language}</tt> , where: * <i>description</i> is a description of
--   the video. * <tt>{language}</tt> is a literal value that Elastic
--   Transcoder replaces with the two- or three-letter code for the
--   language of the caption in the output file names. If you don't include
--   <tt>{language}</tt> in the file name pattern, Elastic Transcoder
--   automatically appends "<tt>{language}</tt> " to the value that you
--   specify for the description. In addition, Elastic Transcoder
--   automatically appends the count to the end of the segment files. For
--   example, suppose you're transcoding into srt format. When you enter
--   "Sydney-{language}-sunrise", and the language of the captions is
--   English (en), the name of the first caption file is be
--   Sydney-en-sunrise00000.srt.
cfPattern :: Lens' CaptionFormat (Maybe Text)

-- | The format you specify determines whether Elastic Transcoder generates
--   an embedded or sidecar caption for this output. * <b>Valid Embedded
--   Caption Formats:</b> * <b>for FLAC</b> : None * <b>For MP3</b> : None
--   * <b>For MP4</b> : mov-text * <b>For MPEG-TS</b> : None * <b>For
--   ogg</b> : None * <b>For webm</b> : None * <b>Valid Sidecar Caption
--   Formats:</b> Elastic Transcoder supports dfxp (first div element
--   only), scc, srt, and webvtt. If you want ttml or smpte-tt compatible
--   captions, specify dfxp as your output format. * <b>For FMP4</b> : dfxp
--   * <b>Non-FMP4 outputs</b> : All sidecar types <tt>fmp4</tt> captions
--   have an extension of <tt>.ismt</tt>
cfFormat :: Lens' CaptionFormat (Maybe Text)

-- | The encryption settings, if any, that you want Elastic Transcoder to
--   apply to your caption formats.
cfEncryption :: Lens' CaptionFormat (Maybe Encryption)

-- | A source file for the input sidecar captions used during the
--   transcoding process.
--   
--   <i>See:</i> <a>captionSource</a> smart constructor.
data CaptionSource

-- | Creates a value of <a>CaptionSource</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csTimeOffset</a> - For clip generation or captions that do not
--   start at the same time as the associated video file, the
--   <tt>TimeOffset</tt> tells Elastic Transcoder how much of the video to
--   encode before including captions. Specify the TimeOffset in the form
--   [+-]SS.sss or [+-]HH:mm:SS.ss.</li>
--   <li><a>csEncryption</a> - The encryption settings, if any, that
--   Elastic Transcoder needs to decyrpt your caption sources, or that you
--   want Elastic Transcoder to apply to your caption sources.</li>
--   <li><a>csKey</a> - The name of the sidecar caption file that you want
--   Elastic Transcoder to include in the output file.</li>
--   <li><a>csLanguage</a> - A string that specifies the language of the
--   caption. If you specified multiple inputs with captions, the caption
--   language must match in order to be included in the output. Specify
--   this as one of: * 2-character ISO 639-1 code * 3-character ISO 639-2
--   code For more information on ISO language codes and language names,
--   see the List of ISO 639-1 codes.</li>
--   <li><a>csLabel</a> - The label of the caption shown in the player when
--   choosing a language. We recommend that you put the caption language
--   name here, in the language of the captions.</li>
--   </ul>
captionSource :: CaptionSource

-- | For clip generation or captions that do not start at the same time as
--   the associated video file, the <tt>TimeOffset</tt> tells Elastic
--   Transcoder how much of the video to encode before including captions.
--   Specify the TimeOffset in the form [+-]SS.sss or [+-]HH:mm:SS.ss.
csTimeOffset :: Lens' CaptionSource (Maybe Text)

-- | The encryption settings, if any, that Elastic Transcoder needs to
--   decyrpt your caption sources, or that you want Elastic Transcoder to
--   apply to your caption sources.
csEncryption :: Lens' CaptionSource (Maybe Encryption)

-- | The name of the sidecar caption file that you want Elastic Transcoder
--   to include in the output file.
csKey :: Lens' CaptionSource (Maybe Text)

-- | A string that specifies the language of the caption. If you specified
--   multiple inputs with captions, the caption language must match in
--   order to be included in the output. Specify this as one of: *
--   2-character ISO 639-1 code * 3-character ISO 639-2 code For more
--   information on ISO language codes and language names, see the List of
--   ISO 639-1 codes.
csLanguage :: Lens' CaptionSource (Maybe Text)

-- | The label of the caption shown in the player when choosing a language.
--   We recommend that you put the caption language name here, in the
--   language of the captions.
csLabel :: Lens' CaptionSource (Maybe Text)

-- | The captions to be created, if any.
--   
--   <i>See:</i> <a>captions</a> smart constructor.
data Captions

-- | Creates a value of <a>Captions</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cMergePolicy</a> - A policy that determines how Elastic
--   Transcoder handles the existence of multiple captions. *
--   <b>MergeOverride:</b> Elastic Transcoder transcodes both embedded and
--   sidecar captions into outputs. If captions for a language are embedded
--   in the input file and also appear in a sidecar file, Elastic
--   Transcoder uses the sidecar captions and ignores the embedded captions
--   for that language. * <b>MergeRetain:</b> Elastic Transcoder transcodes
--   both embedded and sidecar captions into outputs. If captions for a
--   language are embedded in the input file and also appear in a sidecar
--   file, Elastic Transcoder uses the embedded captions and ignores the
--   sidecar captions for that language. If <tt>CaptionSources</tt> is
--   empty, Elastic Transcoder omits all sidecar captions from the output
--   files. * <b>Override:</b> Elastic Transcoder transcodes only the
--   sidecar captions that you specify in <tt>CaptionSources</tt> .
--   <tt>MergePolicy</tt> cannot be null.</li>
--   <li><a>cCaptionSources</a> - Source files for the input sidecar
--   captions used during the transcoding process. To omit all sidecar
--   captions, leave <tt>CaptionSources</tt> blank.</li>
--   <li><a>cCaptionFormats</a> - The array of file formats for the output
--   captions. If you leave this value blank, Elastic Transcoder returns an
--   error.</li>
--   </ul>
captions :: Captions

-- | A policy that determines how Elastic Transcoder handles the existence
--   of multiple captions. * <b>MergeOverride:</b> Elastic Transcoder
--   transcodes both embedded and sidecar captions into outputs. If
--   captions for a language are embedded in the input file and also appear
--   in a sidecar file, Elastic Transcoder uses the sidecar captions and
--   ignores the embedded captions for that language. * <b>MergeRetain:</b>
--   Elastic Transcoder transcodes both embedded and sidecar captions into
--   outputs. If captions for a language are embedded in the input file and
--   also appear in a sidecar file, Elastic Transcoder uses the embedded
--   captions and ignores the sidecar captions for that language. If
--   <tt>CaptionSources</tt> is empty, Elastic Transcoder omits all sidecar
--   captions from the output files. * <b>Override:</b> Elastic Transcoder
--   transcodes only the sidecar captions that you specify in
--   <tt>CaptionSources</tt> . <tt>MergePolicy</tt> cannot be null.
cMergePolicy :: Lens' Captions (Maybe Text)

-- | Source files for the input sidecar captions used during the
--   transcoding process. To omit all sidecar captions, leave
--   <tt>CaptionSources</tt> blank.
cCaptionSources :: Lens' Captions [CaptionSource]

-- | The array of file formats for the output captions. If you leave this
--   value blank, Elastic Transcoder returns an error.
cCaptionFormats :: Lens' Captions [CaptionFormat]

-- | Settings for one clip in a composition. All jobs in a playlist must
--   have the same clip settings.
--   
--   <i>See:</i> <a>clip</a> smart constructor.
data Clip

-- | Creates a value of <a>Clip</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cTimeSpan</a> - Settings that determine when a clip begins and
--   how long it lasts.</li>
--   </ul>
clip :: Clip

-- | Settings that determine when a clip begins and how long it lasts.
cTimeSpan :: Lens' Clip (Maybe TimeSpan)

-- | The <tt>CreateJobOutput</tt> structure.
--   
--   <i>See:</i> <a>createJobOutput</a> smart constructor.
data CreateJobOutput

-- | Creates a value of <a>CreateJobOutput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cjoThumbnailPattern</a> - Whether you want Elastic Transcoder
--   to create thumbnails for your videos and, if so, how you want Elastic
--   Transcoder to name the files. If you don't want Elastic Transcoder to
--   create thumbnails, specify "". If you do want Elastic Transcoder to
--   create thumbnails, specify the information that you want to include in
--   the file name for each thumbnail. You can specify the following values
--   in any sequence: * <b><tt>{count}</tt> (Required)</b> : If you want to
--   create thumbnails, you must include <tt>{count}</tt> in the
--   <tt>ThumbnailPattern</tt> object. Wherever you specify
--   <tt>{count}</tt> , Elastic Transcoder adds a five-digit sequence
--   number (beginning with <b>00001</b> ) to thumbnail file names. The
--   number indicates where a given thumbnail appears in the sequence of
--   thumbnails for a transcoded file. <i>Important:</i> If you specify a
--   literal value and/or <tt>{resolution}</tt> but you omit
--   <tt>{count}</tt> , Elastic Transcoder returns a validation error and
--   does not create the job. * <b>Literal values (Optional)</b> : You can
--   specify literal values anywhere in the <tt>ThumbnailPattern</tt>
--   object. For example, you can include them as a file name prefix or as
--   a delimiter between <tt>{resolution}</tt> and <tt>{count}</tt> . *
--   <b><tt>{resolution}</tt> (Optional)</b> : If you want Elastic
--   Transcoder to include the resolution in the file name, include
--   <tt>{resolution}</tt> in the <tt>ThumbnailPattern</tt> object. When
--   creating thumbnails, Elastic Transcoder automatically saves the files
--   in the format (.jpg or .png) that appears in the preset that you
--   specified in the <tt>PresetID</tt> value of <tt>CreateJobOutput</tt> .
--   Elastic Transcoder also appends the applicable file name
--   extension.</li>
--   <li><a>cjoCaptions</a> - You can configure Elastic Transcoder to
--   transcode captions, or subtitles, from one format to another. All
--   captions must be in UTF-8. Elastic Transcoder supports two types of
--   captions: * <b>Embedded:</b> Embedded captions are included in the
--   same file as the audio and video. Elastic Transcoder supports only one
--   embedded caption per language, to a maximum of 300 embedded captions
--   per file. Valid input values include: <tt>CEA-608 (EIA-608</tt> ,
--   first non-empty channel only), <tt>CEA-708 (EIA-708</tt> , first
--   non-empty channel only), and <tt>mov-text</tt> Valid outputs include:
--   <tt>mov-text</tt> Elastic Transcoder supports a maximum of one
--   embedded format per output. * <b>Sidecar:</b> Sidecar captions are
--   kept in a separate metadata file from the audio and video data.
--   Sidecar captions require a player that is capable of understanding the
--   relationship between the video file and the sidecar file. Elastic
--   Transcoder supports only one sidecar caption per language, to a
--   maximum of 20 sidecar captions per file. Valid input values include:
--   <tt>dfxp</tt> (first div element only), <tt>ebu-tt</tt> , <tt>scc</tt>
--   , <tt>smpt</tt> , <tt>srt</tt> , <tt>ttml</tt> (first div element
--   only), and <tt>webvtt</tt> Valid outputs include: <tt>dfxp</tt> (first
--   div element only), <tt>scc</tt> , <tt>srt</tt> , and <tt>webvtt</tt> .
--   If you want ttml or smpte-tt compatible captions, specify dfxp as your
--   output format. Elastic Transcoder does not support OCR (Optical
--   Character Recognition), does not accept pictures as a valid input for
--   captions, and is not available for audio-only transcoding. Elastic
--   Transcoder does not preserve text formatting (for example, italics)
--   during the transcoding process. To remove captions or leave the
--   captions empty, set <tt>Captions</tt> to null. To pass through
--   existing captions unchanged, set the <tt>MergePolicy</tt> to
--   <tt>MergeRetain</tt> , and pass in a null <tt>CaptionSources</tt>
--   array. For more information on embedded files, see the Subtitles
--   Wikipedia page. For more information on sidecar files, see the
--   Extensible Metadata Platform and Sidecar file Wikipedia pages.</li>
--   <li><a>cjoPresetId</a> - The <tt>Id</tt> of the preset to use for this
--   job. The preset determines the audio, video, and thumbnail settings
--   that Elastic Transcoder uses for transcoding.</li>
--   <li><a>cjoComposition</a> - You can create an output file that
--   contains an excerpt from the input file. This excerpt, called a clip,
--   can come from the beginning, middle, or end of the file. The
--   Composition object contains settings for the clips that make up an
--   output file. For the current release, you can only specify settings
--   for a single clip per output file. The Composition object cannot be
--   null.</li>
--   <li><a>cjoAlbumArt</a> - Information about the album art that you want
--   Elastic Transcoder to add to the file during transcoding. You can
--   specify up to twenty album artworks for each output. Settings for each
--   artwork must be defined in the job for the current output.</li>
--   <li><a>cjoWatermarks</a> - Information about the watermarks that you
--   want Elastic Transcoder to add to the video during transcoding. You
--   can specify up to four watermarks for each output. Settings for each
--   watermark must be defined in the preset for the current output.</li>
--   <li><a>cjoEncryption</a> - You can specify encryption settings for any
--   output files that you want to use for a transcoding job. This includes
--   the output file and any watermarks, thumbnails, album art, or captions
--   that you want to use. You must specify encryption settings for each
--   file individually.</li>
--   <li><a>cjoKey</a> - The name to assign to the transcoded file. Elastic
--   Transcoder saves the file in the Amazon S3 bucket specified by the
--   <tt>OutputBucket</tt> object in the pipeline that is specified by the
--   pipeline ID. If a file with the specified name already exists in the
--   output bucket, the job fails.</li>
--   <li><a>cjoSegmentDuration</a> - <i>Important:</i> (Outputs in
--   Fragmented MP4 or MPEG-TS format only. If you specify a preset in
--   <tt>PresetId</tt> for which the value of <tt>Container</tt> is
--   <tt>fmp4</tt> (Fragmented MP4) or <tt>ts</tt> (MPEG-TS),
--   <tt>SegmentDuration</tt> is the target maximum duration of each
--   segment in seconds. For <tt>HLSv3</tt> format playlists, each media
--   segment is stored in a separate <tt>.ts</tt> file. For <tt>HLSv4</tt>
--   and <tt>Smooth</tt> playlists, all media segments for an output are
--   stored in a single file. Each segment is approximately the length of
--   the <tt>SegmentDuration</tt> , though individual segments might be
--   shorter or longer. The range of valid values is 1 to 60 seconds. If
--   the duration of the video is not evenly divisible by
--   <tt>SegmentDuration</tt> , the duration of the last segment is the
--   remainder of total length/SegmentDuration. Elastic Transcoder creates
--   an output-specific playlist for each output <tt>HLS</tt> output that
--   you specify in OutputKeys. To add an output to the master playlist for
--   this job, include it in the <tt>OutputKeys</tt> of the associated
--   playlist.</li>
--   <li><a>cjoThumbnailEncryption</a> - The encryption settings, if any,
--   that you want Elastic Transcoder to apply to your thumbnail.</li>
--   <li><a>cjoRotate</a> - The number of degrees clockwise by which you
--   want Elastic Transcoder to rotate the output relative to the input.
--   Enter one of the following values: <tt>auto</tt> , <tt>0</tt> ,
--   <tt>90</tt> , <tt>180</tt> , <tt>270</tt> . The value <tt>auto</tt>
--   generally works only if the file that you're transcoding contains
--   rotation metadata.</li>
--   </ul>
createJobOutput :: CreateJobOutput

-- | Whether you want Elastic Transcoder to create thumbnails for your
--   videos and, if so, how you want Elastic Transcoder to name the files.
--   If you don't want Elastic Transcoder to create thumbnails, specify "".
--   If you do want Elastic Transcoder to create thumbnails, specify the
--   information that you want to include in the file name for each
--   thumbnail. You can specify the following values in any sequence: *
--   <b><tt>{count}</tt> (Required)</b> : If you want to create thumbnails,
--   you must include <tt>{count}</tt> in the <tt>ThumbnailPattern</tt>
--   object. Wherever you specify <tt>{count}</tt> , Elastic Transcoder
--   adds a five-digit sequence number (beginning with <b>00001</b> ) to
--   thumbnail file names. The number indicates where a given thumbnail
--   appears in the sequence of thumbnails for a transcoded file.
--   <i>Important:</i> If you specify a literal value and/or
--   <tt>{resolution}</tt> but you omit <tt>{count}</tt> , Elastic
--   Transcoder returns a validation error and does not create the job. *
--   <b>Literal values (Optional)</b> : You can specify literal values
--   anywhere in the <tt>ThumbnailPattern</tt> object. For example, you can
--   include them as a file name prefix or as a delimiter between
--   <tt>{resolution}</tt> and <tt>{count}</tt> . *
--   <b><tt>{resolution}</tt> (Optional)</b> : If you want Elastic
--   Transcoder to include the resolution in the file name, include
--   <tt>{resolution}</tt> in the <tt>ThumbnailPattern</tt> object. When
--   creating thumbnails, Elastic Transcoder automatically saves the files
--   in the format (.jpg or .png) that appears in the preset that you
--   specified in the <tt>PresetID</tt> value of <tt>CreateJobOutput</tt> .
--   Elastic Transcoder also appends the applicable file name extension.
cjoThumbnailPattern :: Lens' CreateJobOutput (Maybe Text)

-- | You can configure Elastic Transcoder to transcode captions, or
--   subtitles, from one format to another. All captions must be in UTF-8.
--   Elastic Transcoder supports two types of captions: * <b>Embedded:</b>
--   Embedded captions are included in the same file as the audio and
--   video. Elastic Transcoder supports only one embedded caption per
--   language, to a maximum of 300 embedded captions per file. Valid input
--   values include: <tt>CEA-608 (EIA-608</tt> , first non-empty channel
--   only), <tt>CEA-708 (EIA-708</tt> , first non-empty channel only), and
--   <tt>mov-text</tt> Valid outputs include: <tt>mov-text</tt> Elastic
--   Transcoder supports a maximum of one embedded format per output. *
--   <b>Sidecar:</b> Sidecar captions are kept in a separate metadata file
--   from the audio and video data. Sidecar captions require a player that
--   is capable of understanding the relationship between the video file
--   and the sidecar file. Elastic Transcoder supports only one sidecar
--   caption per language, to a maximum of 20 sidecar captions per file.
--   Valid input values include: <tt>dfxp</tt> (first div element only),
--   <tt>ebu-tt</tt> , <tt>scc</tt> , <tt>smpt</tt> , <tt>srt</tt> ,
--   <tt>ttml</tt> (first div element only), and <tt>webvtt</tt> Valid
--   outputs include: <tt>dfxp</tt> (first div element only), <tt>scc</tt>
--   , <tt>srt</tt> , and <tt>webvtt</tt> . If you want ttml or smpte-tt
--   compatible captions, specify dfxp as your output format. Elastic
--   Transcoder does not support OCR (Optical Character Recognition), does
--   not accept pictures as a valid input for captions, and is not
--   available for audio-only transcoding. Elastic Transcoder does not
--   preserve text formatting (for example, italics) during the transcoding
--   process. To remove captions or leave the captions empty, set
--   <tt>Captions</tt> to null. To pass through existing captions
--   unchanged, set the <tt>MergePolicy</tt> to <tt>MergeRetain</tt> , and
--   pass in a null <tt>CaptionSources</tt> array. For more information on
--   embedded files, see the Subtitles Wikipedia page. For more information
--   on sidecar files, see the Extensible Metadata Platform and Sidecar
--   file Wikipedia pages.
cjoCaptions :: Lens' CreateJobOutput (Maybe Captions)

-- | The <tt>Id</tt> of the preset to use for this job. The preset
--   determines the audio, video, and thumbnail settings that Elastic
--   Transcoder uses for transcoding.
cjoPresetId :: Lens' CreateJobOutput (Maybe Text)

-- | You can create an output file that contains an excerpt from the input
--   file. This excerpt, called a clip, can come from the beginning,
--   middle, or end of the file. The Composition object contains settings
--   for the clips that make up an output file. For the current release,
--   you can only specify settings for a single clip per output file. The
--   Composition object cannot be null.
cjoComposition :: Lens' CreateJobOutput [Clip]

-- | Information about the album art that you want Elastic Transcoder to
--   add to the file during transcoding. You can specify up to twenty album
--   artworks for each output. Settings for each artwork must be defined in
--   the job for the current output.
cjoAlbumArt :: Lens' CreateJobOutput (Maybe JobAlbumArt)

-- | Information about the watermarks that you want Elastic Transcoder to
--   add to the video during transcoding. You can specify up to four
--   watermarks for each output. Settings for each watermark must be
--   defined in the preset for the current output.
cjoWatermarks :: Lens' CreateJobOutput [JobWatermark]

-- | You can specify encryption settings for any output files that you want
--   to use for a transcoding job. This includes the output file and any
--   watermarks, thumbnails, album art, or captions that you want to use.
--   You must specify encryption settings for each file individually.
cjoEncryption :: Lens' CreateJobOutput (Maybe Encryption)

-- | The name to assign to the transcoded file. Elastic Transcoder saves
--   the file in the Amazon S3 bucket specified by the
--   <tt>OutputBucket</tt> object in the pipeline that is specified by the
--   pipeline ID. If a file with the specified name already exists in the
--   output bucket, the job fails.
cjoKey :: Lens' CreateJobOutput (Maybe Text)

-- | <i>Important:</i> (Outputs in Fragmented MP4 or MPEG-TS format only.
--   If you specify a preset in <tt>PresetId</tt> for which the value of
--   <tt>Container</tt> is <tt>fmp4</tt> (Fragmented MP4) or <tt>ts</tt>
--   (MPEG-TS), <tt>SegmentDuration</tt> is the target maximum duration of
--   each segment in seconds. For <tt>HLSv3</tt> format playlists, each
--   media segment is stored in a separate <tt>.ts</tt> file. For
--   <tt>HLSv4</tt> and <tt>Smooth</tt> playlists, all media segments for
--   an output are stored in a single file. Each segment is approximately
--   the length of the <tt>SegmentDuration</tt> , though individual
--   segments might be shorter or longer. The range of valid values is 1 to
--   60 seconds. If the duration of the video is not evenly divisible by
--   <tt>SegmentDuration</tt> , the duration of the last segment is the
--   remainder of total length/SegmentDuration. Elastic Transcoder creates
--   an output-specific playlist for each output <tt>HLS</tt> output that
--   you specify in OutputKeys. To add an output to the master playlist for
--   this job, include it in the <tt>OutputKeys</tt> of the associated
--   playlist.
cjoSegmentDuration :: Lens' CreateJobOutput (Maybe Text)

-- | The encryption settings, if any, that you want Elastic Transcoder to
--   apply to your thumbnail.
cjoThumbnailEncryption :: Lens' CreateJobOutput (Maybe Encryption)

-- | The number of degrees clockwise by which you want Elastic Transcoder
--   to rotate the output relative to the input. Enter one of the following
--   values: <tt>auto</tt> , <tt>0</tt> , <tt>90</tt> , <tt>180</tt> ,
--   <tt>270</tt> . The value <tt>auto</tt> generally works only if the
--   file that you're transcoding contains rotation metadata.
cjoRotate :: Lens' CreateJobOutput (Maybe Text)

-- | Information about the master playlist.
--   
--   <i>See:</i> <a>createJobPlaylist</a> smart constructor.
data CreateJobPlaylist

-- | Creates a value of <a>CreateJobPlaylist</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cjpPlayReadyDrm</a> - The DRM settings, if any, that you want
--   Elastic Transcoder to apply to the output files associated with this
--   playlist.</li>
--   <li><a>cjpFormat</a> - The format of the output playlist. Valid
--   formats include <tt>HLSv3</tt> , <tt>HLSv4</tt> , and <tt>Smooth</tt>
--   .</li>
--   <li><a>cjpOutputKeys</a> - For each output in this job that you want
--   to include in a master playlist, the value of the <tt>Outputs:Key</tt>
--   object. * If your output is not <tt>HLS</tt> or does not have a
--   segment duration set, the name of the output file is a concatenation
--   of <tt>OutputKeyPrefix</tt> and <tt>Outputs:Key</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> * If your output is <tt>HLSv3</tt>
--   and has a segment duration set, or is not included in a playlist,
--   Elastic Transcoder creates an output playlist file with a file
--   extension of <tt>.m3u8</tt> , and a series of <tt>.ts</tt> files that
--   include a five-digit sequential counter beginning with 00000:
--   OutputKeyPrefix<tt>Outputs:Key</tt> .m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> 00000.ts * If your output is
--   <tt>HLSv4</tt> , has a segment duration set, and is included in an
--   <tt>HLSv4</tt> playlist, Elastic Transcoder creates an output playlist
--   file with a file extension of <tt>_v4.m3u8</tt> . If the output is
--   video, Elastic Transcoder also creates an output file with an
--   extension of <tt>_iframe.m3u8</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> _v4.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> _iframe.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> .ts Elastic Transcoder
--   automatically appends the relevant file extension to the file name. If
--   you include a file extension in Output Key, the file name will have
--   two extensions. If you include more than one output in a playlist, any
--   segment duration settings, clip settings, or caption settings must be
--   the same for all outputs in the playlist. For <tt>Smooth</tt>
--   playlists, the <tt>Audio:Profile</tt> , <tt>Video:Profile</tt> , and
--   <tt>Video:FrameRate</tt> to <tt>Video:KeyframesMaxDist</tt> ratio must
--   be the same for all outputs.</li>
--   <li><a>cjpName</a> - The name that you want Elastic Transcoder to
--   assign to the master playlist, for example, nyc-vacation.m3u8. If the
--   name includes a <tt>/</tt> character, the section of the name before
--   the last <tt>/</tt> must be identical for all <tt>Name</tt> objects.
--   If you create more than one master playlist, the values of all
--   <tt>Name</tt> objects must be unique.</li>
--   <li><a>cjpHlsContentProtection</a> - The HLS content protection
--   settings, if any, that you want Elastic Transcoder to apply to the
--   output files associated with this playlist.</li>
--   </ul>
createJobPlaylist :: CreateJobPlaylist

-- | The DRM settings, if any, that you want Elastic Transcoder to apply to
--   the output files associated with this playlist.
cjpPlayReadyDrm :: Lens' CreateJobPlaylist (Maybe PlayReadyDrm)

-- | The format of the output playlist. Valid formats include
--   <tt>HLSv3</tt> , <tt>HLSv4</tt> , and <tt>Smooth</tt> .
cjpFormat :: Lens' CreateJobPlaylist (Maybe Text)

-- | For each output in this job that you want to include in a master
--   playlist, the value of the <tt>Outputs:Key</tt> object. * If your
--   output is not <tt>HLS</tt> or does not have a segment duration set,
--   the name of the output file is a concatenation of
--   <tt>OutputKeyPrefix</tt> and <tt>Outputs:Key</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> * If your output is <tt>HLSv3</tt>
--   and has a segment duration set, or is not included in a playlist,
--   Elastic Transcoder creates an output playlist file with a file
--   extension of <tt>.m3u8</tt> , and a series of <tt>.ts</tt> files that
--   include a five-digit sequential counter beginning with 00000:
--   OutputKeyPrefix<tt>Outputs:Key</tt> .m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> 00000.ts * If your output is
--   <tt>HLSv4</tt> , has a segment duration set, and is included in an
--   <tt>HLSv4</tt> playlist, Elastic Transcoder creates an output playlist
--   file with a file extension of <tt>_v4.m3u8</tt> . If the output is
--   video, Elastic Transcoder also creates an output file with an
--   extension of <tt>_iframe.m3u8</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> _v4.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> _iframe.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> .ts Elastic Transcoder
--   automatically appends the relevant file extension to the file name. If
--   you include a file extension in Output Key, the file name will have
--   two extensions. If you include more than one output in a playlist, any
--   segment duration settings, clip settings, or caption settings must be
--   the same for all outputs in the playlist. For <tt>Smooth</tt>
--   playlists, the <tt>Audio:Profile</tt> , <tt>Video:Profile</tt> , and
--   <tt>Video:FrameRate</tt> to <tt>Video:KeyframesMaxDist</tt> ratio must
--   be the same for all outputs.
cjpOutputKeys :: Lens' CreateJobPlaylist [Text]

-- | The name that you want Elastic Transcoder to assign to the master
--   playlist, for example, nyc-vacation.m3u8. If the name includes a
--   <tt>/</tt> character, the section of the name before the last
--   <tt>/</tt> must be identical for all <tt>Name</tt> objects. If you
--   create more than one master playlist, the values of all <tt>Name</tt>
--   objects must be unique.
cjpName :: Lens' CreateJobPlaylist (Maybe Text)

-- | The HLS content protection settings, if any, that you want Elastic
--   Transcoder to apply to the output files associated with this playlist.
cjpHlsContentProtection :: Lens' CreateJobPlaylist (Maybe HlsContentProtection)

-- | The detected properties of the input file. Elastic Transcoder
--   identifies these values from the input file.
--   
--   <i>See:</i> <a>detectedProperties</a> smart constructor.
data DetectedProperties

-- | Creates a value of <a>DetectedProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dpHeight</a> - The detected height of the input file, in
--   pixels.</li>
--   <li><a>dpFrameRate</a> - The detected frame rate of the input file, in
--   frames per second.</li>
--   <li><a>dpFileSize</a> - The detected file size of the input file, in
--   bytes.</li>
--   <li><a>dpWidth</a> - The detected width of the input file, in
--   pixels.</li>
--   <li><a>dpDurationMillis</a> - The detected duration of the input file,
--   in milliseconds.</li>
--   </ul>
detectedProperties :: DetectedProperties

-- | The detected height of the input file, in pixels.
dpHeight :: Lens' DetectedProperties (Maybe Int)

-- | The detected frame rate of the input file, in frames per second.
dpFrameRate :: Lens' DetectedProperties (Maybe Text)

-- | The detected file size of the input file, in bytes.
dpFileSize :: Lens' DetectedProperties (Maybe Integer)

-- | The detected width of the input file, in pixels.
dpWidth :: Lens' DetectedProperties (Maybe Int)

-- | The detected duration of the input file, in milliseconds.
dpDurationMillis :: Lens' DetectedProperties (Maybe Integer)

-- | The encryption settings, if any, that are used for decrypting your
--   input files or encrypting your output files. If your input file is
--   encrypted, you must specify the mode that Elastic Transcoder uses to
--   decrypt your file, otherwise you must specify the mode you want
--   Elastic Transcoder to use to encrypt your output files.
--   
--   <i>See:</i> <a>encryption</a> smart constructor.
data Encryption

-- | Creates a value of <a>Encryption</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eMode</a> - The specific server-side encryption mode that you
--   want Elastic Transcoder to use when decrypting your input files or
--   encrypting your output files. Elastic Transcoder supports the
--   following options: * <b>S3:</b> Amazon S3 creates and manages the keys
--   used for encrypting your files. * <b>S3-AWS-KMS:</b> Amazon S3 calls
--   the Amazon Key Management Service, which creates and manages the keys
--   that are used for encrypting your files. If you specify
--   <tt>S3-AWS-KMS</tt> and you don't want to use the default key, you
--   must add the AWS-KMS key that you want to use to your pipeline. *
--   <b>AES-CBC-PKCS7:</b> A padded cipher-block mode of operation
--   originally used for HLS files. * <b>AES-CTR:</b> AES Counter Mode. *
--   <b>AES-GCM:</b> AES Galois Counter Mode, a mode of operation that is
--   an authenticated encryption format, meaning that a file, key, or
--   initialization vector that has been tampered with fails the decryption
--   process. For all three AES options, you must provide the following
--   settings, which must be base64-encoded: * <b>Key</b> * <b>Key MD5</b>
--   * <b>Initialization Vector</b> <i>Important:</i> For the AES modes,
--   your private encryption keys and your unencrypted data are never
--   stored by AWS; therefore, it is important that you safely manage your
--   encryption keys. If you lose them, you won't be able to unencrypt your
--   data.</li>
--   <li><a>eKeyMD5</a> - The MD5 digest of the key that you used to
--   encrypt your input file, or that you want Elastic Transcoder to use to
--   encrypt your output file. Elastic Transcoder uses the key digest as a
--   checksum to make sure your key was not corrupted in transit. The key
--   MD5 must be base64-encoded, and it must be exactly 16 bytes long
--   before being base64-encoded.</li>
--   <li><a>eKey</a> - The data encryption key that you want Elastic
--   Transcoder to use to encrypt your output file, or that was used to
--   encrypt your input file. The key must be base64-encoded and it must be
--   one of the following bit lengths before being base64-encoded:
--   <tt>128</tt> , <tt>192</tt> , or <tt>256</tt> . The key must also be
--   encrypted by using the Amazon Key Management Service.</li>
--   <li><a>eInitializationVector</a> - The series of random bits created
--   by a random bit generator, unique for every encryption operation, that
--   you used to encrypt your input files or that you want Elastic
--   Transcoder to use to encrypt your output files. The initialization
--   vector must be base64-encoded, and it must be exactly 16 bytes long
--   before being base64-encoded.</li>
--   </ul>
encryption :: Encryption

-- | The specific server-side encryption mode that you want Elastic
--   Transcoder to use when decrypting your input files or encrypting your
--   output files. Elastic Transcoder supports the following options: *
--   <b>S3:</b> Amazon S3 creates and manages the keys used for encrypting
--   your files. * <b>S3-AWS-KMS:</b> Amazon S3 calls the Amazon Key
--   Management Service, which creates and manages the keys that are used
--   for encrypting your files. If you specify <tt>S3-AWS-KMS</tt> and you
--   don't want to use the default key, you must add the AWS-KMS key that
--   you want to use to your pipeline. * <b>AES-CBC-PKCS7:</b> A padded
--   cipher-block mode of operation originally used for HLS files. *
--   <b>AES-CTR:</b> AES Counter Mode. * <b>AES-GCM:</b> AES Galois Counter
--   Mode, a mode of operation that is an authenticated encryption format,
--   meaning that a file, key, or initialization vector that has been
--   tampered with fails the decryption process. For all three AES options,
--   you must provide the following settings, which must be base64-encoded:
--   * <b>Key</b> * <b>Key MD5</b> * <b>Initialization Vector</b>
--   <i>Important:</i> For the AES modes, your private encryption keys and
--   your unencrypted data are never stored by AWS; therefore, it is
--   important that you safely manage your encryption keys. If you lose
--   them, you won't be able to unencrypt your data.
eMode :: Lens' Encryption (Maybe Text)

-- | The MD5 digest of the key that you used to encrypt your input file, or
--   that you want Elastic Transcoder to use to encrypt your output file.
--   Elastic Transcoder uses the key digest as a checksum to make sure your
--   key was not corrupted in transit. The key MD5 must be base64-encoded,
--   and it must be exactly 16 bytes long before being base64-encoded.
eKeyMD5 :: Lens' Encryption (Maybe Text)

-- | The data encryption key that you want Elastic Transcoder to use to
--   encrypt your output file, or that was used to encrypt your input file.
--   The key must be base64-encoded and it must be one of the following bit
--   lengths before being base64-encoded: <tt>128</tt> , <tt>192</tt> , or
--   <tt>256</tt> . The key must also be encrypted by using the Amazon Key
--   Management Service.
eKey :: Lens' Encryption (Maybe Text)

-- | The series of random bits created by a random bit generator, unique
--   for every encryption operation, that you used to encrypt your input
--   files or that you want Elastic Transcoder to use to encrypt your
--   output files. The initialization vector must be base64-encoded, and it
--   must be exactly 16 bytes long before being base64-encoded.
eInitializationVector :: Lens' Encryption (Maybe Text)

-- | The HLS content protection settings, if any, that you want Elastic
--   Transcoder to apply to your output files.
--   
--   <i>See:</i> <a>hlsContentProtection</a> smart constructor.
data HlsContentProtection

-- | Creates a value of <a>HlsContentProtection</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hcpKeyMD5</a> - If Elastic Transcoder is generating your key
--   for you, you must leave this field blank. The MD5 digest of the key
--   that you want Elastic Transcoder to use to encrypt your output file,
--   and that you want Elastic Transcoder to use as a checksum to make sure
--   your key was not corrupted in transit. The key MD5 must be
--   base64-encoded, and it must be exactly 16 bytes before being base64-
--   encoded.</li>
--   <li><a>hcpKeyStoragePolicy</a> - Specify whether you want Elastic
--   Transcoder to write your HLS license key to an Amazon S3 bucket. If
--   you choose <tt>WithVariantPlaylists</tt> ,
--   <tt>LicenseAcquisitionUrl</tt> must be left blank and Elastic
--   Transcoder writes your data key into the same bucket as the associated
--   playlist.</li>
--   <li><a>hcpKey</a> - If you want Elastic Transcoder to generate a key
--   for you, leave this field blank. If you choose to supply your own key,
--   you must encrypt the key by using AWS KMS. The key must be
--   base64-encoded, and it must be one of the following bit lengths before
--   being base64-encoded: <tt>128</tt> , <tt>192</tt> , or <tt>256</tt>
--   .</li>
--   <li><a>hcpMethod</a> - The content protection method for your output.
--   The only valid value is: <tt>aes-128</tt> . This value is written into
--   the method attribute of the <tt>EXT-X-KEY</tt> metadata tag in the
--   output playlist.</li>
--   <li><a>hcpInitializationVector</a> - If Elastic Transcoder is
--   generating your key for you, you must leave this field blank. The
--   series of random bits created by a random bit generator, unique for
--   every encryption operation, that you want Elastic Transcoder to use to
--   encrypt your output files. The initialization vector must be
--   base64-encoded, and it must be exactly 16 bytes before being
--   base64-encoded.</li>
--   <li><a>hcpLicenseAcquisitionURL</a> - The location of the license key
--   required to decrypt your HLS playlist. The URL must be an absolute
--   path, and is referenced in the URI attribute of the EXT-X-KEY metadata
--   tag in the playlist file.</li>
--   </ul>
hlsContentProtection :: HlsContentProtection

-- | If Elastic Transcoder is generating your key for you, you must leave
--   this field blank. The MD5 digest of the key that you want Elastic
--   Transcoder to use to encrypt your output file, and that you want
--   Elastic Transcoder to use as a checksum to make sure your key was not
--   corrupted in transit. The key MD5 must be base64-encoded, and it must
--   be exactly 16 bytes before being base64- encoded.
hcpKeyMD5 :: Lens' HlsContentProtection (Maybe Text)

-- | Specify whether you want Elastic Transcoder to write your HLS license
--   key to an Amazon S3 bucket. If you choose
--   <tt>WithVariantPlaylists</tt> , <tt>LicenseAcquisitionUrl</tt> must be
--   left blank and Elastic Transcoder writes your data key into the same
--   bucket as the associated playlist.
hcpKeyStoragePolicy :: Lens' HlsContentProtection (Maybe Text)

-- | If you want Elastic Transcoder to generate a key for you, leave this
--   field blank. If you choose to supply your own key, you must encrypt
--   the key by using AWS KMS. The key must be base64-encoded, and it must
--   be one of the following bit lengths before being base64-encoded:
--   <tt>128</tt> , <tt>192</tt> , or <tt>256</tt> .
hcpKey :: Lens' HlsContentProtection (Maybe Text)

-- | The content protection method for your output. The only valid value
--   is: <tt>aes-128</tt> . This value is written into the method attribute
--   of the <tt>EXT-X-KEY</tt> metadata tag in the output playlist.
hcpMethod :: Lens' HlsContentProtection (Maybe Text)

-- | If Elastic Transcoder is generating your key for you, you must leave
--   this field blank. The series of random bits created by a random bit
--   generator, unique for every encryption operation, that you want
--   Elastic Transcoder to use to encrypt your output files. The
--   initialization vector must be base64-encoded, and it must be exactly
--   16 bytes before being base64-encoded.
hcpInitializationVector :: Lens' HlsContentProtection (Maybe Text)

-- | The location of the license key required to decrypt your HLS playlist.
--   The URL must be an absolute path, and is referenced in the URI
--   attribute of the EXT-X-KEY metadata tag in the playlist file.
hcpLicenseAcquisitionURL :: Lens' HlsContentProtection (Maybe Text)

-- | The captions to be created, if any.
--   
--   <i>See:</i> <a>inputCaptions</a> smart constructor.
data InputCaptions

-- | Creates a value of <a>InputCaptions</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>icMergePolicy</a> - A policy that determines how Elastic
--   Transcoder handles the existence of multiple captions. *
--   <b>MergeOverride:</b> Elastic Transcoder transcodes both embedded and
--   sidecar captions into outputs. If captions for a language are embedded
--   in the input file and also appear in a sidecar file, Elastic
--   Transcoder uses the sidecar captions and ignores the embedded captions
--   for that language. * <b>MergeRetain:</b> Elastic Transcoder transcodes
--   both embedded and sidecar captions into outputs. If captions for a
--   language are embedded in the input file and also appear in a sidecar
--   file, Elastic Transcoder uses the embedded captions and ignores the
--   sidecar captions for that language. If <tt>CaptionSources</tt> is
--   empty, Elastic Transcoder omits all sidecar captions from the output
--   files. * <b>Override:</b> Elastic Transcoder transcodes only the
--   sidecar captions that you specify in <tt>CaptionSources</tt> .
--   <tt>MergePolicy</tt> cannot be null.</li>
--   <li><a>icCaptionSources</a> - Source files for the input sidecar
--   captions used during the transcoding process. To omit all sidecar
--   captions, leave <tt>CaptionSources</tt> blank.</li>
--   </ul>
inputCaptions :: InputCaptions

-- | A policy that determines how Elastic Transcoder handles the existence
--   of multiple captions. * <b>MergeOverride:</b> Elastic Transcoder
--   transcodes both embedded and sidecar captions into outputs. If
--   captions for a language are embedded in the input file and also appear
--   in a sidecar file, Elastic Transcoder uses the sidecar captions and
--   ignores the embedded captions for that language. * <b>MergeRetain:</b>
--   Elastic Transcoder transcodes both embedded and sidecar captions into
--   outputs. If captions for a language are embedded in the input file and
--   also appear in a sidecar file, Elastic Transcoder uses the embedded
--   captions and ignores the sidecar captions for that language. If
--   <tt>CaptionSources</tt> is empty, Elastic Transcoder omits all sidecar
--   captions from the output files. * <b>Override:</b> Elastic Transcoder
--   transcodes only the sidecar captions that you specify in
--   <tt>CaptionSources</tt> . <tt>MergePolicy</tt> cannot be null.
icMergePolicy :: Lens' InputCaptions (Maybe Text)

-- | Source files for the input sidecar captions used during the
--   transcoding process. To omit all sidecar captions, leave
--   <tt>CaptionSources</tt> blank.
icCaptionSources :: Lens' InputCaptions [CaptionSource]

-- | A section of the response body that provides information about the job
--   that is created.
--   
--   <i>See:</i> <a>job'</a> smart constructor.
data Job'

-- | Creates a value of <a>Job'</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jStatus</a> - The status of the job: <tt>Submitted</tt> ,
--   <tt>Progressing</tt> , <tt>Complete</tt> , <tt>Canceled</tt> , or
--   <tt>Error</tt> .</li>
--   <li><a>jPipelineId</a> - The <tt>Id</tt> of the pipeline that you want
--   Elastic Transcoder to use for transcoding. The pipeline determines
--   several settings, including the Amazon S3 bucket from which Elastic
--   Transcoder gets the files to transcode and the bucket into which
--   Elastic Transcoder puts the transcoded files.</li>
--   <li><a>jARN</a> - The Amazon Resource Name (ARN) for the job.</li>
--   <li><a>jInputs</a> - Information about the files that you're
--   transcoding. If you specified multiple files for this job, Elastic
--   Transcoder stitches the files together to make one output.</li>
--   <li><a>jInput</a> - A section of the request or response body that
--   provides information about the file that is being transcoded.</li>
--   <li><a>jUserMetadata</a> - User-defined metadata that you want to
--   associate with an Elastic Transcoder job. You specify metadata in
--   <tt>key/value</tt> pairs, and you can add up to 10 <tt>key/value</tt>
--   pairs per job. Elastic Transcoder does not guarantee that
--   <tt>key/value</tt> pairs are returned in the same order in which you
--   specify them. Metadata <tt>keys</tt> and <tt>values</tt> must use
--   characters from the following list: * <tt>0-9</tt> * <tt>A-Z</tt> and
--   <tt>a-z</tt> * <tt>Space</tt> * The following symbols:
--   <tt>_.:/=+-%</tt>@</li>
--   <li><a>jOutputs</a> - Information about the output files. We recommend
--   that you use the <tt>Outputs</tt> syntax for all jobs, even when you
--   want Elastic Transcoder to transcode a file into only one format. Do
--   not use both the <tt>Outputs</tt> and <tt>Output</tt> syntaxes in the
--   same request. You can create a maximum of 30 outputs per job. If you
--   specify more than one output for a job, Elastic Transcoder creates the
--   files for each output in the order in which you specify them in the
--   job.</li>
--   <li><a>jOutput</a> - If you specified one output for a job,
--   information about that output. If you specified multiple outputs for a
--   job, the Output object lists information about the first output. This
--   duplicates the information that is listed for the first output in the
--   Outputs object. <i>Important:</i> Outputs recommended instead. A
--   section of the request or response body that provides information
--   about the transcoded (target) file.</li>
--   <li><a>jId</a> - The identifier that Elastic Transcoder assigned to
--   the job. You use this value to get settings for the job or to delete
--   the job.</li>
--   <li><a>jPlaylists</a> - <i>Important:</i> Outputs in Fragmented MP4 or
--   MPEG-TS format only. If you specify a preset in <tt>PresetId</tt> for
--   which the value of <tt>Container</tt> is fmp4 (Fragmented MP4) or ts
--   (MPEG-TS), <tt>Playlists</tt> contains information about the master
--   playlists that you want Elastic Transcoder to create. The maximum
--   number of master playlists in a job is 30.</li>
--   <li><a>jOutputKeyPrefix</a> - The value, if any, that you want Elastic
--   Transcoder to prepend to the names of all files that this job creates,
--   including output files, thumbnails, and playlists. We recommend that
--   you add a / or some other delimiter to the end of the
--   <tt>OutputKeyPrefix</tt> .</li>
--   <li><a>jTiming</a> - Details about the timing of a job.</li>
--   </ul>
job' :: Job'

-- | The status of the job: <tt>Submitted</tt> , <tt>Progressing</tt> ,
--   <tt>Complete</tt> , <tt>Canceled</tt> , or <tt>Error</tt> .
jStatus :: Lens' Job' (Maybe Text)

-- | The <tt>Id</tt> of the pipeline that you want Elastic Transcoder to
--   use for transcoding. The pipeline determines several settings,
--   including the Amazon S3 bucket from which Elastic Transcoder gets the
--   files to transcode and the bucket into which Elastic Transcoder puts
--   the transcoded files.
jPipelineId :: Lens' Job' (Maybe Text)

-- | The Amazon Resource Name (ARN) for the job.
jARN :: Lens' Job' (Maybe Text)

-- | Information about the files that you're transcoding. If you specified
--   multiple files for this job, Elastic Transcoder stitches the files
--   together to make one output.
jInputs :: Lens' Job' [JobInput]

-- | A section of the request or response body that provides information
--   about the file that is being transcoded.
jInput :: Lens' Job' (Maybe JobInput)

-- | User-defined metadata that you want to associate with an Elastic
--   Transcoder job. You specify metadata in <tt>key/value</tt> pairs, and
--   you can add up to 10 <tt>key/value</tt> pairs per job. Elastic
--   Transcoder does not guarantee that <tt>key/value</tt> pairs are
--   returned in the same order in which you specify them. Metadata
--   <tt>keys</tt> and <tt>values</tt> must use characters from the
--   following list: * <tt>0-9</tt> * <tt>A-Z</tt> and <tt>a-z</tt> *
--   <tt>Space</tt> * The following symbols: <tt>_.:/=+-%</tt>@
jUserMetadata :: Lens' Job' (HashMap Text Text)

-- | Information about the output files. We recommend that you use the
--   <tt>Outputs</tt> syntax for all jobs, even when you want Elastic
--   Transcoder to transcode a file into only one format. Do not use both
--   the <tt>Outputs</tt> and <tt>Output</tt> syntaxes in the same request.
--   You can create a maximum of 30 outputs per job. If you specify more
--   than one output for a job, Elastic Transcoder creates the files for
--   each output in the order in which you specify them in the job.
jOutputs :: Lens' Job' [JobOutput]

-- | If you specified one output for a job, information about that output.
--   If you specified multiple outputs for a job, the Output object lists
--   information about the first output. This duplicates the information
--   that is listed for the first output in the Outputs object.
--   <i>Important:</i> Outputs recommended instead. A section of the
--   request or response body that provides information about the
--   transcoded (target) file.
jOutput :: Lens' Job' (Maybe JobOutput)

-- | The identifier that Elastic Transcoder assigned to the job. You use
--   this value to get settings for the job or to delete the job.
jId :: Lens' Job' (Maybe Text)

-- | <i>Important:</i> Outputs in Fragmented MP4 or MPEG-TS format only. If
--   you specify a preset in <tt>PresetId</tt> for which the value of
--   <tt>Container</tt> is fmp4 (Fragmented MP4) or ts (MPEG-TS),
--   <tt>Playlists</tt> contains information about the master playlists
--   that you want Elastic Transcoder to create. The maximum number of
--   master playlists in a job is 30.
jPlaylists :: Lens' Job' [Playlist]

-- | The value, if any, that you want Elastic Transcoder to prepend to the
--   names of all files that this job creates, including output files,
--   thumbnails, and playlists. We recommend that you add a / or some other
--   delimiter to the end of the <tt>OutputKeyPrefix</tt> .
jOutputKeyPrefix :: Lens' Job' (Maybe Text)

-- | Details about the timing of a job.
jTiming :: Lens' Job' (Maybe Timing)

-- | The .jpg or .png file associated with an audio file.
--   
--   <i>See:</i> <a>jobAlbumArt</a> smart constructor.
data JobAlbumArt

-- | Creates a value of <a>JobAlbumArt</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jaaMergePolicy</a> - A policy that determines how Elastic
--   Transcoder handles the existence of multiple album artwork files. *
--   <tt>Replace:</tt> The specified album art replaces any existing album
--   art. * <tt>Prepend:</tt> The specified album art is placed in front of
--   any existing album art. * <tt>Append:</tt> The specified album art is
--   placed after any existing album art. * <tt>Fallback:</tt> If the
--   original input file contains artwork, Elastic Transcoder uses that
--   artwork for the output. If the original input does not contain
--   artwork, Elastic Transcoder uses the specified album art file.</li>
--   <li><a>jaaArtwork</a> - The file to be used as album art. There can be
--   multiple artworks associated with an audio file, to a maximum of 20.
--   Valid formats are <tt>.jpg</tt> and <tt>.png</tt></li>
--   </ul>
jobAlbumArt :: JobAlbumArt

-- | A policy that determines how Elastic Transcoder handles the existence
--   of multiple album artwork files. * <tt>Replace:</tt> The specified
--   album art replaces any existing album art. * <tt>Prepend:</tt> The
--   specified album art is placed in front of any existing album art. *
--   <tt>Append:</tt> The specified album art is placed after any existing
--   album art. * <tt>Fallback:</tt> If the original input file contains
--   artwork, Elastic Transcoder uses that artwork for the output. If the
--   original input does not contain artwork, Elastic Transcoder uses the
--   specified album art file.
jaaMergePolicy :: Lens' JobAlbumArt (Maybe Text)

-- | The file to be used as album art. There can be multiple artworks
--   associated with an audio file, to a maximum of 20. Valid formats are
--   <tt>.jpg</tt> and <tt>.png</tt>
jaaArtwork :: Lens' JobAlbumArt [Artwork]

-- | Information about the file that you're transcoding.
--   
--   <i>See:</i> <a>jobInput</a> smart constructor.
data JobInput

-- | Creates a value of <a>JobInput</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jiFrameRate</a> - The frame rate of the input file. If you want
--   Elastic Transcoder to automatically detect the frame rate of the input
--   file, specify <tt>auto</tt> . If you want to specify the frame rate
--   for the input file, enter one of the following values: <tt>10</tt> ,
--   <tt>15</tt> , <tt>23.97</tt> , <tt>24</tt> , <tt>25</tt> ,
--   <tt>29.97</tt> , <tt>30</tt> , <tt>60</tt> If you specify a value
--   other than <tt>auto</tt> , Elastic Transcoder disables automatic
--   detection of the frame rate.</li>
--   <li><a>jiResolution</a> - This value must be <tt>auto</tt> , which
--   causes Elastic Transcoder to automatically detect the resolution of
--   the input file.</li>
--   <li><a>jiAspectRatio</a> - The aspect ratio of the input file. If you
--   want Elastic Transcoder to automatically detect the aspect ratio of
--   the input file, specify <tt>auto</tt> . If you want to specify the
--   aspect ratio for the output file, enter one of the following values:
--   <tt>1:1</tt> , <tt>4:3</tt> , <tt>3:2</tt> , <tt>16:9</tt> If you
--   specify a value other than <tt>auto</tt> , Elastic Transcoder disables
--   automatic detection of the aspect ratio.</li>
--   <li><a>jiTimeSpan</a> - Settings for clipping an input. Each input can
--   have different clip settings.</li>
--   <li><a>jiEncryption</a> - The encryption settings, if any, that are
--   used for decrypting your input files. If your input file is encrypted,
--   you must specify the mode that Elastic Transcoder uses to decrypt your
--   file.</li>
--   <li><a>jiKey</a> - The name of the file to transcode. Elsewhere in the
--   body of the JSON block is the the ID of the pipeline to use for
--   processing the job. The <tt>InputBucket</tt> object in that pipeline
--   tells Elastic Transcoder which Amazon S3 bucket to get the file from.
--   If the file name includes a prefix, such as
--   <tt>cooking/lasagna.mpg</tt> , include the prefix in the key. If the
--   file isn't in the specified bucket, Elastic Transcoder returns an
--   error.</li>
--   <li><a>jiDetectedProperties</a> - The detected properties of the input
--   file.</li>
--   <li><a>jiContainer</a> - The container type for the input file. If you
--   want Elastic Transcoder to automatically detect the container type of
--   the input file, specify <tt>auto</tt> . If you want to specify the
--   container type for the input file, enter one of the following values:
--   <tt>3gp</tt> , <tt>aac</tt> , <tt>asf</tt> , <tt>avi</tt> ,
--   <tt>divx</tt> , <tt>flv</tt> , <tt>m4a</tt> , <tt>mkv</tt> ,
--   <tt>mov</tt> , <tt>mp3</tt> , <tt>mp4</tt> , <tt>mpeg</tt> ,
--   <tt>mpeg-ps</tt> , <tt>mpeg-ts</tt> , <tt>mxf</tt> , <tt>ogg</tt> ,
--   <tt>vob</tt> , <tt>wav</tt> , <tt>webm</tt></li>
--   <li><a>jiInterlaced</a> - Whether the input file is interlaced. If you
--   want Elastic Transcoder to automatically detect whether the input file
--   is interlaced, specify <tt>auto</tt> . If you want to specify whether
--   the input file is interlaced, enter one of the following values:
--   <tt>true</tt> , <tt>false</tt> If you specify a value other than
--   <tt>auto</tt> , Elastic Transcoder disables automatic detection of
--   interlacing.</li>
--   <li><a>jiInputCaptions</a> - You can configure Elastic Transcoder to
--   transcode captions, or subtitles, from one format to another. All
--   captions must be in UTF-8. Elastic Transcoder supports two types of
--   captions: * <b>Embedded:</b> Embedded captions are included in the
--   same file as the audio and video. Elastic Transcoder supports only one
--   embedded caption per language, to a maximum of 300 embedded captions
--   per file. Valid input values include: <tt>CEA-608 (EIA-608</tt> ,
--   first non-empty channel only), <tt>CEA-708 (EIA-708</tt> , first
--   non-empty channel only), and <tt>mov-text</tt> Valid outputs include:
--   <tt>mov-text</tt> Elastic Transcoder supports a maximum of one
--   embedded format per output. * <b>Sidecar:</b> Sidecar captions are
--   kept in a separate metadata file from the audio and video data.
--   Sidecar captions require a player that is capable of understanding the
--   relationship between the video file and the sidecar file. Elastic
--   Transcoder supports only one sidecar caption per language, to a
--   maximum of 20 sidecar captions per file. Valid input values include:
--   <tt>dfxp</tt> (first div element only), <tt>ebu-tt</tt> , <tt>scc</tt>
--   , <tt>smpt</tt> , <tt>srt</tt> , <tt>ttml</tt> (first div element
--   only), and <tt>webvtt</tt> Valid outputs include: <tt>dfxp</tt> (first
--   div element only), <tt>scc</tt> , <tt>srt</tt> , and <tt>webvtt</tt> .
--   If you want ttml or smpte-tt compatible captions, specify dfxp as your
--   output format. Elastic Transcoder does not support OCR (Optical
--   Character Recognition), does not accept pictures as a valid input for
--   captions, and is not available for audio-only transcoding. Elastic
--   Transcoder does not preserve text formatting (for example, italics)
--   during the transcoding process. To remove captions or leave the
--   captions empty, set <tt>Captions</tt> to null. To pass through
--   existing captions unchanged, set the <tt>MergePolicy</tt> to
--   <tt>MergeRetain</tt> , and pass in a null <tt>CaptionSources</tt>
--   array. For more information on embedded files, see the Subtitles
--   Wikipedia page. For more information on sidecar files, see the
--   Extensible Metadata Platform and Sidecar file Wikipedia pages.</li>
--   </ul>
jobInput :: JobInput

-- | The frame rate of the input file. If you want Elastic Transcoder to
--   automatically detect the frame rate of the input file, specify
--   <tt>auto</tt> . If you want to specify the frame rate for the input
--   file, enter one of the following values: <tt>10</tt> , <tt>15</tt> ,
--   <tt>23.97</tt> , <tt>24</tt> , <tt>25</tt> , <tt>29.97</tt> ,
--   <tt>30</tt> , <tt>60</tt> If you specify a value other than
--   <tt>auto</tt> , Elastic Transcoder disables automatic detection of the
--   frame rate.
jiFrameRate :: Lens' JobInput (Maybe Text)

-- | This value must be <tt>auto</tt> , which causes Elastic Transcoder to
--   automatically detect the resolution of the input file.
jiResolution :: Lens' JobInput (Maybe Text)

-- | The aspect ratio of the input file. If you want Elastic Transcoder to
--   automatically detect the aspect ratio of the input file, specify
--   <tt>auto</tt> . If you want to specify the aspect ratio for the output
--   file, enter one of the following values: <tt>1:1</tt> , <tt>4:3</tt> ,
--   <tt>3:2</tt> , <tt>16:9</tt> If you specify a value other than
--   <tt>auto</tt> , Elastic Transcoder disables automatic detection of the
--   aspect ratio.
jiAspectRatio :: Lens' JobInput (Maybe Text)

-- | Settings for clipping an input. Each input can have different clip
--   settings.
jiTimeSpan :: Lens' JobInput (Maybe TimeSpan)

-- | The encryption settings, if any, that are used for decrypting your
--   input files. If your input file is encrypted, you must specify the
--   mode that Elastic Transcoder uses to decrypt your file.
jiEncryption :: Lens' JobInput (Maybe Encryption)

-- | The name of the file to transcode. Elsewhere in the body of the JSON
--   block is the the ID of the pipeline to use for processing the job. The
--   <tt>InputBucket</tt> object in that pipeline tells Elastic Transcoder
--   which Amazon S3 bucket to get the file from. If the file name includes
--   a prefix, such as <tt>cooking/lasagna.mpg</tt> , include the prefix in
--   the key. If the file isn't in the specified bucket, Elastic Transcoder
--   returns an error.
jiKey :: Lens' JobInput (Maybe Text)

-- | The detected properties of the input file.
jiDetectedProperties :: Lens' JobInput (Maybe DetectedProperties)

-- | The container type for the input file. If you want Elastic Transcoder
--   to automatically detect the container type of the input file, specify
--   <tt>auto</tt> . If you want to specify the container type for the
--   input file, enter one of the following values: <tt>3gp</tt> ,
--   <tt>aac</tt> , <tt>asf</tt> , <tt>avi</tt> , <tt>divx</tt> ,
--   <tt>flv</tt> , <tt>m4a</tt> , <tt>mkv</tt> , <tt>mov</tt> ,
--   <tt>mp3</tt> , <tt>mp4</tt> , <tt>mpeg</tt> , <tt>mpeg-ps</tt> ,
--   <tt>mpeg-ts</tt> , <tt>mxf</tt> , <tt>ogg</tt> , <tt>vob</tt> ,
--   <tt>wav</tt> , <tt>webm</tt>
jiContainer :: Lens' JobInput (Maybe Text)

-- | Whether the input file is interlaced. If you want Elastic Transcoder
--   to automatically detect whether the input file is interlaced, specify
--   <tt>auto</tt> . If you want to specify whether the input file is
--   interlaced, enter one of the following values: <tt>true</tt> ,
--   <tt>false</tt> If you specify a value other than <tt>auto</tt> ,
--   Elastic Transcoder disables automatic detection of interlacing.
jiInterlaced :: Lens' JobInput (Maybe Text)

-- | You can configure Elastic Transcoder to transcode captions, or
--   subtitles, from one format to another. All captions must be in UTF-8.
--   Elastic Transcoder supports two types of captions: * <b>Embedded:</b>
--   Embedded captions are included in the same file as the audio and
--   video. Elastic Transcoder supports only one embedded caption per
--   language, to a maximum of 300 embedded captions per file. Valid input
--   values include: <tt>CEA-608 (EIA-608</tt> , first non-empty channel
--   only), <tt>CEA-708 (EIA-708</tt> , first non-empty channel only), and
--   <tt>mov-text</tt> Valid outputs include: <tt>mov-text</tt> Elastic
--   Transcoder supports a maximum of one embedded format per output. *
--   <b>Sidecar:</b> Sidecar captions are kept in a separate metadata file
--   from the audio and video data. Sidecar captions require a player that
--   is capable of understanding the relationship between the video file
--   and the sidecar file. Elastic Transcoder supports only one sidecar
--   caption per language, to a maximum of 20 sidecar captions per file.
--   Valid input values include: <tt>dfxp</tt> (first div element only),
--   <tt>ebu-tt</tt> , <tt>scc</tt> , <tt>smpt</tt> , <tt>srt</tt> ,
--   <tt>ttml</tt> (first div element only), and <tt>webvtt</tt> Valid
--   outputs include: <tt>dfxp</tt> (first div element only), <tt>scc</tt>
--   , <tt>srt</tt> , and <tt>webvtt</tt> . If you want ttml or smpte-tt
--   compatible captions, specify dfxp as your output format. Elastic
--   Transcoder does not support OCR (Optical Character Recognition), does
--   not accept pictures as a valid input for captions, and is not
--   available for audio-only transcoding. Elastic Transcoder does not
--   preserve text formatting (for example, italics) during the transcoding
--   process. To remove captions or leave the captions empty, set
--   <tt>Captions</tt> to null. To pass through existing captions
--   unchanged, set the <tt>MergePolicy</tt> to <tt>MergeRetain</tt> , and
--   pass in a null <tt>CaptionSources</tt> array. For more information on
--   embedded files, see the Subtitles Wikipedia page. For more information
--   on sidecar files, see the Extensible Metadata Platform and Sidecar
--   file Wikipedia pages.
jiInputCaptions :: Lens' JobInput (Maybe InputCaptions)

-- | <i>Important:</i> Outputs recommended instead.
--   
--   If you specified one output for a job, information about that output.
--   If you specified multiple outputs for a job, the <tt>Output</tt>
--   object lists information about the first output. This duplicates the
--   information that is listed for the first output in the
--   <tt>Outputs</tt> object.
--   
--   <i>See:</i> <a>jobOutput</a> smart constructor.
data JobOutput

-- | Creates a value of <a>JobOutput</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>joAppliedColorSpaceConversion</a> - If Elastic Transcoder used
--   a preset with a <tt>ColorSpaceConversionMode</tt> to transcode the
--   output file, the <tt>AppliedColorSpaceConversion</tt> parameter shows
--   the conversion used. If no <tt>ColorSpaceConversionMode</tt> was
--   defined in the preset, this parameter is not be included in the job
--   response.</li>
--   <li><a>joThumbnailPattern</a> - Whether you want Elastic Transcoder to
--   create thumbnails for your videos and, if so, how you want Elastic
--   Transcoder to name the files. If you don't want Elastic Transcoder to
--   create thumbnails, specify "". If you do want Elastic Transcoder to
--   create thumbnails, specify the information that you want to include in
--   the file name for each thumbnail. You can specify the following values
--   in any sequence: * <b><tt>{count}</tt> (Required)</b> : If you want to
--   create thumbnails, you must include <tt>{count}</tt> in the
--   <tt>ThumbnailPattern</tt> object. Wherever you specify
--   <tt>{count}</tt> , Elastic Transcoder adds a five-digit sequence
--   number (beginning with <b>00001</b> ) to thumbnail file names. The
--   number indicates where a given thumbnail appears in the sequence of
--   thumbnails for a transcoded file. <i>Important:</i> If you specify a
--   literal value and/or <tt>{resolution}</tt> but you omit
--   <tt>{count}</tt> , Elastic Transcoder returns a validation error and
--   does not create the job. * <b>Literal values (Optional)</b> : You can
--   specify literal values anywhere in the <tt>ThumbnailPattern</tt>
--   object. For example, you can include them as a file name prefix or as
--   a delimiter between <tt>{resolution}</tt> and <tt>{count}</tt> . *
--   <b><tt>{resolution}</tt> (Optional)</b> : If you want Elastic
--   Transcoder to include the resolution in the file name, include
--   <tt>{resolution}</tt> in the <tt>ThumbnailPattern</tt> object. When
--   creating thumbnails, Elastic Transcoder automatically saves the files
--   in the format (.jpg or .png) that appears in the preset that you
--   specified in the <tt>PresetID</tt> value of <tt>CreateJobOutput</tt> .
--   Elastic Transcoder also appends the applicable file name
--   extension.</li>
--   <li><a>joStatus</a> - The status of one output in a job. If you
--   specified only one output for the job, <tt>Outputs:Status</tt> is
--   always the same as <tt>Job:Status</tt> . If you specified more than
--   one output: * <tt>Job:Status</tt> and <tt>Outputs:Status</tt> for all
--   of the outputs is Submitted until Elastic Transcoder starts to process
--   the first output. * When Elastic Transcoder starts to process the
--   first output, <tt>Outputs:Status</tt> for that output and
--   <tt>Job:Status</tt> both change to Progressing. For each output, the
--   value of <tt>Outputs:Status</tt> remains Submitted until Elastic
--   Transcoder starts to process the output. * Job:Status remains
--   Progressing until all of the outputs reach a terminal status, either
--   Complete or Error. * When all of the outputs reach a terminal status,
--   <tt>Job:Status</tt> changes to Complete only if
--   <tt>Outputs:Status</tt> for all of the outputs is <tt>Complete</tt> .
--   If <tt>Outputs:Status</tt> for one or more outputs is <tt>Error</tt> ,
--   the terminal status for <tt>Job:Status</tt> is also <tt>Error</tt> .
--   The value of <tt>Status</tt> is one of the following:
--   <tt>Submitted</tt> , <tt>Progressing</tt> , <tt>Complete</tt> ,
--   <tt>Canceled</tt> , or <tt>Error</tt> .</li>
--   <li><a>joHeight</a> - Height of the output file, in pixels.</li>
--   <li><a>joFrameRate</a> - Frame rate of the output file, in frames per
--   second.</li>
--   <li><a>joCaptions</a> - You can configure Elastic Transcoder to
--   transcode captions, or subtitles, from one format to another. All
--   captions must be in UTF-8. Elastic Transcoder supports two types of
--   captions: * <b>Embedded:</b> Embedded captions are included in the
--   same file as the audio and video. Elastic Transcoder supports only one
--   embedded caption per language, to a maximum of 300 embedded captions
--   per file. Valid input values include: <tt>CEA-608 (EIA-608</tt> ,
--   first non-empty channel only), <tt>CEA-708 (EIA-708</tt> , first
--   non-empty channel only), and <tt>mov-text</tt> Valid outputs include:
--   <tt>mov-text</tt> Elastic Transcoder supports a maximum of one
--   embedded format per output. * <b>Sidecar:</b> Sidecar captions are
--   kept in a separate metadata file from the audio and video data.
--   Sidecar captions require a player that is capable of understanding the
--   relationship between the video file and the sidecar file. Elastic
--   Transcoder supports only one sidecar caption per language, to a
--   maximum of 20 sidecar captions per file. Valid input values include:
--   <tt>dfxp</tt> (first div element only), <tt>ebu-tt</tt> , <tt>scc</tt>
--   , <tt>smpt</tt> , <tt>srt</tt> , <tt>ttml</tt> (first div element
--   only), and <tt>webvtt</tt> Valid outputs include: <tt>dfxp</tt> (first
--   div element only), <tt>scc</tt> , <tt>srt</tt> , and <tt>webvtt</tt> .
--   If you want ttml or smpte-tt compatible captions, specify dfxp as your
--   output format. Elastic Transcoder does not support OCR (Optical
--   Character Recognition), does not accept pictures as a valid input for
--   captions, and is not available for audio-only transcoding. Elastic
--   Transcoder does not preserve text formatting (for example, italics)
--   during the transcoding process. To remove captions or leave the
--   captions empty, set <tt>Captions</tt> to null. To pass through
--   existing captions unchanged, set the <tt>MergePolicy</tt> to
--   <tt>MergeRetain</tt> , and pass in a null <tt>CaptionSources</tt>
--   array. For more information on embedded files, see the Subtitles
--   Wikipedia page. For more information on sidecar files, see the
--   Extensible Metadata Platform and Sidecar file Wikipedia pages.</li>
--   <li><a>joPresetId</a> - The value of the <tt>Id</tt> object for the
--   preset that you want to use for this job. The preset determines the
--   audio, video, and thumbnail settings that Elastic Transcoder uses for
--   transcoding. To use a preset that you created, specify the preset ID
--   that Elastic Transcoder returned in the response when you created the
--   preset. You can also use the Elastic Transcoder system presets, which
--   you can get with <tt>ListPresets</tt> .</li>
--   <li><a>joComposition</a> - You can create an output file that contains
--   an excerpt from the input file. This excerpt, called a clip, can come
--   from the beginning, middle, or end of the file. The Composition object
--   contains settings for the clips that make up an output file. For the
--   current release, you can only specify settings for a single clip per
--   output file. The Composition object cannot be null.</li>
--   <li><a>joAlbumArt</a> - The album art to be associated with the output
--   file, if any.</li>
--   <li><a>joFileSize</a> - File size of the output file, in bytes.</li>
--   <li><a>joWatermarks</a> - Information about the watermarks that you
--   want Elastic Transcoder to add to the video during transcoding. You
--   can specify up to four watermarks for each output. Settings for each
--   watermark must be defined in the preset that you specify in
--   <tt>Preset</tt> for the current output. Watermarks are added to the
--   output video in the sequence in which you list them in the job
--   output—the first watermark in the list is added to the output video
--   first, the second watermark in the list is added next, and so on. As a
--   result, if the settings in a preset cause Elastic Transcoder to place
--   all watermarks in the same location, the second watermark that you add
--   covers the first one, the third one covers the second, and the fourth
--   one covers the third.</li>
--   <li><a>joWidth</a> - Specifies the width of the output file in
--   pixels.</li>
--   <li><a>joEncryption</a> - The encryption settings, if any, that you
--   want Elastic Transcoder to apply to your output files. If you choose
--   to use encryption, you must specify a mode to use. If you choose not
--   to use encryption, Elastic Transcoder writes an unencrypted file to
--   your Amazon S3 bucket.</li>
--   <li><a>joKey</a> - The name to assign to the transcoded file. Elastic
--   Transcoder saves the file in the Amazon S3 bucket specified by the
--   <tt>OutputBucket</tt> object in the pipeline that is specified by the
--   pipeline ID.</li>
--   <li><a>joStatusDetail</a> - Information that further explains
--   <tt>Status</tt> .</li>
--   <li><a>joId</a> - A sequential counter, starting with 1, that
--   identifies an output among the outputs from the current job. In the
--   Output syntax, this value is always 1.</li>
--   <li><a>joSegmentDuration</a> - <i>Important:</i> (Outputs in
--   Fragmented MP4 or MPEG-TS format only. If you specify a preset in
--   <tt>PresetId</tt> for which the value of <tt>Container</tt> is
--   <tt>fmp4</tt> (Fragmented MP4) or <tt>ts</tt> (MPEG-TS),
--   <tt>SegmentDuration</tt> is the target maximum duration of each
--   segment in seconds. For <tt>HLSv3</tt> format playlists, each media
--   segment is stored in a separate <tt>.ts</tt> file. For <tt>HLSv4</tt>
--   , <tt>MPEG-DASH</tt> , and <tt>Smooth</tt> playlists, all media
--   segments for an output are stored in a single file. Each segment is
--   approximately the length of the <tt>SegmentDuration</tt> , though
--   individual segments might be shorter or longer. The range of valid
--   values is 1 to 60 seconds. If the duration of the video is not evenly
--   divisible by <tt>SegmentDuration</tt> , the duration of the last
--   segment is the remainder of total length/SegmentDuration. Elastic
--   Transcoder creates an output-specific playlist for each output
--   <tt>HLS</tt> output that you specify in OutputKeys. To add an output
--   to the master playlist for this job, include it in the
--   <tt>OutputKeys</tt> of the associated playlist.</li>
--   <li><a>joDurationMillis</a> - Duration of the output file, in
--   milliseconds.</li>
--   <li><a>joThumbnailEncryption</a> - The encryption settings, if any,
--   that you want Elastic Transcoder to apply to your thumbnail.</li>
--   <li><a>joDuration</a> - Duration of the output file, in seconds.</li>
--   <li><a>joRotate</a> - The number of degrees clockwise by which you
--   want Elastic Transcoder to rotate the output relative to the input.
--   Enter one of the following values: <tt>auto</tt> , <tt>0</tt> ,
--   <tt>90</tt> , <tt>180</tt> , <tt>270</tt> The value <tt>auto</tt>
--   generally works only if the file that you're transcoding contains
--   rotation metadata.</li>
--   </ul>
jobOutput :: JobOutput

-- | If Elastic Transcoder used a preset with a
--   <tt>ColorSpaceConversionMode</tt> to transcode the output file, the
--   <tt>AppliedColorSpaceConversion</tt> parameter shows the conversion
--   used. If no <tt>ColorSpaceConversionMode</tt> was defined in the
--   preset, this parameter is not be included in the job response.
joAppliedColorSpaceConversion :: Lens' JobOutput (Maybe Text)

-- | Whether you want Elastic Transcoder to create thumbnails for your
--   videos and, if so, how you want Elastic Transcoder to name the files.
--   If you don't want Elastic Transcoder to create thumbnails, specify "".
--   If you do want Elastic Transcoder to create thumbnails, specify the
--   information that you want to include in the file name for each
--   thumbnail. You can specify the following values in any sequence: *
--   <b><tt>{count}</tt> (Required)</b> : If you want to create thumbnails,
--   you must include <tt>{count}</tt> in the <tt>ThumbnailPattern</tt>
--   object. Wherever you specify <tt>{count}</tt> , Elastic Transcoder
--   adds a five-digit sequence number (beginning with <b>00001</b> ) to
--   thumbnail file names. The number indicates where a given thumbnail
--   appears in the sequence of thumbnails for a transcoded file.
--   <i>Important:</i> If you specify a literal value and/or
--   <tt>{resolution}</tt> but you omit <tt>{count}</tt> , Elastic
--   Transcoder returns a validation error and does not create the job. *
--   <b>Literal values (Optional)</b> : You can specify literal values
--   anywhere in the <tt>ThumbnailPattern</tt> object. For example, you can
--   include them as a file name prefix or as a delimiter between
--   <tt>{resolution}</tt> and <tt>{count}</tt> . *
--   <b><tt>{resolution}</tt> (Optional)</b> : If you want Elastic
--   Transcoder to include the resolution in the file name, include
--   <tt>{resolution}</tt> in the <tt>ThumbnailPattern</tt> object. When
--   creating thumbnails, Elastic Transcoder automatically saves the files
--   in the format (.jpg or .png) that appears in the preset that you
--   specified in the <tt>PresetID</tt> value of <tt>CreateJobOutput</tt> .
--   Elastic Transcoder also appends the applicable file name extension.
joThumbnailPattern :: Lens' JobOutput (Maybe Text)

-- | The status of one output in a job. If you specified only one output
--   for the job, <tt>Outputs:Status</tt> is always the same as
--   <tt>Job:Status</tt> . If you specified more than one output: *
--   <tt>Job:Status</tt> and <tt>Outputs:Status</tt> for all of the outputs
--   is Submitted until Elastic Transcoder starts to process the first
--   output. * When Elastic Transcoder starts to process the first output,
--   <tt>Outputs:Status</tt> for that output and <tt>Job:Status</tt> both
--   change to Progressing. For each output, the value of
--   <tt>Outputs:Status</tt> remains Submitted until Elastic Transcoder
--   starts to process the output. * Job:Status remains Progressing until
--   all of the outputs reach a terminal status, either Complete or Error.
--   * When all of the outputs reach a terminal status, <tt>Job:Status</tt>
--   changes to Complete only if <tt>Outputs:Status</tt> for all of the
--   outputs is <tt>Complete</tt> . If <tt>Outputs:Status</tt> for one or
--   more outputs is <tt>Error</tt> , the terminal status for
--   <tt>Job:Status</tt> is also <tt>Error</tt> . The value of
--   <tt>Status</tt> is one of the following: <tt>Submitted</tt> ,
--   <tt>Progressing</tt> , <tt>Complete</tt> , <tt>Canceled</tt> , or
--   <tt>Error</tt> .
joStatus :: Lens' JobOutput (Maybe Text)

-- | Height of the output file, in pixels.
joHeight :: Lens' JobOutput (Maybe Int)

-- | Frame rate of the output file, in frames per second.
joFrameRate :: Lens' JobOutput (Maybe Text)

-- | You can configure Elastic Transcoder to transcode captions, or
--   subtitles, from one format to another. All captions must be in UTF-8.
--   Elastic Transcoder supports two types of captions: * <b>Embedded:</b>
--   Embedded captions are included in the same file as the audio and
--   video. Elastic Transcoder supports only one embedded caption per
--   language, to a maximum of 300 embedded captions per file. Valid input
--   values include: <tt>CEA-608 (EIA-608</tt> , first non-empty channel
--   only), <tt>CEA-708 (EIA-708</tt> , first non-empty channel only), and
--   <tt>mov-text</tt> Valid outputs include: <tt>mov-text</tt> Elastic
--   Transcoder supports a maximum of one embedded format per output. *
--   <b>Sidecar:</b> Sidecar captions are kept in a separate metadata file
--   from the audio and video data. Sidecar captions require a player that
--   is capable of understanding the relationship between the video file
--   and the sidecar file. Elastic Transcoder supports only one sidecar
--   caption per language, to a maximum of 20 sidecar captions per file.
--   Valid input values include: <tt>dfxp</tt> (first div element only),
--   <tt>ebu-tt</tt> , <tt>scc</tt> , <tt>smpt</tt> , <tt>srt</tt> ,
--   <tt>ttml</tt> (first div element only), and <tt>webvtt</tt> Valid
--   outputs include: <tt>dfxp</tt> (first div element only), <tt>scc</tt>
--   , <tt>srt</tt> , and <tt>webvtt</tt> . If you want ttml or smpte-tt
--   compatible captions, specify dfxp as your output format. Elastic
--   Transcoder does not support OCR (Optical Character Recognition), does
--   not accept pictures as a valid input for captions, and is not
--   available for audio-only transcoding. Elastic Transcoder does not
--   preserve text formatting (for example, italics) during the transcoding
--   process. To remove captions or leave the captions empty, set
--   <tt>Captions</tt> to null. To pass through existing captions
--   unchanged, set the <tt>MergePolicy</tt> to <tt>MergeRetain</tt> , and
--   pass in a null <tt>CaptionSources</tt> array. For more information on
--   embedded files, see the Subtitles Wikipedia page. For more information
--   on sidecar files, see the Extensible Metadata Platform and Sidecar
--   file Wikipedia pages.
joCaptions :: Lens' JobOutput (Maybe Captions)

-- | The value of the <tt>Id</tt> object for the preset that you want to
--   use for this job. The preset determines the audio, video, and
--   thumbnail settings that Elastic Transcoder uses for transcoding. To
--   use a preset that you created, specify the preset ID that Elastic
--   Transcoder returned in the response when you created the preset. You
--   can also use the Elastic Transcoder system presets, which you can get
--   with <tt>ListPresets</tt> .
joPresetId :: Lens' JobOutput (Maybe Text)

-- | You can create an output file that contains an excerpt from the input
--   file. This excerpt, called a clip, can come from the beginning,
--   middle, or end of the file. The Composition object contains settings
--   for the clips that make up an output file. For the current release,
--   you can only specify settings for a single clip per output file. The
--   Composition object cannot be null.
joComposition :: Lens' JobOutput [Clip]

-- | The album art to be associated with the output file, if any.
joAlbumArt :: Lens' JobOutput (Maybe JobAlbumArt)

-- | File size of the output file, in bytes.
joFileSize :: Lens' JobOutput (Maybe Integer)

-- | Information about the watermarks that you want Elastic Transcoder to
--   add to the video during transcoding. You can specify up to four
--   watermarks for each output. Settings for each watermark must be
--   defined in the preset that you specify in <tt>Preset</tt> for the
--   current output. Watermarks are added to the output video in the
--   sequence in which you list them in the job output—the first watermark
--   in the list is added to the output video first, the second watermark
--   in the list is added next, and so on. As a result, if the settings in
--   a preset cause Elastic Transcoder to place all watermarks in the same
--   location, the second watermark that you add covers the first one, the
--   third one covers the second, and the fourth one covers the third.
joWatermarks :: Lens' JobOutput [JobWatermark]

-- | Specifies the width of the output file in pixels.
joWidth :: Lens' JobOutput (Maybe Int)

-- | The encryption settings, if any, that you want Elastic Transcoder to
--   apply to your output files. If you choose to use encryption, you must
--   specify a mode to use. If you choose not to use encryption, Elastic
--   Transcoder writes an unencrypted file to your Amazon S3 bucket.
joEncryption :: Lens' JobOutput (Maybe Encryption)

-- | The name to assign to the transcoded file. Elastic Transcoder saves
--   the file in the Amazon S3 bucket specified by the
--   <tt>OutputBucket</tt> object in the pipeline that is specified by the
--   pipeline ID.
joKey :: Lens' JobOutput (Maybe Text)

-- | Information that further explains <tt>Status</tt> .
joStatusDetail :: Lens' JobOutput (Maybe Text)

-- | A sequential counter, starting with 1, that identifies an output among
--   the outputs from the current job. In the Output syntax, this value is
--   always 1.
joId :: Lens' JobOutput (Maybe Text)

-- | <i>Important:</i> (Outputs in Fragmented MP4 or MPEG-TS format only.
--   If you specify a preset in <tt>PresetId</tt> for which the value of
--   <tt>Container</tt> is <tt>fmp4</tt> (Fragmented MP4) or <tt>ts</tt>
--   (MPEG-TS), <tt>SegmentDuration</tt> is the target maximum duration of
--   each segment in seconds. For <tt>HLSv3</tt> format playlists, each
--   media segment is stored in a separate <tt>.ts</tt> file. For
--   <tt>HLSv4</tt> , <tt>MPEG-DASH</tt> , and <tt>Smooth</tt> playlists,
--   all media segments for an output are stored in a single file. Each
--   segment is approximately the length of the <tt>SegmentDuration</tt> ,
--   though individual segments might be shorter or longer. The range of
--   valid values is 1 to 60 seconds. If the duration of the video is not
--   evenly divisible by <tt>SegmentDuration</tt> , the duration of the
--   last segment is the remainder of total length/SegmentDuration. Elastic
--   Transcoder creates an output-specific playlist for each output
--   <tt>HLS</tt> output that you specify in OutputKeys. To add an output
--   to the master playlist for this job, include it in the
--   <tt>OutputKeys</tt> of the associated playlist.
joSegmentDuration :: Lens' JobOutput (Maybe Text)

-- | Duration of the output file, in milliseconds.
joDurationMillis :: Lens' JobOutput (Maybe Integer)

-- | The encryption settings, if any, that you want Elastic Transcoder to
--   apply to your thumbnail.
joThumbnailEncryption :: Lens' JobOutput (Maybe Encryption)

-- | Duration of the output file, in seconds.
joDuration :: Lens' JobOutput (Maybe Integer)

-- | The number of degrees clockwise by which you want Elastic Transcoder
--   to rotate the output relative to the input. Enter one of the following
--   values: <tt>auto</tt> , <tt>0</tt> , <tt>90</tt> , <tt>180</tt> ,
--   <tt>270</tt> The value <tt>auto</tt> generally works only if the file
--   that you're transcoding contains rotation metadata.
joRotate :: Lens' JobOutput (Maybe Text)

-- | Watermarks can be in .png or .jpg format. If you want to display a
--   watermark that is not rectangular, use the .png format, which supports
--   transparency.
--   
--   <i>See:</i> <a>jobWatermark</a> smart constructor.
data JobWatermark

-- | Creates a value of <a>JobWatermark</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jwPresetWatermarkId</a> - The ID of the watermark settings that
--   Elastic Transcoder uses to add watermarks to the video during
--   transcoding. The settings are in the preset specified by Preset for
--   the current output. In that preset, the value of Watermarks Id tells
--   Elastic Transcoder which settings to use.</li>
--   <li><a>jwInputKey</a> - The name of the .png or .jpg file that you
--   want to use for the watermark. To determine which Amazon S3 bucket
--   contains the specified file, Elastic Transcoder checks the pipeline
--   specified by <tt>Pipeline</tt> ; the <tt>Input Bucket</tt> object in
--   that pipeline identifies the bucket. If the file name includes a
--   prefix, for example, <b>logos/128x64.png</b> , include the prefix in
--   the key. If the file isn't in the specified bucket, Elastic Transcoder
--   returns an error.</li>
--   <li><a>jwEncryption</a> - The encryption settings, if any, that you
--   want Elastic Transcoder to apply to your watermarks.</li>
--   </ul>
jobWatermark :: JobWatermark

-- | The ID of the watermark settings that Elastic Transcoder uses to add
--   watermarks to the video during transcoding. The settings are in the
--   preset specified by Preset for the current output. In that preset, the
--   value of Watermarks Id tells Elastic Transcoder which settings to use.
jwPresetWatermarkId :: Lens' JobWatermark (Maybe Text)

-- | The name of the .png or .jpg file that you want to use for the
--   watermark. To determine which Amazon S3 bucket contains the specified
--   file, Elastic Transcoder checks the pipeline specified by
--   <tt>Pipeline</tt> ; the <tt>Input Bucket</tt> object in that pipeline
--   identifies the bucket. If the file name includes a prefix, for
--   example, <b>logos/128x64.png</b> , include the prefix in the key. If
--   the file isn't in the specified bucket, Elastic Transcoder returns an
--   error.
jwInputKey :: Lens' JobWatermark (Maybe Text)

-- | The encryption settings, if any, that you want Elastic Transcoder to
--   apply to your watermarks.
jwEncryption :: Lens' JobWatermark (Maybe Encryption)

-- | The Amazon Simple Notification Service (Amazon SNS) topic or topics to
--   notify in order to report job status.
--   
--   <i>Important:</i> To receive notifications, you must also subscribe to
--   the new topic in the Amazon SNS console.
--   
--   <i>See:</i> <a>notifications</a> smart constructor.
data Notifications

-- | Creates a value of <a>Notifications</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nError</a> - The Amazon SNS topic that you want to notify when
--   Elastic Transcoder encounters an error condition.</li>
--   <li><a>nWarning</a> - The Amazon SNS topic that you want to notify
--   when Elastic Transcoder encounters a warning condition.</li>
--   <li><a>nProgressing</a> - The Amazon Simple Notification Service
--   (Amazon SNS) topic that you want to notify when Elastic Transcoder has
--   started to process the job.</li>
--   <li><a>nCompleted</a> - The Amazon SNS topic that you want to notify
--   when Elastic Transcoder has finished processing the job.</li>
--   </ul>
notifications :: Notifications

-- | The Amazon SNS topic that you want to notify when Elastic Transcoder
--   encounters an error condition.
nError :: Lens' Notifications (Maybe Text)

-- | The Amazon SNS topic that you want to notify when Elastic Transcoder
--   encounters a warning condition.
nWarning :: Lens' Notifications (Maybe Text)

-- | The Amazon Simple Notification Service (Amazon SNS) topic that you
--   want to notify when Elastic Transcoder has started to process the job.
nProgressing :: Lens' Notifications (Maybe Text)

-- | The Amazon SNS topic that you want to notify when Elastic Transcoder
--   has finished processing the job.
nCompleted :: Lens' Notifications (Maybe Text)

-- | The <tt>Permission</tt> structure.
--   
--   <i>See:</i> <a>permission</a> smart constructor.
data Permission

-- | Creates a value of <a>Permission</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pAccess</a> - The permission that you want to give to the AWS
--   user that is listed in Grantee. Valid values include: * <tt>READ</tt>
--   : The grantee can read the thumbnails and metadata for thumbnails that
--   Elastic Transcoder adds to the Amazon S3 bucket. * <tt>READ_ACP</tt> :
--   The grantee can read the object ACL for thumbnails that Elastic
--   Transcoder adds to the Amazon S3 bucket. * <tt>WRITE_ACP</tt> : The
--   grantee can write the ACL for the thumbnails that Elastic Transcoder
--   adds to the Amazon S3 bucket. * <tt>FULL_CONTROL</tt> : The grantee
--   has READ, READ_ACP, and WRITE_ACP permissions for the thumbnails that
--   Elastic Transcoder adds to the Amazon S3 bucket.</li>
--   <li><a>pGranteeType</a> - The type of value that appears in the
--   Grantee object: * <tt>Canonical</tt> : Either the canonical user ID
--   for an AWS account or an origin access identity for an Amazon
--   CloudFront distribution. <i>Important:</i> A canonical user ID is not
--   the same as an AWS account number. * <tt>Email</tt> : The registered
--   email address of an AWS account. * <tt>Group</tt> : One of the
--   following predefined Amazon S3 groups: <tt>AllUsers</tt> ,
--   <tt>AuthenticatedUsers</tt> , or <tt>LogDelivery</tt> .</li>
--   <li><a>pGrantee</a> - The AWS user or group that you want to have
--   access to transcoded files and playlists. To identify the user or
--   group, you can specify the canonical user ID for an AWS account, an
--   origin access identity for a CloudFront distribution, the registered
--   email address of an AWS account, or a predefined Amazon S3 group.</li>
--   </ul>
permission :: Permission

-- | The permission that you want to give to the AWS user that is listed in
--   Grantee. Valid values include: * <tt>READ</tt> : The grantee can read
--   the thumbnails and metadata for thumbnails that Elastic Transcoder
--   adds to the Amazon S3 bucket. * <tt>READ_ACP</tt> : The grantee can
--   read the object ACL for thumbnails that Elastic Transcoder adds to the
--   Amazon S3 bucket. * <tt>WRITE_ACP</tt> : The grantee can write the ACL
--   for the thumbnails that Elastic Transcoder adds to the Amazon S3
--   bucket. * <tt>FULL_CONTROL</tt> : The grantee has READ, READ_ACP, and
--   WRITE_ACP permissions for the thumbnails that Elastic Transcoder adds
--   to the Amazon S3 bucket.
pAccess :: Lens' Permission [Text]

-- | The type of value that appears in the Grantee object: *
--   <tt>Canonical</tt> : Either the canonical user ID for an AWS account
--   or an origin access identity for an Amazon CloudFront distribution.
--   <i>Important:</i> A canonical user ID is not the same as an AWS
--   account number. * <tt>Email</tt> : The registered email address of an
--   AWS account. * <tt>Group</tt> : One of the following predefined Amazon
--   S3 groups: <tt>AllUsers</tt> , <tt>AuthenticatedUsers</tt> , or
--   <tt>LogDelivery</tt> .
pGranteeType :: Lens' Permission (Maybe Text)

-- | The AWS user or group that you want to have access to transcoded files
--   and playlists. To identify the user or group, you can specify the
--   canonical user ID for an AWS account, an origin access identity for a
--   CloudFront distribution, the registered email address of an AWS
--   account, or a predefined Amazon S3 group.
pGrantee :: Lens' Permission (Maybe Text)

-- | The pipeline (queue) that is used to manage jobs.
--   
--   <i>See:</i> <a>pipeline</a> smart constructor.
data Pipeline

-- | Creates a value of <a>Pipeline</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pipStatus</a> - The current status of the pipeline: *
--   <tt>Active</tt> : The pipeline is processing jobs. * <tt>Paused</tt> :
--   The pipeline is not currently processing jobs.</li>
--   <li><a>pipARN</a> - The Amazon Resource Name (ARN) for the
--   pipeline.</li>
--   <li><a>pipInputBucket</a> - The Amazon S3 bucket from which Elastic
--   Transcoder gets media files for transcoding and the graphics files, if
--   any, that you want to use for watermarks.</li>
--   <li><a>pipContentConfig</a> - Information about the Amazon S3 bucket
--   in which you want Elastic Transcoder to save transcoded files and
--   playlists. Either you specify both <tt>ContentConfig</tt> and
--   <tt>ThumbnailConfig</tt> , or you specify <tt>OutputBucket</tt> . *
--   <b>Bucket</b> : The Amazon S3 bucket in which you want Elastic
--   Transcoder to save transcoded files and playlists. *
--   <b>Permissions</b> : A list of the users and/or predefined Amazon S3
--   groups you want to have access to transcoded files and playlists, and
--   the type of access that you want them to have. * GranteeType: The type
--   of value that appears in the <tt>Grantee</tt> object: *
--   <tt>Canonical</tt> : Either the canonical user ID for an AWS account
--   or an origin access identity for an Amazon CloudFront distribution. *
--   <tt>Email</tt> : The registered email address of an AWS account. *
--   <tt>Group</tt> : One of the following predefined Amazon S3 groups:
--   <tt>AllUsers</tt> , <tt>AuthenticatedUsers</tt> , or
--   <tt>LogDelivery</tt> . * <tt>Grantee</tt> : The AWS user or group that
--   you want to have access to transcoded files and playlists. *
--   <tt>Access</tt> : The permission that you want to give to the AWS user
--   that is listed in <tt>Grantee</tt> . Valid values include: *
--   <tt>READ</tt> : The grantee can read the objects and metadata for
--   objects that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>READ_ACP</tt> : The grantee can read the object ACL for objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has <tt>READ</tt> ,
--   <tt>READ_ACP</tt> , and <tt>WRITE_ACP</tt> permissions for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <b>StorageClass</b> : The Amazon S3 storage class, Standard or
--   ReducedRedundancy, that you want Elastic Transcoder to assign to the
--   video files and playlists that it stores in your Amazon S3
--   bucket.</li>
--   <li><a>pipOutputBucket</a> - The Amazon S3 bucket in which you want
--   Elastic Transcoder to save transcoded files, thumbnails, and
--   playlists. Either you specify this value, or you specify both
--   <tt>ContentConfig</tt> and <tt>ThumbnailConfig</tt> .</li>
--   <li><a>pipRole</a> - The IAM Amazon Resource Name (ARN) for the role
--   that Elastic Transcoder uses to transcode jobs for this pipeline.</li>
--   <li><a>pipName</a> - The name of the pipeline. We recommend that the
--   name be unique within the AWS account, but uniqueness is not enforced.
--   Constraints: Maximum 40 characters</li>
--   <li><a>pipAWSKMSKeyARN</a> - The AWS Key Management Service (AWS KMS)
--   key that you want to use with this pipeline. If you use either
--   <tt>S3</tt> or <tt>S3-AWS-KMS</tt> as your <tt>Encryption:Mode</tt> ,
--   you don't need to provide a key with your job because a default key,
--   known as an AWS-KMS key, is created for you automatically. You need to
--   provide an AWS-KMS key only if you want to use a non-default AWS-KMS
--   key, or if you are using an <tt>Encryption:Mode</tt> of
--   <tt>AES-PKCS7</tt> , <tt>AES-CTR</tt> , or <tt>AES-GCM</tt> .</li>
--   <li><a>pipId</a> - The identifier for the pipeline. You use this value
--   to identify the pipeline in which you want to perform a variety of
--   operations, such as creating a job or a preset.</li>
--   <li><a>pipNotifications</a> - The Amazon Simple Notification Service
--   (Amazon SNS) topic that you want to notify to report job status.
--   <i>Important:</i> To receive notifications, you must also subscribe to
--   the new topic in the Amazon SNS console. * <b>Progressing</b>
--   (optional): The Amazon Simple Notification Service (Amazon SNS) topic
--   that you want to notify when Elastic Transcoder has started to process
--   the job. * <b>Completed</b> (optional): The Amazon SNS topic that you
--   want to notify when Elastic Transcoder has finished processing the
--   job. * <b>Warning</b> (optional): The Amazon SNS topic that you want
--   to notify when Elastic Transcoder encounters a warning condition. *
--   <b>Error</b> (optional): The Amazon SNS topic that you want to notify
--   when Elastic Transcoder encounters an error condition.</li>
--   <li><a>pipThumbnailConfig</a> - Information about the Amazon S3 bucket
--   in which you want Elastic Transcoder to save thumbnail files. Either
--   you specify both <tt>ContentConfig</tt> and <tt>ThumbnailConfig</tt> ,
--   or you specify <tt>OutputBucket</tt> . * <tt>Bucket</tt> : The Amazon
--   S3 bucket in which you want Elastic Transcoder to save thumbnail
--   files. * <tt>Permissions</tt> : A list of the users and<i>or
--   predefined Amazon S3 groups you want to have access to thumbnail
--   files, and the type of access that you want them to have. *
--   GranteeType: The type of value that appears in the Grantee object: *
--   <tt>Canonical</tt> : Either the canonical user ID for an AWS account
--   or an origin access identity for an Amazon CloudFront distribution.
--   </i>Important:/ A canonical user ID is not the same as an AWS account
--   number. * <tt>Email</tt> : The registered email address of an AWS
--   account. * <tt>Group</tt> : One of the following predefined Amazon S3
--   groups: <tt>AllUsers</tt> , <tt>AuthenticatedUsers</tt> , or
--   <tt>LogDelivery</tt> . * <tt>Grantee</tt> : The AWS user or group that
--   you want to have access to thumbnail files. * Access: The permission
--   that you want to give to the AWS user that is listed in Grantee. Valid
--   values include: * <tt>READ</tt> : The grantee can read the thumbnails
--   and metadata for thumbnails that Elastic Transcoder adds to the Amazon
--   S3 bucket. * <tt>READ_ACP</tt> : The grantee can read the object ACL
--   for thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has READ, READ_ACP, and WRITE_ACP
--   permissions for the thumbnails that Elastic Transcoder adds to the
--   Amazon S3 bucket. * <tt>StorageClass</tt> : The Amazon S3 storage
--   class, <tt>Standard</tt> or <tt>ReducedRedundancy</tt> , that you want
--   Elastic Transcoder to assign to the thumbnails that it stores in your
--   Amazon S3 bucket.</li>
--   </ul>
pipeline :: Pipeline

-- | The current status of the pipeline: * <tt>Active</tt> : The pipeline
--   is processing jobs. * <tt>Paused</tt> : The pipeline is not currently
--   processing jobs.
pipStatus :: Lens' Pipeline (Maybe Text)

-- | The Amazon Resource Name (ARN) for the pipeline.
pipARN :: Lens' Pipeline (Maybe Text)

-- | The Amazon S3 bucket from which Elastic Transcoder gets media files
--   for transcoding and the graphics files, if any, that you want to use
--   for watermarks.
pipInputBucket :: Lens' Pipeline (Maybe Text)

-- | Information about the Amazon S3 bucket in which you want Elastic
--   Transcoder to save transcoded files and playlists. Either you specify
--   both <tt>ContentConfig</tt> and <tt>ThumbnailConfig</tt> , or you
--   specify <tt>OutputBucket</tt> . * <b>Bucket</b> : The Amazon S3 bucket
--   in which you want Elastic Transcoder to save transcoded files and
--   playlists. * <b>Permissions</b> : A list of the users and/or
--   predefined Amazon S3 groups you want to have access to transcoded
--   files and playlists, and the type of access that you want them to
--   have. * GranteeType: The type of value that appears in the
--   <tt>Grantee</tt> object: * <tt>Canonical</tt> : Either the canonical
--   user ID for an AWS account or an origin access identity for an Amazon
--   CloudFront distribution. * <tt>Email</tt> : The registered email
--   address of an AWS account. * <tt>Group</tt> : One of the following
--   predefined Amazon S3 groups: <tt>AllUsers</tt> ,
--   <tt>AuthenticatedUsers</tt> , or <tt>LogDelivery</tt> . *
--   <tt>Grantee</tt> : The AWS user or group that you want to have access
--   to transcoded files and playlists. * <tt>Access</tt> : The permission
--   that you want to give to the AWS user that is listed in
--   <tt>Grantee</tt> . Valid values include: * <tt>READ</tt> : The grantee
--   can read the objects and metadata for objects that Elastic Transcoder
--   adds to the Amazon S3 bucket. * <tt>READ_ACP</tt> : The grantee can
--   read the object ACL for objects that Elastic Transcoder adds to the
--   Amazon S3 bucket. * <tt>WRITE_ACP</tt> : The grantee can write the ACL
--   for the objects that Elastic Transcoder adds to the Amazon S3 bucket.
--   * <tt>FULL_CONTROL</tt> : The grantee has <tt>READ</tt> ,
--   <tt>READ_ACP</tt> , and <tt>WRITE_ACP</tt> permissions for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <b>StorageClass</b> : The Amazon S3 storage class, Standard or
--   ReducedRedundancy, that you want Elastic Transcoder to assign to the
--   video files and playlists that it stores in your Amazon S3 bucket.
pipContentConfig :: Lens' Pipeline (Maybe PipelineOutputConfig)

-- | The Amazon S3 bucket in which you want Elastic Transcoder to save
--   transcoded files, thumbnails, and playlists. Either you specify this
--   value, or you specify both <tt>ContentConfig</tt> and
--   <tt>ThumbnailConfig</tt> .
pipOutputBucket :: Lens' Pipeline (Maybe Text)

-- | The IAM Amazon Resource Name (ARN) for the role that Elastic
--   Transcoder uses to transcode jobs for this pipeline.
pipRole :: Lens' Pipeline (Maybe Text)

-- | The name of the pipeline. We recommend that the name be unique within
--   the AWS account, but uniqueness is not enforced. Constraints: Maximum
--   40 characters
pipName :: Lens' Pipeline (Maybe Text)

-- | The AWS Key Management Service (AWS KMS) key that you want to use with
--   this pipeline. If you use either <tt>S3</tt> or <tt>S3-AWS-KMS</tt> as
--   your <tt>Encryption:Mode</tt> , you don't need to provide a key with
--   your job because a default key, known as an AWS-KMS key, is created
--   for you automatically. You need to provide an AWS-KMS key only if you
--   want to use a non-default AWS-KMS key, or if you are using an
--   <tt>Encryption:Mode</tt> of <tt>AES-PKCS7</tt> , <tt>AES-CTR</tt> , or
--   <tt>AES-GCM</tt> .
pipAWSKMSKeyARN :: Lens' Pipeline (Maybe Text)

-- | The identifier for the pipeline. You use this value to identify the
--   pipeline in which you want to perform a variety of operations, such as
--   creating a job or a preset.
pipId :: Lens' Pipeline (Maybe Text)

-- | The Amazon Simple Notification Service (Amazon SNS) topic that you
--   want to notify to report job status. <i>Important:</i> To receive
--   notifications, you must also subscribe to the new topic in the Amazon
--   SNS console. * <b>Progressing</b> (optional): The Amazon Simple
--   Notification Service (Amazon SNS) topic that you want to notify when
--   Elastic Transcoder has started to process the job. * <b>Completed</b>
--   (optional): The Amazon SNS topic that you want to notify when Elastic
--   Transcoder has finished processing the job. * <b>Warning</b>
--   (optional): The Amazon SNS topic that you want to notify when Elastic
--   Transcoder encounters a warning condition. * <b>Error</b> (optional):
--   The Amazon SNS topic that you want to notify when Elastic Transcoder
--   encounters an error condition.
pipNotifications :: Lens' Pipeline (Maybe Notifications)

-- | Information about the Amazon S3 bucket in which you want Elastic
--   Transcoder to save thumbnail files. Either you specify both
--   <tt>ContentConfig</tt> and <tt>ThumbnailConfig</tt> , or you specify
--   <tt>OutputBucket</tt> . * <tt>Bucket</tt> : The Amazon S3 bucket in
--   which you want Elastic Transcoder to save thumbnail files. *
--   <tt>Permissions</tt> : A list of the users and<i>or predefined Amazon
--   S3 groups you want to have access to thumbnail files, and the type of
--   access that you want them to have. * GranteeType: The type of value
--   that appears in the Grantee object: * <tt>Canonical</tt> : Either the
--   canonical user ID for an AWS account or an origin access identity for
--   an Amazon CloudFront distribution. </i>Important:/ A canonical user ID
--   is not the same as an AWS account number. * <tt>Email</tt> : The
--   registered email address of an AWS account. * <tt>Group</tt> : One of
--   the following predefined Amazon S3 groups: <tt>AllUsers</tt> ,
--   <tt>AuthenticatedUsers</tt> , or <tt>LogDelivery</tt> . *
--   <tt>Grantee</tt> : The AWS user or group that you want to have access
--   to thumbnail files. * Access: The permission that you want to give to
--   the AWS user that is listed in Grantee. Valid values include: *
--   <tt>READ</tt> : The grantee can read the thumbnails and metadata for
--   thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>READ_ACP</tt> : The grantee can read the object ACL for thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has READ, READ_ACP, and WRITE_ACP
--   permissions for the thumbnails that Elastic Transcoder adds to the
--   Amazon S3 bucket. * <tt>StorageClass</tt> : The Amazon S3 storage
--   class, <tt>Standard</tt> or <tt>ReducedRedundancy</tt> , that you want
--   Elastic Transcoder to assign to the thumbnails that it stores in your
--   Amazon S3 bucket.
pipThumbnailConfig :: Lens' Pipeline (Maybe PipelineOutputConfig)

-- | The <tt>PipelineOutputConfig</tt> structure.
--   
--   <i>See:</i> <a>pipelineOutputConfig</a> smart constructor.
data PipelineOutputConfig

-- | Creates a value of <a>PipelineOutputConfig</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pocBucket</a> - The Amazon S3 bucket in which you want Elastic
--   Transcoder to save the transcoded files. Specify this value when all
--   of the following are true: * You want to save transcoded files,
--   thumbnails (if any), and playlists (if any) together in one bucket. *
--   You do not want to specify the users or groups who have access to the
--   transcoded files, thumbnails, and playlists. * You do not want to
--   specify the permissions that Elastic Transcoder grants to the files. *
--   You want to associate the transcoded files and thumbnails with the
--   Amazon S3 Standard storage class. If you want to save transcoded files
--   and playlists in one bucket and thumbnails in another bucket, specify
--   which users can access the transcoded files or the permissions the
--   users have, or change the Amazon S3 storage class, omit OutputBucket
--   and specify values for <tt>ContentConfig</tt> and
--   <tt>ThumbnailConfig</tt> instead.</li>
--   <li><a>pocStorageClass</a> - The Amazon S3 storage class,
--   <tt>Standard</tt> or <tt>ReducedRedundancy</tt> , that you want
--   Elastic Transcoder to assign to the video files and playlists that it
--   stores in your Amazon S3 bucket.</li>
--   <li><a>pocPermissions</a> - Optional. The <tt>Permissions</tt> object
--   specifies which users and<i>or predefined Amazon S3 groups you want to
--   have access to transcoded files and playlists, and the type of access
--   you want them to have. You can grant permissions to a maximum of 30
--   users and</i>or predefined Amazon S3 groups. If you include
--   <tt>Permissions</tt> , Elastic Transcoder grants only the permissions
--   that you specify. It does not grant full permissions to the owner of
--   the role specified by <tt>Role</tt> . If you want that user to have
--   full control, you must explicitly grant full control to the user. If
--   you omit <tt>Permissions</tt> , Elastic Transcoder grants full control
--   over the transcoded files and playlists to the owner of the role
--   specified by <tt>Role</tt> , and grants no other permissions to any
--   other user or group.</li>
--   </ul>
pipelineOutputConfig :: PipelineOutputConfig

-- | The Amazon S3 bucket in which you want Elastic Transcoder to save the
--   transcoded files. Specify this value when all of the following are
--   true: * You want to save transcoded files, thumbnails (if any), and
--   playlists (if any) together in one bucket. * You do not want to
--   specify the users or groups who have access to the transcoded files,
--   thumbnails, and playlists. * You do not want to specify the
--   permissions that Elastic Transcoder grants to the files. * You want to
--   associate the transcoded files and thumbnails with the Amazon S3
--   Standard storage class. If you want to save transcoded files and
--   playlists in one bucket and thumbnails in another bucket, specify
--   which users can access the transcoded files or the permissions the
--   users have, or change the Amazon S3 storage class, omit OutputBucket
--   and specify values for <tt>ContentConfig</tt> and
--   <tt>ThumbnailConfig</tt> instead.
pocBucket :: Lens' PipelineOutputConfig (Maybe Text)

-- | The Amazon S3 storage class, <tt>Standard</tt> or
--   <tt>ReducedRedundancy</tt> , that you want Elastic Transcoder to
--   assign to the video files and playlists that it stores in your Amazon
--   S3 bucket.
pocStorageClass :: Lens' PipelineOutputConfig (Maybe Text)

-- | Optional. The <tt>Permissions</tt> object specifies which users
--   and<i>or predefined Amazon S3 groups you want to have access to
--   transcoded files and playlists, and the type of access you want them
--   to have. You can grant permissions to a maximum of 30 users and</i>or
--   predefined Amazon S3 groups. If you include <tt>Permissions</tt> ,
--   Elastic Transcoder grants only the permissions that you specify. It
--   does not grant full permissions to the owner of the role specified by
--   <tt>Role</tt> . If you want that user to have full control, you must
--   explicitly grant full control to the user. If you omit
--   <tt>Permissions</tt> , Elastic Transcoder grants full control over the
--   transcoded files and playlists to the owner of the role specified by
--   <tt>Role</tt> , and grants no other permissions to any other user or
--   group.
pocPermissions :: Lens' PipelineOutputConfig [Permission]

-- | The PlayReady DRM settings, if any, that you want Elastic Transcoder
--   to apply to the output files associated with this playlist.
--   
--   PlayReady DRM encrypts your media files using <tt>AES-CTR</tt>
--   encryption.
--   
--   If you use DRM for an <tt>HLSv3</tt> playlist, your outputs must have
--   a master playlist.
--   
--   <i>See:</i> <a>playReadyDrm</a> smart constructor.
data PlayReadyDrm

-- | Creates a value of <a>PlayReadyDrm</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prdKeyId</a> - The ID for your DRM key, so that your DRM
--   license provider knows which key to provide. The key ID must be
--   provided in big endian, and Elastic Transcoder converts it to little
--   endian before inserting it into the PlayReady DRM headers. If you are
--   unsure whether your license server provides your key ID in big or
--   little endian, check with your DRM provider.</li>
--   <li><a>prdFormat</a> - The type of DRM, if any, that you want Elastic
--   Transcoder to apply to the output files associated with this
--   playlist.</li>
--   <li><a>prdKeyMD5</a> - The MD5 digest of the key used for DRM on your
--   file, and that you want Elastic Transcoder to use as a checksum to
--   make sure your key was not corrupted in transit. The key MD5 must be
--   base64-encoded, and it must be exactly 16 bytes before being
--   base64-encoded.</li>
--   <li><a>prdKey</a> - The DRM key for your file, provided by your DRM
--   license provider. The key must be base64-encoded, and it must be one
--   of the following bit lengths before being base64-encoded: <tt>128</tt>
--   , <tt>192</tt> , or <tt>256</tt> . The key must also be encrypted by
--   using AWS KMS.</li>
--   <li><a>prdInitializationVector</a> - The series of random bits created
--   by a random bit generator, unique for every encryption operation, that
--   you want Elastic Transcoder to use to encrypt your files. The
--   initialization vector must be base64-encoded, and it must be exactly 8
--   bytes long before being base64-encoded. If no initialization vector is
--   provided, Elastic Transcoder generates one for you.</li>
--   <li><a>prdLicenseAcquisitionURL</a> - The location of the license key
--   required to play DRM content. The URL must be an absolute path, and is
--   referenced by the PlayReady header. The PlayReady header is referenced
--   in the protection header of the client manifest for Smooth Streaming
--   outputs, and in the EXT-X-DXDRM and EXT-XDXDRMINFO metadata tags for
--   HLS playlist outputs. An example URL looks like this:
--   <tt><a>https://www.example.com/exampleKey/</a></tt></li>
--   </ul>
playReadyDrm :: PlayReadyDrm

-- | The ID for your DRM key, so that your DRM license provider knows which
--   key to provide. The key ID must be provided in big endian, and Elastic
--   Transcoder converts it to little endian before inserting it into the
--   PlayReady DRM headers. If you are unsure whether your license server
--   provides your key ID in big or little endian, check with your DRM
--   provider.
prdKeyId :: Lens' PlayReadyDrm (Maybe Text)

-- | The type of DRM, if any, that you want Elastic Transcoder to apply to
--   the output files associated with this playlist.
prdFormat :: Lens' PlayReadyDrm (Maybe Text)

-- | The MD5 digest of the key used for DRM on your file, and that you want
--   Elastic Transcoder to use as a checksum to make sure your key was not
--   corrupted in transit. The key MD5 must be base64-encoded, and it must
--   be exactly 16 bytes before being base64-encoded.
prdKeyMD5 :: Lens' PlayReadyDrm (Maybe Text)

-- | The DRM key for your file, provided by your DRM license provider. The
--   key must be base64-encoded, and it must be one of the following bit
--   lengths before being base64-encoded: <tt>128</tt> , <tt>192</tt> , or
--   <tt>256</tt> . The key must also be encrypted by using AWS KMS.
prdKey :: Lens' PlayReadyDrm (Maybe Text)

-- | The series of random bits created by a random bit generator, unique
--   for every encryption operation, that you want Elastic Transcoder to
--   use to encrypt your files. The initialization vector must be
--   base64-encoded, and it must be exactly 8 bytes long before being
--   base64-encoded. If no initialization vector is provided, Elastic
--   Transcoder generates one for you.
prdInitializationVector :: Lens' PlayReadyDrm (Maybe Text)

-- | The location of the license key required to play DRM content. The URL
--   must be an absolute path, and is referenced by the PlayReady header.
--   The PlayReady header is referenced in the protection header of the
--   client manifest for Smooth Streaming outputs, and in the EXT-X-DXDRM
--   and EXT-XDXDRMINFO metadata tags for HLS playlist outputs. An example
--   URL looks like this:
--   <tt><a>https://www.example.com/exampleKey/</a></tt>
prdLicenseAcquisitionURL :: Lens' PlayReadyDrm (Maybe Text)

-- | Use Only for Fragmented MP4 or MPEG-TS Outputs. If you specify a
--   preset for which the value of Container is <tt>fmp4</tt> (Fragmented
--   MP4) or <tt>ts</tt> (MPEG-TS), Playlists contains information about
--   the master playlists that you want Elastic Transcoder to create. We
--   recommend that you create only one master playlist per output format.
--   The maximum number of master playlists in a job is 30.
--   
--   <i>See:</i> <a>playlist</a> smart constructor.
data Playlist

-- | Creates a value of <a>Playlist</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pStatus</a> - The status of the job with which the playlist is
--   associated.</li>
--   <li><a>pPlayReadyDrm</a> - The DRM settings, if any, that you want
--   Elastic Transcoder to apply to the output files associated with this
--   playlist.</li>
--   <li><a>pFormat</a> - The format of the output playlist. Valid formats
--   include <tt>HLSv3</tt> , <tt>HLSv4</tt> , and <tt>Smooth</tt> .</li>
--   <li><a>pOutputKeys</a> - For each output in this job that you want to
--   include in a master playlist, the value of the Outputs:Key object. *
--   If your output is not <tt>HLS</tt> or does not have a segment duration
--   set, the name of the output file is a concatenation of
--   <tt>OutputKeyPrefix</tt> and <tt>Outputs:Key</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> * If your output is <tt>HLSv3</tt>
--   and has a segment duration set, or is not included in a playlist,
--   Elastic Transcoder creates an output playlist file with a file
--   extension of <tt>.m3u8</tt> , and a series of <tt>.ts</tt> files that
--   include a five-digit sequential counter beginning with 00000:
--   OutputKeyPrefix<tt>Outputs:Key</tt> .m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> 00000.ts * If your output is
--   <tt>HLSv4</tt> , has a segment duration set, and is included in an
--   <tt>HLSv4</tt> playlist, Elastic Transcoder creates an output playlist
--   file with a file extension of <tt>_v4.m3u8</tt> . If the output is
--   video, Elastic Transcoder also creates an output file with an
--   extension of <tt>_iframe.m3u8</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> _v4.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> _iframe.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> .ts Elastic Transcoder
--   automatically appends the relevant file extension to the file name. If
--   you include a file extension in Output Key, the file name will have
--   two extensions. If you include more than one output in a playlist, any
--   segment duration settings, clip settings, or caption settings must be
--   the same for all outputs in the playlist. For <tt>Smooth</tt>
--   playlists, the <tt>Audio:Profile</tt> , <tt>Video:Profile</tt> , and
--   <tt>Video:FrameRate</tt> to <tt>Video:KeyframesMaxDist</tt> ratio must
--   be the same for all outputs.</li>
--   <li><a>pName</a> - The name that you want Elastic Transcoder to assign
--   to the master playlist, for example, nyc-vacation.m3u8. If the name
--   includes a <tt>/</tt> character, the section of the name before the
--   last <tt>/</tt> must be identical for all <tt>Name</tt> objects. If
--   you create more than one master playlist, the values of all
--   <tt>Name</tt> objects must be unique.</li>
--   <li><a>pStatusDetail</a> - Information that further explains the
--   status.</li>
--   <li><a>pHlsContentProtection</a> - The HLS content protection
--   settings, if any, that you want Elastic Transcoder to apply to the
--   output files associated with this playlist.</li>
--   </ul>
playlist :: Playlist

-- | The status of the job with which the playlist is associated.
pStatus :: Lens' Playlist (Maybe Text)

-- | The DRM settings, if any, that you want Elastic Transcoder to apply to
--   the output files associated with this playlist.
pPlayReadyDrm :: Lens' Playlist (Maybe PlayReadyDrm)

-- | The format of the output playlist. Valid formats include
--   <tt>HLSv3</tt> , <tt>HLSv4</tt> , and <tt>Smooth</tt> .
pFormat :: Lens' Playlist (Maybe Text)

-- | For each output in this job that you want to include in a master
--   playlist, the value of the Outputs:Key object. * If your output is not
--   <tt>HLS</tt> or does not have a segment duration set, the name of the
--   output file is a concatenation of <tt>OutputKeyPrefix</tt> and
--   <tt>Outputs:Key</tt> : OutputKeyPrefix<tt>Outputs:Key</tt> * If your
--   output is <tt>HLSv3</tt> and has a segment duration set, or is not
--   included in a playlist, Elastic Transcoder creates an output playlist
--   file with a file extension of <tt>.m3u8</tt> , and a series of
--   <tt>.ts</tt> files that include a five-digit sequential counter
--   beginning with 00000: OutputKeyPrefix<tt>Outputs:Key</tt> .m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> 00000.ts * If your output is
--   <tt>HLSv4</tt> , has a segment duration set, and is included in an
--   <tt>HLSv4</tt> playlist, Elastic Transcoder creates an output playlist
--   file with a file extension of <tt>_v4.m3u8</tt> . If the output is
--   video, Elastic Transcoder also creates an output file with an
--   extension of <tt>_iframe.m3u8</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> _v4.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> _iframe.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> .ts Elastic Transcoder
--   automatically appends the relevant file extension to the file name. If
--   you include a file extension in Output Key, the file name will have
--   two extensions. If you include more than one output in a playlist, any
--   segment duration settings, clip settings, or caption settings must be
--   the same for all outputs in the playlist. For <tt>Smooth</tt>
--   playlists, the <tt>Audio:Profile</tt> , <tt>Video:Profile</tt> , and
--   <tt>Video:FrameRate</tt> to <tt>Video:KeyframesMaxDist</tt> ratio must
--   be the same for all outputs.
pOutputKeys :: Lens' Playlist [Text]

-- | The name that you want Elastic Transcoder to assign to the master
--   playlist, for example, nyc-vacation.m3u8. If the name includes a
--   <tt>/</tt> character, the section of the name before the last
--   <tt>/</tt> must be identical for all <tt>Name</tt> objects. If you
--   create more than one master playlist, the values of all <tt>Name</tt>
--   objects must be unique.
pName :: Lens' Playlist (Maybe Text)

-- | Information that further explains the status.
pStatusDetail :: Lens' Playlist (Maybe Text)

-- | The HLS content protection settings, if any, that you want Elastic
--   Transcoder to apply to the output files associated with this playlist.
pHlsContentProtection :: Lens' Playlist (Maybe HlsContentProtection)

-- | Presets are templates that contain most of the settings for
--   transcoding media files from one format to another. Elastic Transcoder
--   includes some default presets for common formats, for example, several
--   iPod and iPhone versions. You can also create your own presets for
--   formats that aren't included among the default presets. You specify
--   which preset you want to use when you create a job.
--   
--   <i>See:</i> <a>preset</a> smart constructor.
data Preset

-- | Creates a value of <a>Preset</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>preARN</a> - The Amazon Resource Name (ARN) for the
--   preset.</li>
--   <li><a>preVideo</a> - A section of the response body that provides
--   information about the video preset values.</li>
--   <li><a>preThumbnails</a> - A section of the response body that
--   provides information about the thumbnail preset values, if any.</li>
--   <li><a>preName</a> - The name of the preset.</li>
--   <li><a>preContainer</a> - The container type for the output file.
--   Valid values include <tt>flac</tt> , <tt>flv</tt> , <tt>fmp4</tt> ,
--   <tt>gif</tt> , <tt>mp3</tt> , <tt>mp4</tt> , <tt>mpg</tt> ,
--   <tt>mxf</tt> , <tt>oga</tt> , <tt>ogg</tt> , <tt>ts</tt> , and
--   <tt>webm</tt> .</li>
--   <li><a>preId</a> - Identifier for the new preset. You use this value
--   to get settings for the preset or to delete it.</li>
--   <li><a>preType</a> - Whether the preset is a default preset provided
--   by Elastic Transcoder (<tt>System</tt> ) or a preset that you have
--   defined (<tt>Custom</tt> ).</li>
--   <li><a>preDescription</a> - A description of the preset.</li>
--   <li><a>preAudio</a> - A section of the response body that provides
--   information about the audio preset values.</li>
--   </ul>
preset :: Preset

-- | The Amazon Resource Name (ARN) for the preset.
preARN :: Lens' Preset (Maybe Text)

-- | A section of the response body that provides information about the
--   video preset values.
preVideo :: Lens' Preset (Maybe VideoParameters)

-- | A section of the response body that provides information about the
--   thumbnail preset values, if any.
preThumbnails :: Lens' Preset (Maybe Thumbnails)

-- | The name of the preset.
preName :: Lens' Preset (Maybe Text)

-- | The container type for the output file. Valid values include
--   <tt>flac</tt> , <tt>flv</tt> , <tt>fmp4</tt> , <tt>gif</tt> ,
--   <tt>mp3</tt> , <tt>mp4</tt> , <tt>mpg</tt> , <tt>mxf</tt> ,
--   <tt>oga</tt> , <tt>ogg</tt> , <tt>ts</tt> , and <tt>webm</tt> .
preContainer :: Lens' Preset (Maybe Text)

-- | Identifier for the new preset. You use this value to get settings for
--   the preset or to delete it.
preId :: Lens' Preset (Maybe Text)

-- | Whether the preset is a default preset provided by Elastic Transcoder
--   (<tt>System</tt> ) or a preset that you have defined (<tt>Custom</tt>
--   ).
preType :: Lens' Preset (Maybe Text)

-- | A description of the preset.
preDescription :: Lens' Preset (Maybe Text)

-- | A section of the response body that provides information about the
--   audio preset values.
preAudio :: Lens' Preset (Maybe AudioParameters)

-- | Settings for the size, location, and opacity of graphics that you want
--   Elastic Transcoder to overlay over videos that are transcoded using
--   this preset. You can specify settings for up to four watermarks.
--   Watermarks appear in the specified size and location, and with the
--   specified opacity for the duration of the transcoded video.
--   
--   Watermarks can be in .png or .jpg format. If you want to display a
--   watermark that is not rectangular, use the .png format, which supports
--   transparency.
--   
--   When you create a job that uses this preset, you specify the .png or
--   .jpg graphics that you want Elastic Transcoder to include in the
--   transcoded videos. You can specify fewer graphics in the job than you
--   specify watermark settings in the preset, which allows you to use the
--   same preset for up to four watermarks that have different dimensions.
--   
--   <i>See:</i> <a>presetWatermark</a> smart constructor.
data PresetWatermark

-- | Creates a value of <a>PresetWatermark</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pwVerticalAlign</a> - The vertical position of the watermark
--   unless you specify a non-zero value for <tt>VerticalOffset</tt> : *
--   <b>Top</b> : The top edge of the watermark is aligned with the top
--   border of the video. * <b>Bottom</b> : The bottom edge of the
--   watermark is aligned with the bottom border of the video. *
--   <b>Center</b> : The watermark is centered between the top and bottom
--   borders.</li>
--   <li><a>pwSizingPolicy</a> - A value that controls scaling of the
--   watermark: * <b>Fit</b> : Elastic Transcoder scales the watermark so
--   it matches the value that you specified in either <tt>MaxWidth</tt> or
--   <tt>MaxHeight</tt> without exceeding the other value. * <b>Stretch</b>
--   : Elastic Transcoder stretches the watermark to match the values that
--   you specified for <tt>MaxWidth</tt> and <tt>MaxHeight</tt> . If the
--   relative proportions of the watermark and the values of
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> are different, the watermark
--   will be distorted. * <b>ShrinkToFit</b> : Elastic Transcoder scales
--   the watermark down so that its dimensions match the values that you
--   specified for at least one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt>
--   without exceeding either value. If you specify this option, Elastic
--   Transcoder does not scale the watermark up.</li>
--   <li><a>pwHorizontalOffset</a> - The amount by which you want the
--   horizontal position of the watermark to be offset from the position
--   specified by HorizontalAlign: * number of pixels (px): The minimum
--   value is 0 pixels, and the maximum value is the value of MaxWidth. *
--   integer percentage (%): The range of valid values is 0 to 100. For
--   example, if you specify Left for <tt>HorizontalAlign</tt> and 5px for
--   <tt>HorizontalOffset</tt> , the left side of the watermark appears 5
--   pixels from the left border of the output video.
--   <tt>HorizontalOffset</tt> is only valid when the value of
--   <tt>HorizontalAlign</tt> is <tt>Left</tt> or <tt>Right</tt> . If you
--   specify an offset that causes the watermark to extend beyond the left
--   or right border and Elastic Transcoder has not added black bars, the
--   watermark is cropped. If Elastic Transcoder has added black bars, the
--   watermark extends into the black bars. If the watermark extends beyond
--   the black bars, it is cropped. Use the value of <tt>Target</tt> to
--   specify whether you want to include the black bars that are added by
--   Elastic Transcoder, if any, in the offset calculation.</li>
--   <li><a>pwMaxHeight</a> - The maximum height of the watermark in one of
--   the following formats: * number of pixels (px): The minimum value is
--   16 pixels, and the maximum value is the value of <tt>MaxHeight</tt> .
--   * integer percentage (%): The range of valid values is 0 to 100. Use
--   the value of <tt>Target</tt> to specify whether you want Elastic
--   Transcoder to include the black bars that are added by Elastic
--   Transcoder, if any, in the calculation. If you specify the value in
--   pixels, it must be less than or equal to the value of
--   <tt>MaxHeight</tt> .</li>
--   <li><a>pwOpacity</a> - A percentage that indicates how much you want a
--   watermark to obscure the video in the location where it appears. Valid
--   values are 0 (the watermark is invisible) to 100 (the watermark
--   completely obscures the video in the specified location). The datatype
--   of <tt>Opacity</tt> is float. Elastic Transcoder supports transparent
--   .png graphics. If you use a transparent .png, the transparent portion
--   of the video appears as if you had specified a value of 0 for
--   <tt>Opacity</tt> . The .jpg file format doesn't support
--   transparency.</li>
--   <li><a>pwVerticalOffset</a> - <tt>VerticalOffset</tt> The amount by
--   which you want the vertical position of the watermark to be offset
--   from the position specified by VerticalAlign: * number of pixels (px):
--   The minimum value is 0 pixels, and the maximum value is the value of
--   <tt>MaxHeight</tt> . * integer percentage (%): The range of valid
--   values is 0 to 100. For example, if you specify <tt>Top</tt> for
--   <tt>VerticalAlign</tt> and <tt>5px</tt> for <tt>VerticalOffset</tt> ,
--   the top of the watermark appears 5 pixels from the top border of the
--   output video. <tt>VerticalOffset</tt> is only valid when the value of
--   VerticalAlign is Top or Bottom. If you specify an offset that causes
--   the watermark to extend beyond the top or bottom border and Elastic
--   Transcoder has not added black bars, the watermark is cropped. If
--   Elastic Transcoder has added black bars, the watermark extends into
--   the black bars. If the watermark extends beyond the black bars, it is
--   cropped. Use the value of <tt>Target</tt> to specify whether you want
--   Elastic Transcoder to include the black bars that are added by Elastic
--   Transcoder, if any, in the offset calculation.</li>
--   <li><a>pwMaxWidth</a> - The maximum width of the watermark in one of
--   the following formats: * number of pixels (px): The minimum value is
--   16 pixels, and the maximum value is the value of <tt>MaxWidth</tt> . *
--   integer percentage (%): The range of valid values is 0 to 100. Use the
--   value of <tt>Target</tt> to specify whether you want Elastic
--   Transcoder to include the black bars that are added by Elastic
--   Transcoder, if any, in the calculation. If you specify the value in
--   pixels, it must be less than or equal to the value of
--   <tt>MaxWidth</tt> .</li>
--   <li><a>pwId</a> - A unique identifier for the settings for one
--   watermark. The value of <tt>Id</tt> can be up to 40 characters
--   long.</li>
--   <li><a>pwHorizontalAlign</a> - The horizontal position of the
--   watermark unless you specify a non-zero value for
--   <tt>HorizontalOffset</tt> : * <b>Left</b> : The left edge of the
--   watermark is aligned with the left border of the video. * <b>Right</b>
--   : The right edge of the watermark is aligned with the right border of
--   the video. * <b>Center</b> : The watermark is centered between the
--   left and right borders.</li>
--   <li><a>pwTarget</a> - A value that determines how Elastic Transcoder
--   interprets values that you specified for <tt>HorizontalOffset</tt> ,
--   <tt>VerticalOffset</tt> , <tt>MaxWidth</tt> , and <tt>MaxHeight</tt> :
--   * <b>Content</b> : <tt>HorizontalOffset</tt> and
--   <tt>VerticalOffset</tt> values are calculated based on the borders of
--   the video excluding black bars added by Elastic Transcoder, if any. In
--   addition, <tt>MaxWidth</tt> and <tt>MaxHeight</tt> , if specified as a
--   percentage, are calculated based on the borders of the video excluding
--   black bars added by Elastic Transcoder, if any. * <b>Frame</b> :
--   <tt>HorizontalOffset</tt> and <tt>VerticalOffset</tt> values are
--   calculated based on the borders of the video including black bars
--   added by Elastic Transcoder, if any. In addition, <tt>MaxWidth</tt>
--   and <tt>MaxHeight</tt> , if specified as a percentage, are calculated
--   based on the borders of the video including black bars added by
--   Elastic Transcoder, if any.</li>
--   </ul>
presetWatermark :: PresetWatermark

-- | The vertical position of the watermark unless you specify a non-zero
--   value for <tt>VerticalOffset</tt> : * <b>Top</b> : The top edge of the
--   watermark is aligned with the top border of the video. * <b>Bottom</b>
--   : The bottom edge of the watermark is aligned with the bottom border
--   of the video. * <b>Center</b> : The watermark is centered between the
--   top and bottom borders.
pwVerticalAlign :: Lens' PresetWatermark (Maybe Text)

-- | A value that controls scaling of the watermark: * <b>Fit</b> : Elastic
--   Transcoder scales the watermark so it matches the value that you
--   specified in either <tt>MaxWidth</tt> or <tt>MaxHeight</tt> without
--   exceeding the other value. * <b>Stretch</b> : Elastic Transcoder
--   stretches the watermark to match the values that you specified for
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> . If the relative proportions
--   of the watermark and the values of <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> are different, the watermark will be distorted. *
--   <b>ShrinkToFit</b> : Elastic Transcoder scales the watermark down so
--   that its dimensions match the values that you specified for at least
--   one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without exceeding
--   either value. If you specify this option, Elastic Transcoder does not
--   scale the watermark up.
pwSizingPolicy :: Lens' PresetWatermark (Maybe Text)

-- | The amount by which you want the horizontal position of the watermark
--   to be offset from the position specified by HorizontalAlign: * number
--   of pixels (px): The minimum value is 0 pixels, and the maximum value
--   is the value of MaxWidth. * integer percentage (%): The range of valid
--   values is 0 to 100. For example, if you specify Left for
--   <tt>HorizontalAlign</tt> and 5px for <tt>HorizontalOffset</tt> , the
--   left side of the watermark appears 5 pixels from the left border of
--   the output video. <tt>HorizontalOffset</tt> is only valid when the
--   value of <tt>HorizontalAlign</tt> is <tt>Left</tt> or <tt>Right</tt> .
--   If you specify an offset that causes the watermark to extend beyond
--   the left or right border and Elastic Transcoder has not added black
--   bars, the watermark is cropped. If Elastic Transcoder has added black
--   bars, the watermark extends into the black bars. If the watermark
--   extends beyond the black bars, it is cropped. Use the value of
--   <tt>Target</tt> to specify whether you want to include the black bars
--   that are added by Elastic Transcoder, if any, in the offset
--   calculation.
pwHorizontalOffset :: Lens' PresetWatermark (Maybe Text)

-- | The maximum height of the watermark in one of the following formats: *
--   number of pixels (px): The minimum value is 16 pixels, and the maximum
--   value is the value of <tt>MaxHeight</tt> . * integer percentage (%):
--   The range of valid values is 0 to 100. Use the value of
--   <tt>Target</tt> to specify whether you want Elastic Transcoder to
--   include the black bars that are added by Elastic Transcoder, if any,
--   in the calculation. If you specify the value in pixels, it must be
--   less than or equal to the value of <tt>MaxHeight</tt> .
pwMaxHeight :: Lens' PresetWatermark (Maybe Text)

-- | A percentage that indicates how much you want a watermark to obscure
--   the video in the location where it appears. Valid values are 0 (the
--   watermark is invisible) to 100 (the watermark completely obscures the
--   video in the specified location). The datatype of <tt>Opacity</tt> is
--   float. Elastic Transcoder supports transparent .png graphics. If you
--   use a transparent .png, the transparent portion of the video appears
--   as if you had specified a value of 0 for <tt>Opacity</tt> . The .jpg
--   file format doesn't support transparency.
pwOpacity :: Lens' PresetWatermark (Maybe Text)

-- | <tt>VerticalOffset</tt> The amount by which you want the vertical
--   position of the watermark to be offset from the position specified by
--   VerticalAlign: * number of pixels (px): The minimum value is 0 pixels,
--   and the maximum value is the value of <tt>MaxHeight</tt> . * integer
--   percentage (%): The range of valid values is 0 to 100. For example, if
--   you specify <tt>Top</tt> for <tt>VerticalAlign</tt> and <tt>5px</tt>
--   for <tt>VerticalOffset</tt> , the top of the watermark appears 5
--   pixels from the top border of the output video.
--   <tt>VerticalOffset</tt> is only valid when the value of VerticalAlign
--   is Top or Bottom. If you specify an offset that causes the watermark
--   to extend beyond the top or bottom border and Elastic Transcoder has
--   not added black bars, the watermark is cropped. If Elastic Transcoder
--   has added black bars, the watermark extends into the black bars. If
--   the watermark extends beyond the black bars, it is cropped. Use the
--   value of <tt>Target</tt> to specify whether you want Elastic
--   Transcoder to include the black bars that are added by Elastic
--   Transcoder, if any, in the offset calculation.
pwVerticalOffset :: Lens' PresetWatermark (Maybe Text)

-- | The maximum width of the watermark in one of the following formats: *
--   number of pixels (px): The minimum value is 16 pixels, and the maximum
--   value is the value of <tt>MaxWidth</tt> . * integer percentage (%):
--   The range of valid values is 0 to 100. Use the value of
--   <tt>Target</tt> to specify whether you want Elastic Transcoder to
--   include the black bars that are added by Elastic Transcoder, if any,
--   in the calculation. If you specify the value in pixels, it must be
--   less than or equal to the value of <tt>MaxWidth</tt> .
pwMaxWidth :: Lens' PresetWatermark (Maybe Text)

-- | A unique identifier for the settings for one watermark. The value of
--   <tt>Id</tt> can be up to 40 characters long.
pwId :: Lens' PresetWatermark (Maybe Text)

-- | The horizontal position of the watermark unless you specify a non-zero
--   value for <tt>HorizontalOffset</tt> : * <b>Left</b> : The left edge of
--   the watermark is aligned with the left border of the video. *
--   <b>Right</b> : The right edge of the watermark is aligned with the
--   right border of the video. * <b>Center</b> : The watermark is centered
--   between the left and right borders.
pwHorizontalAlign :: Lens' PresetWatermark (Maybe Text)

-- | A value that determines how Elastic Transcoder interprets values that
--   you specified for <tt>HorizontalOffset</tt> , <tt>VerticalOffset</tt>
--   , <tt>MaxWidth</tt> , and <tt>MaxHeight</tt> : * <b>Content</b> :
--   <tt>HorizontalOffset</tt> and <tt>VerticalOffset</tt> values are
--   calculated based on the borders of the video excluding black bars
--   added by Elastic Transcoder, if any. In addition, <tt>MaxWidth</tt>
--   and <tt>MaxHeight</tt> , if specified as a percentage, are calculated
--   based on the borders of the video excluding black bars added by
--   Elastic Transcoder, if any. * <b>Frame</b> : <tt>HorizontalOffset</tt>
--   and <tt>VerticalOffset</tt> values are calculated based on the borders
--   of the video including black bars added by Elastic Transcoder, if any.
--   In addition, <tt>MaxWidth</tt> and <tt>MaxHeight</tt> , if specified
--   as a percentage, are calculated based on the borders of the video
--   including black bars added by Elastic Transcoder, if any.
pwTarget :: Lens' PresetWatermark (Maybe Text)

-- | Thumbnails for videos.
--   
--   <i>See:</i> <a>thumbnails</a> smart constructor.
data Thumbnails

-- | Creates a value of <a>Thumbnails</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tSizingPolicy</a> - Specify one of the following values to
--   control scaling of thumbnails: * <tt>Fit</tt> : Elastic Transcoder
--   scales thumbnails so they match the value that you specified in
--   thumbnail MaxWidth or MaxHeight settings without exceeding the other
--   value. * <tt>Fill</tt> : Elastic Transcoder scales thumbnails so they
--   match the value that you specified in thumbnail <tt>MaxWidth</tt> or
--   <tt>MaxHeight</tt> settings and matches or exceeds the other value.
--   Elastic Transcoder centers the image in thumbnails and then crops in
--   the dimension (if any) that exceeds the maximum value. *
--   <tt>Stretch</tt> : Elastic Transcoder stretches thumbnails to match
--   the values that you specified for thumbnail <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> settings. If the relative proportions of the input
--   video and thumbnails are different, the thumbnails will be distorted.
--   * <tt>Keep</tt> : Elastic Transcoder does not scale thumbnails. If
--   either dimension of the input video exceeds the values that you
--   specified for thumbnail <tt>MaxWidth</tt> and <tt>MaxHeight</tt>
--   settings, Elastic Transcoder crops the thumbnails. *
--   <tt>ShrinkToFit</tt> : Elastic Transcoder scales thumbnails down so
--   that their dimensions match the values that you specified for at least
--   one of thumbnail <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without
--   exceeding either value. If you specify this option, Elastic Transcoder
--   does not scale thumbnails up. * <tt>ShrinkToFill</tt> : Elastic
--   Transcoder scales thumbnails down so that their dimensions match the
--   values that you specified for at least one of <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> without dropping below either value. If you specify
--   this option, Elastic Transcoder does not scale thumbnails up.</li>
--   <li><a>tFormat</a> - The format of thumbnails, if any. Valid values
--   are <tt>jpg</tt> and <tt>png</tt> . You specify whether you want
--   Elastic Transcoder to create thumbnails when you create a job.</li>
--   <li><a>tMaxHeight</a> - The maximum height of thumbnails in pixels. If
--   you specify auto, Elastic Transcoder uses 1080 (Full HD) as the
--   default value. If you specify a numeric value, enter an even integer
--   between 32 and 3072.</li>
--   <li><a>tResolution</a> - <i>Important:</i> To better control
--   resolution and aspect ratio of thumbnails, we recommend that you use
--   the values <tt>MaxWidth</tt> , <tt>MaxHeight</tt> ,
--   <tt>SizingPolicy</tt> , and <tt>PaddingPolicy</tt> instead of
--   <tt>Resolution</tt> and <tt>AspectRatio</tt> . The two groups of
--   settings are mutually exclusive. Do not use them together. The width
--   and height of thumbnail files in pixels. Specify a value in the format
--   <tt><i>width</i> </tt> x <tt><i>height</i> </tt> where both values are
--   even integers. The values cannot exceed the width and height that you
--   specified in the <tt>Video:Resolution</tt> object.</li>
--   <li><a>tAspectRatio</a> - <i>Important:</i> To better control
--   resolution and aspect ratio of thumbnails, we recommend that you use
--   the values <tt>MaxWidth</tt> , <tt>MaxHeight</tt> ,
--   <tt>SizingPolicy</tt> , and <tt>PaddingPolicy</tt> instead of
--   <tt>Resolution</tt> and <tt>AspectRatio</tt> . The two groups of
--   settings are mutually exclusive. Do not use them together. The aspect
--   ratio of thumbnails. Valid values include: <tt>auto</tt> ,
--   <tt>1:1</tt> , <tt>4:3</tt> , <tt>3:2</tt> , <tt>16:9</tt> If you
--   specify <tt>auto</tt> , Elastic Transcoder tries to preserve the
--   aspect ratio of the video in the output file.</li>
--   <li><a>tPaddingPolicy</a> - When you set <tt>PaddingPolicy</tt> to
--   <tt>Pad</tt> , Elastic Transcoder may add black bars to the top and
--   bottom and/or left and right sides of thumbnails to make the total
--   size of the thumbnails match the values that you specified for
--   thumbnail <tt>MaxWidth</tt> and <tt>MaxHeight</tt> settings.</li>
--   <li><a>tInterval</a> - The approximate number of seconds between
--   thumbnails. Specify an integer value.</li>
--   <li><a>tMaxWidth</a> - The maximum width of thumbnails in pixels. If
--   you specify auto, Elastic Transcoder uses 1920 (Full HD) as the
--   default value. If you specify a numeric value, enter an even integer
--   between 32 and 4096.</li>
--   </ul>
thumbnails :: Thumbnails

-- | Specify one of the following values to control scaling of thumbnails:
--   * <tt>Fit</tt> : Elastic Transcoder scales thumbnails so they match
--   the value that you specified in thumbnail MaxWidth or MaxHeight
--   settings without exceeding the other value. * <tt>Fill</tt> : Elastic
--   Transcoder scales thumbnails so they match the value that you
--   specified in thumbnail <tt>MaxWidth</tt> or <tt>MaxHeight</tt>
--   settings and matches or exceeds the other value. Elastic Transcoder
--   centers the image in thumbnails and then crops in the dimension (if
--   any) that exceeds the maximum value. * <tt>Stretch</tt> : Elastic
--   Transcoder stretches thumbnails to match the values that you specified
--   for thumbnail <tt>MaxWidth</tt> and <tt>MaxHeight</tt> settings. If
--   the relative proportions of the input video and thumbnails are
--   different, the thumbnails will be distorted. * <tt>Keep</tt> : Elastic
--   Transcoder does not scale thumbnails. If either dimension of the input
--   video exceeds the values that you specified for thumbnail
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> settings, Elastic Transcoder
--   crops the thumbnails. * <tt>ShrinkToFit</tt> : Elastic Transcoder
--   scales thumbnails down so that their dimensions match the values that
--   you specified for at least one of thumbnail <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> without exceeding either value. If you specify this
--   option, Elastic Transcoder does not scale thumbnails up. *
--   <tt>ShrinkToFill</tt> : Elastic Transcoder scales thumbnails down so
--   that their dimensions match the values that you specified for at least
--   one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without dropping below
--   either value. If you specify this option, Elastic Transcoder does not
--   scale thumbnails up.
tSizingPolicy :: Lens' Thumbnails (Maybe Text)

-- | The format of thumbnails, if any. Valid values are <tt>jpg</tt> and
--   <tt>png</tt> . You specify whether you want Elastic Transcoder to
--   create thumbnails when you create a job.
tFormat :: Lens' Thumbnails (Maybe Text)

-- | The maximum height of thumbnails in pixels. If you specify auto,
--   Elastic Transcoder uses 1080 (Full HD) as the default value. If you
--   specify a numeric value, enter an even integer between 32 and 3072.
tMaxHeight :: Lens' Thumbnails (Maybe Text)

-- | <i>Important:</i> To better control resolution and aspect ratio of
--   thumbnails, we recommend that you use the values <tt>MaxWidth</tt> ,
--   <tt>MaxHeight</tt> , <tt>SizingPolicy</tt> , and
--   <tt>PaddingPolicy</tt> instead of <tt>Resolution</tt> and
--   <tt>AspectRatio</tt> . The two groups of settings are mutually
--   exclusive. Do not use them together. The width and height of thumbnail
--   files in pixels. Specify a value in the format <tt><i>width</i> </tt>
--   x <tt><i>height</i> </tt> where both values are even integers. The
--   values cannot exceed the width and height that you specified in the
--   <tt>Video:Resolution</tt> object.
tResolution :: Lens' Thumbnails (Maybe Text)

-- | <i>Important:</i> To better control resolution and aspect ratio of
--   thumbnails, we recommend that you use the values <tt>MaxWidth</tt> ,
--   <tt>MaxHeight</tt> , <tt>SizingPolicy</tt> , and
--   <tt>PaddingPolicy</tt> instead of <tt>Resolution</tt> and
--   <tt>AspectRatio</tt> . The two groups of settings are mutually
--   exclusive. Do not use them together. The aspect ratio of thumbnails.
--   Valid values include: <tt>auto</tt> , <tt>1:1</tt> , <tt>4:3</tt> ,
--   <tt>3:2</tt> , <tt>16:9</tt> If you specify <tt>auto</tt> , Elastic
--   Transcoder tries to preserve the aspect ratio of the video in the
--   output file.
tAspectRatio :: Lens' Thumbnails (Maybe Text)

-- | When you set <tt>PaddingPolicy</tt> to <tt>Pad</tt> , Elastic
--   Transcoder may add black bars to the top and bottom and/or left and
--   right sides of thumbnails to make the total size of the thumbnails
--   match the values that you specified for thumbnail <tt>MaxWidth</tt>
--   and <tt>MaxHeight</tt> settings.
tPaddingPolicy :: Lens' Thumbnails (Maybe Text)

-- | The approximate number of seconds between thumbnails. Specify an
--   integer value.
tInterval :: Lens' Thumbnails (Maybe Text)

-- | The maximum width of thumbnails in pixels. If you specify auto,
--   Elastic Transcoder uses 1920 (Full HD) as the default value. If you
--   specify a numeric value, enter an even integer between 32 and 4096.
tMaxWidth :: Lens' Thumbnails (Maybe Text)

-- | Settings that determine when a clip begins and how long it lasts.
--   
--   <i>See:</i> <a>timeSpan</a> smart constructor.
data TimeSpan

-- | Creates a value of <a>TimeSpan</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tsStartTime</a> - The place in the input file where you want a
--   clip to start. The format can be either HH:mm:ss.SSS (maximum value:
--   23:59:59.999; SSS is thousandths of a second) or sssss.SSS (maximum
--   value: 86399.999). If you don't specify a value, Elastic Transcoder
--   starts at the beginning of the input file.</li>
--   <li><a>tsDuration</a> - The duration of the clip. The format can be
--   either HH:mm:ss.SSS (maximum value: 23:59:59.999; SSS is thousandths
--   of a second) or sssss.SSS (maximum value: 86399.999). If you don't
--   specify a value, Elastic Transcoder creates an output file from
--   StartTime to the end of the file. If you specify a value longer than
--   the duration of the input file, Elastic Transcoder transcodes the file
--   and returns a warning message.</li>
--   </ul>
timeSpan :: TimeSpan

-- | The place in the input file where you want a clip to start. The format
--   can be either HH:mm:ss.SSS (maximum value: 23:59:59.999; SSS is
--   thousandths of a second) or sssss.SSS (maximum value: 86399.999). If
--   you don't specify a value, Elastic Transcoder starts at the beginning
--   of the input file.
tsStartTime :: Lens' TimeSpan (Maybe Text)

-- | The duration of the clip. The format can be either HH:mm:ss.SSS
--   (maximum value: 23:59:59.999; SSS is thousandths of a second) or
--   sssss.SSS (maximum value: 86399.999). If you don't specify a value,
--   Elastic Transcoder creates an output file from StartTime to the end of
--   the file. If you specify a value longer than the duration of the input
--   file, Elastic Transcoder transcodes the file and returns a warning
--   message.
tsDuration :: Lens' TimeSpan (Maybe Text)

-- | Details about the timing of a job.
--   
--   <i>See:</i> <a>timing</a> smart constructor.
data Timing

-- | Creates a value of <a>Timing</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tSubmitTimeMillis</a> - The time the job was submitted to
--   Elastic Transcoder, in epoch milliseconds.</li>
--   <li><a>tFinishTimeMillis</a> - The time the job finished transcoding,
--   in epoch milliseconds.</li>
--   <li><a>tStartTimeMillis</a> - The time the job began transcoding, in
--   epoch milliseconds.</li>
--   </ul>
timing :: Timing

-- | The time the job was submitted to Elastic Transcoder, in epoch
--   milliseconds.
tSubmitTimeMillis :: Lens' Timing (Maybe Integer)

-- | The time the job finished transcoding, in epoch milliseconds.
tFinishTimeMillis :: Lens' Timing (Maybe Integer)

-- | The time the job began transcoding, in epoch milliseconds.
tStartTimeMillis :: Lens' Timing (Maybe Integer)

-- | The <tt>VideoParameters</tt> structure.
--   
--   <i>See:</i> <a>videoParameters</a> smart constructor.
data VideoParameters

-- | Creates a value of <a>VideoParameters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vpKeyframesMaxDist</a> - Applicable only when the value of
--   Video:Codec is one of <tt>H.264</tt> , <tt>MPEG2</tt> , or
--   <tt>VP8</tt> . The maximum number of frames between key frames. Key
--   frames are fully encoded frames; the frames between key frames are
--   encoded based, in part, on the content of the key frames. The value is
--   an integer formatted as a string; valid values are between 1 (every
--   frame is a key frame) and 100000, inclusive. A higher value results in
--   higher compression but may also discernibly decrease video quality.
--   For <tt>Smooth</tt> outputs, the <tt>FrameRate</tt> must have a
--   constant ratio to the <tt>KeyframesMaxDist</tt> . This allows
--   <tt>Smooth</tt> playlists to switch between different quality levels
--   while the file is being played. For example, an input file can have a
--   <tt>FrameRate</tt> of 30 with a <tt>KeyframesMaxDist</tt> of 90. The
--   output file then needs to have a ratio of 1:3. Valid outputs would
--   have <tt>FrameRate</tt> of 30, 25, and 10, and
--   <tt>KeyframesMaxDist</tt> of 90, 75, and 30, respectively.
--   Alternately, this can be achieved by setting <tt>FrameRate</tt> to
--   auto and having the same values for <tt>MaxFrameRate</tt> and
--   <tt>KeyframesMaxDist</tt> .</li>
--   <li><a>vpFrameRate</a> - The frames per second for the video stream in
--   the output file. Valid values include: <tt>auto</tt> , <tt>10</tt> ,
--   <tt>15</tt> , <tt>23.97</tt> , <tt>24</tt> , <tt>25</tt> ,
--   <tt>29.97</tt> , <tt>30</tt> , <tt>60</tt> If you specify
--   <tt>auto</tt> , Elastic Transcoder uses the detected frame rate of the
--   input source. If you specify a frame rate, we recommend that you
--   perform the following calculation: <tt>Frame rate = maximum
--   recommended decoding speed in luma samples<i>second </i> (width in
--   pixels * height in pixels)</tt> where: * <i>width in pixels</i> and
--   <i>height in pixels</i> represent the Resolution of the output video.
--   * <i>maximum recommended decoding speed in Luma samples/second</i> is
--   less than or equal to the maximum value listed in the following table,
--   based on the value that you specified for Level. The maximum
--   recommended decoding speed in Luma samples<i>second for each level is
--   described in the following list (</i>Level - Decoding speed/ ): * 1 -
--   380160 * 1b - 380160 * 1.1 - 76800 * 1.2 - 1536000 * 1.3 - 3041280 * 2
--   - 3041280 * 2.1 - 5068800 * 2.2 - 5184000 * 3 - 10368000 * 3.1 -
--   27648000 * 3.2 - 55296000 * 4 - 62914560 * 4.1 - 62914560</li>
--   <li><a>vpSizingPolicy</a> - Specify one of the following values to
--   control scaling of the output video: * <tt>Fit</tt> : Elastic
--   Transcoder scales the output video so it matches the value that you
--   specified in either <tt>MaxWidth</tt> or <tt>MaxHeight</tt> without
--   exceeding the other value. * <tt>Fill</tt> : Elastic Transcoder scales
--   the output video so it matches the value that you specified in either
--   <tt>MaxWidth</tt> or <tt>MaxHeight</tt> and matches or exceeds the
--   other value. Elastic Transcoder centers the output video and then
--   crops it in the dimension (if any) that exceeds the maximum value. *
--   <tt>Stretch</tt> : Elastic Transcoder stretches the output video to
--   match the values that you specified for <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> . If the relative proportions of the input video
--   and the output video are different, the output video will be
--   distorted. * <tt>Keep</tt> : Elastic Transcoder does not scale the
--   output video. If either dimension of the input video exceeds the
--   values that you specified for <tt>MaxWidth</tt> and <tt>MaxHeight</tt>
--   , Elastic Transcoder crops the output video. * <tt>ShrinkToFit</tt> :
--   Elastic Transcoder scales the output video down so that its dimensions
--   match the values that you specified for at least one of
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without exceeding either
--   value. If you specify this option, Elastic Transcoder does not scale
--   the video up. * <tt>ShrinkToFill</tt> : Elastic Transcoder scales the
--   output video down so that its dimensions match the values that you
--   specified for at least one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt>
--   without dropping below either value. If you specify this option,
--   Elastic Transcoder does not scale the video up.</li>
--   <li><a>vpMaxFrameRate</a> - If you specify <tt>auto</tt> for
--   <tt>FrameRate</tt> , Elastic Transcoder uses the frame rate of the
--   input video for the frame rate of the output video. Specify the
--   maximum frame rate that you want Elastic Transcoder to use when the
--   frame rate of the input video is greater than the desired maximum
--   frame rate of the output video. Valid values include: <tt>10</tt> ,
--   <tt>15</tt> , <tt>23.97</tt> , <tt>24</tt> , <tt>25</tt> ,
--   <tt>29.97</tt> , <tt>30</tt> , <tt>60</tt> .</li>
--   <li><a>vpMaxHeight</a> - The maximum height of the output video in
--   pixels. If you specify <tt>auto</tt> , Elastic Transcoder uses 1080
--   (Full HD) as the default value. If you specify a numeric value, enter
--   an even integer between 96 and 3072.</li>
--   <li><a>vpWatermarks</a> - Settings for the size, location, and opacity
--   of graphics that you want Elastic Transcoder to overlay over videos
--   that are transcoded using this preset. You can specify settings for up
--   to four watermarks. Watermarks appear in the specified size and
--   location, and with the specified opacity for the duration of the
--   transcoded video. Watermarks can be in .png or .jpg format. If you
--   want to display a watermark that is not rectangular, use the .png
--   format, which supports transparency. When you create a job that uses
--   this preset, you specify the .png or .jpg graphics that you want
--   Elastic Transcoder to include in the transcoded videos. You can
--   specify fewer graphics in the job than you specify watermark settings
--   in the preset, which allows you to use the same preset for up to four
--   watermarks that have different dimensions.</li>
--   <li><a>vpDisplayAspectRatio</a> - The value that Elastic Transcoder
--   adds to the metadata in the output file.</li>
--   <li><a>vpResolution</a> - <i>Important:</i> To better control
--   resolution and aspect ratio of output videos, we recommend that you
--   use the values <tt>MaxWidth</tt> , <tt>MaxHeight</tt> ,
--   <tt>SizingPolicy</tt> , <tt>PaddingPolicy</tt> , and
--   <tt>DisplayAspectRatio</tt> instead of <tt>Resolution</tt> and
--   <tt>AspectRatio</tt> . The two groups of settings are mutually
--   exclusive. Do not use them together. The width and height of the video
--   in the output file, in pixels. Valid values are <tt>auto</tt> and
--   <i>width</i> x <i>height</i> : * <tt>auto</tt> : Elastic Transcoder
--   attempts to preserve the width and height of the input file, subject
--   to the following rules. * <tt><i>width</i> x <i>height</i> </tt> : The
--   width and height of the output video in pixels. Note the following
--   about specifying the width and height: * The width must be an even
--   integer between 128 and 4096, inclusive. * The height must be an even
--   integer between 96 and 3072, inclusive. * If you specify a resolution
--   that is less than the resolution of the input file, Elastic Transcoder
--   rescales the output file to the lower resolution. * If you specify a
--   resolution that is greater than the resolution of the input file,
--   Elastic Transcoder rescales the output to the higher resolution. * We
--   recommend that you specify a resolution for which the product of width
--   and height is less than or equal to the applicable value in the
--   following list (<i>List - Max width x height value</i> ): * 1 - 25344
--   * 1b - 25344 * 1.1 - 101376 * 1.2 - 101376 * 1.3 - 101376 * 2 - 101376
--   * 2.1 - 202752 * 2.2 - 404720 * 3 - 404720 * 3.1 - 921600 * 3.2 -
--   1310720 * 4 - 2097152 * 4.1 - 2097152</li>
--   <li><a>vpCodec</a> - The video codec for the output file. Valid values
--   include <tt>gif</tt> , <tt>H.264</tt> , <tt>mpeg2</tt> , <tt>vp8</tt>
--   , and <tt>vp9</tt> . You can only specify <tt>vp8</tt> and
--   <tt>vp9</tt> when the container type is <tt>webm</tt> , <tt>gif</tt>
--   when the container type is <tt>gif</tt> , and <tt>mpeg2</tt> when the
--   container type is <tt>mpg</tt> .</li>
--   <li><a>vpAspectRatio</a> - <i>Important:</i> To better control
--   resolution and aspect ratio of output videos, we recommend that you
--   use the values <tt>MaxWidth</tt> , <tt>MaxHeight</tt> ,
--   <tt>SizingPolicy</tt> , <tt>PaddingPolicy</tt> , and
--   <tt>DisplayAspectRatio</tt> instead of <tt>Resolution</tt> and
--   <tt>AspectRatio</tt> . The two groups of settings are mutually
--   exclusive. Do not use them together. The display aspect ratio of the
--   video in the output file. Valid values include: <tt>auto</tt> ,
--   <tt>1:1</tt> , <tt>4:3</tt> , <tt>3:2</tt> , <tt>16:9</tt> If you
--   specify <tt>auto</tt> , Elastic Transcoder tries to preserve the
--   aspect ratio of the input file. If you specify an aspect ratio for the
--   output file that differs from aspect ratio of the input file, Elastic
--   Transcoder adds pillarboxing (black bars on the sides) or letterboxing
--   (black bars on the top and bottom) to maintain the aspect ratio of the
--   active region of the video.</li>
--   <li><a>vpPaddingPolicy</a> - When you set <tt>PaddingPolicy</tt> to
--   <tt>Pad</tt> , Elastic Transcoder may add black bars to the top and
--   bottom and/or left and right sides of the output video to make the
--   total size of the output video match the values that you specified for
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> .</li>
--   <li><a>vpMaxWidth</a> - The maximum width of the output video in
--   pixels. If you specify <tt>auto</tt> , Elastic Transcoder uses 1920
--   (Full HD) as the default value. If you specify a numeric value, enter
--   an even integer between 128 and 4096.</li>
--   <li><a>vpBitRate</a> - The bit rate of the video stream in the output
--   file, in kilobits<i>second. Valid values depend on the values of
--   <tt>Level</tt> and <tt>Profile</tt> . If you specify <tt>auto</tt> ,
--   Elastic Transcoder uses the detected bit rate of the input source. If
--   you specify a value other than <tt>auto</tt> , we recommend that you
--   specify a value less than or equal to the maximum H.264-compliant
--   value listed for your level and profile: </i>Level - Maximum video bit
--   rate in kilobits/second (baseline and main Profile) : maximum video
--   bit rate in kilobits/second (high Profile)/ * 1 - 64 : 80 * 1b - 128 :
--   160 * 1.1 - 192 : 240 * 1.2 - 384 : 480 * 1.3 - 768 : 960 * 2 - 2000 :
--   2500 * 3 - 10000 : 12500 * 3.1 - 14000 : 17500 * 3.2 - 20000 : 25000 *
--   4 - 20000 : 25000 * 4.1 - 50000 : 62500</li>
--   <li><a>vpFixedGOP</a> - Applicable only when the value of Video:Codec
--   is one of <tt>H.264</tt> , <tt>MPEG2</tt> , or <tt>VP8</tt> . Whether
--   to use a fixed value for <tt>FixedGOP</tt> . Valid values are
--   <tt>true</tt> and <tt>false</tt> : * <tt>true</tt> : Elastic
--   Transcoder uses the value of <tt>KeyframesMaxDist</tt> for the
--   distance between key frames (the number of frames in a group of
--   pictures, or GOP). * <tt>false</tt> : The distance between key frames
--   can vary. <i>Important:</i> <tt>FixedGOP</tt> must be set to
--   <tt>true</tt> for <tt>fmp4</tt> containers.</li>
--   <li><a>vpCodecOptions</a> - <b>Profile (H.264<i>VP8</i>VP9 Only)</b>
--   The H.264 profile that you want to use for the output file. Elastic
--   Transcoder supports the following profiles: * <tt>baseline</tt> : The
--   profile most commonly used for videoconferencing and for mobile
--   applications. * <tt>main</tt> : The profile used for
--   standard-definition digital TV broadcasts. * <tt>high</tt> : The
--   profile used for high-definition digital TV broadcasts and for Blu-ray
--   discs. <b>Level (H.264 Only)</b> The H.264 level that you want to use
--   for the output file. Elastic Transcoder supports the following levels:
--   <tt>1</tt> , <tt>1b</tt> , <tt>1.1</tt> , <tt>1.2</tt> , <tt>1.3</tt>
--   , <tt>2</tt> , <tt>2.1</tt> , <tt>2.2</tt> , <tt>3</tt> , <tt>3.1</tt>
--   , <tt>3.2</tt> , <tt>4</tt> , <tt>4.1</tt> <b>MaxReferenceFrames
--   (H.264 Only)</b> Applicable only when the value of Video:Codec is
--   H.264. The maximum number of previously decoded frames to use as a
--   reference for decoding future frames. Valid values are integers 0
--   through 16, but we recommend that you not use a value greater than the
--   following: <tt>Min(Floor(Maximum decoded picture buffer in macroblocks
--   * 256 / (Width in pixels * Height in pixels)), 16)</tt> where <i>Width
--   in pixels</i> and <i>Height in pixels</i> represent either MaxWidth
--   and MaxHeight, or Resolution. <i>Maximum decoded picture buffer in
--   macroblocks</i> depends on the value of the <tt>Level</tt> object. See
--   the list below. (A macroblock is a block of pixels measuring 16x16.) *
--   1 - 396 * 1b - 396 * 1.1 - 900 * 1.2 - 2376 * 1.3 - 2376 * 2 - 2376 *
--   2.1 - 4752 * 2.2 - 8100 * 3 - 8100 * 3.1 - 18000 * 3.2 - 20480 * 4 -
--   32768 * 4.1 - 32768 <b>MaxBitRate (Optional, H.264<i>MPEG2</i>VP8/VP9
--   only)</b> The maximum number of bits per second in a video buffer; the
--   size of the buffer is specified by <tt>BufferSize</tt> . Specify a
--   value between 16 and 62,500. You can reduce the bandwidth required to
--   stream a video by reducing the maximum bit rate, but this also reduces
--   the quality of the video. <b>BufferSize (Optional,
--   H.264<i>MPEG2</i>VP8/VP9 only)</b> The maximum number of bits in any x
--   seconds of the output video. This window is commonly 10 seconds, the
--   standard segment duration when you're using FMP4 or MPEG-TS for the
--   container type of the output video. Specify an integer greater than 0.
--   If you specify <tt>MaxBitRate</tt> and omit <tt>BufferSize</tt> ,
--   Elastic Transcoder sets <tt>BufferSize</tt> to 10 times the value of
--   <tt>MaxBitRate</tt> . <b>InterlacedMode (Optional, H.264/MPEG2
--   Only)</b> The interlace mode for the output video. Interlaced video is
--   used to double the perceived frame rate for a video by interlacing two
--   fields (one field on every other line, the other field on the other
--   lines) so that the human eye registers multiple pictures per frame.
--   Interlacing reduces the bandwidth required for transmitting a video,
--   but can result in blurred images and flickering. Valid values include
--   <tt>Progressive</tt> (no interlacing, top to bottom),
--   <tt>TopFirst</tt> (top field first), <tt>BottomFirst</tt> (bottom
--   field first), and <tt>Auto</tt> . If <tt>InterlaceMode</tt> is not
--   specified, Elastic Transcoder uses <tt>Progressive</tt> for the
--   output. If <tt>Auto</tt> is specified, Elastic Transcoder interlaces
--   the output. <b>ColorSpaceConversionMode (Optional, H.264/MPEG2
--   Only)</b> The color space conversion Elastic Transcoder applies to the
--   output video. Color spaces are the algorithms used by the computer to
--   store information about how to render color. <tt>Bt.601</tt> is the
--   standard for standard definition video, while <tt>Bt.709</tt> is the
--   standard for high definition video. Valid values include <tt>None</tt>
--   , <tt>Bt709toBt601</tt> , <tt>Bt601toBt709</tt> , and <tt>Auto</tt> .
--   If you chose <tt>Auto</tt> for <tt>ColorSpaceConversionMode</tt> and
--   your output is interlaced, your frame rate is one of <tt>23.97</tt> ,
--   <tt>24</tt> , <tt>25</tt> , <tt>29.97</tt> , <tt>50</tt> , or
--   <tt>60</tt> , your <tt>SegmentDuration</tt> is null, and you are using
--   one of the resolution changes from the list below, Elastic Transcoder
--   applies the following color space conversions: * <i>Standard to HD,
--   720x480 to 1920x1080</i> - Elastic Transcoder applies
--   <tt>Bt601ToBt709</tt> * <i>Standard to HD, 720x576 to 1920x1080</i> -
--   Elastic Transcoder applies <tt>Bt601ToBt709</tt> * <i>HD to Standard,
--   1920x1080 to 720x480</i> - Elastic Transcoder applies
--   <tt>Bt709ToBt601</tt> * <i>HD to Standard, 1920x1080 to 720x576</i> -
--   Elastic Transcoder applies <tt>Bt709ToBt601</tt> If you do not specify
--   a <tt>ColorSpaceConversionMode</tt> , Elastic Transcoder does not
--   change the color space of a file. If you are unsure what
--   <tt>ColorSpaceConversionMode</tt> was applied to your output file, you
--   can check the <tt>AppliedColorSpaceConversion</tt> parameter included
--   in your job response. If your job does not have an
--   <tt>AppliedColorSpaceConversion</tt> in its response, no
--   <tt>ColorSpaceConversionMode</tt> was applied.
--   <b>ChromaSubsampling</b> The sampling pattern for the chroma (color)
--   channels of the output video. Valid values include <tt>yuv420p</tt>
--   and <tt>yuv422p</tt> . <tt>yuv420p</tt> samples the chroma information
--   of every other horizontal and every other vertical line,
--   <tt>yuv422p</tt> samples the color information of every horizontal
--   line and every other vertical line. <b>LoopCount (Gif Only)</b> The
--   number of times you want the output gif to loop. Valid values include
--   <tt>Infinite</tt> and integers between <tt>0</tt> and <tt>100</tt> ,
--   inclusive.</li>
--   </ul>
videoParameters :: VideoParameters

-- | Applicable only when the value of Video:Codec is one of <tt>H.264</tt>
--   , <tt>MPEG2</tt> , or <tt>VP8</tt> . The maximum number of frames
--   between key frames. Key frames are fully encoded frames; the frames
--   between key frames are encoded based, in part, on the content of the
--   key frames. The value is an integer formatted as a string; valid
--   values are between 1 (every frame is a key frame) and 100000,
--   inclusive. A higher value results in higher compression but may also
--   discernibly decrease video quality. For <tt>Smooth</tt> outputs, the
--   <tt>FrameRate</tt> must have a constant ratio to the
--   <tt>KeyframesMaxDist</tt> . This allows <tt>Smooth</tt> playlists to
--   switch between different quality levels while the file is being
--   played. For example, an input file can have a <tt>FrameRate</tt> of 30
--   with a <tt>KeyframesMaxDist</tt> of 90. The output file then needs to
--   have a ratio of 1:3. Valid outputs would have <tt>FrameRate</tt> of
--   30, 25, and 10, and <tt>KeyframesMaxDist</tt> of 90, 75, and 30,
--   respectively. Alternately, this can be achieved by setting
--   <tt>FrameRate</tt> to auto and having the same values for
--   <tt>MaxFrameRate</tt> and <tt>KeyframesMaxDist</tt> .
vpKeyframesMaxDist :: Lens' VideoParameters (Maybe Text)

-- | The frames per second for the video stream in the output file. Valid
--   values include: <tt>auto</tt> , <tt>10</tt> , <tt>15</tt> ,
--   <tt>23.97</tt> , <tt>24</tt> , <tt>25</tt> , <tt>29.97</tt> ,
--   <tt>30</tt> , <tt>60</tt> If you specify <tt>auto</tt> , Elastic
--   Transcoder uses the detected frame rate of the input source. If you
--   specify a frame rate, we recommend that you perform the following
--   calculation: <tt>Frame rate = maximum recommended decoding speed in
--   luma samples<i>second </i> (width in pixels * height in pixels)</tt>
--   where: * <i>width in pixels</i> and <i>height in pixels</i> represent
--   the Resolution of the output video. * <i>maximum recommended decoding
--   speed in Luma samples/second</i> is less than or equal to the maximum
--   value listed in the following table, based on the value that you
--   specified for Level. The maximum recommended decoding speed in Luma
--   samples<i>second for each level is described in the following list
--   (</i>Level - Decoding speed/ ): * 1 - 380160 * 1b - 380160 * 1.1 -
--   76800 * 1.2 - 1536000 * 1.3 - 3041280 * 2 - 3041280 * 2.1 - 5068800 *
--   2.2 - 5184000 * 3 - 10368000 * 3.1 - 27648000 * 3.2 - 55296000 * 4 -
--   62914560 * 4.1 - 62914560
vpFrameRate :: Lens' VideoParameters (Maybe Text)

-- | Specify one of the following values to control scaling of the output
--   video: * <tt>Fit</tt> : Elastic Transcoder scales the output video so
--   it matches the value that you specified in either <tt>MaxWidth</tt> or
--   <tt>MaxHeight</tt> without exceeding the other value. * <tt>Fill</tt>
--   : Elastic Transcoder scales the output video so it matches the value
--   that you specified in either <tt>MaxWidth</tt> or <tt>MaxHeight</tt>
--   and matches or exceeds the other value. Elastic Transcoder centers the
--   output video and then crops it in the dimension (if any) that exceeds
--   the maximum value. * <tt>Stretch</tt> : Elastic Transcoder stretches
--   the output video to match the values that you specified for
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> . If the relative proportions
--   of the input video and the output video are different, the output
--   video will be distorted. * <tt>Keep</tt> : Elastic Transcoder does not
--   scale the output video. If either dimension of the input video exceeds
--   the values that you specified for <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> , Elastic Transcoder crops the output video. *
--   <tt>ShrinkToFit</tt> : Elastic Transcoder scales the output video down
--   so that its dimensions match the values that you specified for at
--   least one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without
--   exceeding either value. If you specify this option, Elastic Transcoder
--   does not scale the video up. * <tt>ShrinkToFill</tt> : Elastic
--   Transcoder scales the output video down so that its dimensions match
--   the values that you specified for at least one of <tt>MaxWidth</tt>
--   and <tt>MaxHeight</tt> without dropping below either value. If you
--   specify this option, Elastic Transcoder does not scale the video up.
vpSizingPolicy :: Lens' VideoParameters (Maybe Text)

-- | If you specify <tt>auto</tt> for <tt>FrameRate</tt> , Elastic
--   Transcoder uses the frame rate of the input video for the frame rate
--   of the output video. Specify the maximum frame rate that you want
--   Elastic Transcoder to use when the frame rate of the input video is
--   greater than the desired maximum frame rate of the output video. Valid
--   values include: <tt>10</tt> , <tt>15</tt> , <tt>23.97</tt> ,
--   <tt>24</tt> , <tt>25</tt> , <tt>29.97</tt> , <tt>30</tt> , <tt>60</tt>
--   .
vpMaxFrameRate :: Lens' VideoParameters (Maybe Text)

-- | The maximum height of the output video in pixels. If you specify
--   <tt>auto</tt> , Elastic Transcoder uses 1080 (Full HD) as the default
--   value. If you specify a numeric value, enter an even integer between
--   96 and 3072.
vpMaxHeight :: Lens' VideoParameters (Maybe Text)

-- | Settings for the size, location, and opacity of graphics that you want
--   Elastic Transcoder to overlay over videos that are transcoded using
--   this preset. You can specify settings for up to four watermarks.
--   Watermarks appear in the specified size and location, and with the
--   specified opacity for the duration of the transcoded video. Watermarks
--   can be in .png or .jpg format. If you want to display a watermark that
--   is not rectangular, use the .png format, which supports transparency.
--   When you create a job that uses this preset, you specify the .png or
--   .jpg graphics that you want Elastic Transcoder to include in the
--   transcoded videos. You can specify fewer graphics in the job than you
--   specify watermark settings in the preset, which allows you to use the
--   same preset for up to four watermarks that have different dimensions.
vpWatermarks :: Lens' VideoParameters [PresetWatermark]

-- | The value that Elastic Transcoder adds to the metadata in the output
--   file.
vpDisplayAspectRatio :: Lens' VideoParameters (Maybe Text)

-- | <i>Important:</i> To better control resolution and aspect ratio of
--   output videos, we recommend that you use the values <tt>MaxWidth</tt>
--   , <tt>MaxHeight</tt> , <tt>SizingPolicy</tt> , <tt>PaddingPolicy</tt>
--   , and <tt>DisplayAspectRatio</tt> instead of <tt>Resolution</tt> and
--   <tt>AspectRatio</tt> . The two groups of settings are mutually
--   exclusive. Do not use them together. The width and height of the video
--   in the output file, in pixels. Valid values are <tt>auto</tt> and
--   <i>width</i> x <i>height</i> : * <tt>auto</tt> : Elastic Transcoder
--   attempts to preserve the width and height of the input file, subject
--   to the following rules. * <tt><i>width</i> x <i>height</i> </tt> : The
--   width and height of the output video in pixels. Note the following
--   about specifying the width and height: * The width must be an even
--   integer between 128 and 4096, inclusive. * The height must be an even
--   integer between 96 and 3072, inclusive. * If you specify a resolution
--   that is less than the resolution of the input file, Elastic Transcoder
--   rescales the output file to the lower resolution. * If you specify a
--   resolution that is greater than the resolution of the input file,
--   Elastic Transcoder rescales the output to the higher resolution. * We
--   recommend that you specify a resolution for which the product of width
--   and height is less than or equal to the applicable value in the
--   following list (<i>List - Max width x height value</i> ): * 1 - 25344
--   * 1b - 25344 * 1.1 - 101376 * 1.2 - 101376 * 1.3 - 101376 * 2 - 101376
--   * 2.1 - 202752 * 2.2 - 404720 * 3 - 404720 * 3.1 - 921600 * 3.2 -
--   1310720 * 4 - 2097152 * 4.1 - 2097152
vpResolution :: Lens' VideoParameters (Maybe Text)

-- | The video codec for the output file. Valid values include <tt>gif</tt>
--   , <tt>H.264</tt> , <tt>mpeg2</tt> , <tt>vp8</tt> , and <tt>vp9</tt> .
--   You can only specify <tt>vp8</tt> and <tt>vp9</tt> when the container
--   type is <tt>webm</tt> , <tt>gif</tt> when the container type is
--   <tt>gif</tt> , and <tt>mpeg2</tt> when the container type is
--   <tt>mpg</tt> .
vpCodec :: Lens' VideoParameters (Maybe Text)

-- | <i>Important:</i> To better control resolution and aspect ratio of
--   output videos, we recommend that you use the values <tt>MaxWidth</tt>
--   , <tt>MaxHeight</tt> , <tt>SizingPolicy</tt> , <tt>PaddingPolicy</tt>
--   , and <tt>DisplayAspectRatio</tt> instead of <tt>Resolution</tt> and
--   <tt>AspectRatio</tt> . The two groups of settings are mutually
--   exclusive. Do not use them together. The display aspect ratio of the
--   video in the output file. Valid values include: <tt>auto</tt> ,
--   <tt>1:1</tt> , <tt>4:3</tt> , <tt>3:2</tt> , <tt>16:9</tt> If you
--   specify <tt>auto</tt> , Elastic Transcoder tries to preserve the
--   aspect ratio of the input file. If you specify an aspect ratio for the
--   output file that differs from aspect ratio of the input file, Elastic
--   Transcoder adds pillarboxing (black bars on the sides) or letterboxing
--   (black bars on the top and bottom) to maintain the aspect ratio of the
--   active region of the video.
vpAspectRatio :: Lens' VideoParameters (Maybe Text)

-- | When you set <tt>PaddingPolicy</tt> to <tt>Pad</tt> , Elastic
--   Transcoder may add black bars to the top and bottom and/or left and
--   right sides of the output video to make the total size of the output
--   video match the values that you specified for <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> .
vpPaddingPolicy :: Lens' VideoParameters (Maybe Text)

-- | The maximum width of the output video in pixels. If you specify
--   <tt>auto</tt> , Elastic Transcoder uses 1920 (Full HD) as the default
--   value. If you specify a numeric value, enter an even integer between
--   128 and 4096.
vpMaxWidth :: Lens' VideoParameters (Maybe Text)

-- | The bit rate of the video stream in the output file, in
--   kilobits<i>second. Valid values depend on the values of <tt>Level</tt>
--   and <tt>Profile</tt> . If you specify <tt>auto</tt> , Elastic
--   Transcoder uses the detected bit rate of the input source. If you
--   specify a value other than <tt>auto</tt> , we recommend that you
--   specify a value less than or equal to the maximum H.264-compliant
--   value listed for your level and profile: </i>Level - Maximum video bit
--   rate in kilobits/second (baseline and main Profile) : maximum video
--   bit rate in kilobits/second (high Profile)/ * 1 - 64 : 80 * 1b - 128 :
--   160 * 1.1 - 192 : 240 * 1.2 - 384 : 480 * 1.3 - 768 : 960 * 2 - 2000 :
--   2500 * 3 - 10000 : 12500 * 3.1 - 14000 : 17500 * 3.2 - 20000 : 25000 *
--   4 - 20000 : 25000 * 4.1 - 50000 : 62500
vpBitRate :: Lens' VideoParameters (Maybe Text)

-- | Applicable only when the value of Video:Codec is one of <tt>H.264</tt>
--   , <tt>MPEG2</tt> , or <tt>VP8</tt> . Whether to use a fixed value for
--   <tt>FixedGOP</tt> . Valid values are <tt>true</tt> and <tt>false</tt>
--   : * <tt>true</tt> : Elastic Transcoder uses the value of
--   <tt>KeyframesMaxDist</tt> for the distance between key frames (the
--   number of frames in a group of pictures, or GOP). * <tt>false</tt> :
--   The distance between key frames can vary. <i>Important:</i>
--   <tt>FixedGOP</tt> must be set to <tt>true</tt> for <tt>fmp4</tt>
--   containers.
vpFixedGOP :: Lens' VideoParameters (Maybe Text)

-- | <b>Profile (H.264<i>VP8</i>VP9 Only)</b> The H.264 profile that you
--   want to use for the output file. Elastic Transcoder supports the
--   following profiles: * <tt>baseline</tt> : The profile most commonly
--   used for videoconferencing and for mobile applications. *
--   <tt>main</tt> : The profile used for standard-definition digital TV
--   broadcasts. * <tt>high</tt> : The profile used for high-definition
--   digital TV broadcasts and for Blu-ray discs. <b>Level (H.264 Only)</b>
--   The H.264 level that you want to use for the output file. Elastic
--   Transcoder supports the following levels: <tt>1</tt> , <tt>1b</tt> ,
--   <tt>1.1</tt> , <tt>1.2</tt> , <tt>1.3</tt> , <tt>2</tt> , <tt>2.1</tt>
--   , <tt>2.2</tt> , <tt>3</tt> , <tt>3.1</tt> , <tt>3.2</tt> , <tt>4</tt>
--   , <tt>4.1</tt> <b>MaxReferenceFrames (H.264 Only)</b> Applicable only
--   when the value of Video:Codec is H.264. The maximum number of
--   previously decoded frames to use as a reference for decoding future
--   frames. Valid values are integers 0 through 16, but we recommend that
--   you not use a value greater than the following: <tt>Min(Floor(Maximum
--   decoded picture buffer in macroblocks * 256 / (Width in pixels *
--   Height in pixels)), 16)</tt> where <i>Width in pixels</i> and
--   <i>Height in pixels</i> represent either MaxWidth and MaxHeight, or
--   Resolution. <i>Maximum decoded picture buffer in macroblocks</i>
--   depends on the value of the <tt>Level</tt> object. See the list below.
--   (A macroblock is a block of pixels measuring 16x16.) * 1 - 396 * 1b -
--   396 * 1.1 - 900 * 1.2 - 2376 * 1.3 - 2376 * 2 - 2376 * 2.1 - 4752 *
--   2.2 - 8100 * 3 - 8100 * 3.1 - 18000 * 3.2 - 20480 * 4 - 32768 * 4.1 -
--   32768 <b>MaxBitRate (Optional, H.264<i>MPEG2</i>VP8/VP9 only)</b> The
--   maximum number of bits per second in a video buffer; the size of the
--   buffer is specified by <tt>BufferSize</tt> . Specify a value between
--   16 and 62,500. You can reduce the bandwidth required to stream a video
--   by reducing the maximum bit rate, but this also reduces the quality of
--   the video. <b>BufferSize (Optional, H.264<i>MPEG2</i>VP8/VP9 only)</b>
--   The maximum number of bits in any x seconds of the output video. This
--   window is commonly 10 seconds, the standard segment duration when
--   you're using FMP4 or MPEG-TS for the container type of the output
--   video. Specify an integer greater than 0. If you specify
--   <tt>MaxBitRate</tt> and omit <tt>BufferSize</tt> , Elastic Transcoder
--   sets <tt>BufferSize</tt> to 10 times the value of <tt>MaxBitRate</tt>
--   . <b>InterlacedMode (Optional, H.264/MPEG2 Only)</b> The interlace
--   mode for the output video. Interlaced video is used to double the
--   perceived frame rate for a video by interlacing two fields (one field
--   on every other line, the other field on the other lines) so that the
--   human eye registers multiple pictures per frame. Interlacing reduces
--   the bandwidth required for transmitting a video, but can result in
--   blurred images and flickering. Valid values include
--   <tt>Progressive</tt> (no interlacing, top to bottom),
--   <tt>TopFirst</tt> (top field first), <tt>BottomFirst</tt> (bottom
--   field first), and <tt>Auto</tt> . If <tt>InterlaceMode</tt> is not
--   specified, Elastic Transcoder uses <tt>Progressive</tt> for the
--   output. If <tt>Auto</tt> is specified, Elastic Transcoder interlaces
--   the output. <b>ColorSpaceConversionMode (Optional, H.264/MPEG2
--   Only)</b> The color space conversion Elastic Transcoder applies to the
--   output video. Color spaces are the algorithms used by the computer to
--   store information about how to render color. <tt>Bt.601</tt> is the
--   standard for standard definition video, while <tt>Bt.709</tt> is the
--   standard for high definition video. Valid values include <tt>None</tt>
--   , <tt>Bt709toBt601</tt> , <tt>Bt601toBt709</tt> , and <tt>Auto</tt> .
--   If you chose <tt>Auto</tt> for <tt>ColorSpaceConversionMode</tt> and
--   your output is interlaced, your frame rate is one of <tt>23.97</tt> ,
--   <tt>24</tt> , <tt>25</tt> , <tt>29.97</tt> , <tt>50</tt> , or
--   <tt>60</tt> , your <tt>SegmentDuration</tt> is null, and you are using
--   one of the resolution changes from the list below, Elastic Transcoder
--   applies the following color space conversions: * <i>Standard to HD,
--   720x480 to 1920x1080</i> - Elastic Transcoder applies
--   <tt>Bt601ToBt709</tt> * <i>Standard to HD, 720x576 to 1920x1080</i> -
--   Elastic Transcoder applies <tt>Bt601ToBt709</tt> * <i>HD to Standard,
--   1920x1080 to 720x480</i> - Elastic Transcoder applies
--   <tt>Bt709ToBt601</tt> * <i>HD to Standard, 1920x1080 to 720x576</i> -
--   Elastic Transcoder applies <tt>Bt709ToBt601</tt> If you do not specify
--   a <tt>ColorSpaceConversionMode</tt> , Elastic Transcoder does not
--   change the color space of a file. If you are unsure what
--   <tt>ColorSpaceConversionMode</tt> was applied to your output file, you
--   can check the <tt>AppliedColorSpaceConversion</tt> parameter included
--   in your job response. If your job does not have an
--   <tt>AppliedColorSpaceConversion</tt> in its response, no
--   <tt>ColorSpaceConversionMode</tt> was applied.
--   <b>ChromaSubsampling</b> The sampling pattern for the chroma (color)
--   channels of the output video. Valid values include <tt>yuv420p</tt>
--   and <tt>yuv422p</tt> . <tt>yuv420p</tt> samples the chroma information
--   of every other horizontal and every other vertical line,
--   <tt>yuv422p</tt> samples the color information of every horizontal
--   line and every other vertical line. <b>LoopCount (Gif Only)</b> The
--   number of times you want the output gif to loop. Valid values include
--   <tt>Infinite</tt> and integers between <tt>0</tt> and <tt>100</tt> ,
--   inclusive.
vpCodecOptions :: Lens' VideoParameters (HashMap Text Text)

-- | Elastic Transcoder returns a warning if the resources used by your
--   pipeline are not in the same region as the pipeline.
--   
--   Using resources in the same region, such as your Amazon S3 buckets,
--   Amazon SNS notification topics, and AWS KMS key, reduces processing
--   time and prevents cross-regional charges.
--   
--   <i>See:</i> <a>warning</a> smart constructor.
data Warning

-- | Creates a value of <a>Warning</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>wCode</a> - The code of the cross-regional warning.</li>
--   <li><a>wMessage</a> - The message explaining what resources are in a
--   different region from the pipeline.</li>
--   </ul>
warning :: Warning

-- | The code of the cross-regional warning.
wCode :: Lens' Warning (Maybe Text)

-- | The message explaining what resources are in a different region from
--   the pipeline.
wMessage :: Lens' Warning (Maybe Text)


-- | The ReadPreset operation gets detailed information about a preset.
module Network.AWS.ElasticTranscoder.ReadPreset

-- | Creates a value of <a>ReadPreset</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rpId</a> - The identifier of the preset for which you want to
--   get detailed information.</li>
--   </ul>
readPreset :: Text -> ReadPreset

-- | The <tt>ReadPresetRequest</tt> structure.
--   
--   <i>See:</i> <a>readPreset</a> smart constructor.
data ReadPreset

-- | The identifier of the preset for which you want to get detailed
--   information.
rpId :: Lens' ReadPreset Text

-- | Creates a value of <a>ReadPresetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rprsPreset</a> - A section of the response body that provides
--   information about the preset.</li>
--   <li><a>rprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
readPresetResponse :: Int -> ReadPresetResponse

-- | The <tt>ReadPresetResponse</tt> structure.
--   
--   <i>See:</i> <a>readPresetResponse</a> smart constructor.
data ReadPresetResponse

-- | A section of the response body that provides information about the
--   preset.
rprsPreset :: Lens' ReadPresetResponse (Maybe Preset)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
rprsResponseStatus :: Lens' ReadPresetResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ReadPreset.ReadPresetResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.ReadPreset.ReadPresetResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ReadPreset.ReadPresetResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ReadPreset.ReadPresetResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ReadPreset.ReadPresetResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ReadPreset.ReadPreset
instance Data.Data.Data Network.AWS.ElasticTranscoder.ReadPreset.ReadPreset
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ReadPreset.ReadPreset
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ReadPreset.ReadPreset
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ReadPreset.ReadPreset
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.ReadPreset.ReadPreset
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ReadPreset.ReadPresetResponse
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.ReadPreset.ReadPreset
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ReadPreset.ReadPreset
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.ReadPreset.ReadPreset
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.ReadPreset.ReadPreset
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.ReadPreset.ReadPreset


-- | The ReadPipeline operation gets detailed information about a pipeline.
module Network.AWS.ElasticTranscoder.ReadPipeline

-- | Creates a value of <a>ReadPipeline</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rId</a> - The identifier of the pipeline to read.</li>
--   </ul>
readPipeline :: Text -> ReadPipeline

-- | The <tt>ReadPipelineRequest</tt> structure.
--   
--   <i>See:</i> <a>readPipeline</a> smart constructor.
data ReadPipeline

-- | The identifier of the pipeline to read.
rId :: Lens' ReadPipeline Text

-- | Creates a value of <a>ReadPipelineResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrsWarnings</a> - Elastic Transcoder returns a warning if the
--   resources used by your pipeline are not in the same region as the
--   pipeline. Using resources in the same region, such as your Amazon S3
--   buckets, Amazon SNS notification topics, and AWS KMS key, reduces
--   processing time and prevents cross-regional charges.</li>
--   <li><a>rrsPipeline</a> - A section of the response body that provides
--   information about the pipeline.</li>
--   <li><a>rrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
readPipelineResponse :: Int -> ReadPipelineResponse

-- | The <tt>ReadPipelineResponse</tt> structure.
--   
--   <i>See:</i> <a>readPipelineResponse</a> smart constructor.
data ReadPipelineResponse

-- | Elastic Transcoder returns a warning if the resources used by your
--   pipeline are not in the same region as the pipeline. Using resources
--   in the same region, such as your Amazon S3 buckets, Amazon SNS
--   notification topics, and AWS KMS key, reduces processing time and
--   prevents cross-regional charges.
rrsWarnings :: Lens' ReadPipelineResponse [Warning]

-- | A section of the response body that provides information about the
--   pipeline.
rrsPipeline :: Lens' ReadPipelineResponse (Maybe Pipeline)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
rrsResponseStatus :: Lens' ReadPipelineResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipelineResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipelineResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipelineResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipelineResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipelineResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipeline
instance Data.Data.Data Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipeline
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipeline
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipeline
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipeline
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipeline
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipelineResponse
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipeline
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipeline
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipeline
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipeline
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.ReadPipeline.ReadPipeline


-- | The ReadJob operation returns detailed information about a job.
module Network.AWS.ElasticTranscoder.ReadJob

-- | Creates a value of <a>ReadJob</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rjId</a> - The identifier of the job for which you want to get
--   detailed information.</li>
--   </ul>
readJob :: Text -> ReadJob

-- | The <tt>ReadJobRequest</tt> structure.
--   
--   <i>See:</i> <a>readJob</a> smart constructor.
data ReadJob

-- | The identifier of the job for which you want to get detailed
--   information.
rjId :: Lens' ReadJob Text

-- | Creates a value of <a>ReadJobResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rjrsResponseStatus</a> - -- | The response status code.</li>
--   <li><a>rjrsJob</a> - A section of the response body that provides
--   information about the job.</li>
--   </ul>
readJobResponse :: Int -> Job' -> ReadJobResponse

-- | The <tt>ReadJobResponse</tt> structure.
--   
--   <i>See:</i> <a>readJobResponse</a> smart constructor.
data ReadJobResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
rjrsResponseStatus :: Lens' ReadJobResponse Int

-- | A section of the response body that provides information about the
--   job.
rjrsJob :: Lens' ReadJobResponse Job'
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ReadJob.ReadJobResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.ReadJob.ReadJobResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ReadJob.ReadJobResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ReadJob.ReadJobResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ReadJob.ReadJobResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ReadJob.ReadJob
instance Data.Data.Data Network.AWS.ElasticTranscoder.ReadJob.ReadJob
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ReadJob.ReadJob
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ReadJob.ReadJob
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ReadJob.ReadJob
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.ReadJob.ReadJob
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ReadJob.ReadJobResponse
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.ReadJob.ReadJob
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ReadJob.ReadJob
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.ReadJob.ReadJob
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.ReadJob.ReadJob
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.ReadJob.ReadJob


-- | The ListPresets operation gets a list of the default presets included
--   with Elastic Transcoder and the presets that you've added in an AWS
--   region.
--   
--   This operation returns paginated results.
module Network.AWS.ElasticTranscoder.ListPresets

-- | Creates a value of <a>ListPresets</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lAscending</a> - To list presets in chronological order by the
--   date and time that they were created, enter <tt>true</tt> . To list
--   presets in reverse chronological order, enter <tt>false</tt> .</li>
--   <li><a>lPageToken</a> - When Elastic Transcoder returns more than one
--   page of results, use <tt>pageToken</tt> in subsequent <tt>GET</tt>
--   requests to get each successive page of results.</li>
--   </ul>
listPresets :: ListPresets

-- | The <tt>ListPresetsRequest</tt> structure.
--   
--   <i>See:</i> <a>listPresets</a> smart constructor.
data ListPresets

-- | To list presets in chronological order by the date and time that they
--   were created, enter <tt>true</tt> . To list presets in reverse
--   chronological order, enter <tt>false</tt> .
lAscending :: Lens' ListPresets (Maybe Text)

-- | When Elastic Transcoder returns more than one page of results, use
--   <tt>pageToken</tt> in subsequent <tt>GET</tt> requests to get each
--   successive page of results.
lPageToken :: Lens' ListPresets (Maybe Text)

-- | Creates a value of <a>ListPresetsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lrsNextPageToken</a> - A value that you use to access the
--   second and subsequent pages of results, if any. When the presets fit
--   on one page or when you've reached the last page of results, the value
--   of <tt>NextPageToken</tt> is <tt>null</tt> .</li>
--   <li><a>lrsPresets</a> - An array of <tt>Preset</tt> objects.</li>
--   <li><a>lrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listPresetsResponse :: Int -> ListPresetsResponse

-- | The <tt>ListPresetsResponse</tt> structure.
--   
--   <i>See:</i> <a>listPresetsResponse</a> smart constructor.
data ListPresetsResponse

-- | A value that you use to access the second and subsequent pages of
--   results, if any. When the presets fit on one page or when you've
--   reached the last page of results, the value of <tt>NextPageToken</tt>
--   is <tt>null</tt> .
lrsNextPageToken :: Lens' ListPresetsResponse (Maybe Text)

-- | An array of <tt>Preset</tt> objects.
lrsPresets :: Lens' ListPresetsResponse [Preset]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lrsResponseStatus :: Lens' ListPresetsResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ListPresets.ListPresetsResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.ListPresets.ListPresetsResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ListPresets.ListPresetsResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ListPresets.ListPresetsResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ListPresets.ListPresetsResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ListPresets.ListPresets
instance Data.Data.Data Network.AWS.ElasticTranscoder.ListPresets.ListPresets
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ListPresets.ListPresets
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ListPresets.ListPresets
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ListPresets.ListPresets
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.ListPresets.ListPresets
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ListPresets.ListPresetsResponse
instance Network.AWS.Pager.AWSPager Network.AWS.ElasticTranscoder.ListPresets.ListPresets
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.ListPresets.ListPresets
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ListPresets.ListPresets
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.ListPresets.ListPresets
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.ListPresets.ListPresets
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.ListPresets.ListPresets


-- | The ListPipelines operation gets a list of the pipelines associated
--   with the current AWS account.
--   
--   This operation returns paginated results.
module Network.AWS.ElasticTranscoder.ListPipelines

-- | Creates a value of <a>ListPipelines</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lpAscending</a> - To list pipelines in chronological order by
--   the date and time that they were created, enter <tt>true</tt> . To
--   list pipelines in reverse chronological order, enter <tt>false</tt>
--   .</li>
--   <li><a>lpPageToken</a> - When Elastic Transcoder returns more than one
--   page of results, use <tt>pageToken</tt> in subsequent <tt>GET</tt>
--   requests to get each successive page of results.</li>
--   </ul>
listPipelines :: ListPipelines

-- | The <tt>ListPipelineRequest</tt> structure.
--   
--   <i>See:</i> <a>listPipelines</a> smart constructor.
data ListPipelines

-- | To list pipelines in chronological order by the date and time that
--   they were created, enter <tt>true</tt> . To list pipelines in reverse
--   chronological order, enter <tt>false</tt> .
lpAscending :: Lens' ListPipelines (Maybe Text)

-- | When Elastic Transcoder returns more than one page of results, use
--   <tt>pageToken</tt> in subsequent <tt>GET</tt> requests to get each
--   successive page of results.
lpPageToken :: Lens' ListPipelines (Maybe Text)

-- | Creates a value of <a>ListPipelinesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lprsNextPageToken</a> - A value that you use to access the
--   second and subsequent pages of results, if any. When the pipelines fit
--   on one page or when you've reached the last page of results, the value
--   of <tt>NextPageToken</tt> is <tt>null</tt> .</li>
--   <li><a>lprsPipelines</a> - An array of <tt>Pipeline</tt> objects.</li>
--   <li><a>lprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listPipelinesResponse :: Int -> ListPipelinesResponse

-- | A list of the pipelines associated with the current AWS account.
--   
--   <i>See:</i> <a>listPipelinesResponse</a> smart constructor.
data ListPipelinesResponse

-- | A value that you use to access the second and subsequent pages of
--   results, if any. When the pipelines fit on one page or when you've
--   reached the last page of results, the value of <tt>NextPageToken</tt>
--   is <tt>null</tt> .
lprsNextPageToken :: Lens' ListPipelinesResponse (Maybe Text)

-- | An array of <tt>Pipeline</tt> objects.
lprsPipelines :: Lens' ListPipelinesResponse [Pipeline]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lprsResponseStatus :: Lens' ListPipelinesResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ListPipelines.ListPipelinesResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.ListPipelines.ListPipelinesResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ListPipelines.ListPipelinesResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ListPipelines.ListPipelinesResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ListPipelines.ListPipelinesResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ListPipelines.ListPipelines
instance Data.Data.Data Network.AWS.ElasticTranscoder.ListPipelines.ListPipelines
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ListPipelines.ListPipelines
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ListPipelines.ListPipelines
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ListPipelines.ListPipelines
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.ListPipelines.ListPipelines
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ListPipelines.ListPipelinesResponse
instance Network.AWS.Pager.AWSPager Network.AWS.ElasticTranscoder.ListPipelines.ListPipelines
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.ListPipelines.ListPipelines
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ListPipelines.ListPipelines
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.ListPipelines.ListPipelines
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.ListPipelines.ListPipelines
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.ListPipelines.ListPipelines


-- | The ListJobsByStatus operation gets a list of jobs that have a
--   specified status. The response body contains one element for each job
--   that satisfies the search criteria.
--   
--   This operation returns paginated results.
module Network.AWS.ElasticTranscoder.ListJobsByStatus

-- | Creates a value of <a>ListJobsByStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ljbsAscending</a> - To list jobs in chronological order by the
--   date and time that they were submitted, enter <tt>true</tt> . To list
--   jobs in reverse chronological order, enter <tt>false</tt> .</li>
--   <li><a>ljbsPageToken</a> - When Elastic Transcoder returns more than
--   one page of results, use <tt>pageToken</tt> in subsequent <tt>GET</tt>
--   requests to get each successive page of results.</li>
--   <li><a>ljbsStatus</a> - To get information about all of the jobs
--   associated with the current AWS account that have a given status,
--   specify the following status: <tt>Submitted</tt> ,
--   <tt>Progressing</tt> , <tt>Complete</tt> , <tt>Canceled</tt> , or
--   <tt>Error</tt> .</li>
--   </ul>
listJobsByStatus :: Text -> ListJobsByStatus

-- | The <tt>ListJobsByStatusRequest</tt> structure.
--   
--   <i>See:</i> <a>listJobsByStatus</a> smart constructor.
data ListJobsByStatus

-- | To list jobs in chronological order by the date and time that they
--   were submitted, enter <tt>true</tt> . To list jobs in reverse
--   chronological order, enter <tt>false</tt> .
ljbsAscending :: Lens' ListJobsByStatus (Maybe Text)

-- | When Elastic Transcoder returns more than one page of results, use
--   <tt>pageToken</tt> in subsequent <tt>GET</tt> requests to get each
--   successive page of results.
ljbsPageToken :: Lens' ListJobsByStatus (Maybe Text)

-- | To get information about all of the jobs associated with the current
--   AWS account that have a given status, specify the following status:
--   <tt>Submitted</tt> , <tt>Progressing</tt> , <tt>Complete</tt> ,
--   <tt>Canceled</tt> , or <tt>Error</tt> .
ljbsStatus :: Lens' ListJobsByStatus Text

-- | Creates a value of <a>ListJobsByStatusResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ljbsrsNextPageToken</a> - A value that you use to access the
--   second and subsequent pages of results, if any. When the jobs in the
--   specified pipeline fit on one page or when you've reached the last
--   page of results, the value of <tt>NextPageToken</tt> is <tt>null</tt>
--   .</li>
--   <li><a>ljbsrsJobs</a> - An array of <tt>Job</tt> objects that have the
--   specified status.</li>
--   <li><a>ljbsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listJobsByStatusResponse :: Int -> ListJobsByStatusResponse

-- | The <tt>ListJobsByStatusResponse</tt> structure.
--   
--   <i>See:</i> <a>listJobsByStatusResponse</a> smart constructor.
data ListJobsByStatusResponse

-- | A value that you use to access the second and subsequent pages of
--   results, if any. When the jobs in the specified pipeline fit on one
--   page or when you've reached the last page of results, the value of
--   <tt>NextPageToken</tt> is <tt>null</tt> .
ljbsrsNextPageToken :: Lens' ListJobsByStatusResponse (Maybe Text)

-- | An array of <tt>Job</tt> objects that have the specified status.
ljbsrsJobs :: Lens' ListJobsByStatusResponse [Job']

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ljbsrsResponseStatus :: Lens' ListJobsByStatusResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatusResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatusResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatusResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatusResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatusResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatus
instance Data.Data.Data Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatus
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatus
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatus
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatus
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatus
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatusResponse
instance Network.AWS.Pager.AWSPager Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatus
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatus
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatus
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatus
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatus
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.ListJobsByStatus.ListJobsByStatus


-- | The ListJobsByPipeline operation gets a list of the jobs currently in
--   a pipeline.
--   
--   Elastic Transcoder returns all of the jobs currently in the specified
--   pipeline. The response body contains one element for each job that
--   satisfies the search criteria.
--   
--   This operation returns paginated results.
module Network.AWS.ElasticTranscoder.ListJobsByPipeline

-- | Creates a value of <a>ListJobsByPipeline</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ljbpAscending</a> - To list jobs in chronological order by the
--   date and time that they were submitted, enter <tt>true</tt> . To list
--   jobs in reverse chronological order, enter <tt>false</tt> .</li>
--   <li><a>ljbpPageToken</a> - When Elastic Transcoder returns more than
--   one page of results, use <tt>pageToken</tt> in subsequent <tt>GET</tt>
--   requests to get each successive page of results.</li>
--   <li><a>ljbpPipelineId</a> - The ID of the pipeline for which you want
--   to get job information.</li>
--   </ul>
listJobsByPipeline :: Text -> ListJobsByPipeline

-- | The <tt>ListJobsByPipelineRequest</tt> structure.
--   
--   <i>See:</i> <a>listJobsByPipeline</a> smart constructor.
data ListJobsByPipeline

-- | To list jobs in chronological order by the date and time that they
--   were submitted, enter <tt>true</tt> . To list jobs in reverse
--   chronological order, enter <tt>false</tt> .
ljbpAscending :: Lens' ListJobsByPipeline (Maybe Text)

-- | When Elastic Transcoder returns more than one page of results, use
--   <tt>pageToken</tt> in subsequent <tt>GET</tt> requests to get each
--   successive page of results.
ljbpPageToken :: Lens' ListJobsByPipeline (Maybe Text)

-- | The ID of the pipeline for which you want to get job information.
ljbpPipelineId :: Lens' ListJobsByPipeline Text

-- | Creates a value of <a>ListJobsByPipelineResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ljbprsNextPageToken</a> - A value that you use to access the
--   second and subsequent pages of results, if any. When the jobs in the
--   specified pipeline fit on one page or when you've reached the last
--   page of results, the value of <tt>NextPageToken</tt> is <tt>null</tt>
--   .</li>
--   <li><a>ljbprsJobs</a> - An array of <tt>Job</tt> objects that are in
--   the specified pipeline.</li>
--   <li><a>ljbprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listJobsByPipelineResponse :: Int -> ListJobsByPipelineResponse

-- | The <tt>ListJobsByPipelineResponse</tt> structure.
--   
--   <i>See:</i> <a>listJobsByPipelineResponse</a> smart constructor.
data ListJobsByPipelineResponse

-- | A value that you use to access the second and subsequent pages of
--   results, if any. When the jobs in the specified pipeline fit on one
--   page or when you've reached the last page of results, the value of
--   <tt>NextPageToken</tt> is <tt>null</tt> .
ljbprsNextPageToken :: Lens' ListJobsByPipelineResponse (Maybe Text)

-- | An array of <tt>Job</tt> objects that are in the specified pipeline.
ljbprsJobs :: Lens' ListJobsByPipelineResponse [Job']

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ljbprsResponseStatus :: Lens' ListJobsByPipelineResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipelineResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipelineResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipelineResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipelineResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipelineResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipeline
instance Data.Data.Data Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipeline
instance GHC.Show.Show Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipeline
instance GHC.Read.Read Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipeline
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipeline
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipeline
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipelineResponse
instance Network.AWS.Pager.AWSPager Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipeline
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipeline
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipeline
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipeline
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipeline
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.ListJobsByPipeline.ListJobsByPipeline


-- | The DeletePreset operation removes a preset that you've added in an
--   AWS region.
module Network.AWS.ElasticTranscoder.DeletePreset

-- | Creates a value of <a>DeletePreset</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dpId</a> - The identifier of the preset for which you want to
--   get detailed information.</li>
--   </ul>
deletePreset :: Text -> DeletePreset

-- | The <tt>DeletePresetRequest</tt> structure.
--   
--   <i>See:</i> <a>deletePreset</a> smart constructor.
data DeletePreset

-- | The identifier of the preset for which you want to get detailed
--   information.
dpId :: Lens' DeletePreset Text

-- | Creates a value of <a>DeletePresetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deletePresetResponse :: Int -> DeletePresetResponse

-- | The <tt>DeletePresetResponse</tt> structure.
--   
--   <i>See:</i> <a>deletePresetResponse</a> smart constructor.
data DeletePresetResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dprsResponseStatus :: Lens' DeletePresetResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.DeletePreset.DeletePresetResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.DeletePreset.DeletePresetResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.DeletePreset.DeletePresetResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.DeletePreset.DeletePresetResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.DeletePreset.DeletePresetResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.DeletePreset.DeletePreset
instance Data.Data.Data Network.AWS.ElasticTranscoder.DeletePreset.DeletePreset
instance GHC.Show.Show Network.AWS.ElasticTranscoder.DeletePreset.DeletePreset
instance GHC.Read.Read Network.AWS.ElasticTranscoder.DeletePreset.DeletePreset
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.DeletePreset.DeletePreset
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.DeletePreset.DeletePreset
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.DeletePreset.DeletePresetResponse
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.DeletePreset.DeletePreset
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.DeletePreset.DeletePreset
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.DeletePreset.DeletePreset
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.DeletePreset.DeletePreset
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.DeletePreset.DeletePreset


-- | The DeletePipeline operation removes a pipeline.
--   
--   You can only delete a pipeline that has never been used or that is not
--   currently in use (doesn't contain any active jobs). If the pipeline is
--   currently in use, <tt>DeletePipeline</tt> returns an error.
module Network.AWS.ElasticTranscoder.DeletePipeline

-- | Creates a value of <a>DeletePipeline</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dId</a> - The identifier of the pipeline that you want to
--   delete.</li>
--   </ul>
deletePipeline :: Text -> DeletePipeline

-- | The <tt>DeletePipelineRequest</tt> structure.
--   
--   <i>See:</i> <a>deletePipeline</a> smart constructor.
data DeletePipeline

-- | The identifier of the pipeline that you want to delete.
dId :: Lens' DeletePipeline Text

-- | Creates a value of <a>DeletePipelineResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deletePipelineResponse :: Int -> DeletePipelineResponse

-- | The <tt>DeletePipelineResponse</tt> structure.
--   
--   <i>See:</i> <a>deletePipelineResponse</a> smart constructor.
data DeletePipelineResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drsResponseStatus :: Lens' DeletePipelineResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipelineResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipelineResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipelineResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipelineResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipelineResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipeline
instance Data.Data.Data Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipeline
instance GHC.Show.Show Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipeline
instance GHC.Read.Read Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipeline
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipeline
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipeline
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipelineResponse
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipeline
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipeline
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipeline
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipeline
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.DeletePipeline.DeletePipeline


-- | The CreatePreset operation creates a preset with settings that you
--   specify.
--   
--   <i>Important:</i> Elastic Transcoder checks the CreatePreset settings
--   to ensure that they meet Elastic Transcoder requirements and to
--   determine whether they comply with H.264 standards. If your settings
--   are not valid for Elastic Transcoder, Elastic Transcoder returns an
--   HTTP 400 response (<tt>ValidationException</tt> ) and does not create
--   the preset. If the settings are valid for Elastic Transcoder but
--   aren't strictly compliant with the H.264 standard, Elastic Transcoder
--   creates the preset and returns a warning message in the response. This
--   helps you determine whether your settings comply with the H.264
--   standard while giving you greater flexibility with respect to the
--   video that Elastic Transcoder produces.
--   
--   Elastic Transcoder uses the H.264 video-compression format. For more
--   information, see the International Telecommunication Union publication
--   <i>Recommendation ITU-T H.264: Advanced video coding for generic
--   audiovisual services</i> .
module Network.AWS.ElasticTranscoder.CreatePreset

-- | Creates a value of <a>CreatePreset</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpVideo</a> - A section of the request body that specifies the
--   video parameters.</li>
--   <li><a>cpThumbnails</a> - A section of the request body that specifies
--   the thumbnail parameters, if any.</li>
--   <li><a>cpDescription</a> - A description of the preset.</li>
--   <li><a>cpAudio</a> - A section of the request body that specifies the
--   audio parameters.</li>
--   <li><a>cpName</a> - The name of the preset. We recommend that the name
--   be unique within the AWS account, but uniqueness is not enforced.</li>
--   <li><a>cpContainer</a> - The container type for the output file. Valid
--   values include <tt>flac</tt> , <tt>flv</tt> , <tt>fmp4</tt> ,
--   <tt>gif</tt> , <tt>mp3</tt> , <tt>mp4</tt> , <tt>mpg</tt> ,
--   <tt>mxf</tt> , <tt>oga</tt> , <tt>ogg</tt> , <tt>ts</tt> , and
--   <tt>webm</tt> .</li>
--   </ul>
createPreset :: Text -> Text -> CreatePreset

-- | The <tt>CreatePresetRequest</tt> structure.
--   
--   <i>See:</i> <a>createPreset</a> smart constructor.
data CreatePreset

-- | A section of the request body that specifies the video parameters.
cpVideo :: Lens' CreatePreset (Maybe VideoParameters)

-- | A section of the request body that specifies the thumbnail parameters,
--   if any.
cpThumbnails :: Lens' CreatePreset (Maybe Thumbnails)

-- | A description of the preset.
cpDescription :: Lens' CreatePreset (Maybe Text)

-- | A section of the request body that specifies the audio parameters.
cpAudio :: Lens' CreatePreset (Maybe AudioParameters)

-- | The name of the preset. We recommend that the name be unique within
--   the AWS account, but uniqueness is not enforced.
cpName :: Lens' CreatePreset Text

-- | The container type for the output file. Valid values include
--   <tt>flac</tt> , <tt>flv</tt> , <tt>fmp4</tt> , <tt>gif</tt> ,
--   <tt>mp3</tt> , <tt>mp4</tt> , <tt>mpg</tt> , <tt>mxf</tt> ,
--   <tt>oga</tt> , <tt>ogg</tt> , <tt>ts</tt> , and <tt>webm</tt> .
cpContainer :: Lens' CreatePreset Text

-- | Creates a value of <a>CreatePresetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cprsWarning</a> - If the preset settings don't comply with the
--   standards for the video codec but Elastic Transcoder created the
--   preset, this message explains the reason the preset settings don't
--   meet the standard. Elastic Transcoder created the preset because the
--   settings might produce acceptable output.</li>
--   <li><a>cprsPreset</a> - A section of the response body that provides
--   information about the preset that is created.</li>
--   <li><a>cprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createPresetResponse :: Int -> CreatePresetResponse

-- | The <tt>CreatePresetResponse</tt> structure.
--   
--   <i>See:</i> <a>createPresetResponse</a> smart constructor.
data CreatePresetResponse

-- | If the preset settings don't comply with the standards for the video
--   codec but Elastic Transcoder created the preset, this message explains
--   the reason the preset settings don't meet the standard. Elastic
--   Transcoder created the preset because the settings might produce
--   acceptable output.
cprsWarning :: Lens' CreatePresetResponse (Maybe Text)

-- | A section of the response body that provides information about the
--   preset that is created.
cprsPreset :: Lens' CreatePresetResponse (Maybe Preset)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
cprsResponseStatus :: Lens' CreatePresetResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.CreatePreset.CreatePresetResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.CreatePreset.CreatePresetResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.CreatePreset.CreatePresetResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.CreatePreset.CreatePresetResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.CreatePreset.CreatePresetResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.CreatePreset.CreatePreset
instance Data.Data.Data Network.AWS.ElasticTranscoder.CreatePreset.CreatePreset
instance GHC.Show.Show Network.AWS.ElasticTranscoder.CreatePreset.CreatePreset
instance GHC.Read.Read Network.AWS.ElasticTranscoder.CreatePreset.CreatePreset
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.CreatePreset.CreatePreset
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.CreatePreset.CreatePreset
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.CreatePreset.CreatePresetResponse
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.CreatePreset.CreatePreset
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.CreatePreset.CreatePreset
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.CreatePreset.CreatePreset
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ElasticTranscoder.CreatePreset.CreatePreset
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.CreatePreset.CreatePreset
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.CreatePreset.CreatePreset


-- | The CreatePipeline operation creates a pipeline with settings that you
--   specify.
module Network.AWS.ElasticTranscoder.CreatePipeline

-- | Creates a value of <a>CreatePipeline</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cContentConfig</a> - The optional <tt>ContentConfig</tt> object
--   specifies information about the Amazon S3 bucket in which you want
--   Elastic Transcoder to save transcoded files and playlists: which
--   bucket to use, which users you want to have access to the files, the
--   type of access you want users to have, and the storage class that you
--   want to assign to the files. If you specify values for
--   <tt>ContentConfig</tt> , you must also specify values for
--   <tt>ThumbnailConfig</tt> . If you specify values for
--   <tt>ContentConfig</tt> and <tt>ThumbnailConfig</tt> , omit the
--   <tt>OutputBucket</tt> object. * <b>Bucket</b> : The Amazon S3 bucket
--   in which you want Elastic Transcoder to save transcoded files and
--   playlists. * <b>Permissions</b> (Optional): The Permissions object
--   specifies which users you want to have access to transcoded files and
--   the type of access you want them to have. You can grant permissions to
--   a maximum of 30 users and<i>or predefined Amazon S3 groups. *
--   <b>Grantee Type</b> : Specify the type of value that appears in the
--   <tt>Grantee</tt> object: * <b>Canonical</b> : The value in the
--   <tt>Grantee</tt> object is either the canonical user ID for an AWS
--   account or an origin access identity for an Amazon CloudFront
--   distribution. For more information about canonical user IDs, see
--   Access Control List (ACL) Overview in the Amazon Simple Storage
--   Service Developer Guide. For more information about using CloudFront
--   origin access identities to require that users use CloudFront URLs
--   instead of Amazon S3 URLs, see Using an Origin Access Identity to
--   Restrict Access to Your Amazon S3 Content. </i>Important:/ A canonical
--   user ID is not the same as an AWS account number. * <b>Email</b> : The
--   value in the <tt>Grantee</tt> object is the registered email address
--   of an AWS account. * <b>Group</b> : The value in the <tt>Grantee</tt>
--   object is one of the following predefined Amazon S3 groups:
--   <tt>AllUsers</tt> , <tt>AuthenticatedUsers</tt> , or
--   <tt>LogDelivery</tt> . * <b>Grantee</b> : The AWS user or group that
--   you want to have access to transcoded files and playlists. To identify
--   the user or group, you can specify the canonical user ID for an AWS
--   account, an origin access identity for a CloudFront distribution, the
--   registered email address of an AWS account, or a predefined Amazon S3
--   group * <b>Access</b> : The permission that you want to give to the
--   AWS user that you specified in <tt>Grantee</tt> . Permissions are
--   granted on the files that Elastic Transcoder adds to the bucket,
--   including playlists and video files. Valid values include: *
--   <tt>READ</tt> : The grantee can read the objects and metadata for
--   objects that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>READ_ACP</tt> : The grantee can read the object ACL for objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has <tt>READ</tt> ,
--   <tt>READ_ACP</tt> , and <tt>WRITE_ACP</tt> permissions for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <b>StorageClass</b> : The Amazon S3 storage class, <tt>Standard</tt>
--   or <tt>ReducedRedundancy</tt> , that you want Elastic Transcoder to
--   assign to the video files and playlists that it stores in your Amazon
--   S3 bucket.</li>
--   <li><a>cOutputBucket</a> - The Amazon S3 bucket in which you want
--   Elastic Transcoder to save the transcoded files. (Use this, or use
--   ContentConfig:Bucket plus ThumbnailConfig:Bucket.) Specify this value
--   when all of the following are true: * You want to save transcoded
--   files, thumbnails (if any), and playlists (if any) together in one
--   bucket. * You do not want to specify the users or groups who have
--   access to the transcoded files, thumbnails, and playlists. * You do
--   not want to specify the permissions that Elastic Transcoder grants to
--   the files. <i>Important:</i> When Elastic Transcoder saves files in
--   <tt>OutputBucket</tt> , it grants full control over the files only to
--   the AWS account that owns the role that is specified by <tt>Role</tt>
--   . * You want to associate the transcoded files and thumbnails with the
--   Amazon S3 Standard storage class. If you want to save transcoded files
--   and playlists in one bucket and thumbnails in another bucket, specify
--   which users can access the transcoded files or the permissions the
--   users have, or change the Amazon S3 storage class, omit
--   <tt>OutputBucket</tt> and specify values for <tt>ContentConfig</tt>
--   and <tt>ThumbnailConfig</tt> instead.</li>
--   <li><a>cAWSKMSKeyARN</a> - The AWS Key Management Service (AWS KMS)
--   key that you want to use with this pipeline. If you use either
--   <tt>S3</tt> or <tt>S3-AWS-KMS</tt> as your <tt>Encryption:Mode</tt> ,
--   you don't need to provide a key with your job because a default key,
--   known as an AWS-KMS key, is created for you automatically. You need to
--   provide an AWS-KMS key only if you want to use a non-default AWS-KMS
--   key, or if you are using an <tt>Encryption:Mode</tt> of
--   <tt>AES-PKCS7</tt> , <tt>AES-CTR</tt> , or <tt>AES-GCM</tt> .</li>
--   <li><a>cNotifications</a> - The Amazon Simple Notification Service
--   (Amazon SNS) topic that you want to notify to report job status.
--   <i>Important:</i> To receive notifications, you must also subscribe to
--   the new topic in the Amazon SNS console. * <b>Progressing</b> : The
--   topic ARN for the Amazon Simple Notification Service (Amazon SNS)
--   topic that you want to notify when Elastic Transcoder has started to
--   process a job in this pipeline. This is the ARN that Amazon SNS
--   returned when you created the topic. For more information, see Create
--   a Topic in the Amazon Simple Notification Service Developer Guide. *
--   <b>Completed</b> : The topic ARN for the Amazon SNS topic that you
--   want to notify when Elastic Transcoder has finished processing a job
--   in this pipeline. This is the ARN that Amazon SNS returned when you
--   created the topic. * <b>Warning</b> : The topic ARN for the Amazon SNS
--   topic that you want to notify when Elastic Transcoder encounters a
--   warning condition while processing a job in this pipeline. This is the
--   ARN that Amazon SNS returned when you created the topic. *
--   <b>Error</b> : The topic ARN for the Amazon SNS topic that you want to
--   notify when Elastic Transcoder encounters an error condition while
--   processing a job in this pipeline. This is the ARN that Amazon SNS
--   returned when you created the topic.</li>
--   <li><a>cThumbnailConfig</a> - The <tt>ThumbnailConfig</tt> object
--   specifies several values, including the Amazon S3 bucket in which you
--   want Elastic Transcoder to save thumbnail files, which users you want
--   to have access to the files, the type of access you want users to
--   have, and the storage class that you want to assign to the files. If
--   you specify values for <tt>ContentConfig</tt> , you must also specify
--   values for <tt>ThumbnailConfig</tt> even if you don't want to create
--   thumbnails. If you specify values for <tt>ContentConfig</tt> and
--   <tt>ThumbnailConfig</tt> , omit the <tt>OutputBucket</tt> object. *
--   <b>Bucket</b> : The Amazon S3 bucket in which you want Elastic
--   Transcoder to save thumbnail files. * <b>Permissions</b> (Optional):
--   The <tt>Permissions</tt> object specifies which users and<i>or
--   predefined Amazon S3 groups you want to have access to thumbnail
--   files, and the type of access you want them to have. You can grant
--   permissions to a maximum of 30 users and</i>or predefined Amazon S3
--   groups. * <b>GranteeType</b> : Specify the type of value that appears
--   in the Grantee object: * <b>Canonical</b> : The value in the
--   <tt>Grantee</tt> object is either the canonical user ID for an AWS
--   account or an origin access identity for an Amazon CloudFront
--   distribution. <i>Important:</i> A canonical user ID is not the same as
--   an AWS account number. * <b>Email</b> : The value in the
--   <tt>Grantee</tt> object is the registered email address of an AWS
--   account. * <b>Group</b> : The value in the <tt>Grantee</tt> object is
--   one of the following predefined Amazon S3 groups: <tt>AllUsers</tt> ,
--   <tt>AuthenticatedUsers</tt> , or <tt>LogDelivery</tt> . *
--   <b>Grantee</b> : The AWS user or group that you want to have access to
--   thumbnail files. To identify the user or group, you can specify the
--   canonical user ID for an AWS account, an origin access identity for a
--   CloudFront distribution, the registered email address of an AWS
--   account, or a predefined Amazon S3 group. * <b>Access</b> : The
--   permission that you want to give to the AWS user that you specified in
--   <tt>Grantee</tt> . Permissions are granted on the thumbnail files that
--   Elastic Transcoder adds to the bucket. Valid values include: *
--   <tt>READ</tt> : The grantee can read the thumbnails and metadata for
--   objects that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>READ_ACP</tt> : The grantee can read the object ACL for thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has <tt>READ</tt> ,
--   <tt>READ_ACP</tt> , and <tt>WRITE_ACP</tt> permissions for the
--   thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <b>StorageClass</b> : The Amazon S3 storage class, <tt>Standard</tt>
--   or <tt>ReducedRedundancy</tt> , that you want Elastic Transcoder to
--   assign to the thumbnails that it stores in your Amazon S3 bucket.</li>
--   <li><a>cName</a> - The name of the pipeline. We recommend that the
--   name be unique within the AWS account, but uniqueness is not enforced.
--   Constraints: Maximum 40 characters.</li>
--   <li><a>cInputBucket</a> - The Amazon S3 bucket in which you saved the
--   media files that you want to transcode.</li>
--   <li><a>cRole</a> - The IAM Amazon Resource Name (ARN) for the role
--   that you want Elastic Transcoder to use to create the pipeline.</li>
--   </ul>
createPipeline :: Text -> Text -> Text -> CreatePipeline

-- | The <tt>CreatePipelineRequest</tt> structure.
--   
--   <i>See:</i> <a>createPipeline</a> smart constructor.
data CreatePipeline

-- | The optional <tt>ContentConfig</tt> object specifies information about
--   the Amazon S3 bucket in which you want Elastic Transcoder to save
--   transcoded files and playlists: which bucket to use, which users you
--   want to have access to the files, the type of access you want users to
--   have, and the storage class that you want to assign to the files. If
--   you specify values for <tt>ContentConfig</tt> , you must also specify
--   values for <tt>ThumbnailConfig</tt> . If you specify values for
--   <tt>ContentConfig</tt> and <tt>ThumbnailConfig</tt> , omit the
--   <tt>OutputBucket</tt> object. * <b>Bucket</b> : The Amazon S3 bucket
--   in which you want Elastic Transcoder to save transcoded files and
--   playlists. * <b>Permissions</b> (Optional): The Permissions object
--   specifies which users you want to have access to transcoded files and
--   the type of access you want them to have. You can grant permissions to
--   a maximum of 30 users and<i>or predefined Amazon S3 groups. *
--   <b>Grantee Type</b> : Specify the type of value that appears in the
--   <tt>Grantee</tt> object: * <b>Canonical</b> : The value in the
--   <tt>Grantee</tt> object is either the canonical user ID for an AWS
--   account or an origin access identity for an Amazon CloudFront
--   distribution. For more information about canonical user IDs, see
--   Access Control List (ACL) Overview in the Amazon Simple Storage
--   Service Developer Guide. For more information about using CloudFront
--   origin access identities to require that users use CloudFront URLs
--   instead of Amazon S3 URLs, see Using an Origin Access Identity to
--   Restrict Access to Your Amazon S3 Content. </i>Important:/ A canonical
--   user ID is not the same as an AWS account number. * <b>Email</b> : The
--   value in the <tt>Grantee</tt> object is the registered email address
--   of an AWS account. * <b>Group</b> : The value in the <tt>Grantee</tt>
--   object is one of the following predefined Amazon S3 groups:
--   <tt>AllUsers</tt> , <tt>AuthenticatedUsers</tt> , or
--   <tt>LogDelivery</tt> . * <b>Grantee</b> : The AWS user or group that
--   you want to have access to transcoded files and playlists. To identify
--   the user or group, you can specify the canonical user ID for an AWS
--   account, an origin access identity for a CloudFront distribution, the
--   registered email address of an AWS account, or a predefined Amazon S3
--   group * <b>Access</b> : The permission that you want to give to the
--   AWS user that you specified in <tt>Grantee</tt> . Permissions are
--   granted on the files that Elastic Transcoder adds to the bucket,
--   including playlists and video files. Valid values include: *
--   <tt>READ</tt> : The grantee can read the objects and metadata for
--   objects that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>READ_ACP</tt> : The grantee can read the object ACL for objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has <tt>READ</tt> ,
--   <tt>READ_ACP</tt> , and <tt>WRITE_ACP</tt> permissions for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <b>StorageClass</b> : The Amazon S3 storage class, <tt>Standard</tt>
--   or <tt>ReducedRedundancy</tt> , that you want Elastic Transcoder to
--   assign to the video files and playlists that it stores in your Amazon
--   S3 bucket.
cContentConfig :: Lens' CreatePipeline (Maybe PipelineOutputConfig)

-- | The Amazon S3 bucket in which you want Elastic Transcoder to save the
--   transcoded files. (Use this, or use ContentConfig:Bucket plus
--   ThumbnailConfig:Bucket.) Specify this value when all of the following
--   are true: * You want to save transcoded files, thumbnails (if any),
--   and playlists (if any) together in one bucket. * You do not want to
--   specify the users or groups who have access to the transcoded files,
--   thumbnails, and playlists. * You do not want to specify the
--   permissions that Elastic Transcoder grants to the files.
--   <i>Important:</i> When Elastic Transcoder saves files in
--   <tt>OutputBucket</tt> , it grants full control over the files only to
--   the AWS account that owns the role that is specified by <tt>Role</tt>
--   . * You want to associate the transcoded files and thumbnails with the
--   Amazon S3 Standard storage class. If you want to save transcoded files
--   and playlists in one bucket and thumbnails in another bucket, specify
--   which users can access the transcoded files or the permissions the
--   users have, or change the Amazon S3 storage class, omit
--   <tt>OutputBucket</tt> and specify values for <tt>ContentConfig</tt>
--   and <tt>ThumbnailConfig</tt> instead.
cOutputBucket :: Lens' CreatePipeline (Maybe Text)

-- | The AWS Key Management Service (AWS KMS) key that you want to use with
--   this pipeline. If you use either <tt>S3</tt> or <tt>S3-AWS-KMS</tt> as
--   your <tt>Encryption:Mode</tt> , you don't need to provide a key with
--   your job because a default key, known as an AWS-KMS key, is created
--   for you automatically. You need to provide an AWS-KMS key only if you
--   want to use a non-default AWS-KMS key, or if you are using an
--   <tt>Encryption:Mode</tt> of <tt>AES-PKCS7</tt> , <tt>AES-CTR</tt> , or
--   <tt>AES-GCM</tt> .
cAWSKMSKeyARN :: Lens' CreatePipeline (Maybe Text)

-- | The Amazon Simple Notification Service (Amazon SNS) topic that you
--   want to notify to report job status. <i>Important:</i> To receive
--   notifications, you must also subscribe to the new topic in the Amazon
--   SNS console. * <b>Progressing</b> : The topic ARN for the Amazon
--   Simple Notification Service (Amazon SNS) topic that you want to notify
--   when Elastic Transcoder has started to process a job in this pipeline.
--   This is the ARN that Amazon SNS returned when you created the topic.
--   For more information, see Create a Topic in the Amazon Simple
--   Notification Service Developer Guide. * <b>Completed</b> : The topic
--   ARN for the Amazon SNS topic that you want to notify when Elastic
--   Transcoder has finished processing a job in this pipeline. This is the
--   ARN that Amazon SNS returned when you created the topic. *
--   <b>Warning</b> : The topic ARN for the Amazon SNS topic that you want
--   to notify when Elastic Transcoder encounters a warning condition while
--   processing a job in this pipeline. This is the ARN that Amazon SNS
--   returned when you created the topic. * <b>Error</b> : The topic ARN
--   for the Amazon SNS topic that you want to notify when Elastic
--   Transcoder encounters an error condition while processing a job in
--   this pipeline. This is the ARN that Amazon SNS returned when you
--   created the topic.
cNotifications :: Lens' CreatePipeline (Maybe Notifications)

-- | The <tt>ThumbnailConfig</tt> object specifies several values,
--   including the Amazon S3 bucket in which you want Elastic Transcoder to
--   save thumbnail files, which users you want to have access to the
--   files, the type of access you want users to have, and the storage
--   class that you want to assign to the files. If you specify values for
--   <tt>ContentConfig</tt> , you must also specify values for
--   <tt>ThumbnailConfig</tt> even if you don't want to create thumbnails.
--   If you specify values for <tt>ContentConfig</tt> and
--   <tt>ThumbnailConfig</tt> , omit the <tt>OutputBucket</tt> object. *
--   <b>Bucket</b> : The Amazon S3 bucket in which you want Elastic
--   Transcoder to save thumbnail files. * <b>Permissions</b> (Optional):
--   The <tt>Permissions</tt> object specifies which users and<i>or
--   predefined Amazon S3 groups you want to have access to thumbnail
--   files, and the type of access you want them to have. You can grant
--   permissions to a maximum of 30 users and</i>or predefined Amazon S3
--   groups. * <b>GranteeType</b> : Specify the type of value that appears
--   in the Grantee object: * <b>Canonical</b> : The value in the
--   <tt>Grantee</tt> object is either the canonical user ID for an AWS
--   account or an origin access identity for an Amazon CloudFront
--   distribution. <i>Important:</i> A canonical user ID is not the same as
--   an AWS account number. * <b>Email</b> : The value in the
--   <tt>Grantee</tt> object is the registered email address of an AWS
--   account. * <b>Group</b> : The value in the <tt>Grantee</tt> object is
--   one of the following predefined Amazon S3 groups: <tt>AllUsers</tt> ,
--   <tt>AuthenticatedUsers</tt> , or <tt>LogDelivery</tt> . *
--   <b>Grantee</b> : The AWS user or group that you want to have access to
--   thumbnail files. To identify the user or group, you can specify the
--   canonical user ID for an AWS account, an origin access identity for a
--   CloudFront distribution, the registered email address of an AWS
--   account, or a predefined Amazon S3 group. * <b>Access</b> : The
--   permission that you want to give to the AWS user that you specified in
--   <tt>Grantee</tt> . Permissions are granted on the thumbnail files that
--   Elastic Transcoder adds to the bucket. Valid values include: *
--   <tt>READ</tt> : The grantee can read the thumbnails and metadata for
--   objects that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>READ_ACP</tt> : The grantee can read the object ACL for thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has <tt>READ</tt> ,
--   <tt>READ_ACP</tt> , and <tt>WRITE_ACP</tt> permissions for the
--   thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <b>StorageClass</b> : The Amazon S3 storage class, <tt>Standard</tt>
--   or <tt>ReducedRedundancy</tt> , that you want Elastic Transcoder to
--   assign to the thumbnails that it stores in your Amazon S3 bucket.
cThumbnailConfig :: Lens' CreatePipeline (Maybe PipelineOutputConfig)

-- | The name of the pipeline. We recommend that the name be unique within
--   the AWS account, but uniqueness is not enforced. Constraints: Maximum
--   40 characters.
cName :: Lens' CreatePipeline Text

-- | The Amazon S3 bucket in which you saved the media files that you want
--   to transcode.
cInputBucket :: Lens' CreatePipeline Text

-- | The IAM Amazon Resource Name (ARN) for the role that you want Elastic
--   Transcoder to use to create the pipeline.
cRole :: Lens' CreatePipeline Text

-- | Creates a value of <a>CreatePipelineResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crsWarnings</a> - Elastic Transcoder returns a warning if the
--   resources used by your pipeline are not in the same region as the
--   pipeline. Using resources in the same region, such as your Amazon S3
--   buckets, Amazon SNS notification topics, and AWS KMS key, reduces
--   processing time and prevents cross-regional charges.</li>
--   <li><a>crsPipeline</a> - A section of the response body that provides
--   information about the pipeline that is created.</li>
--   <li><a>crsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createPipelineResponse :: Int -> CreatePipelineResponse

-- | When you create a pipeline, Elastic Transcoder returns the values that
--   you specified in the request.
--   
--   <i>See:</i> <a>createPipelineResponse</a> smart constructor.
data CreatePipelineResponse

-- | Elastic Transcoder returns a warning if the resources used by your
--   pipeline are not in the same region as the pipeline. Using resources
--   in the same region, such as your Amazon S3 buckets, Amazon SNS
--   notification topics, and AWS KMS key, reduces processing time and
--   prevents cross-regional charges.
crsWarnings :: Lens' CreatePipelineResponse [Warning]

-- | A section of the response body that provides information about the
--   pipeline that is created.
crsPipeline :: Lens' CreatePipelineResponse (Maybe Pipeline)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
crsResponseStatus :: Lens' CreatePipelineResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipelineResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipelineResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipelineResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipelineResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipelineResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipeline
instance Data.Data.Data Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipeline
instance GHC.Show.Show Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipeline
instance GHC.Read.Read Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipeline
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipeline
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipeline
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipelineResponse
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipeline
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipeline
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipeline
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipeline
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipeline
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.CreatePipeline.CreatePipeline


-- | When you create a job, Elastic Transcoder returns JSON data that
--   includes the values that you specified plus information about the job
--   that is created.
--   
--   If you have specified more than one output for your jobs (for example,
--   one output for the Kindle Fire and another output for the Apple iPhone
--   4s), you currently must use the Elastic Transcoder API to list the
--   jobs (as opposed to the AWS Console).
module Network.AWS.ElasticTranscoder.CreateJob

-- | Creates a value of <a>CreateJob</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cjInputs</a> - A section of the request body that provides
--   information about the files that are being transcoded.</li>
--   <li><a>cjInput</a> - A section of the request body that provides
--   information about the file that is being transcoded.</li>
--   <li><a>cjUserMetadata</a> - User-defined metadata that you want to
--   associate with an Elastic Transcoder job. You specify metadata in
--   <tt>key/value</tt> pairs, and you can add up to 10 <tt>key/value</tt>
--   pairs per job. Elastic Transcoder does not guarantee that
--   <tt>key/value</tt> pairs are returned in the same order in which you
--   specify them.</li>
--   <li><a>cjOutputs</a> - A section of the request body that provides
--   information about the transcoded (target) files. We recommend that you
--   use the <tt>Outputs</tt> syntax instead of the <tt>Output</tt>
--   syntax.</li>
--   <li><a>cjOutput</a> - A section of the request body that provides
--   information about the transcoded (target) file. We strongly recommend
--   that you use the <tt>Outputs</tt> syntax instead of the
--   <tt>Output</tt> syntax.</li>
--   <li><a>cjPlaylists</a> - If you specify a preset in <tt>PresetId</tt>
--   for which the value of <tt>Container</tt> is fmp4 (Fragmented MP4) or
--   ts (MPEG-TS), Playlists contains information about the master
--   playlists that you want Elastic Transcoder to create. The maximum
--   number of master playlists in a job is 30.</li>
--   <li><a>cjOutputKeyPrefix</a> - The value, if any, that you want
--   Elastic Transcoder to prepend to the names of all files that this job
--   creates, including output files, thumbnails, and playlists.</li>
--   <li><a>cjPipelineId</a> - The <tt>Id</tt> of the pipeline that you
--   want Elastic Transcoder to use for transcoding. The pipeline
--   determines several settings, including the Amazon S3 bucket from which
--   Elastic Transcoder gets the files to transcode and the bucket into
--   which Elastic Transcoder puts the transcoded files.</li>
--   </ul>
createJob :: Text -> CreateJob

-- | The <tt>CreateJobRequest</tt> structure.
--   
--   <i>See:</i> <a>createJob</a> smart constructor.
data CreateJob

-- | A section of the request body that provides information about the
--   files that are being transcoded.
cjInputs :: Lens' CreateJob [JobInput]

-- | A section of the request body that provides information about the file
--   that is being transcoded.
cjInput :: Lens' CreateJob (Maybe JobInput)

-- | User-defined metadata that you want to associate with an Elastic
--   Transcoder job. You specify metadata in <tt>key/value</tt> pairs, and
--   you can add up to 10 <tt>key/value</tt> pairs per job. Elastic
--   Transcoder does not guarantee that <tt>key/value</tt> pairs are
--   returned in the same order in which you specify them.
cjUserMetadata :: Lens' CreateJob (HashMap Text Text)

-- | A section of the request body that provides information about the
--   transcoded (target) files. We recommend that you use the
--   <tt>Outputs</tt> syntax instead of the <tt>Output</tt> syntax.
cjOutputs :: Lens' CreateJob [CreateJobOutput]

-- | A section of the request body that provides information about the
--   transcoded (target) file. We strongly recommend that you use the
--   <tt>Outputs</tt> syntax instead of the <tt>Output</tt> syntax.
cjOutput :: Lens' CreateJob (Maybe CreateJobOutput)

-- | If you specify a preset in <tt>PresetId</tt> for which the value of
--   <tt>Container</tt> is fmp4 (Fragmented MP4) or ts (MPEG-TS), Playlists
--   contains information about the master playlists that you want Elastic
--   Transcoder to create. The maximum number of master playlists in a job
--   is 30.
cjPlaylists :: Lens' CreateJob [CreateJobPlaylist]

-- | The value, if any, that you want Elastic Transcoder to prepend to the
--   names of all files that this job creates, including output files,
--   thumbnails, and playlists.
cjOutputKeyPrefix :: Lens' CreateJob (Maybe Text)

-- | The <tt>Id</tt> of the pipeline that you want Elastic Transcoder to
--   use for transcoding. The pipeline determines several settings,
--   including the Amazon S3 bucket from which Elastic Transcoder gets the
--   files to transcode and the bucket into which Elastic Transcoder puts
--   the transcoded files.
cjPipelineId :: Lens' CreateJob Text

-- | Creates a value of <a>CreateJobResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cjrsJob</a> - A section of the response body that provides
--   information about the job that is created.</li>
--   <li><a>cjrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createJobResponse :: Int -> CreateJobResponse

-- | The CreateJobResponse structure.
--   
--   <i>See:</i> <a>createJobResponse</a> smart constructor.
data CreateJobResponse

-- | A section of the response body that provides information about the job
--   that is created.
cjrsJob :: Lens' CreateJobResponse (Maybe Job')

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
cjrsResponseStatus :: Lens' CreateJobResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.CreateJob.CreateJobResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.CreateJob.CreateJobResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.CreateJob.CreateJobResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.CreateJob.CreateJobResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.CreateJob.CreateJobResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.CreateJob.CreateJob
instance Data.Data.Data Network.AWS.ElasticTranscoder.CreateJob.CreateJob
instance GHC.Show.Show Network.AWS.ElasticTranscoder.CreateJob.CreateJob
instance GHC.Read.Read Network.AWS.ElasticTranscoder.CreateJob.CreateJob
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.CreateJob.CreateJob
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.CreateJob.CreateJob
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.CreateJob.CreateJobResponse
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.CreateJob.CreateJob
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.CreateJob.CreateJob
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.CreateJob.CreateJob
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ElasticTranscoder.CreateJob.CreateJob
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.CreateJob.CreateJob
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.CreateJob.CreateJob


-- | The CancelJob operation cancels an unfinished job.
module Network.AWS.ElasticTranscoder.CancelJob

-- | Creates a value of <a>CancelJob</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cjId</a> - The identifier of the job that you want to cancel.
--   To get a list of the jobs (including their <tt>jobId</tt> ) that have
--   a status of <tt>Submitted</tt> , use the <tt>ListJobsByStatus</tt> API
--   action.</li>
--   </ul>
cancelJob :: Text -> CancelJob

-- | The <tt>CancelJobRequest</tt> structure.
--   
--   <i>See:</i> <a>cancelJob</a> smart constructor.
data CancelJob

-- | The identifier of the job that you want to cancel. To get a list of
--   the jobs (including their <tt>jobId</tt> ) that have a status of
--   <tt>Submitted</tt> , use the <tt>ListJobsByStatus</tt> API action.
cjId :: Lens' CancelJob Text

-- | Creates a value of <a>CancelJobResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>canrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
cancelJobResponse :: Int -> CancelJobResponse

-- | The response body contains a JSON object. If the job is successfully
--   canceled, the value of <tt>Success</tt> is <tt>true</tt> .
--   
--   <i>See:</i> <a>cancelJobResponse</a> smart constructor.
data CancelJobResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
canrsResponseStatus :: Lens' CancelJobResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.CancelJob.CancelJobResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.CancelJob.CancelJobResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.CancelJob.CancelJobResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.CancelJob.CancelJobResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.CancelJob.CancelJobResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.CancelJob.CancelJob
instance Data.Data.Data Network.AWS.ElasticTranscoder.CancelJob.CancelJob
instance GHC.Show.Show Network.AWS.ElasticTranscoder.CancelJob.CancelJob
instance GHC.Read.Read Network.AWS.ElasticTranscoder.CancelJob.CancelJob
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.CancelJob.CancelJob
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.CancelJob.CancelJob
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.CancelJob.CancelJobResponse
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.CancelJob.CancelJob
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.CancelJob.CancelJob
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.CancelJob.CancelJob
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.CancelJob.CancelJob
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.CancelJob.CancelJob


-- | Use the <tt>UpdatePipeline</tt> operation to update settings for a
--   pipeline.
--   
--   <i>Important:</i> When you change pipeline settings, your changes take
--   effect immediately. Jobs that you have already submitted and that
--   Elastic Transcoder has not started to process are affected in addition
--   to jobs that you submit after you change settings.
module Network.AWS.ElasticTranscoder.UpdatePipeline

-- | Creates a value of <a>UpdatePipeline</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upInputBucket</a> - The Amazon S3 bucket in which you saved the
--   media files that you want to transcode and the graphics that you want
--   to use as watermarks.</li>
--   <li><a>upContentConfig</a> - The optional <tt>ContentConfig</tt>
--   object specifies information about the Amazon S3 bucket in which you
--   want Elastic Transcoder to save transcoded files and playlists: which
--   bucket to use, which users you want to have access to the files, the
--   type of access you want users to have, and the storage class that you
--   want to assign to the files. If you specify values for
--   <tt>ContentConfig</tt> , you must also specify values for
--   <tt>ThumbnailConfig</tt> . If you specify values for
--   <tt>ContentConfig</tt> and <tt>ThumbnailConfig</tt> , omit the
--   <tt>OutputBucket</tt> object. * <b>Bucket</b> : The Amazon S3 bucket
--   in which you want Elastic Transcoder to save transcoded files and
--   playlists. * <b>Permissions</b> (Optional): The Permissions object
--   specifies which users you want to have access to transcoded files and
--   the type of access you want them to have. You can grant permissions to
--   a maximum of 30 users and<i>or predefined Amazon S3 groups. *
--   <b>Grantee Type</b> : Specify the type of value that appears in the
--   <tt>Grantee</tt> object: * <b>Canonical</b> : The value in the
--   <tt>Grantee</tt> object is either the canonical user ID for an AWS
--   account or an origin access identity for an Amazon CloudFront
--   distribution. For more information about canonical user IDs, see
--   Access Control List (ACL) Overview in the Amazon Simple Storage
--   Service Developer Guide. For more information about using CloudFront
--   origin access identities to require that users use CloudFront URLs
--   instead of Amazon S3 URLs, see Using an Origin Access Identity to
--   Restrict Access to Your Amazon S3 Content. </i>Important:/ A canonical
--   user ID is not the same as an AWS account number. * <b>Email</b> : The
--   value in the <tt>Grantee</tt> object is the registered email address
--   of an AWS account. * <b>Group</b> : The value in the <tt>Grantee</tt>
--   object is one of the following predefined Amazon S3 groups:
--   <tt>AllUsers</tt> , <tt>AuthenticatedUsers</tt> , or
--   <tt>LogDelivery</tt> . * <b>Grantee</b> : The AWS user or group that
--   you want to have access to transcoded files and playlists. To identify
--   the user or group, you can specify the canonical user ID for an AWS
--   account, an origin access identity for a CloudFront distribution, the
--   registered email address of an AWS account, or a predefined Amazon S3
--   group * <b>Access</b> : The permission that you want to give to the
--   AWS user that you specified in <tt>Grantee</tt> . Permissions are
--   granted on the files that Elastic Transcoder adds to the bucket,
--   including playlists and video files. Valid values include: *
--   <tt>READ</tt> : The grantee can read the objects and metadata for
--   objects that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>READ_ACP</tt> : The grantee can read the object ACL for objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has <tt>READ</tt> ,
--   <tt>READ_ACP</tt> , and <tt>WRITE_ACP</tt> permissions for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <b>StorageClass</b> : The Amazon S3 storage class, <tt>Standard</tt>
--   or <tt>ReducedRedundancy</tt> , that you want Elastic Transcoder to
--   assign to the video files and playlists that it stores in your Amazon
--   S3 bucket.</li>
--   <li><a>upRole</a> - The IAM Amazon Resource Name (ARN) for the role
--   that you want Elastic Transcoder to use to transcode jobs for this
--   pipeline.</li>
--   <li><a>upName</a> - The name of the pipeline. We recommend that the
--   name be unique within the AWS account, but uniqueness is not enforced.
--   Constraints: Maximum 40 characters</li>
--   <li><a>upAWSKMSKeyARN</a> - The AWS Key Management Service (AWS KMS)
--   key that you want to use with this pipeline. If you use either
--   <tt>S3</tt> or <tt>S3-AWS-KMS</tt> as your <tt>Encryption:Mode</tt> ,
--   you don't need to provide a key with your job because a default key,
--   known as an AWS-KMS key, is created for you automatically. You need to
--   provide an AWS-KMS key only if you want to use a non-default AWS-KMS
--   key, or if you are using an <tt>Encryption:Mode</tt> of
--   <tt>AES-PKCS7</tt> , <tt>AES-CTR</tt> , or <tt>AES-GCM</tt> .</li>
--   <li><a>upNotifications</a> - The topic ARN for the Amazon Simple
--   Notification Service (Amazon SNS) topic that you want to notify to
--   report job status. <i>Important:</i> To receive notifications, you
--   must also subscribe to the new topic in the Amazon SNS console. *
--   <b>Progressing</b> : The topic ARN for the Amazon Simple Notification
--   Service (Amazon SNS) topic that you want to notify when Elastic
--   Transcoder has started to process jobs that are added to this
--   pipeline. This is the ARN that Amazon SNS returned when you created
--   the topic. * <b>Completed</b> : The topic ARN for the Amazon SNS topic
--   that you want to notify when Elastic Transcoder has finished
--   processing a job. This is the ARN that Amazon SNS returned when you
--   created the topic. * <b>Warning</b> : The topic ARN for the Amazon SNS
--   topic that you want to notify when Elastic Transcoder encounters a
--   warning condition. This is the ARN that Amazon SNS returned when you
--   created the topic. * <b>Error</b> : The topic ARN for the Amazon SNS
--   topic that you want to notify when Elastic Transcoder encounters an
--   error condition. This is the ARN that Amazon SNS returned when you
--   created the topic.</li>
--   <li><a>upThumbnailConfig</a> - The <tt>ThumbnailConfig</tt> object
--   specifies several values, including the Amazon S3 bucket in which you
--   want Elastic Transcoder to save thumbnail files, which users you want
--   to have access to the files, the type of access you want users to
--   have, and the storage class that you want to assign to the files. If
--   you specify values for <tt>ContentConfig</tt> , you must also specify
--   values for <tt>ThumbnailConfig</tt> even if you don't want to create
--   thumbnails. If you specify values for <tt>ContentConfig</tt> and
--   <tt>ThumbnailConfig</tt> , omit the <tt>OutputBucket</tt> object. *
--   <b>Bucket</b> : The Amazon S3 bucket in which you want Elastic
--   Transcoder to save thumbnail files. * <b>Permissions</b> (Optional):
--   The <tt>Permissions</tt> object specifies which users and<i>or
--   predefined Amazon S3 groups you want to have access to thumbnail
--   files, and the type of access you want them to have. You can grant
--   permissions to a maximum of 30 users and</i>or predefined Amazon S3
--   groups. * <b>GranteeType</b> : Specify the type of value that appears
--   in the Grantee object: * <b>Canonical</b> : The value in the
--   <tt>Grantee</tt> object is either the canonical user ID for an AWS
--   account or an origin access identity for an Amazon CloudFront
--   distribution. <i>Important:</i> A canonical user ID is not the same as
--   an AWS account number. * <b>Email</b> : The value in the
--   <tt>Grantee</tt> object is the registered email address of an AWS
--   account. * <b>Group</b> : The value in the <tt>Grantee</tt> object is
--   one of the following predefined Amazon S3 groups: <tt>AllUsers</tt> ,
--   <tt>AuthenticatedUsers</tt> , or <tt>LogDelivery</tt> . *
--   <b>Grantee</b> : The AWS user or group that you want to have access to
--   thumbnail files. To identify the user or group, you can specify the
--   canonical user ID for an AWS account, an origin access identity for a
--   CloudFront distribution, the registered email address of an AWS
--   account, or a predefined Amazon S3 group. * <b>Access</b> : The
--   permission that you want to give to the AWS user that you specified in
--   <tt>Grantee</tt> . Permissions are granted on the thumbnail files that
--   Elastic Transcoder adds to the bucket. Valid values include: *
--   <tt>READ</tt> : The grantee can read the thumbnails and metadata for
--   objects that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>READ_ACP</tt> : The grantee can read the object ACL for thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has <tt>READ</tt> ,
--   <tt>READ_ACP</tt> , and <tt>WRITE_ACP</tt> permissions for the
--   thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <b>StorageClass</b> : The Amazon S3 storage class, <tt>Standard</tt>
--   or <tt>ReducedRedundancy</tt> , that you want Elastic Transcoder to
--   assign to the thumbnails that it stores in your Amazon S3 bucket.</li>
--   <li><a>upId</a> - The ID of the pipeline that you want to update.</li>
--   </ul>
updatePipeline :: Text -> UpdatePipeline

-- | The <tt>UpdatePipelineRequest</tt> structure.
--   
--   <i>See:</i> <a>updatePipeline</a> smart constructor.
data UpdatePipeline

-- | The Amazon S3 bucket in which you saved the media files that you want
--   to transcode and the graphics that you want to use as watermarks.
upInputBucket :: Lens' UpdatePipeline (Maybe Text)

-- | The optional <tt>ContentConfig</tt> object specifies information about
--   the Amazon S3 bucket in which you want Elastic Transcoder to save
--   transcoded files and playlists: which bucket to use, which users you
--   want to have access to the files, the type of access you want users to
--   have, and the storage class that you want to assign to the files. If
--   you specify values for <tt>ContentConfig</tt> , you must also specify
--   values for <tt>ThumbnailConfig</tt> . If you specify values for
--   <tt>ContentConfig</tt> and <tt>ThumbnailConfig</tt> , omit the
--   <tt>OutputBucket</tt> object. * <b>Bucket</b> : The Amazon S3 bucket
--   in which you want Elastic Transcoder to save transcoded files and
--   playlists. * <b>Permissions</b> (Optional): The Permissions object
--   specifies which users you want to have access to transcoded files and
--   the type of access you want them to have. You can grant permissions to
--   a maximum of 30 users and<i>or predefined Amazon S3 groups. *
--   <b>Grantee Type</b> : Specify the type of value that appears in the
--   <tt>Grantee</tt> object: * <b>Canonical</b> : The value in the
--   <tt>Grantee</tt> object is either the canonical user ID for an AWS
--   account or an origin access identity for an Amazon CloudFront
--   distribution. For more information about canonical user IDs, see
--   Access Control List (ACL) Overview in the Amazon Simple Storage
--   Service Developer Guide. For more information about using CloudFront
--   origin access identities to require that users use CloudFront URLs
--   instead of Amazon S3 URLs, see Using an Origin Access Identity to
--   Restrict Access to Your Amazon S3 Content. </i>Important:/ A canonical
--   user ID is not the same as an AWS account number. * <b>Email</b> : The
--   value in the <tt>Grantee</tt> object is the registered email address
--   of an AWS account. * <b>Group</b> : The value in the <tt>Grantee</tt>
--   object is one of the following predefined Amazon S3 groups:
--   <tt>AllUsers</tt> , <tt>AuthenticatedUsers</tt> , or
--   <tt>LogDelivery</tt> . * <b>Grantee</b> : The AWS user or group that
--   you want to have access to transcoded files and playlists. To identify
--   the user or group, you can specify the canonical user ID for an AWS
--   account, an origin access identity for a CloudFront distribution, the
--   registered email address of an AWS account, or a predefined Amazon S3
--   group * <b>Access</b> : The permission that you want to give to the
--   AWS user that you specified in <tt>Grantee</tt> . Permissions are
--   granted on the files that Elastic Transcoder adds to the bucket,
--   including playlists and video files. Valid values include: *
--   <tt>READ</tt> : The grantee can read the objects and metadata for
--   objects that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>READ_ACP</tt> : The grantee can read the object ACL for objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has <tt>READ</tt> ,
--   <tt>READ_ACP</tt> , and <tt>WRITE_ACP</tt> permissions for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <b>StorageClass</b> : The Amazon S3 storage class, <tt>Standard</tt>
--   or <tt>ReducedRedundancy</tt> , that you want Elastic Transcoder to
--   assign to the video files and playlists that it stores in your Amazon
--   S3 bucket.
upContentConfig :: Lens' UpdatePipeline (Maybe PipelineOutputConfig)

-- | The IAM Amazon Resource Name (ARN) for the role that you want Elastic
--   Transcoder to use to transcode jobs for this pipeline.
upRole :: Lens' UpdatePipeline (Maybe Text)

-- | The name of the pipeline. We recommend that the name be unique within
--   the AWS account, but uniqueness is not enforced. Constraints: Maximum
--   40 characters
upName :: Lens' UpdatePipeline (Maybe Text)

-- | The AWS Key Management Service (AWS KMS) key that you want to use with
--   this pipeline. If you use either <tt>S3</tt> or <tt>S3-AWS-KMS</tt> as
--   your <tt>Encryption:Mode</tt> , you don't need to provide a key with
--   your job because a default key, known as an AWS-KMS key, is created
--   for you automatically. You need to provide an AWS-KMS key only if you
--   want to use a non-default AWS-KMS key, or if you are using an
--   <tt>Encryption:Mode</tt> of <tt>AES-PKCS7</tt> , <tt>AES-CTR</tt> , or
--   <tt>AES-GCM</tt> .
upAWSKMSKeyARN :: Lens' UpdatePipeline (Maybe Text)

-- | The topic ARN for the Amazon Simple Notification Service (Amazon SNS)
--   topic that you want to notify to report job status. <i>Important:</i>
--   To receive notifications, you must also subscribe to the new topic in
--   the Amazon SNS console. * <b>Progressing</b> : The topic ARN for the
--   Amazon Simple Notification Service (Amazon SNS) topic that you want to
--   notify when Elastic Transcoder has started to process jobs that are
--   added to this pipeline. This is the ARN that Amazon SNS returned when
--   you created the topic. * <b>Completed</b> : The topic ARN for the
--   Amazon SNS topic that you want to notify when Elastic Transcoder has
--   finished processing a job. This is the ARN that Amazon SNS returned
--   when you created the topic. * <b>Warning</b> : The topic ARN for the
--   Amazon SNS topic that you want to notify when Elastic Transcoder
--   encounters a warning condition. This is the ARN that Amazon SNS
--   returned when you created the topic. * <b>Error</b> : The topic ARN
--   for the Amazon SNS topic that you want to notify when Elastic
--   Transcoder encounters an error condition. This is the ARN that Amazon
--   SNS returned when you created the topic.
upNotifications :: Lens' UpdatePipeline (Maybe Notifications)

-- | The <tt>ThumbnailConfig</tt> object specifies several values,
--   including the Amazon S3 bucket in which you want Elastic Transcoder to
--   save thumbnail files, which users you want to have access to the
--   files, the type of access you want users to have, and the storage
--   class that you want to assign to the files. If you specify values for
--   <tt>ContentConfig</tt> , you must also specify values for
--   <tt>ThumbnailConfig</tt> even if you don't want to create thumbnails.
--   If you specify values for <tt>ContentConfig</tt> and
--   <tt>ThumbnailConfig</tt> , omit the <tt>OutputBucket</tt> object. *
--   <b>Bucket</b> : The Amazon S3 bucket in which you want Elastic
--   Transcoder to save thumbnail files. * <b>Permissions</b> (Optional):
--   The <tt>Permissions</tt> object specifies which users and<i>or
--   predefined Amazon S3 groups you want to have access to thumbnail
--   files, and the type of access you want them to have. You can grant
--   permissions to a maximum of 30 users and</i>or predefined Amazon S3
--   groups. * <b>GranteeType</b> : Specify the type of value that appears
--   in the Grantee object: * <b>Canonical</b> : The value in the
--   <tt>Grantee</tt> object is either the canonical user ID for an AWS
--   account or an origin access identity for an Amazon CloudFront
--   distribution. <i>Important:</i> A canonical user ID is not the same as
--   an AWS account number. * <b>Email</b> : The value in the
--   <tt>Grantee</tt> object is the registered email address of an AWS
--   account. * <b>Group</b> : The value in the <tt>Grantee</tt> object is
--   one of the following predefined Amazon S3 groups: <tt>AllUsers</tt> ,
--   <tt>AuthenticatedUsers</tt> , or <tt>LogDelivery</tt> . *
--   <b>Grantee</b> : The AWS user or group that you want to have access to
--   thumbnail files. To identify the user or group, you can specify the
--   canonical user ID for an AWS account, an origin access identity for a
--   CloudFront distribution, the registered email address of an AWS
--   account, or a predefined Amazon S3 group. * <b>Access</b> : The
--   permission that you want to give to the AWS user that you specified in
--   <tt>Grantee</tt> . Permissions are granted on the thumbnail files that
--   Elastic Transcoder adds to the bucket. Valid values include: *
--   <tt>READ</tt> : The grantee can read the thumbnails and metadata for
--   objects that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>READ_ACP</tt> : The grantee can read the object ACL for thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has <tt>READ</tt> ,
--   <tt>READ_ACP</tt> , and <tt>WRITE_ACP</tt> permissions for the
--   thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <b>StorageClass</b> : The Amazon S3 storage class, <tt>Standard</tt>
--   or <tt>ReducedRedundancy</tt> , that you want Elastic Transcoder to
--   assign to the thumbnails that it stores in your Amazon S3 bucket.
upThumbnailConfig :: Lens' UpdatePipeline (Maybe PipelineOutputConfig)

-- | The ID of the pipeline that you want to update.
upId :: Lens' UpdatePipeline Text

-- | Creates a value of <a>UpdatePipelineResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uprsWarnings</a> - Elastic Transcoder returns a warning if the
--   resources used by your pipeline are not in the same region as the
--   pipeline. Using resources in the same region, such as your Amazon S3
--   buckets, Amazon SNS notification topics, and AWS KMS key, reduces
--   processing time and prevents cross-regional charges.</li>
--   <li><a>uprsPipeline</a> - The pipeline updated by this
--   <tt>UpdatePipelineResponse</tt> call.</li>
--   <li><a>uprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updatePipelineResponse :: Int -> UpdatePipelineResponse

-- | When you update a pipeline, Elastic Transcoder returns the values that
--   you specified in the request.
--   
--   <i>See:</i> <a>updatePipelineResponse</a> smart constructor.
data UpdatePipelineResponse

-- | Elastic Transcoder returns a warning if the resources used by your
--   pipeline are not in the same region as the pipeline. Using resources
--   in the same region, such as your Amazon S3 buckets, Amazon SNS
--   notification topics, and AWS KMS key, reduces processing time and
--   prevents cross-regional charges.
uprsWarnings :: Lens' UpdatePipelineResponse [Warning]

-- | The pipeline updated by this <tt>UpdatePipelineResponse</tt> call.
uprsPipeline :: Lens' UpdatePipelineResponse (Maybe Pipeline)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
uprsResponseStatus :: Lens' UpdatePipelineResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipelineResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipelineResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipelineResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipelineResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipelineResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipeline
instance Data.Data.Data Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipeline
instance GHC.Show.Show Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipeline
instance GHC.Read.Read Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipeline
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipeline
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipeline
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipelineResponse
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipeline
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipeline
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipeline
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipeline
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipeline
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.UpdatePipeline.UpdatePipeline


-- | With the UpdatePipelineNotifications operation, you can update Amazon
--   Simple Notification Service (Amazon SNS) notifications for a pipeline.
--   
--   When you update notifications for a pipeline, Elastic Transcoder
--   returns the values that you specified in the request.
module Network.AWS.ElasticTranscoder.UpdatePipelineNotifications

-- | Creates a value of <a>UpdatePipelineNotifications</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upnId</a> - The identifier of the pipeline for which you want
--   to change notification settings.</li>
--   <li><a>upnNotifications</a> - The topic ARN for the Amazon Simple
--   Notification Service (Amazon SNS) topic that you want to notify to
--   report job status. <i>Important:</i> To receive notifications, you
--   must also subscribe to the new topic in the Amazon SNS console. *
--   <b>Progressing</b> : The topic ARN for the Amazon Simple Notification
--   Service (Amazon SNS) topic that you want to notify when Elastic
--   Transcoder has started to process jobs that are added to this
--   pipeline. This is the ARN that Amazon SNS returned when you created
--   the topic. * <b>Completed</b> : The topic ARN for the Amazon SNS topic
--   that you want to notify when Elastic Transcoder has finished
--   processing a job. This is the ARN that Amazon SNS returned when you
--   created the topic. * <b>Warning</b> : The topic ARN for the Amazon SNS
--   topic that you want to notify when Elastic Transcoder encounters a
--   warning condition. This is the ARN that Amazon SNS returned when you
--   created the topic. * <b>Error</b> : The topic ARN for the Amazon SNS
--   topic that you want to notify when Elastic Transcoder encounters an
--   error condition. This is the ARN that Amazon SNS returned when you
--   created the topic.</li>
--   </ul>
updatePipelineNotifications :: Text -> Notifications -> UpdatePipelineNotifications

-- | The <tt>UpdatePipelineNotificationsRequest</tt> structure.
--   
--   <i>See:</i> <a>updatePipelineNotifications</a> smart constructor.
data UpdatePipelineNotifications

-- | The identifier of the pipeline for which you want to change
--   notification settings.
upnId :: Lens' UpdatePipelineNotifications Text

-- | The topic ARN for the Amazon Simple Notification Service (Amazon SNS)
--   topic that you want to notify to report job status. <i>Important:</i>
--   To receive notifications, you must also subscribe to the new topic in
--   the Amazon SNS console. * <b>Progressing</b> : The topic ARN for the
--   Amazon Simple Notification Service (Amazon SNS) topic that you want to
--   notify when Elastic Transcoder has started to process jobs that are
--   added to this pipeline. This is the ARN that Amazon SNS returned when
--   you created the topic. * <b>Completed</b> : The topic ARN for the
--   Amazon SNS topic that you want to notify when Elastic Transcoder has
--   finished processing a job. This is the ARN that Amazon SNS returned
--   when you created the topic. * <b>Warning</b> : The topic ARN for the
--   Amazon SNS topic that you want to notify when Elastic Transcoder
--   encounters a warning condition. This is the ARN that Amazon SNS
--   returned when you created the topic. * <b>Error</b> : The topic ARN
--   for the Amazon SNS topic that you want to notify when Elastic
--   Transcoder encounters an error condition. This is the ARN that Amazon
--   SNS returned when you created the topic.
upnNotifications :: Lens' UpdatePipelineNotifications Notifications

-- | Creates a value of <a>UpdatePipelineNotificationsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upnrsPipeline</a> - A section of the response body that
--   provides information about the pipeline associated with this
--   notification.</li>
--   <li><a>upnrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updatePipelineNotificationsResponse :: Int -> UpdatePipelineNotificationsResponse

-- | The <tt>UpdatePipelineNotificationsResponse</tt> structure.
--   
--   <i>See:</i> <a>updatePipelineNotificationsResponse</a> smart
--   constructor.
data UpdatePipelineNotificationsResponse

-- | A section of the response body that provides information about the
--   pipeline associated with this notification.
upnrsPipeline :: Lens' UpdatePipelineNotificationsResponse (Maybe Pipeline)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
upnrsResponseStatus :: Lens' UpdatePipelineNotificationsResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotificationsResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotificationsResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotificationsResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotificationsResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotificationsResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotifications
instance Data.Data.Data Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotifications
instance GHC.Show.Show Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotifications
instance GHC.Read.Read Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotifications
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotifications
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotifications
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotificationsResponse
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotifications
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotifications
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotifications
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotifications
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotifications
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.UpdatePipelineNotifications.UpdatePipelineNotifications


-- | The UpdatePipelineStatus operation pauses or reactivates a pipeline,
--   so that the pipeline stops or restarts the processing of jobs.
--   
--   Changing the pipeline status is useful if you want to cancel one or
--   more jobs. You can't cancel jobs after Elastic Transcoder has started
--   processing them; if you pause the pipeline to which you submitted the
--   jobs, you have more time to get the job IDs for the jobs that you want
--   to cancel, and to send a <tt>CancelJob</tt> request.
module Network.AWS.ElasticTranscoder.UpdatePipelineStatus

-- | Creates a value of <a>UpdatePipelineStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upsId</a> - The identifier of the pipeline to update.</li>
--   <li><a>upsStatus</a> - The desired status of the pipeline: *
--   <tt>Active</tt> : The pipeline is processing jobs. * <tt>Paused</tt> :
--   The pipeline is not currently processing jobs.</li>
--   </ul>
updatePipelineStatus :: Text -> Text -> UpdatePipelineStatus

-- | The <tt>UpdatePipelineStatusRequest</tt> structure.
--   
--   <i>See:</i> <a>updatePipelineStatus</a> smart constructor.
data UpdatePipelineStatus

-- | The identifier of the pipeline to update.
upsId :: Lens' UpdatePipelineStatus Text

-- | The desired status of the pipeline: * <tt>Active</tt> : The pipeline
--   is processing jobs. * <tt>Paused</tt> : The pipeline is not currently
--   processing jobs.
upsStatus :: Lens' UpdatePipelineStatus Text

-- | Creates a value of <a>UpdatePipelineStatusResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upsrsPipeline</a> - A section of the response body that
--   provides information about the pipeline.</li>
--   <li><a>upsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updatePipelineStatusResponse :: Int -> UpdatePipelineStatusResponse

-- | When you update status for a pipeline, Elastic Transcoder returns the
--   values that you specified in the request.
--   
--   <i>See:</i> <a>updatePipelineStatusResponse</a> smart constructor.
data UpdatePipelineStatusResponse

-- | A section of the response body that provides information about the
--   pipeline.
upsrsPipeline :: Lens' UpdatePipelineStatusResponse (Maybe Pipeline)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
upsrsResponseStatus :: Lens' UpdatePipelineStatusResponse Int
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatusResponse
instance Data.Data.Data Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatusResponse
instance GHC.Show.Show Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatusResponse
instance GHC.Read.Read Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatusResponse
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatusResponse
instance GHC.Generics.Generic Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatus
instance Data.Data.Data Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatus
instance GHC.Show.Show Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatus
instance GHC.Read.Read Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatus
instance GHC.Classes.Eq Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatus
instance Network.AWS.Types.AWSRequest Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatus
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatusResponse
instance Data.Hashable.Class.Hashable Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatus
instance Control.DeepSeq.NFData Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatus
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatus
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatus
instance Network.AWS.Data.Path.ToPath Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatus
instance Network.AWS.Data.Query.ToQuery Network.AWS.ElasticTranscoder.UpdatePipelineStatus.UpdatePipelineStatus


module Network.AWS.ElasticTranscoder.Waiters

-- | Polls <a>ReadJob</a> every 30 seconds until a successful state is
--   reached. An error is returned after 120 failed checks.
jobComplete :: Wait ReadJob


-- | <b>AWS Elastic Transcoder Service</b>
--   
--   The AWS Elastic Transcoder Service.
module Network.AWS.ElasticTranscoder

-- | API version <tt>2012-09-25</tt> of the Amazon Elastic Transcoder SDK
--   configuration.
elasticTranscoder :: Service

-- | Prism for IncompatibleVersionException' errors.
_IncompatibleVersionException :: AsError a => Getting (First ServiceError) a ServiceError

-- | One or more required parameter values were not provided in the
--   request.
_ValidationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | General authentication failure. The request was not signed correctly.
_AccessDeniedException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Elastic Transcoder encountered an unexpected exception while trying to
--   fulfill the request.
_InternalServiceException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The requested resource does not exist or is not available. For
--   example, the pipeline to which you're trying to add a job doesn't
--   exist or is still being created.
_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Too many operations for a given AWS account. For example, the number
--   of pipelines exceeds the maximum allowed.
_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The resource you are attempting to change is in use. For example, you
--   are attempting to delete a pipeline that is currently in use.
_ResourceInUseException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Polls <a>ReadJob</a> every 30 seconds until a successful state is
--   reached. An error is returned after 120 failed checks.
jobComplete :: Wait ReadJob

-- | The file to be used as album art. There can be multiple artworks
--   associated with an audio file, to a maximum of 20.
--   
--   To remove artwork or leave the artwork empty, you can either set
--   <tt>Artwork</tt> to null, or set the <tt>Merge Policy</tt> to
--   <a>Replace</a> and use an empty <tt>Artwork</tt> array.
--   
--   To pass through existing artwork unchanged, set the <tt>Merge
--   Policy</tt> to <a>Prepend</a>, <a>Append</a>, or <a>Fallback</a>, and
--   use an empty <tt>Artwork</tt> array.
--   
--   <i>See:</i> <a>artwork</a> smart constructor.
data Artwork

-- | Creates a value of <a>Artwork</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aSizingPolicy</a> - Specify one of the following values to
--   control scaling of the output album art: * <tt>Fit:</tt> Elastic
--   Transcoder scales the output art so it matches the value that you
--   specified in either <tt>MaxWidth</tt> or <tt>MaxHeight</tt> without
--   exceeding the other value. * <tt>Fill:</tt> Elastic Transcoder scales
--   the output art so it matches the value that you specified in either
--   <tt>MaxWidth</tt> or <tt>MaxHeight</tt> and matches or exceeds the
--   other value. Elastic Transcoder centers the output art and then crops
--   it in the dimension (if any) that exceeds the maximum value. *
--   <tt>Stretch:</tt> Elastic Transcoder stretches the output art to match
--   the values that you specified for <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> . If the relative proportions of the input art and
--   the output art are different, the output art will be distorted. *
--   <tt>Keep:</tt> Elastic Transcoder does not scale the output art. If
--   either dimension of the input art exceeds the values that you
--   specified for <tt>MaxWidth</tt> and <tt>MaxHeight</tt> , Elastic
--   Transcoder crops the output art. * <tt>ShrinkToFit:</tt> Elastic
--   Transcoder scales the output art down so that its dimensions match the
--   values that you specified for at least one of <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> without exceeding either value. If you specify this
--   option, Elastic Transcoder does not scale the art up. *
--   <tt>ShrinkToFill</tt> Elastic Transcoder scales the output art down so
--   that its dimensions match the values that you specified for at least
--   one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without dropping below
--   either value. If you specify this option, Elastic Transcoder does not
--   scale the art up.</li>
--   <li><a>aAlbumArtFormat</a> - The format of album art, if any. Valid
--   formats are <tt>.jpg</tt> and <tt>.png</tt> .</li>
--   <li><a>aMaxHeight</a> - The maximum height of the output album art in
--   pixels. If you specify <tt>auto</tt> , Elastic Transcoder uses 600 as
--   the default value. If you specify a numeric value, enter an even
--   integer between 32 and 3072, inclusive.</li>
--   <li><a>aInputKey</a> - The name of the file to be used as album art.
--   To determine which Amazon S3 bucket contains the specified file,
--   Elastic Transcoder checks the pipeline specified by
--   <tt>PipelineId</tt> ; the <tt>InputBucket</tt> object in that pipeline
--   identifies the bucket. If the file name includes a prefix, for
--   example, <tt>cooking/pie.jpg</tt> , include the prefix in the key. If
--   the file isn't in the specified bucket, Elastic Transcoder returns an
--   error.</li>
--   <li><a>aPaddingPolicy</a> - When you set <tt>PaddingPolicy</tt> to
--   <tt>Pad</tt> , Elastic Transcoder may add white bars to the top and
--   bottom and/or left and right sides of the output album art to make the
--   total size of the output art match the values that you specified for
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> .</li>
--   <li><a>aEncryption</a> - The encryption settings, if any, that you
--   want Elastic Transcoder to apply to your artwork.</li>
--   <li><a>aMaxWidth</a> - The maximum width of the output album art in
--   pixels. If you specify <tt>auto</tt> , Elastic Transcoder uses 600 as
--   the default value. If you specify a numeric value, enter an even
--   integer between 32 and 4096, inclusive.</li>
--   </ul>
artwork :: Artwork

-- | Specify one of the following values to control scaling of the output
--   album art: * <tt>Fit:</tt> Elastic Transcoder scales the output art so
--   it matches the value that you specified in either <tt>MaxWidth</tt> or
--   <tt>MaxHeight</tt> without exceeding the other value. * <tt>Fill:</tt>
--   Elastic Transcoder scales the output art so it matches the value that
--   you specified in either <tt>MaxWidth</tt> or <tt>MaxHeight</tt> and
--   matches or exceeds the other value. Elastic Transcoder centers the
--   output art and then crops it in the dimension (if any) that exceeds
--   the maximum value. * <tt>Stretch:</tt> Elastic Transcoder stretches
--   the output art to match the values that you specified for
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> . If the relative proportions
--   of the input art and the output art are different, the output art will
--   be distorted. * <tt>Keep:</tt> Elastic Transcoder does not scale the
--   output art. If either dimension of the input art exceeds the values
--   that you specified for <tt>MaxWidth</tt> and <tt>MaxHeight</tt> ,
--   Elastic Transcoder crops the output art. * <tt>ShrinkToFit:</tt>
--   Elastic Transcoder scales the output art down so that its dimensions
--   match the values that you specified for at least one of
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without exceeding either
--   value. If you specify this option, Elastic Transcoder does not scale
--   the art up. * <tt>ShrinkToFill</tt> Elastic Transcoder scales the
--   output art down so that its dimensions match the values that you
--   specified for at least one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt>
--   without dropping below either value. If you specify this option,
--   Elastic Transcoder does not scale the art up.
aSizingPolicy :: Lens' Artwork (Maybe Text)

-- | The format of album art, if any. Valid formats are <tt>.jpg</tt> and
--   <tt>.png</tt> .
aAlbumArtFormat :: Lens' Artwork (Maybe Text)

-- | The maximum height of the output album art in pixels. If you specify
--   <tt>auto</tt> , Elastic Transcoder uses 600 as the default value. If
--   you specify a numeric value, enter an even integer between 32 and
--   3072, inclusive.
aMaxHeight :: Lens' Artwork (Maybe Text)

-- | The name of the file to be used as album art. To determine which
--   Amazon S3 bucket contains the specified file, Elastic Transcoder
--   checks the pipeline specified by <tt>PipelineId</tt> ; the
--   <tt>InputBucket</tt> object in that pipeline identifies the bucket. If
--   the file name includes a prefix, for example, <tt>cooking/pie.jpg</tt>
--   , include the prefix in the key. If the file isn't in the specified
--   bucket, Elastic Transcoder returns an error.
aInputKey :: Lens' Artwork (Maybe Text)

-- | When you set <tt>PaddingPolicy</tt> to <tt>Pad</tt> , Elastic
--   Transcoder may add white bars to the top and bottom and/or left and
--   right sides of the output album art to make the total size of the
--   output art match the values that you specified for <tt>MaxWidth</tt>
--   and <tt>MaxHeight</tt> .
aPaddingPolicy :: Lens' Artwork (Maybe Text)

-- | The encryption settings, if any, that you want Elastic Transcoder to
--   apply to your artwork.
aEncryption :: Lens' Artwork (Maybe Encryption)

-- | The maximum width of the output album art in pixels. If you specify
--   <tt>auto</tt> , Elastic Transcoder uses 600 as the default value. If
--   you specify a numeric value, enter an even integer between 32 and
--   4096, inclusive.
aMaxWidth :: Lens' Artwork (Maybe Text)

-- | Options associated with your audio codec.
--   
--   <i>See:</i> <a>audioCodecOptions</a> smart constructor.
data AudioCodecOptions

-- | Creates a value of <a>AudioCodecOptions</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acoSigned</a> - You can only choose whether an audio sample is
--   signed when you specify <tt>pcm</tt> for the value of Audio:Codec.
--   Whether audio samples are represented with negative and positive
--   numbers (signed) or only positive numbers (unsigned). The supported
--   value is <tt>Signed</tt> .</li>
--   <li><a>acoBitDepth</a> - You can only choose an audio bit depth when
--   you specify <tt>flac</tt> or <tt>pcm</tt> for the value of
--   Audio:Codec. The bit depth of a sample is how many bits of information
--   are included in the audio samples. The higher the bit depth, the
--   better the audio, but the larger the file. Valid values are
--   <tt>16</tt> and <tt>24</tt> . The most common bit depth is <tt>24</tt>
--   .</li>
--   <li><a>acoProfile</a> - You can only choose an audio profile when you
--   specify AAC for the value of Audio:Codec. Specify the AAC profile for
--   the output file. Elastic Transcoder supports the following profiles: *
--   <tt>auto</tt> : If you specify <tt>auto</tt> , Elastic Transcoder
--   selects the profile based on the bit rate selected for the output
--   file. * <tt>AAC-LC</tt> : The most common AAC profile. Use for bit
--   rates larger than 64 kbps. * <tt>HE-AAC</tt> : Not supported on some
--   older players and devices. Use for bit rates between 40 and 80 kbps. *
--   <tt>HE-AACv2</tt> : Not supported on some players and devices. Use for
--   bit rates less than 48 kbps. All outputs in a <tt>Smooth</tt> playlist
--   must have the same value for <tt>Profile</tt> .</li>
--   <li><a>acoBitOrder</a> - You can only choose an audio bit order when
--   you specify <tt>pcm</tt> for the value of Audio:Codec. The order the
--   bits of a PCM sample are stored in. The supported value is
--   <tt>LittleEndian</tt> .</li>
--   </ul>
audioCodecOptions :: AudioCodecOptions

-- | You can only choose whether an audio sample is signed when you specify
--   <tt>pcm</tt> for the value of Audio:Codec. Whether audio samples are
--   represented with negative and positive numbers (signed) or only
--   positive numbers (unsigned). The supported value is <tt>Signed</tt> .
acoSigned :: Lens' AudioCodecOptions (Maybe Text)

-- | You can only choose an audio bit depth when you specify <tt>flac</tt>
--   or <tt>pcm</tt> for the value of Audio:Codec. The bit depth of a
--   sample is how many bits of information are included in the audio
--   samples. The higher the bit depth, the better the audio, but the
--   larger the file. Valid values are <tt>16</tt> and <tt>24</tt> . The
--   most common bit depth is <tt>24</tt> .
acoBitDepth :: Lens' AudioCodecOptions (Maybe Text)

-- | You can only choose an audio profile when you specify AAC for the
--   value of Audio:Codec. Specify the AAC profile for the output file.
--   Elastic Transcoder supports the following profiles: * <tt>auto</tt> :
--   If you specify <tt>auto</tt> , Elastic Transcoder selects the profile
--   based on the bit rate selected for the output file. * <tt>AAC-LC</tt>
--   : The most common AAC profile. Use for bit rates larger than 64 kbps.
--   * <tt>HE-AAC</tt> : Not supported on some older players and devices.
--   Use for bit rates between 40 and 80 kbps. * <tt>HE-AACv2</tt> : Not
--   supported on some players and devices. Use for bit rates less than 48
--   kbps. All outputs in a <tt>Smooth</tt> playlist must have the same
--   value for <tt>Profile</tt> .
acoProfile :: Lens' AudioCodecOptions (Maybe Text)

-- | You can only choose an audio bit order when you specify <tt>pcm</tt>
--   for the value of Audio:Codec. The order the bits of a PCM sample are
--   stored in. The supported value is <tt>LittleEndian</tt> .
acoBitOrder :: Lens' AudioCodecOptions (Maybe Text)

-- | Parameters required for transcoding audio.
--   
--   <i>See:</i> <a>audioParameters</a> smart constructor.
data AudioParameters

-- | Creates a value of <a>AudioParameters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apChannels</a> - The number of audio channels in the output
--   file. The following values are valid: <tt>auto</tt> , <tt>0</tt> ,
--   <tt>1</tt> , <tt>2</tt> One channel carries the information played by
--   a single speaker. For example, a stereo track with two channels sends
--   one channel to the left speaker, and the other channel to the right
--   speaker. The output channels are organized into tracks. If you want
--   Elastic Transcoder to automatically detect the number of audio
--   channels in the input file and use that value for the output file,
--   select <tt>auto</tt> . The output of a specific channel value and
--   inputs are as follows: * <tt>auto</tt> <b>channel specified, with any
--   input:</b> Pass through up to eight input channels. * <tt>0</tt>
--   <b>channels specified, with any input:</b> Audio omitted from the
--   output. * <tt>1</tt> <b>channel specified, with at least one input
--   channel:</b> Mono sound. * <tt>2</tt> <b>channels specified, with any
--   input:</b> Two identical mono channels or stereo. For more information
--   about tracks, see <tt>Audio:AudioPackingMode.</tt> For more
--   information about how Elastic Transcoder organizes channels and
--   tracks, see <tt>Audio:AudioPackingMode</tt> .</li>
--   <li><a>apCodec</a> - The audio codec for the output file. Valid values
--   include <tt>aac</tt> , <tt>flac</tt> , <tt>mp2</tt> , <tt>mp3</tt> ,
--   <tt>pcm</tt> , and <tt>vorbis</tt> .</li>
--   <li><a>apAudioPackingMode</a> - The method of organizing audio
--   channels and tracks. Use <tt>Audio:Channels</tt> to specify the number
--   of channels in your output, and <tt>Audio:AudioPackingMode</tt> to
--   specify the number of tracks and their relation to the channels. If
--   you do not specify an <tt>Audio:AudioPackingMode</tt> , Elastic
--   Transcoder uses <tt>SingleTrack</tt> . The following values are valid:
--   <tt>SingleTrack</tt> , <tt>OneChannelPerTrack</tt> , and
--   <tt>OneChannelPerTrackWithMosTo8Tracks</tt> When you specify
--   <tt>SingleTrack</tt> , Elastic Transcoder creates a single track for
--   your output. The track can have up to eight channels. Use
--   <tt>SingleTrack</tt> for all non-<tt>mxf</tt> containers. The outputs
--   of <tt>SingleTrack</tt> for a specific channel value and inputs are as
--   follows: * <tt>0</tt> <b>channels with any input:</b> Audio omitted
--   from the output * <tt>1, 2, or auto </tt> <b>channels with no audio
--   input:</b> Audio omitted from the output * <tt>1 </tt> <b>channel with
--   any input with audio:</b> One track with one channel, downmixed if
--   necessary * <tt>2 </tt> <b>channels with one track with one
--   channel:</b> One track with two identical channels * <tt>2 or auto
--   </tt> <b>channels with two tracks with one channel each:</b> One track
--   with two channels * <tt>2 or auto </tt> <b>channels with one track
--   with two channels:</b> One track with two channels * <tt>2 </tt>
--   <b>channels with one track with multiple channels:</b> One track with
--   two channels * <tt>auto </tt> <b>channels with one track with one
--   channel:</b> One track with one channel * <tt>auto </tt> <b>channels
--   with one track with multiple channels:</b> One track with multiple
--   channels When you specify <tt>OneChannelPerTrack</tt> , Elastic
--   Transcoder creates a new track for every channel in your output. Your
--   output can have up to eight single-channel tracks. The outputs of
--   <tt>OneChannelPerTrack</tt> for a specific channel value and inputs
--   are as follows: * <tt>0 </tt> <b>channels with any input:</b> Audio
--   omitted from the output * <tt>1, 2, or auto </tt> <b>channels with no
--   audio input:</b> Audio omitted from the output * <tt>1 </tt>
--   <b>channel with any input with audio:</b> One track with one channel,
--   downmixed if necessary * <tt>2 </tt> <b>channels with one track with
--   one channel:</b> Two tracks with one identical channel each * <tt>2 or
--   auto </tt> <b>channels with two tracks with one channel each:</b> Two
--   tracks with one channel each * <tt>2 or auto </tt> <b>channels with
--   one track with two channels:</b> Two tracks with one channel each *
--   <tt>2 </tt> <b>channels with one track with multiple channels:</b> Two
--   tracks with one channel each * <tt>auto </tt> <b>channels with one
--   track with one channel:</b> One track with one channel * <tt>auto
--   </tt> <b>channels with one track with multiple channels:</b> Up to
--   eight tracks with one channel each When you specify
--   <tt>OneChannelPerTrackWithMosTo8Tracks</tt> , Elastic Transcoder
--   creates eight single-channel tracks for your output. All tracks that
--   do not contain audio data from an input channel are MOS, or Mit Out
--   Sound, tracks. The outputs of
--   <tt>OneChannelPerTrackWithMosTo8Tracks</tt> for a specific channel
--   value and inputs are as follows: * <tt>0 </tt> <b>channels with any
--   input:</b> Audio omitted from the output * <tt>1, 2, or auto </tt>
--   <b>channels with no audio input:</b> Audio omitted from the output *
--   <tt>1 </tt> <b>channel with any input with audio:</b> One track with
--   one channel, downmixed if necessary, plus six MOS tracks * <tt>2 </tt>
--   <b>channels with one track with one channel:</b> Two tracks with one
--   identical channel each, plus six MOS tracks * <tt>2 or auto </tt>
--   <b>channels with two tracks with one channel each:</b> Two tracks with
--   one channel each, plus six MOS tracks * <tt>2 or auto </tt>
--   <b>channels with one track with two channels:</b> Two tracks with one
--   channel each, plus six MOS tracks * <tt>2 </tt> <b>channels with one
--   track with multiple channels:</b> Two tracks with one channel each,
--   plus six MOS tracks * <tt>auto </tt> <b>channels with one track with
--   one channel:</b> One track with one channel, plus seven MOS tracks *
--   <tt>auto </tt> <b>channels with one track with multiple channels:</b>
--   Up to eight tracks with one channel each, plus MOS tracks until there
--   are eight tracks in all</li>
--   <li><a>apSampleRate</a> - The sample rate of the audio stream in the
--   output file, in Hertz. Valid values include: <tt>auto</tt> ,
--   <tt>22050</tt> , <tt>32000</tt> , <tt>44100</tt> , <tt>48000</tt> ,
--   <tt>96000</tt> If you specify <tt>auto</tt> , Elastic Transcoder
--   automatically detects the sample rate.</li>
--   <li><a>apBitRate</a> - The bit rate of the audio stream in the output
--   file, in kilobits/second. Enter an integer between 64 and 320,
--   inclusive.</li>
--   <li><a>apCodecOptions</a> - If you specified <tt>AAC</tt> for
--   <tt>Audio:Codec</tt> , this is the <tt>AAC</tt> compression profile to
--   use. Valid values include: <tt>auto</tt> , <tt>AAC-LC</tt> ,
--   <tt>HE-AAC</tt> , <tt>HE-AACv2</tt> If you specify <tt>auto</tt> ,
--   Elastic Transcoder chooses a profile based on the bit rate of the
--   output file.</li>
--   </ul>
audioParameters :: AudioParameters

-- | The number of audio channels in the output file. The following values
--   are valid: <tt>auto</tt> , <tt>0</tt> , <tt>1</tt> , <tt>2</tt> One
--   channel carries the information played by a single speaker. For
--   example, a stereo track with two channels sends one channel to the
--   left speaker, and the other channel to the right speaker. The output
--   channels are organized into tracks. If you want Elastic Transcoder to
--   automatically detect the number of audio channels in the input file
--   and use that value for the output file, select <tt>auto</tt> . The
--   output of a specific channel value and inputs are as follows: *
--   <tt>auto</tt> <b>channel specified, with any input:</b> Pass through
--   up to eight input channels. * <tt>0</tt> <b>channels specified, with
--   any input:</b> Audio omitted from the output. * <tt>1</tt> <b>channel
--   specified, with at least one input channel:</b> Mono sound. *
--   <tt>2</tt> <b>channels specified, with any input:</b> Two identical
--   mono channels or stereo. For more information about tracks, see
--   <tt>Audio:AudioPackingMode.</tt> For more information about how
--   Elastic Transcoder organizes channels and tracks, see
--   <tt>Audio:AudioPackingMode</tt> .
apChannels :: Lens' AudioParameters (Maybe Text)

-- | The audio codec for the output file. Valid values include <tt>aac</tt>
--   , <tt>flac</tt> , <tt>mp2</tt> , <tt>mp3</tt> , <tt>pcm</tt> , and
--   <tt>vorbis</tt> .
apCodec :: Lens' AudioParameters (Maybe Text)

-- | The method of organizing audio channels and tracks. Use
--   <tt>Audio:Channels</tt> to specify the number of channels in your
--   output, and <tt>Audio:AudioPackingMode</tt> to specify the number of
--   tracks and their relation to the channels. If you do not specify an
--   <tt>Audio:AudioPackingMode</tt> , Elastic Transcoder uses
--   <tt>SingleTrack</tt> . The following values are valid:
--   <tt>SingleTrack</tt> , <tt>OneChannelPerTrack</tt> , and
--   <tt>OneChannelPerTrackWithMosTo8Tracks</tt> When you specify
--   <tt>SingleTrack</tt> , Elastic Transcoder creates a single track for
--   your output. The track can have up to eight channels. Use
--   <tt>SingleTrack</tt> for all non-<tt>mxf</tt> containers. The outputs
--   of <tt>SingleTrack</tt> for a specific channel value and inputs are as
--   follows: * <tt>0</tt> <b>channels with any input:</b> Audio omitted
--   from the output * <tt>1, 2, or auto </tt> <b>channels with no audio
--   input:</b> Audio omitted from the output * <tt>1 </tt> <b>channel with
--   any input with audio:</b> One track with one channel, downmixed if
--   necessary * <tt>2 </tt> <b>channels with one track with one
--   channel:</b> One track with two identical channels * <tt>2 or auto
--   </tt> <b>channels with two tracks with one channel each:</b> One track
--   with two channels * <tt>2 or auto </tt> <b>channels with one track
--   with two channels:</b> One track with two channels * <tt>2 </tt>
--   <b>channels with one track with multiple channels:</b> One track with
--   two channels * <tt>auto </tt> <b>channels with one track with one
--   channel:</b> One track with one channel * <tt>auto </tt> <b>channels
--   with one track with multiple channels:</b> One track with multiple
--   channels When you specify <tt>OneChannelPerTrack</tt> , Elastic
--   Transcoder creates a new track for every channel in your output. Your
--   output can have up to eight single-channel tracks. The outputs of
--   <tt>OneChannelPerTrack</tt> for a specific channel value and inputs
--   are as follows: * <tt>0 </tt> <b>channels with any input:</b> Audio
--   omitted from the output * <tt>1, 2, or auto </tt> <b>channels with no
--   audio input:</b> Audio omitted from the output * <tt>1 </tt>
--   <b>channel with any input with audio:</b> One track with one channel,
--   downmixed if necessary * <tt>2 </tt> <b>channels with one track with
--   one channel:</b> Two tracks with one identical channel each * <tt>2 or
--   auto </tt> <b>channels with two tracks with one channel each:</b> Two
--   tracks with one channel each * <tt>2 or auto </tt> <b>channels with
--   one track with two channels:</b> Two tracks with one channel each *
--   <tt>2 </tt> <b>channels with one track with multiple channels:</b> Two
--   tracks with one channel each * <tt>auto </tt> <b>channels with one
--   track with one channel:</b> One track with one channel * <tt>auto
--   </tt> <b>channels with one track with multiple channels:</b> Up to
--   eight tracks with one channel each When you specify
--   <tt>OneChannelPerTrackWithMosTo8Tracks</tt> , Elastic Transcoder
--   creates eight single-channel tracks for your output. All tracks that
--   do not contain audio data from an input channel are MOS, or Mit Out
--   Sound, tracks. The outputs of
--   <tt>OneChannelPerTrackWithMosTo8Tracks</tt> for a specific channel
--   value and inputs are as follows: * <tt>0 </tt> <b>channels with any
--   input:</b> Audio omitted from the output * <tt>1, 2, or auto </tt>
--   <b>channels with no audio input:</b> Audio omitted from the output *
--   <tt>1 </tt> <b>channel with any input with audio:</b> One track with
--   one channel, downmixed if necessary, plus six MOS tracks * <tt>2 </tt>
--   <b>channels with one track with one channel:</b> Two tracks with one
--   identical channel each, plus six MOS tracks * <tt>2 or auto </tt>
--   <b>channels with two tracks with one channel each:</b> Two tracks with
--   one channel each, plus six MOS tracks * <tt>2 or auto </tt>
--   <b>channels with one track with two channels:</b> Two tracks with one
--   channel each, plus six MOS tracks * <tt>2 </tt> <b>channels with one
--   track with multiple channels:</b> Two tracks with one channel each,
--   plus six MOS tracks * <tt>auto </tt> <b>channels with one track with
--   one channel:</b> One track with one channel, plus seven MOS tracks *
--   <tt>auto </tt> <b>channels with one track with multiple channels:</b>
--   Up to eight tracks with one channel each, plus MOS tracks until there
--   are eight tracks in all
apAudioPackingMode :: Lens' AudioParameters (Maybe Text)

-- | The sample rate of the audio stream in the output file, in Hertz.
--   Valid values include: <tt>auto</tt> , <tt>22050</tt> , <tt>32000</tt>
--   , <tt>44100</tt> , <tt>48000</tt> , <tt>96000</tt> If you specify
--   <tt>auto</tt> , Elastic Transcoder automatically detects the sample
--   rate.
apSampleRate :: Lens' AudioParameters (Maybe Text)

-- | The bit rate of the audio stream in the output file, in
--   kilobits/second. Enter an integer between 64 and 320, inclusive.
apBitRate :: Lens' AudioParameters (Maybe Text)

-- | If you specified <tt>AAC</tt> for <tt>Audio:Codec</tt> , this is the
--   <tt>AAC</tt> compression profile to use. Valid values include:
--   <tt>auto</tt> , <tt>AAC-LC</tt> , <tt>HE-AAC</tt> , <tt>HE-AACv2</tt>
--   If you specify <tt>auto</tt> , Elastic Transcoder chooses a profile
--   based on the bit rate of the output file.
apCodecOptions :: Lens' AudioParameters (Maybe AudioCodecOptions)

-- | The file format of the output captions. If you leave this value blank,
--   Elastic Transcoder returns an error.
--   
--   <i>See:</i> <a>captionFormat</a> smart constructor.
data CaptionFormat

-- | Creates a value of <a>CaptionFormat</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cfPattern</a> - The prefix for caption filenames, in the form
--   <i>description</i> -<tt>{language}</tt> , where: * <i>description</i>
--   is a description of the video. * <tt>{language}</tt> is a literal
--   value that Elastic Transcoder replaces with the two- or three-letter
--   code for the language of the caption in the output file names. If you
--   don't include <tt>{language}</tt> in the file name pattern, Elastic
--   Transcoder automatically appends "<tt>{language}</tt> " to the value
--   that you specify for the description. In addition, Elastic Transcoder
--   automatically appends the count to the end of the segment files. For
--   example, suppose you're transcoding into srt format. When you enter
--   "Sydney-{language}-sunrise", and the language of the captions is
--   English (en), the name of the first caption file is be
--   Sydney-en-sunrise00000.srt.</li>
--   <li><a>cfFormat</a> - The format you specify determines whether
--   Elastic Transcoder generates an embedded or sidecar caption for this
--   output. * <b>Valid Embedded Caption Formats:</b> * <b>for FLAC</b> :
--   None * <b>For MP3</b> : None * <b>For MP4</b> : mov-text * <b>For
--   MPEG-TS</b> : None * <b>For ogg</b> : None * <b>For webm</b> : None *
--   <b>Valid Sidecar Caption Formats:</b> Elastic Transcoder supports dfxp
--   (first div element only), scc, srt, and webvtt. If you want ttml or
--   smpte-tt compatible captions, specify dfxp as your output format. *
--   <b>For FMP4</b> : dfxp * <b>Non-FMP4 outputs</b> : All sidecar types
--   <tt>fmp4</tt> captions have an extension of <tt>.ismt</tt></li>
--   <li><a>cfEncryption</a> - The encryption settings, if any, that you
--   want Elastic Transcoder to apply to your caption formats.</li>
--   </ul>
captionFormat :: CaptionFormat

-- | The prefix for caption filenames, in the form <i>description</i>
--   -<tt>{language}</tt> , where: * <i>description</i> is a description of
--   the video. * <tt>{language}</tt> is a literal value that Elastic
--   Transcoder replaces with the two- or three-letter code for the
--   language of the caption in the output file names. If you don't include
--   <tt>{language}</tt> in the file name pattern, Elastic Transcoder
--   automatically appends "<tt>{language}</tt> " to the value that you
--   specify for the description. In addition, Elastic Transcoder
--   automatically appends the count to the end of the segment files. For
--   example, suppose you're transcoding into srt format. When you enter
--   "Sydney-{language}-sunrise", and the language of the captions is
--   English (en), the name of the first caption file is be
--   Sydney-en-sunrise00000.srt.
cfPattern :: Lens' CaptionFormat (Maybe Text)

-- | The format you specify determines whether Elastic Transcoder generates
--   an embedded or sidecar caption for this output. * <b>Valid Embedded
--   Caption Formats:</b> * <b>for FLAC</b> : None * <b>For MP3</b> : None
--   * <b>For MP4</b> : mov-text * <b>For MPEG-TS</b> : None * <b>For
--   ogg</b> : None * <b>For webm</b> : None * <b>Valid Sidecar Caption
--   Formats:</b> Elastic Transcoder supports dfxp (first div element
--   only), scc, srt, and webvtt. If you want ttml or smpte-tt compatible
--   captions, specify dfxp as your output format. * <b>For FMP4</b> : dfxp
--   * <b>Non-FMP4 outputs</b> : All sidecar types <tt>fmp4</tt> captions
--   have an extension of <tt>.ismt</tt>
cfFormat :: Lens' CaptionFormat (Maybe Text)

-- | The encryption settings, if any, that you want Elastic Transcoder to
--   apply to your caption formats.
cfEncryption :: Lens' CaptionFormat (Maybe Encryption)

-- | A source file for the input sidecar captions used during the
--   transcoding process.
--   
--   <i>See:</i> <a>captionSource</a> smart constructor.
data CaptionSource

-- | Creates a value of <a>CaptionSource</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csTimeOffset</a> - For clip generation or captions that do not
--   start at the same time as the associated video file, the
--   <tt>TimeOffset</tt> tells Elastic Transcoder how much of the video to
--   encode before including captions. Specify the TimeOffset in the form
--   [+-]SS.sss or [+-]HH:mm:SS.ss.</li>
--   <li><a>csEncryption</a> - The encryption settings, if any, that
--   Elastic Transcoder needs to decyrpt your caption sources, or that you
--   want Elastic Transcoder to apply to your caption sources.</li>
--   <li><a>csKey</a> - The name of the sidecar caption file that you want
--   Elastic Transcoder to include in the output file.</li>
--   <li><a>csLanguage</a> - A string that specifies the language of the
--   caption. If you specified multiple inputs with captions, the caption
--   language must match in order to be included in the output. Specify
--   this as one of: * 2-character ISO 639-1 code * 3-character ISO 639-2
--   code For more information on ISO language codes and language names,
--   see the List of ISO 639-1 codes.</li>
--   <li><a>csLabel</a> - The label of the caption shown in the player when
--   choosing a language. We recommend that you put the caption language
--   name here, in the language of the captions.</li>
--   </ul>
captionSource :: CaptionSource

-- | For clip generation or captions that do not start at the same time as
--   the associated video file, the <tt>TimeOffset</tt> tells Elastic
--   Transcoder how much of the video to encode before including captions.
--   Specify the TimeOffset in the form [+-]SS.sss or [+-]HH:mm:SS.ss.
csTimeOffset :: Lens' CaptionSource (Maybe Text)

-- | The encryption settings, if any, that Elastic Transcoder needs to
--   decyrpt your caption sources, or that you want Elastic Transcoder to
--   apply to your caption sources.
csEncryption :: Lens' CaptionSource (Maybe Encryption)

-- | The name of the sidecar caption file that you want Elastic Transcoder
--   to include in the output file.
csKey :: Lens' CaptionSource (Maybe Text)

-- | A string that specifies the language of the caption. If you specified
--   multiple inputs with captions, the caption language must match in
--   order to be included in the output. Specify this as one of: *
--   2-character ISO 639-1 code * 3-character ISO 639-2 code For more
--   information on ISO language codes and language names, see the List of
--   ISO 639-1 codes.
csLanguage :: Lens' CaptionSource (Maybe Text)

-- | The label of the caption shown in the player when choosing a language.
--   We recommend that you put the caption language name here, in the
--   language of the captions.
csLabel :: Lens' CaptionSource (Maybe Text)

-- | The captions to be created, if any.
--   
--   <i>See:</i> <a>captions</a> smart constructor.
data Captions

-- | Creates a value of <a>Captions</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cMergePolicy</a> - A policy that determines how Elastic
--   Transcoder handles the existence of multiple captions. *
--   <b>MergeOverride:</b> Elastic Transcoder transcodes both embedded and
--   sidecar captions into outputs. If captions for a language are embedded
--   in the input file and also appear in a sidecar file, Elastic
--   Transcoder uses the sidecar captions and ignores the embedded captions
--   for that language. * <b>MergeRetain:</b> Elastic Transcoder transcodes
--   both embedded and sidecar captions into outputs. If captions for a
--   language are embedded in the input file and also appear in a sidecar
--   file, Elastic Transcoder uses the embedded captions and ignores the
--   sidecar captions for that language. If <tt>CaptionSources</tt> is
--   empty, Elastic Transcoder omits all sidecar captions from the output
--   files. * <b>Override:</b> Elastic Transcoder transcodes only the
--   sidecar captions that you specify in <tt>CaptionSources</tt> .
--   <tt>MergePolicy</tt> cannot be null.</li>
--   <li><a>cCaptionSources</a> - Source files for the input sidecar
--   captions used during the transcoding process. To omit all sidecar
--   captions, leave <tt>CaptionSources</tt> blank.</li>
--   <li><a>cCaptionFormats</a> - The array of file formats for the output
--   captions. If you leave this value blank, Elastic Transcoder returns an
--   error.</li>
--   </ul>
captions :: Captions

-- | A policy that determines how Elastic Transcoder handles the existence
--   of multiple captions. * <b>MergeOverride:</b> Elastic Transcoder
--   transcodes both embedded and sidecar captions into outputs. If
--   captions for a language are embedded in the input file and also appear
--   in a sidecar file, Elastic Transcoder uses the sidecar captions and
--   ignores the embedded captions for that language. * <b>MergeRetain:</b>
--   Elastic Transcoder transcodes both embedded and sidecar captions into
--   outputs. If captions for a language are embedded in the input file and
--   also appear in a sidecar file, Elastic Transcoder uses the embedded
--   captions and ignores the sidecar captions for that language. If
--   <tt>CaptionSources</tt> is empty, Elastic Transcoder omits all sidecar
--   captions from the output files. * <b>Override:</b> Elastic Transcoder
--   transcodes only the sidecar captions that you specify in
--   <tt>CaptionSources</tt> . <tt>MergePolicy</tt> cannot be null.
cMergePolicy :: Lens' Captions (Maybe Text)

-- | Source files for the input sidecar captions used during the
--   transcoding process. To omit all sidecar captions, leave
--   <tt>CaptionSources</tt> blank.
cCaptionSources :: Lens' Captions [CaptionSource]

-- | The array of file formats for the output captions. If you leave this
--   value blank, Elastic Transcoder returns an error.
cCaptionFormats :: Lens' Captions [CaptionFormat]

-- | Settings for one clip in a composition. All jobs in a playlist must
--   have the same clip settings.
--   
--   <i>See:</i> <a>clip</a> smart constructor.
data Clip

-- | Creates a value of <a>Clip</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cTimeSpan</a> - Settings that determine when a clip begins and
--   how long it lasts.</li>
--   </ul>
clip :: Clip

-- | Settings that determine when a clip begins and how long it lasts.
cTimeSpan :: Lens' Clip (Maybe TimeSpan)

-- | The <tt>CreateJobOutput</tt> structure.
--   
--   <i>See:</i> <a>createJobOutput</a> smart constructor.
data CreateJobOutput

-- | Creates a value of <a>CreateJobOutput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cjoThumbnailPattern</a> - Whether you want Elastic Transcoder
--   to create thumbnails for your videos and, if so, how you want Elastic
--   Transcoder to name the files. If you don't want Elastic Transcoder to
--   create thumbnails, specify "". If you do want Elastic Transcoder to
--   create thumbnails, specify the information that you want to include in
--   the file name for each thumbnail. You can specify the following values
--   in any sequence: * <b><tt>{count}</tt> (Required)</b> : If you want to
--   create thumbnails, you must include <tt>{count}</tt> in the
--   <tt>ThumbnailPattern</tt> object. Wherever you specify
--   <tt>{count}</tt> , Elastic Transcoder adds a five-digit sequence
--   number (beginning with <b>00001</b> ) to thumbnail file names. The
--   number indicates where a given thumbnail appears in the sequence of
--   thumbnails for a transcoded file. <i>Important:</i> If you specify a
--   literal value and/or <tt>{resolution}</tt> but you omit
--   <tt>{count}</tt> , Elastic Transcoder returns a validation error and
--   does not create the job. * <b>Literal values (Optional)</b> : You can
--   specify literal values anywhere in the <tt>ThumbnailPattern</tt>
--   object. For example, you can include them as a file name prefix or as
--   a delimiter between <tt>{resolution}</tt> and <tt>{count}</tt> . *
--   <b><tt>{resolution}</tt> (Optional)</b> : If you want Elastic
--   Transcoder to include the resolution in the file name, include
--   <tt>{resolution}</tt> in the <tt>ThumbnailPattern</tt> object. When
--   creating thumbnails, Elastic Transcoder automatically saves the files
--   in the format (.jpg or .png) that appears in the preset that you
--   specified in the <tt>PresetID</tt> value of <tt>CreateJobOutput</tt> .
--   Elastic Transcoder also appends the applicable file name
--   extension.</li>
--   <li><a>cjoCaptions</a> - You can configure Elastic Transcoder to
--   transcode captions, or subtitles, from one format to another. All
--   captions must be in UTF-8. Elastic Transcoder supports two types of
--   captions: * <b>Embedded:</b> Embedded captions are included in the
--   same file as the audio and video. Elastic Transcoder supports only one
--   embedded caption per language, to a maximum of 300 embedded captions
--   per file. Valid input values include: <tt>CEA-608 (EIA-608</tt> ,
--   first non-empty channel only), <tt>CEA-708 (EIA-708</tt> , first
--   non-empty channel only), and <tt>mov-text</tt> Valid outputs include:
--   <tt>mov-text</tt> Elastic Transcoder supports a maximum of one
--   embedded format per output. * <b>Sidecar:</b> Sidecar captions are
--   kept in a separate metadata file from the audio and video data.
--   Sidecar captions require a player that is capable of understanding the
--   relationship between the video file and the sidecar file. Elastic
--   Transcoder supports only one sidecar caption per language, to a
--   maximum of 20 sidecar captions per file. Valid input values include:
--   <tt>dfxp</tt> (first div element only), <tt>ebu-tt</tt> , <tt>scc</tt>
--   , <tt>smpt</tt> , <tt>srt</tt> , <tt>ttml</tt> (first div element
--   only), and <tt>webvtt</tt> Valid outputs include: <tt>dfxp</tt> (first
--   div element only), <tt>scc</tt> , <tt>srt</tt> , and <tt>webvtt</tt> .
--   If you want ttml or smpte-tt compatible captions, specify dfxp as your
--   output format. Elastic Transcoder does not support OCR (Optical
--   Character Recognition), does not accept pictures as a valid input for
--   captions, and is not available for audio-only transcoding. Elastic
--   Transcoder does not preserve text formatting (for example, italics)
--   during the transcoding process. To remove captions or leave the
--   captions empty, set <tt>Captions</tt> to null. To pass through
--   existing captions unchanged, set the <tt>MergePolicy</tt> to
--   <tt>MergeRetain</tt> , and pass in a null <tt>CaptionSources</tt>
--   array. For more information on embedded files, see the Subtitles
--   Wikipedia page. For more information on sidecar files, see the
--   Extensible Metadata Platform and Sidecar file Wikipedia pages.</li>
--   <li><a>cjoPresetId</a> - The <tt>Id</tt> of the preset to use for this
--   job. The preset determines the audio, video, and thumbnail settings
--   that Elastic Transcoder uses for transcoding.</li>
--   <li><a>cjoComposition</a> - You can create an output file that
--   contains an excerpt from the input file. This excerpt, called a clip,
--   can come from the beginning, middle, or end of the file. The
--   Composition object contains settings for the clips that make up an
--   output file. For the current release, you can only specify settings
--   for a single clip per output file. The Composition object cannot be
--   null.</li>
--   <li><a>cjoAlbumArt</a> - Information about the album art that you want
--   Elastic Transcoder to add to the file during transcoding. You can
--   specify up to twenty album artworks for each output. Settings for each
--   artwork must be defined in the job for the current output.</li>
--   <li><a>cjoWatermarks</a> - Information about the watermarks that you
--   want Elastic Transcoder to add to the video during transcoding. You
--   can specify up to four watermarks for each output. Settings for each
--   watermark must be defined in the preset for the current output.</li>
--   <li><a>cjoEncryption</a> - You can specify encryption settings for any
--   output files that you want to use for a transcoding job. This includes
--   the output file and any watermarks, thumbnails, album art, or captions
--   that you want to use. You must specify encryption settings for each
--   file individually.</li>
--   <li><a>cjoKey</a> - The name to assign to the transcoded file. Elastic
--   Transcoder saves the file in the Amazon S3 bucket specified by the
--   <tt>OutputBucket</tt> object in the pipeline that is specified by the
--   pipeline ID. If a file with the specified name already exists in the
--   output bucket, the job fails.</li>
--   <li><a>cjoSegmentDuration</a> - <i>Important:</i> (Outputs in
--   Fragmented MP4 or MPEG-TS format only. If you specify a preset in
--   <tt>PresetId</tt> for which the value of <tt>Container</tt> is
--   <tt>fmp4</tt> (Fragmented MP4) or <tt>ts</tt> (MPEG-TS),
--   <tt>SegmentDuration</tt> is the target maximum duration of each
--   segment in seconds. For <tt>HLSv3</tt> format playlists, each media
--   segment is stored in a separate <tt>.ts</tt> file. For <tt>HLSv4</tt>
--   and <tt>Smooth</tt> playlists, all media segments for an output are
--   stored in a single file. Each segment is approximately the length of
--   the <tt>SegmentDuration</tt> , though individual segments might be
--   shorter or longer. The range of valid values is 1 to 60 seconds. If
--   the duration of the video is not evenly divisible by
--   <tt>SegmentDuration</tt> , the duration of the last segment is the
--   remainder of total length/SegmentDuration. Elastic Transcoder creates
--   an output-specific playlist for each output <tt>HLS</tt> output that
--   you specify in OutputKeys. To add an output to the master playlist for
--   this job, include it in the <tt>OutputKeys</tt> of the associated
--   playlist.</li>
--   <li><a>cjoThumbnailEncryption</a> - The encryption settings, if any,
--   that you want Elastic Transcoder to apply to your thumbnail.</li>
--   <li><a>cjoRotate</a> - The number of degrees clockwise by which you
--   want Elastic Transcoder to rotate the output relative to the input.
--   Enter one of the following values: <tt>auto</tt> , <tt>0</tt> ,
--   <tt>90</tt> , <tt>180</tt> , <tt>270</tt> . The value <tt>auto</tt>
--   generally works only if the file that you're transcoding contains
--   rotation metadata.</li>
--   </ul>
createJobOutput :: CreateJobOutput

-- | Whether you want Elastic Transcoder to create thumbnails for your
--   videos and, if so, how you want Elastic Transcoder to name the files.
--   If you don't want Elastic Transcoder to create thumbnails, specify "".
--   If you do want Elastic Transcoder to create thumbnails, specify the
--   information that you want to include in the file name for each
--   thumbnail. You can specify the following values in any sequence: *
--   <b><tt>{count}</tt> (Required)</b> : If you want to create thumbnails,
--   you must include <tt>{count}</tt> in the <tt>ThumbnailPattern</tt>
--   object. Wherever you specify <tt>{count}</tt> , Elastic Transcoder
--   adds a five-digit sequence number (beginning with <b>00001</b> ) to
--   thumbnail file names. The number indicates where a given thumbnail
--   appears in the sequence of thumbnails for a transcoded file.
--   <i>Important:</i> If you specify a literal value and/or
--   <tt>{resolution}</tt> but you omit <tt>{count}</tt> , Elastic
--   Transcoder returns a validation error and does not create the job. *
--   <b>Literal values (Optional)</b> : You can specify literal values
--   anywhere in the <tt>ThumbnailPattern</tt> object. For example, you can
--   include them as a file name prefix or as a delimiter between
--   <tt>{resolution}</tt> and <tt>{count}</tt> . *
--   <b><tt>{resolution}</tt> (Optional)</b> : If you want Elastic
--   Transcoder to include the resolution in the file name, include
--   <tt>{resolution}</tt> in the <tt>ThumbnailPattern</tt> object. When
--   creating thumbnails, Elastic Transcoder automatically saves the files
--   in the format (.jpg or .png) that appears in the preset that you
--   specified in the <tt>PresetID</tt> value of <tt>CreateJobOutput</tt> .
--   Elastic Transcoder also appends the applicable file name extension.
cjoThumbnailPattern :: Lens' CreateJobOutput (Maybe Text)

-- | You can configure Elastic Transcoder to transcode captions, or
--   subtitles, from one format to another. All captions must be in UTF-8.
--   Elastic Transcoder supports two types of captions: * <b>Embedded:</b>
--   Embedded captions are included in the same file as the audio and
--   video. Elastic Transcoder supports only one embedded caption per
--   language, to a maximum of 300 embedded captions per file. Valid input
--   values include: <tt>CEA-608 (EIA-608</tt> , first non-empty channel
--   only), <tt>CEA-708 (EIA-708</tt> , first non-empty channel only), and
--   <tt>mov-text</tt> Valid outputs include: <tt>mov-text</tt> Elastic
--   Transcoder supports a maximum of one embedded format per output. *
--   <b>Sidecar:</b> Sidecar captions are kept in a separate metadata file
--   from the audio and video data. Sidecar captions require a player that
--   is capable of understanding the relationship between the video file
--   and the sidecar file. Elastic Transcoder supports only one sidecar
--   caption per language, to a maximum of 20 sidecar captions per file.
--   Valid input values include: <tt>dfxp</tt> (first div element only),
--   <tt>ebu-tt</tt> , <tt>scc</tt> , <tt>smpt</tt> , <tt>srt</tt> ,
--   <tt>ttml</tt> (first div element only), and <tt>webvtt</tt> Valid
--   outputs include: <tt>dfxp</tt> (first div element only), <tt>scc</tt>
--   , <tt>srt</tt> , and <tt>webvtt</tt> . If you want ttml or smpte-tt
--   compatible captions, specify dfxp as your output format. Elastic
--   Transcoder does not support OCR (Optical Character Recognition), does
--   not accept pictures as a valid input for captions, and is not
--   available for audio-only transcoding. Elastic Transcoder does not
--   preserve text formatting (for example, italics) during the transcoding
--   process. To remove captions or leave the captions empty, set
--   <tt>Captions</tt> to null. To pass through existing captions
--   unchanged, set the <tt>MergePolicy</tt> to <tt>MergeRetain</tt> , and
--   pass in a null <tt>CaptionSources</tt> array. For more information on
--   embedded files, see the Subtitles Wikipedia page. For more information
--   on sidecar files, see the Extensible Metadata Platform and Sidecar
--   file Wikipedia pages.
cjoCaptions :: Lens' CreateJobOutput (Maybe Captions)

-- | The <tt>Id</tt> of the preset to use for this job. The preset
--   determines the audio, video, and thumbnail settings that Elastic
--   Transcoder uses for transcoding.
cjoPresetId :: Lens' CreateJobOutput (Maybe Text)

-- | You can create an output file that contains an excerpt from the input
--   file. This excerpt, called a clip, can come from the beginning,
--   middle, or end of the file. The Composition object contains settings
--   for the clips that make up an output file. For the current release,
--   you can only specify settings for a single clip per output file. The
--   Composition object cannot be null.
cjoComposition :: Lens' CreateJobOutput [Clip]

-- | Information about the album art that you want Elastic Transcoder to
--   add to the file during transcoding. You can specify up to twenty album
--   artworks for each output. Settings for each artwork must be defined in
--   the job for the current output.
cjoAlbumArt :: Lens' CreateJobOutput (Maybe JobAlbumArt)

-- | Information about the watermarks that you want Elastic Transcoder to
--   add to the video during transcoding. You can specify up to four
--   watermarks for each output. Settings for each watermark must be
--   defined in the preset for the current output.
cjoWatermarks :: Lens' CreateJobOutput [JobWatermark]

-- | You can specify encryption settings for any output files that you want
--   to use for a transcoding job. This includes the output file and any
--   watermarks, thumbnails, album art, or captions that you want to use.
--   You must specify encryption settings for each file individually.
cjoEncryption :: Lens' CreateJobOutput (Maybe Encryption)

-- | The name to assign to the transcoded file. Elastic Transcoder saves
--   the file in the Amazon S3 bucket specified by the
--   <tt>OutputBucket</tt> object in the pipeline that is specified by the
--   pipeline ID. If a file with the specified name already exists in the
--   output bucket, the job fails.
cjoKey :: Lens' CreateJobOutput (Maybe Text)

-- | <i>Important:</i> (Outputs in Fragmented MP4 or MPEG-TS format only.
--   If you specify a preset in <tt>PresetId</tt> for which the value of
--   <tt>Container</tt> is <tt>fmp4</tt> (Fragmented MP4) or <tt>ts</tt>
--   (MPEG-TS), <tt>SegmentDuration</tt> is the target maximum duration of
--   each segment in seconds. For <tt>HLSv3</tt> format playlists, each
--   media segment is stored in a separate <tt>.ts</tt> file. For
--   <tt>HLSv4</tt> and <tt>Smooth</tt> playlists, all media segments for
--   an output are stored in a single file. Each segment is approximately
--   the length of the <tt>SegmentDuration</tt> , though individual
--   segments might be shorter or longer. The range of valid values is 1 to
--   60 seconds. If the duration of the video is not evenly divisible by
--   <tt>SegmentDuration</tt> , the duration of the last segment is the
--   remainder of total length/SegmentDuration. Elastic Transcoder creates
--   an output-specific playlist for each output <tt>HLS</tt> output that
--   you specify in OutputKeys. To add an output to the master playlist for
--   this job, include it in the <tt>OutputKeys</tt> of the associated
--   playlist.
cjoSegmentDuration :: Lens' CreateJobOutput (Maybe Text)

-- | The encryption settings, if any, that you want Elastic Transcoder to
--   apply to your thumbnail.
cjoThumbnailEncryption :: Lens' CreateJobOutput (Maybe Encryption)

-- | The number of degrees clockwise by which you want Elastic Transcoder
--   to rotate the output relative to the input. Enter one of the following
--   values: <tt>auto</tt> , <tt>0</tt> , <tt>90</tt> , <tt>180</tt> ,
--   <tt>270</tt> . The value <tt>auto</tt> generally works only if the
--   file that you're transcoding contains rotation metadata.
cjoRotate :: Lens' CreateJobOutput (Maybe Text)

-- | Information about the master playlist.
--   
--   <i>See:</i> <a>createJobPlaylist</a> smart constructor.
data CreateJobPlaylist

-- | Creates a value of <a>CreateJobPlaylist</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cjpPlayReadyDrm</a> - The DRM settings, if any, that you want
--   Elastic Transcoder to apply to the output files associated with this
--   playlist.</li>
--   <li><a>cjpFormat</a> - The format of the output playlist. Valid
--   formats include <tt>HLSv3</tt> , <tt>HLSv4</tt> , and <tt>Smooth</tt>
--   .</li>
--   <li><a>cjpOutputKeys</a> - For each output in this job that you want
--   to include in a master playlist, the value of the <tt>Outputs:Key</tt>
--   object. * If your output is not <tt>HLS</tt> or does not have a
--   segment duration set, the name of the output file is a concatenation
--   of <tt>OutputKeyPrefix</tt> and <tt>Outputs:Key</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> * If your output is <tt>HLSv3</tt>
--   and has a segment duration set, or is not included in a playlist,
--   Elastic Transcoder creates an output playlist file with a file
--   extension of <tt>.m3u8</tt> , and a series of <tt>.ts</tt> files that
--   include a five-digit sequential counter beginning with 00000:
--   OutputKeyPrefix<tt>Outputs:Key</tt> .m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> 00000.ts * If your output is
--   <tt>HLSv4</tt> , has a segment duration set, and is included in an
--   <tt>HLSv4</tt> playlist, Elastic Transcoder creates an output playlist
--   file with a file extension of <tt>_v4.m3u8</tt> . If the output is
--   video, Elastic Transcoder also creates an output file with an
--   extension of <tt>_iframe.m3u8</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> _v4.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> _iframe.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> .ts Elastic Transcoder
--   automatically appends the relevant file extension to the file name. If
--   you include a file extension in Output Key, the file name will have
--   two extensions. If you include more than one output in a playlist, any
--   segment duration settings, clip settings, or caption settings must be
--   the same for all outputs in the playlist. For <tt>Smooth</tt>
--   playlists, the <tt>Audio:Profile</tt> , <tt>Video:Profile</tt> , and
--   <tt>Video:FrameRate</tt> to <tt>Video:KeyframesMaxDist</tt> ratio must
--   be the same for all outputs.</li>
--   <li><a>cjpName</a> - The name that you want Elastic Transcoder to
--   assign to the master playlist, for example, nyc-vacation.m3u8. If the
--   name includes a <tt>/</tt> character, the section of the name before
--   the last <tt>/</tt> must be identical for all <tt>Name</tt> objects.
--   If you create more than one master playlist, the values of all
--   <tt>Name</tt> objects must be unique.</li>
--   <li><a>cjpHlsContentProtection</a> - The HLS content protection
--   settings, if any, that you want Elastic Transcoder to apply to the
--   output files associated with this playlist.</li>
--   </ul>
createJobPlaylist :: CreateJobPlaylist

-- | The DRM settings, if any, that you want Elastic Transcoder to apply to
--   the output files associated with this playlist.
cjpPlayReadyDrm :: Lens' CreateJobPlaylist (Maybe PlayReadyDrm)

-- | The format of the output playlist. Valid formats include
--   <tt>HLSv3</tt> , <tt>HLSv4</tt> , and <tt>Smooth</tt> .
cjpFormat :: Lens' CreateJobPlaylist (Maybe Text)

-- | For each output in this job that you want to include in a master
--   playlist, the value of the <tt>Outputs:Key</tt> object. * If your
--   output is not <tt>HLS</tt> or does not have a segment duration set,
--   the name of the output file is a concatenation of
--   <tt>OutputKeyPrefix</tt> and <tt>Outputs:Key</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> * If your output is <tt>HLSv3</tt>
--   and has a segment duration set, or is not included in a playlist,
--   Elastic Transcoder creates an output playlist file with a file
--   extension of <tt>.m3u8</tt> , and a series of <tt>.ts</tt> files that
--   include a five-digit sequential counter beginning with 00000:
--   OutputKeyPrefix<tt>Outputs:Key</tt> .m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> 00000.ts * If your output is
--   <tt>HLSv4</tt> , has a segment duration set, and is included in an
--   <tt>HLSv4</tt> playlist, Elastic Transcoder creates an output playlist
--   file with a file extension of <tt>_v4.m3u8</tt> . If the output is
--   video, Elastic Transcoder also creates an output file with an
--   extension of <tt>_iframe.m3u8</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> _v4.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> _iframe.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> .ts Elastic Transcoder
--   automatically appends the relevant file extension to the file name. If
--   you include a file extension in Output Key, the file name will have
--   two extensions. If you include more than one output in a playlist, any
--   segment duration settings, clip settings, or caption settings must be
--   the same for all outputs in the playlist. For <tt>Smooth</tt>
--   playlists, the <tt>Audio:Profile</tt> , <tt>Video:Profile</tt> , and
--   <tt>Video:FrameRate</tt> to <tt>Video:KeyframesMaxDist</tt> ratio must
--   be the same for all outputs.
cjpOutputKeys :: Lens' CreateJobPlaylist [Text]

-- | The name that you want Elastic Transcoder to assign to the master
--   playlist, for example, nyc-vacation.m3u8. If the name includes a
--   <tt>/</tt> character, the section of the name before the last
--   <tt>/</tt> must be identical for all <tt>Name</tt> objects. If you
--   create more than one master playlist, the values of all <tt>Name</tt>
--   objects must be unique.
cjpName :: Lens' CreateJobPlaylist (Maybe Text)

-- | The HLS content protection settings, if any, that you want Elastic
--   Transcoder to apply to the output files associated with this playlist.
cjpHlsContentProtection :: Lens' CreateJobPlaylist (Maybe HlsContentProtection)

-- | The detected properties of the input file. Elastic Transcoder
--   identifies these values from the input file.
--   
--   <i>See:</i> <a>detectedProperties</a> smart constructor.
data DetectedProperties

-- | Creates a value of <a>DetectedProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dpHeight</a> - The detected height of the input file, in
--   pixels.</li>
--   <li><a>dpFrameRate</a> - The detected frame rate of the input file, in
--   frames per second.</li>
--   <li><a>dpFileSize</a> - The detected file size of the input file, in
--   bytes.</li>
--   <li><a>dpWidth</a> - The detected width of the input file, in
--   pixels.</li>
--   <li><a>dpDurationMillis</a> - The detected duration of the input file,
--   in milliseconds.</li>
--   </ul>
detectedProperties :: DetectedProperties

-- | The detected height of the input file, in pixels.
dpHeight :: Lens' DetectedProperties (Maybe Int)

-- | The detected frame rate of the input file, in frames per second.
dpFrameRate :: Lens' DetectedProperties (Maybe Text)

-- | The detected file size of the input file, in bytes.
dpFileSize :: Lens' DetectedProperties (Maybe Integer)

-- | The detected width of the input file, in pixels.
dpWidth :: Lens' DetectedProperties (Maybe Int)

-- | The detected duration of the input file, in milliseconds.
dpDurationMillis :: Lens' DetectedProperties (Maybe Integer)

-- | The encryption settings, if any, that are used for decrypting your
--   input files or encrypting your output files. If your input file is
--   encrypted, you must specify the mode that Elastic Transcoder uses to
--   decrypt your file, otherwise you must specify the mode you want
--   Elastic Transcoder to use to encrypt your output files.
--   
--   <i>See:</i> <a>encryption</a> smart constructor.
data Encryption

-- | Creates a value of <a>Encryption</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eMode</a> - The specific server-side encryption mode that you
--   want Elastic Transcoder to use when decrypting your input files or
--   encrypting your output files. Elastic Transcoder supports the
--   following options: * <b>S3:</b> Amazon S3 creates and manages the keys
--   used for encrypting your files. * <b>S3-AWS-KMS:</b> Amazon S3 calls
--   the Amazon Key Management Service, which creates and manages the keys
--   that are used for encrypting your files. If you specify
--   <tt>S3-AWS-KMS</tt> and you don't want to use the default key, you
--   must add the AWS-KMS key that you want to use to your pipeline. *
--   <b>AES-CBC-PKCS7:</b> A padded cipher-block mode of operation
--   originally used for HLS files. * <b>AES-CTR:</b> AES Counter Mode. *
--   <b>AES-GCM:</b> AES Galois Counter Mode, a mode of operation that is
--   an authenticated encryption format, meaning that a file, key, or
--   initialization vector that has been tampered with fails the decryption
--   process. For all three AES options, you must provide the following
--   settings, which must be base64-encoded: * <b>Key</b> * <b>Key MD5</b>
--   * <b>Initialization Vector</b> <i>Important:</i> For the AES modes,
--   your private encryption keys and your unencrypted data are never
--   stored by AWS; therefore, it is important that you safely manage your
--   encryption keys. If you lose them, you won't be able to unencrypt your
--   data.</li>
--   <li><a>eKeyMD5</a> - The MD5 digest of the key that you used to
--   encrypt your input file, or that you want Elastic Transcoder to use to
--   encrypt your output file. Elastic Transcoder uses the key digest as a
--   checksum to make sure your key was not corrupted in transit. The key
--   MD5 must be base64-encoded, and it must be exactly 16 bytes long
--   before being base64-encoded.</li>
--   <li><a>eKey</a> - The data encryption key that you want Elastic
--   Transcoder to use to encrypt your output file, or that was used to
--   encrypt your input file. The key must be base64-encoded and it must be
--   one of the following bit lengths before being base64-encoded:
--   <tt>128</tt> , <tt>192</tt> , or <tt>256</tt> . The key must also be
--   encrypted by using the Amazon Key Management Service.</li>
--   <li><a>eInitializationVector</a> - The series of random bits created
--   by a random bit generator, unique for every encryption operation, that
--   you used to encrypt your input files or that you want Elastic
--   Transcoder to use to encrypt your output files. The initialization
--   vector must be base64-encoded, and it must be exactly 16 bytes long
--   before being base64-encoded.</li>
--   </ul>
encryption :: Encryption

-- | The specific server-side encryption mode that you want Elastic
--   Transcoder to use when decrypting your input files or encrypting your
--   output files. Elastic Transcoder supports the following options: *
--   <b>S3:</b> Amazon S3 creates and manages the keys used for encrypting
--   your files. * <b>S3-AWS-KMS:</b> Amazon S3 calls the Amazon Key
--   Management Service, which creates and manages the keys that are used
--   for encrypting your files. If you specify <tt>S3-AWS-KMS</tt> and you
--   don't want to use the default key, you must add the AWS-KMS key that
--   you want to use to your pipeline. * <b>AES-CBC-PKCS7:</b> A padded
--   cipher-block mode of operation originally used for HLS files. *
--   <b>AES-CTR:</b> AES Counter Mode. * <b>AES-GCM:</b> AES Galois Counter
--   Mode, a mode of operation that is an authenticated encryption format,
--   meaning that a file, key, or initialization vector that has been
--   tampered with fails the decryption process. For all three AES options,
--   you must provide the following settings, which must be base64-encoded:
--   * <b>Key</b> * <b>Key MD5</b> * <b>Initialization Vector</b>
--   <i>Important:</i> For the AES modes, your private encryption keys and
--   your unencrypted data are never stored by AWS; therefore, it is
--   important that you safely manage your encryption keys. If you lose
--   them, you won't be able to unencrypt your data.
eMode :: Lens' Encryption (Maybe Text)

-- | The MD5 digest of the key that you used to encrypt your input file, or
--   that you want Elastic Transcoder to use to encrypt your output file.
--   Elastic Transcoder uses the key digest as a checksum to make sure your
--   key was not corrupted in transit. The key MD5 must be base64-encoded,
--   and it must be exactly 16 bytes long before being base64-encoded.
eKeyMD5 :: Lens' Encryption (Maybe Text)

-- | The data encryption key that you want Elastic Transcoder to use to
--   encrypt your output file, or that was used to encrypt your input file.
--   The key must be base64-encoded and it must be one of the following bit
--   lengths before being base64-encoded: <tt>128</tt> , <tt>192</tt> , or
--   <tt>256</tt> . The key must also be encrypted by using the Amazon Key
--   Management Service.
eKey :: Lens' Encryption (Maybe Text)

-- | The series of random bits created by a random bit generator, unique
--   for every encryption operation, that you used to encrypt your input
--   files or that you want Elastic Transcoder to use to encrypt your
--   output files. The initialization vector must be base64-encoded, and it
--   must be exactly 16 bytes long before being base64-encoded.
eInitializationVector :: Lens' Encryption (Maybe Text)

-- | The HLS content protection settings, if any, that you want Elastic
--   Transcoder to apply to your output files.
--   
--   <i>See:</i> <a>hlsContentProtection</a> smart constructor.
data HlsContentProtection

-- | Creates a value of <a>HlsContentProtection</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hcpKeyMD5</a> - If Elastic Transcoder is generating your key
--   for you, you must leave this field blank. The MD5 digest of the key
--   that you want Elastic Transcoder to use to encrypt your output file,
--   and that you want Elastic Transcoder to use as a checksum to make sure
--   your key was not corrupted in transit. The key MD5 must be
--   base64-encoded, and it must be exactly 16 bytes before being base64-
--   encoded.</li>
--   <li><a>hcpKeyStoragePolicy</a> - Specify whether you want Elastic
--   Transcoder to write your HLS license key to an Amazon S3 bucket. If
--   you choose <tt>WithVariantPlaylists</tt> ,
--   <tt>LicenseAcquisitionUrl</tt> must be left blank and Elastic
--   Transcoder writes your data key into the same bucket as the associated
--   playlist.</li>
--   <li><a>hcpKey</a> - If you want Elastic Transcoder to generate a key
--   for you, leave this field blank. If you choose to supply your own key,
--   you must encrypt the key by using AWS KMS. The key must be
--   base64-encoded, and it must be one of the following bit lengths before
--   being base64-encoded: <tt>128</tt> , <tt>192</tt> , or <tt>256</tt>
--   .</li>
--   <li><a>hcpMethod</a> - The content protection method for your output.
--   The only valid value is: <tt>aes-128</tt> . This value is written into
--   the method attribute of the <tt>EXT-X-KEY</tt> metadata tag in the
--   output playlist.</li>
--   <li><a>hcpInitializationVector</a> - If Elastic Transcoder is
--   generating your key for you, you must leave this field blank. The
--   series of random bits created by a random bit generator, unique for
--   every encryption operation, that you want Elastic Transcoder to use to
--   encrypt your output files. The initialization vector must be
--   base64-encoded, and it must be exactly 16 bytes before being
--   base64-encoded.</li>
--   <li><a>hcpLicenseAcquisitionURL</a> - The location of the license key
--   required to decrypt your HLS playlist. The URL must be an absolute
--   path, and is referenced in the URI attribute of the EXT-X-KEY metadata
--   tag in the playlist file.</li>
--   </ul>
hlsContentProtection :: HlsContentProtection

-- | If Elastic Transcoder is generating your key for you, you must leave
--   this field blank. The MD5 digest of the key that you want Elastic
--   Transcoder to use to encrypt your output file, and that you want
--   Elastic Transcoder to use as a checksum to make sure your key was not
--   corrupted in transit. The key MD5 must be base64-encoded, and it must
--   be exactly 16 bytes before being base64- encoded.
hcpKeyMD5 :: Lens' HlsContentProtection (Maybe Text)

-- | Specify whether you want Elastic Transcoder to write your HLS license
--   key to an Amazon S3 bucket. If you choose
--   <tt>WithVariantPlaylists</tt> , <tt>LicenseAcquisitionUrl</tt> must be
--   left blank and Elastic Transcoder writes your data key into the same
--   bucket as the associated playlist.
hcpKeyStoragePolicy :: Lens' HlsContentProtection (Maybe Text)

-- | If you want Elastic Transcoder to generate a key for you, leave this
--   field blank. If you choose to supply your own key, you must encrypt
--   the key by using AWS KMS. The key must be base64-encoded, and it must
--   be one of the following bit lengths before being base64-encoded:
--   <tt>128</tt> , <tt>192</tt> , or <tt>256</tt> .
hcpKey :: Lens' HlsContentProtection (Maybe Text)

-- | The content protection method for your output. The only valid value
--   is: <tt>aes-128</tt> . This value is written into the method attribute
--   of the <tt>EXT-X-KEY</tt> metadata tag in the output playlist.
hcpMethod :: Lens' HlsContentProtection (Maybe Text)

-- | If Elastic Transcoder is generating your key for you, you must leave
--   this field blank. The series of random bits created by a random bit
--   generator, unique for every encryption operation, that you want
--   Elastic Transcoder to use to encrypt your output files. The
--   initialization vector must be base64-encoded, and it must be exactly
--   16 bytes before being base64-encoded.
hcpInitializationVector :: Lens' HlsContentProtection (Maybe Text)

-- | The location of the license key required to decrypt your HLS playlist.
--   The URL must be an absolute path, and is referenced in the URI
--   attribute of the EXT-X-KEY metadata tag in the playlist file.
hcpLicenseAcquisitionURL :: Lens' HlsContentProtection (Maybe Text)

-- | The captions to be created, if any.
--   
--   <i>See:</i> <a>inputCaptions</a> smart constructor.
data InputCaptions

-- | Creates a value of <a>InputCaptions</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>icMergePolicy</a> - A policy that determines how Elastic
--   Transcoder handles the existence of multiple captions. *
--   <b>MergeOverride:</b> Elastic Transcoder transcodes both embedded and
--   sidecar captions into outputs. If captions for a language are embedded
--   in the input file and also appear in a sidecar file, Elastic
--   Transcoder uses the sidecar captions and ignores the embedded captions
--   for that language. * <b>MergeRetain:</b> Elastic Transcoder transcodes
--   both embedded and sidecar captions into outputs. If captions for a
--   language are embedded in the input file and also appear in a sidecar
--   file, Elastic Transcoder uses the embedded captions and ignores the
--   sidecar captions for that language. If <tt>CaptionSources</tt> is
--   empty, Elastic Transcoder omits all sidecar captions from the output
--   files. * <b>Override:</b> Elastic Transcoder transcodes only the
--   sidecar captions that you specify in <tt>CaptionSources</tt> .
--   <tt>MergePolicy</tt> cannot be null.</li>
--   <li><a>icCaptionSources</a> - Source files for the input sidecar
--   captions used during the transcoding process. To omit all sidecar
--   captions, leave <tt>CaptionSources</tt> blank.</li>
--   </ul>
inputCaptions :: InputCaptions

-- | A policy that determines how Elastic Transcoder handles the existence
--   of multiple captions. * <b>MergeOverride:</b> Elastic Transcoder
--   transcodes both embedded and sidecar captions into outputs. If
--   captions for a language are embedded in the input file and also appear
--   in a sidecar file, Elastic Transcoder uses the sidecar captions and
--   ignores the embedded captions for that language. * <b>MergeRetain:</b>
--   Elastic Transcoder transcodes both embedded and sidecar captions into
--   outputs. If captions for a language are embedded in the input file and
--   also appear in a sidecar file, Elastic Transcoder uses the embedded
--   captions and ignores the sidecar captions for that language. If
--   <tt>CaptionSources</tt> is empty, Elastic Transcoder omits all sidecar
--   captions from the output files. * <b>Override:</b> Elastic Transcoder
--   transcodes only the sidecar captions that you specify in
--   <tt>CaptionSources</tt> . <tt>MergePolicy</tt> cannot be null.
icMergePolicy :: Lens' InputCaptions (Maybe Text)

-- | Source files for the input sidecar captions used during the
--   transcoding process. To omit all sidecar captions, leave
--   <tt>CaptionSources</tt> blank.
icCaptionSources :: Lens' InputCaptions [CaptionSource]

-- | A section of the response body that provides information about the job
--   that is created.
--   
--   <i>See:</i> <a>job'</a> smart constructor.
data Job'

-- | Creates a value of <a>Job'</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jStatus</a> - The status of the job: <tt>Submitted</tt> ,
--   <tt>Progressing</tt> , <tt>Complete</tt> , <tt>Canceled</tt> , or
--   <tt>Error</tt> .</li>
--   <li><a>jPipelineId</a> - The <tt>Id</tt> of the pipeline that you want
--   Elastic Transcoder to use for transcoding. The pipeline determines
--   several settings, including the Amazon S3 bucket from which Elastic
--   Transcoder gets the files to transcode and the bucket into which
--   Elastic Transcoder puts the transcoded files.</li>
--   <li><a>jARN</a> - The Amazon Resource Name (ARN) for the job.</li>
--   <li><a>jInputs</a> - Information about the files that you're
--   transcoding. If you specified multiple files for this job, Elastic
--   Transcoder stitches the files together to make one output.</li>
--   <li><a>jInput</a> - A section of the request or response body that
--   provides information about the file that is being transcoded.</li>
--   <li><a>jUserMetadata</a> - User-defined metadata that you want to
--   associate with an Elastic Transcoder job. You specify metadata in
--   <tt>key/value</tt> pairs, and you can add up to 10 <tt>key/value</tt>
--   pairs per job. Elastic Transcoder does not guarantee that
--   <tt>key/value</tt> pairs are returned in the same order in which you
--   specify them. Metadata <tt>keys</tt> and <tt>values</tt> must use
--   characters from the following list: * <tt>0-9</tt> * <tt>A-Z</tt> and
--   <tt>a-z</tt> * <tt>Space</tt> * The following symbols:
--   <tt>_.:/=+-%</tt>@</li>
--   <li><a>jOutputs</a> - Information about the output files. We recommend
--   that you use the <tt>Outputs</tt> syntax for all jobs, even when you
--   want Elastic Transcoder to transcode a file into only one format. Do
--   not use both the <tt>Outputs</tt> and <tt>Output</tt> syntaxes in the
--   same request. You can create a maximum of 30 outputs per job. If you
--   specify more than one output for a job, Elastic Transcoder creates the
--   files for each output in the order in which you specify them in the
--   job.</li>
--   <li><a>jOutput</a> - If you specified one output for a job,
--   information about that output. If you specified multiple outputs for a
--   job, the Output object lists information about the first output. This
--   duplicates the information that is listed for the first output in the
--   Outputs object. <i>Important:</i> Outputs recommended instead. A
--   section of the request or response body that provides information
--   about the transcoded (target) file.</li>
--   <li><a>jId</a> - The identifier that Elastic Transcoder assigned to
--   the job. You use this value to get settings for the job or to delete
--   the job.</li>
--   <li><a>jPlaylists</a> - <i>Important:</i> Outputs in Fragmented MP4 or
--   MPEG-TS format only. If you specify a preset in <tt>PresetId</tt> for
--   which the value of <tt>Container</tt> is fmp4 (Fragmented MP4) or ts
--   (MPEG-TS), <tt>Playlists</tt> contains information about the master
--   playlists that you want Elastic Transcoder to create. The maximum
--   number of master playlists in a job is 30.</li>
--   <li><a>jOutputKeyPrefix</a> - The value, if any, that you want Elastic
--   Transcoder to prepend to the names of all files that this job creates,
--   including output files, thumbnails, and playlists. We recommend that
--   you add a / or some other delimiter to the end of the
--   <tt>OutputKeyPrefix</tt> .</li>
--   <li><a>jTiming</a> - Details about the timing of a job.</li>
--   </ul>
job' :: Job'

-- | The status of the job: <tt>Submitted</tt> , <tt>Progressing</tt> ,
--   <tt>Complete</tt> , <tt>Canceled</tt> , or <tt>Error</tt> .
jStatus :: Lens' Job' (Maybe Text)

-- | The <tt>Id</tt> of the pipeline that you want Elastic Transcoder to
--   use for transcoding. The pipeline determines several settings,
--   including the Amazon S3 bucket from which Elastic Transcoder gets the
--   files to transcode and the bucket into which Elastic Transcoder puts
--   the transcoded files.
jPipelineId :: Lens' Job' (Maybe Text)

-- | The Amazon Resource Name (ARN) for the job.
jARN :: Lens' Job' (Maybe Text)

-- | Information about the files that you're transcoding. If you specified
--   multiple files for this job, Elastic Transcoder stitches the files
--   together to make one output.
jInputs :: Lens' Job' [JobInput]

-- | A section of the request or response body that provides information
--   about the file that is being transcoded.
jInput :: Lens' Job' (Maybe JobInput)

-- | User-defined metadata that you want to associate with an Elastic
--   Transcoder job. You specify metadata in <tt>key/value</tt> pairs, and
--   you can add up to 10 <tt>key/value</tt> pairs per job. Elastic
--   Transcoder does not guarantee that <tt>key/value</tt> pairs are
--   returned in the same order in which you specify them. Metadata
--   <tt>keys</tt> and <tt>values</tt> must use characters from the
--   following list: * <tt>0-9</tt> * <tt>A-Z</tt> and <tt>a-z</tt> *
--   <tt>Space</tt> * The following symbols: <tt>_.:/=+-%</tt>@
jUserMetadata :: Lens' Job' (HashMap Text Text)

-- | Information about the output files. We recommend that you use the
--   <tt>Outputs</tt> syntax for all jobs, even when you want Elastic
--   Transcoder to transcode a file into only one format. Do not use both
--   the <tt>Outputs</tt> and <tt>Output</tt> syntaxes in the same request.
--   You can create a maximum of 30 outputs per job. If you specify more
--   than one output for a job, Elastic Transcoder creates the files for
--   each output in the order in which you specify them in the job.
jOutputs :: Lens' Job' [JobOutput]

-- | If you specified one output for a job, information about that output.
--   If you specified multiple outputs for a job, the Output object lists
--   information about the first output. This duplicates the information
--   that is listed for the first output in the Outputs object.
--   <i>Important:</i> Outputs recommended instead. A section of the
--   request or response body that provides information about the
--   transcoded (target) file.
jOutput :: Lens' Job' (Maybe JobOutput)

-- | The identifier that Elastic Transcoder assigned to the job. You use
--   this value to get settings for the job or to delete the job.
jId :: Lens' Job' (Maybe Text)

-- | <i>Important:</i> Outputs in Fragmented MP4 or MPEG-TS format only. If
--   you specify a preset in <tt>PresetId</tt> for which the value of
--   <tt>Container</tt> is fmp4 (Fragmented MP4) or ts (MPEG-TS),
--   <tt>Playlists</tt> contains information about the master playlists
--   that you want Elastic Transcoder to create. The maximum number of
--   master playlists in a job is 30.
jPlaylists :: Lens' Job' [Playlist]

-- | The value, if any, that you want Elastic Transcoder to prepend to the
--   names of all files that this job creates, including output files,
--   thumbnails, and playlists. We recommend that you add a / or some other
--   delimiter to the end of the <tt>OutputKeyPrefix</tt> .
jOutputKeyPrefix :: Lens' Job' (Maybe Text)

-- | Details about the timing of a job.
jTiming :: Lens' Job' (Maybe Timing)

-- | The .jpg or .png file associated with an audio file.
--   
--   <i>See:</i> <a>jobAlbumArt</a> smart constructor.
data JobAlbumArt

-- | Creates a value of <a>JobAlbumArt</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jaaMergePolicy</a> - A policy that determines how Elastic
--   Transcoder handles the existence of multiple album artwork files. *
--   <tt>Replace:</tt> The specified album art replaces any existing album
--   art. * <tt>Prepend:</tt> The specified album art is placed in front of
--   any existing album art. * <tt>Append:</tt> The specified album art is
--   placed after any existing album art. * <tt>Fallback:</tt> If the
--   original input file contains artwork, Elastic Transcoder uses that
--   artwork for the output. If the original input does not contain
--   artwork, Elastic Transcoder uses the specified album art file.</li>
--   <li><a>jaaArtwork</a> - The file to be used as album art. There can be
--   multiple artworks associated with an audio file, to a maximum of 20.
--   Valid formats are <tt>.jpg</tt> and <tt>.png</tt></li>
--   </ul>
jobAlbumArt :: JobAlbumArt

-- | A policy that determines how Elastic Transcoder handles the existence
--   of multiple album artwork files. * <tt>Replace:</tt> The specified
--   album art replaces any existing album art. * <tt>Prepend:</tt> The
--   specified album art is placed in front of any existing album art. *
--   <tt>Append:</tt> The specified album art is placed after any existing
--   album art. * <tt>Fallback:</tt> If the original input file contains
--   artwork, Elastic Transcoder uses that artwork for the output. If the
--   original input does not contain artwork, Elastic Transcoder uses the
--   specified album art file.
jaaMergePolicy :: Lens' JobAlbumArt (Maybe Text)

-- | The file to be used as album art. There can be multiple artworks
--   associated with an audio file, to a maximum of 20. Valid formats are
--   <tt>.jpg</tt> and <tt>.png</tt>
jaaArtwork :: Lens' JobAlbumArt [Artwork]

-- | Information about the file that you're transcoding.
--   
--   <i>See:</i> <a>jobInput</a> smart constructor.
data JobInput

-- | Creates a value of <a>JobInput</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jiFrameRate</a> - The frame rate of the input file. If you want
--   Elastic Transcoder to automatically detect the frame rate of the input
--   file, specify <tt>auto</tt> . If you want to specify the frame rate
--   for the input file, enter one of the following values: <tt>10</tt> ,
--   <tt>15</tt> , <tt>23.97</tt> , <tt>24</tt> , <tt>25</tt> ,
--   <tt>29.97</tt> , <tt>30</tt> , <tt>60</tt> If you specify a value
--   other than <tt>auto</tt> , Elastic Transcoder disables automatic
--   detection of the frame rate.</li>
--   <li><a>jiResolution</a> - This value must be <tt>auto</tt> , which
--   causes Elastic Transcoder to automatically detect the resolution of
--   the input file.</li>
--   <li><a>jiAspectRatio</a> - The aspect ratio of the input file. If you
--   want Elastic Transcoder to automatically detect the aspect ratio of
--   the input file, specify <tt>auto</tt> . If you want to specify the
--   aspect ratio for the output file, enter one of the following values:
--   <tt>1:1</tt> , <tt>4:3</tt> , <tt>3:2</tt> , <tt>16:9</tt> If you
--   specify a value other than <tt>auto</tt> , Elastic Transcoder disables
--   automatic detection of the aspect ratio.</li>
--   <li><a>jiTimeSpan</a> - Settings for clipping an input. Each input can
--   have different clip settings.</li>
--   <li><a>jiEncryption</a> - The encryption settings, if any, that are
--   used for decrypting your input files. If your input file is encrypted,
--   you must specify the mode that Elastic Transcoder uses to decrypt your
--   file.</li>
--   <li><a>jiKey</a> - The name of the file to transcode. Elsewhere in the
--   body of the JSON block is the the ID of the pipeline to use for
--   processing the job. The <tt>InputBucket</tt> object in that pipeline
--   tells Elastic Transcoder which Amazon S3 bucket to get the file from.
--   If the file name includes a prefix, such as
--   <tt>cooking/lasagna.mpg</tt> , include the prefix in the key. If the
--   file isn't in the specified bucket, Elastic Transcoder returns an
--   error.</li>
--   <li><a>jiDetectedProperties</a> - The detected properties of the input
--   file.</li>
--   <li><a>jiContainer</a> - The container type for the input file. If you
--   want Elastic Transcoder to automatically detect the container type of
--   the input file, specify <tt>auto</tt> . If you want to specify the
--   container type for the input file, enter one of the following values:
--   <tt>3gp</tt> , <tt>aac</tt> , <tt>asf</tt> , <tt>avi</tt> ,
--   <tt>divx</tt> , <tt>flv</tt> , <tt>m4a</tt> , <tt>mkv</tt> ,
--   <tt>mov</tt> , <tt>mp3</tt> , <tt>mp4</tt> , <tt>mpeg</tt> ,
--   <tt>mpeg-ps</tt> , <tt>mpeg-ts</tt> , <tt>mxf</tt> , <tt>ogg</tt> ,
--   <tt>vob</tt> , <tt>wav</tt> , <tt>webm</tt></li>
--   <li><a>jiInterlaced</a> - Whether the input file is interlaced. If you
--   want Elastic Transcoder to automatically detect whether the input file
--   is interlaced, specify <tt>auto</tt> . If you want to specify whether
--   the input file is interlaced, enter one of the following values:
--   <tt>true</tt> , <tt>false</tt> If you specify a value other than
--   <tt>auto</tt> , Elastic Transcoder disables automatic detection of
--   interlacing.</li>
--   <li><a>jiInputCaptions</a> - You can configure Elastic Transcoder to
--   transcode captions, or subtitles, from one format to another. All
--   captions must be in UTF-8. Elastic Transcoder supports two types of
--   captions: * <b>Embedded:</b> Embedded captions are included in the
--   same file as the audio and video. Elastic Transcoder supports only one
--   embedded caption per language, to a maximum of 300 embedded captions
--   per file. Valid input values include: <tt>CEA-608 (EIA-608</tt> ,
--   first non-empty channel only), <tt>CEA-708 (EIA-708</tt> , first
--   non-empty channel only), and <tt>mov-text</tt> Valid outputs include:
--   <tt>mov-text</tt> Elastic Transcoder supports a maximum of one
--   embedded format per output. * <b>Sidecar:</b> Sidecar captions are
--   kept in a separate metadata file from the audio and video data.
--   Sidecar captions require a player that is capable of understanding the
--   relationship between the video file and the sidecar file. Elastic
--   Transcoder supports only one sidecar caption per language, to a
--   maximum of 20 sidecar captions per file. Valid input values include:
--   <tt>dfxp</tt> (first div element only), <tt>ebu-tt</tt> , <tt>scc</tt>
--   , <tt>smpt</tt> , <tt>srt</tt> , <tt>ttml</tt> (first div element
--   only), and <tt>webvtt</tt> Valid outputs include: <tt>dfxp</tt> (first
--   div element only), <tt>scc</tt> , <tt>srt</tt> , and <tt>webvtt</tt> .
--   If you want ttml or smpte-tt compatible captions, specify dfxp as your
--   output format. Elastic Transcoder does not support OCR (Optical
--   Character Recognition), does not accept pictures as a valid input for
--   captions, and is not available for audio-only transcoding. Elastic
--   Transcoder does not preserve text formatting (for example, italics)
--   during the transcoding process. To remove captions or leave the
--   captions empty, set <tt>Captions</tt> to null. To pass through
--   existing captions unchanged, set the <tt>MergePolicy</tt> to
--   <tt>MergeRetain</tt> , and pass in a null <tt>CaptionSources</tt>
--   array. For more information on embedded files, see the Subtitles
--   Wikipedia page. For more information on sidecar files, see the
--   Extensible Metadata Platform and Sidecar file Wikipedia pages.</li>
--   </ul>
jobInput :: JobInput

-- | The frame rate of the input file. If you want Elastic Transcoder to
--   automatically detect the frame rate of the input file, specify
--   <tt>auto</tt> . If you want to specify the frame rate for the input
--   file, enter one of the following values: <tt>10</tt> , <tt>15</tt> ,
--   <tt>23.97</tt> , <tt>24</tt> , <tt>25</tt> , <tt>29.97</tt> ,
--   <tt>30</tt> , <tt>60</tt> If you specify a value other than
--   <tt>auto</tt> , Elastic Transcoder disables automatic detection of the
--   frame rate.
jiFrameRate :: Lens' JobInput (Maybe Text)

-- | This value must be <tt>auto</tt> , which causes Elastic Transcoder to
--   automatically detect the resolution of the input file.
jiResolution :: Lens' JobInput (Maybe Text)

-- | The aspect ratio of the input file. If you want Elastic Transcoder to
--   automatically detect the aspect ratio of the input file, specify
--   <tt>auto</tt> . If you want to specify the aspect ratio for the output
--   file, enter one of the following values: <tt>1:1</tt> , <tt>4:3</tt> ,
--   <tt>3:2</tt> , <tt>16:9</tt> If you specify a value other than
--   <tt>auto</tt> , Elastic Transcoder disables automatic detection of the
--   aspect ratio.
jiAspectRatio :: Lens' JobInput (Maybe Text)

-- | Settings for clipping an input. Each input can have different clip
--   settings.
jiTimeSpan :: Lens' JobInput (Maybe TimeSpan)

-- | The encryption settings, if any, that are used for decrypting your
--   input files. If your input file is encrypted, you must specify the
--   mode that Elastic Transcoder uses to decrypt your file.
jiEncryption :: Lens' JobInput (Maybe Encryption)

-- | The name of the file to transcode. Elsewhere in the body of the JSON
--   block is the the ID of the pipeline to use for processing the job. The
--   <tt>InputBucket</tt> object in that pipeline tells Elastic Transcoder
--   which Amazon S3 bucket to get the file from. If the file name includes
--   a prefix, such as <tt>cooking/lasagna.mpg</tt> , include the prefix in
--   the key. If the file isn't in the specified bucket, Elastic Transcoder
--   returns an error.
jiKey :: Lens' JobInput (Maybe Text)

-- | The detected properties of the input file.
jiDetectedProperties :: Lens' JobInput (Maybe DetectedProperties)

-- | The container type for the input file. If you want Elastic Transcoder
--   to automatically detect the container type of the input file, specify
--   <tt>auto</tt> . If you want to specify the container type for the
--   input file, enter one of the following values: <tt>3gp</tt> ,
--   <tt>aac</tt> , <tt>asf</tt> , <tt>avi</tt> , <tt>divx</tt> ,
--   <tt>flv</tt> , <tt>m4a</tt> , <tt>mkv</tt> , <tt>mov</tt> ,
--   <tt>mp3</tt> , <tt>mp4</tt> , <tt>mpeg</tt> , <tt>mpeg-ps</tt> ,
--   <tt>mpeg-ts</tt> , <tt>mxf</tt> , <tt>ogg</tt> , <tt>vob</tt> ,
--   <tt>wav</tt> , <tt>webm</tt>
jiContainer :: Lens' JobInput (Maybe Text)

-- | Whether the input file is interlaced. If you want Elastic Transcoder
--   to automatically detect whether the input file is interlaced, specify
--   <tt>auto</tt> . If you want to specify whether the input file is
--   interlaced, enter one of the following values: <tt>true</tt> ,
--   <tt>false</tt> If you specify a value other than <tt>auto</tt> ,
--   Elastic Transcoder disables automatic detection of interlacing.
jiInterlaced :: Lens' JobInput (Maybe Text)

-- | You can configure Elastic Transcoder to transcode captions, or
--   subtitles, from one format to another. All captions must be in UTF-8.
--   Elastic Transcoder supports two types of captions: * <b>Embedded:</b>
--   Embedded captions are included in the same file as the audio and
--   video. Elastic Transcoder supports only one embedded caption per
--   language, to a maximum of 300 embedded captions per file. Valid input
--   values include: <tt>CEA-608 (EIA-608</tt> , first non-empty channel
--   only), <tt>CEA-708 (EIA-708</tt> , first non-empty channel only), and
--   <tt>mov-text</tt> Valid outputs include: <tt>mov-text</tt> Elastic
--   Transcoder supports a maximum of one embedded format per output. *
--   <b>Sidecar:</b> Sidecar captions are kept in a separate metadata file
--   from the audio and video data. Sidecar captions require a player that
--   is capable of understanding the relationship between the video file
--   and the sidecar file. Elastic Transcoder supports only one sidecar
--   caption per language, to a maximum of 20 sidecar captions per file.
--   Valid input values include: <tt>dfxp</tt> (first div element only),
--   <tt>ebu-tt</tt> , <tt>scc</tt> , <tt>smpt</tt> , <tt>srt</tt> ,
--   <tt>ttml</tt> (first div element only), and <tt>webvtt</tt> Valid
--   outputs include: <tt>dfxp</tt> (first div element only), <tt>scc</tt>
--   , <tt>srt</tt> , and <tt>webvtt</tt> . If you want ttml or smpte-tt
--   compatible captions, specify dfxp as your output format. Elastic
--   Transcoder does not support OCR (Optical Character Recognition), does
--   not accept pictures as a valid input for captions, and is not
--   available for audio-only transcoding. Elastic Transcoder does not
--   preserve text formatting (for example, italics) during the transcoding
--   process. To remove captions or leave the captions empty, set
--   <tt>Captions</tt> to null. To pass through existing captions
--   unchanged, set the <tt>MergePolicy</tt> to <tt>MergeRetain</tt> , and
--   pass in a null <tt>CaptionSources</tt> array. For more information on
--   embedded files, see the Subtitles Wikipedia page. For more information
--   on sidecar files, see the Extensible Metadata Platform and Sidecar
--   file Wikipedia pages.
jiInputCaptions :: Lens' JobInput (Maybe InputCaptions)

-- | <i>Important:</i> Outputs recommended instead.
--   
--   If you specified one output for a job, information about that output.
--   If you specified multiple outputs for a job, the <tt>Output</tt>
--   object lists information about the first output. This duplicates the
--   information that is listed for the first output in the
--   <tt>Outputs</tt> object.
--   
--   <i>See:</i> <a>jobOutput</a> smart constructor.
data JobOutput

-- | Creates a value of <a>JobOutput</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>joAppliedColorSpaceConversion</a> - If Elastic Transcoder used
--   a preset with a <tt>ColorSpaceConversionMode</tt> to transcode the
--   output file, the <tt>AppliedColorSpaceConversion</tt> parameter shows
--   the conversion used. If no <tt>ColorSpaceConversionMode</tt> was
--   defined in the preset, this parameter is not be included in the job
--   response.</li>
--   <li><a>joThumbnailPattern</a> - Whether you want Elastic Transcoder to
--   create thumbnails for your videos and, if so, how you want Elastic
--   Transcoder to name the files. If you don't want Elastic Transcoder to
--   create thumbnails, specify "". If you do want Elastic Transcoder to
--   create thumbnails, specify the information that you want to include in
--   the file name for each thumbnail. You can specify the following values
--   in any sequence: * <b><tt>{count}</tt> (Required)</b> : If you want to
--   create thumbnails, you must include <tt>{count}</tt> in the
--   <tt>ThumbnailPattern</tt> object. Wherever you specify
--   <tt>{count}</tt> , Elastic Transcoder adds a five-digit sequence
--   number (beginning with <b>00001</b> ) to thumbnail file names. The
--   number indicates where a given thumbnail appears in the sequence of
--   thumbnails for a transcoded file. <i>Important:</i> If you specify a
--   literal value and/or <tt>{resolution}</tt> but you omit
--   <tt>{count}</tt> , Elastic Transcoder returns a validation error and
--   does not create the job. * <b>Literal values (Optional)</b> : You can
--   specify literal values anywhere in the <tt>ThumbnailPattern</tt>
--   object. For example, you can include them as a file name prefix or as
--   a delimiter between <tt>{resolution}</tt> and <tt>{count}</tt> . *
--   <b><tt>{resolution}</tt> (Optional)</b> : If you want Elastic
--   Transcoder to include the resolution in the file name, include
--   <tt>{resolution}</tt> in the <tt>ThumbnailPattern</tt> object. When
--   creating thumbnails, Elastic Transcoder automatically saves the files
--   in the format (.jpg or .png) that appears in the preset that you
--   specified in the <tt>PresetID</tt> value of <tt>CreateJobOutput</tt> .
--   Elastic Transcoder also appends the applicable file name
--   extension.</li>
--   <li><a>joStatus</a> - The status of one output in a job. If you
--   specified only one output for the job, <tt>Outputs:Status</tt> is
--   always the same as <tt>Job:Status</tt> . If you specified more than
--   one output: * <tt>Job:Status</tt> and <tt>Outputs:Status</tt> for all
--   of the outputs is Submitted until Elastic Transcoder starts to process
--   the first output. * When Elastic Transcoder starts to process the
--   first output, <tt>Outputs:Status</tt> for that output and
--   <tt>Job:Status</tt> both change to Progressing. For each output, the
--   value of <tt>Outputs:Status</tt> remains Submitted until Elastic
--   Transcoder starts to process the output. * Job:Status remains
--   Progressing until all of the outputs reach a terminal status, either
--   Complete or Error. * When all of the outputs reach a terminal status,
--   <tt>Job:Status</tt> changes to Complete only if
--   <tt>Outputs:Status</tt> for all of the outputs is <tt>Complete</tt> .
--   If <tt>Outputs:Status</tt> for one or more outputs is <tt>Error</tt> ,
--   the terminal status for <tt>Job:Status</tt> is also <tt>Error</tt> .
--   The value of <tt>Status</tt> is one of the following:
--   <tt>Submitted</tt> , <tt>Progressing</tt> , <tt>Complete</tt> ,
--   <tt>Canceled</tt> , or <tt>Error</tt> .</li>
--   <li><a>joHeight</a> - Height of the output file, in pixels.</li>
--   <li><a>joFrameRate</a> - Frame rate of the output file, in frames per
--   second.</li>
--   <li><a>joCaptions</a> - You can configure Elastic Transcoder to
--   transcode captions, or subtitles, from one format to another. All
--   captions must be in UTF-8. Elastic Transcoder supports two types of
--   captions: * <b>Embedded:</b> Embedded captions are included in the
--   same file as the audio and video. Elastic Transcoder supports only one
--   embedded caption per language, to a maximum of 300 embedded captions
--   per file. Valid input values include: <tt>CEA-608 (EIA-608</tt> ,
--   first non-empty channel only), <tt>CEA-708 (EIA-708</tt> , first
--   non-empty channel only), and <tt>mov-text</tt> Valid outputs include:
--   <tt>mov-text</tt> Elastic Transcoder supports a maximum of one
--   embedded format per output. * <b>Sidecar:</b> Sidecar captions are
--   kept in a separate metadata file from the audio and video data.
--   Sidecar captions require a player that is capable of understanding the
--   relationship between the video file and the sidecar file. Elastic
--   Transcoder supports only one sidecar caption per language, to a
--   maximum of 20 sidecar captions per file. Valid input values include:
--   <tt>dfxp</tt> (first div element only), <tt>ebu-tt</tt> , <tt>scc</tt>
--   , <tt>smpt</tt> , <tt>srt</tt> , <tt>ttml</tt> (first div element
--   only), and <tt>webvtt</tt> Valid outputs include: <tt>dfxp</tt> (first
--   div element only), <tt>scc</tt> , <tt>srt</tt> , and <tt>webvtt</tt> .
--   If you want ttml or smpte-tt compatible captions, specify dfxp as your
--   output format. Elastic Transcoder does not support OCR (Optical
--   Character Recognition), does not accept pictures as a valid input for
--   captions, and is not available for audio-only transcoding. Elastic
--   Transcoder does not preserve text formatting (for example, italics)
--   during the transcoding process. To remove captions or leave the
--   captions empty, set <tt>Captions</tt> to null. To pass through
--   existing captions unchanged, set the <tt>MergePolicy</tt> to
--   <tt>MergeRetain</tt> , and pass in a null <tt>CaptionSources</tt>
--   array. For more information on embedded files, see the Subtitles
--   Wikipedia page. For more information on sidecar files, see the
--   Extensible Metadata Platform and Sidecar file Wikipedia pages.</li>
--   <li><a>joPresetId</a> - The value of the <tt>Id</tt> object for the
--   preset that you want to use for this job. The preset determines the
--   audio, video, and thumbnail settings that Elastic Transcoder uses for
--   transcoding. To use a preset that you created, specify the preset ID
--   that Elastic Transcoder returned in the response when you created the
--   preset. You can also use the Elastic Transcoder system presets, which
--   you can get with <tt>ListPresets</tt> .</li>
--   <li><a>joComposition</a> - You can create an output file that contains
--   an excerpt from the input file. This excerpt, called a clip, can come
--   from the beginning, middle, or end of the file. The Composition object
--   contains settings for the clips that make up an output file. For the
--   current release, you can only specify settings for a single clip per
--   output file. The Composition object cannot be null.</li>
--   <li><a>joAlbumArt</a> - The album art to be associated with the output
--   file, if any.</li>
--   <li><a>joFileSize</a> - File size of the output file, in bytes.</li>
--   <li><a>joWatermarks</a> - Information about the watermarks that you
--   want Elastic Transcoder to add to the video during transcoding. You
--   can specify up to four watermarks for each output. Settings for each
--   watermark must be defined in the preset that you specify in
--   <tt>Preset</tt> for the current output. Watermarks are added to the
--   output video in the sequence in which you list them in the job
--   output—the first watermark in the list is added to the output video
--   first, the second watermark in the list is added next, and so on. As a
--   result, if the settings in a preset cause Elastic Transcoder to place
--   all watermarks in the same location, the second watermark that you add
--   covers the first one, the third one covers the second, and the fourth
--   one covers the third.</li>
--   <li><a>joWidth</a> - Specifies the width of the output file in
--   pixels.</li>
--   <li><a>joEncryption</a> - The encryption settings, if any, that you
--   want Elastic Transcoder to apply to your output files. If you choose
--   to use encryption, you must specify a mode to use. If you choose not
--   to use encryption, Elastic Transcoder writes an unencrypted file to
--   your Amazon S3 bucket.</li>
--   <li><a>joKey</a> - The name to assign to the transcoded file. Elastic
--   Transcoder saves the file in the Amazon S3 bucket specified by the
--   <tt>OutputBucket</tt> object in the pipeline that is specified by the
--   pipeline ID.</li>
--   <li><a>joStatusDetail</a> - Information that further explains
--   <tt>Status</tt> .</li>
--   <li><a>joId</a> - A sequential counter, starting with 1, that
--   identifies an output among the outputs from the current job. In the
--   Output syntax, this value is always 1.</li>
--   <li><a>joSegmentDuration</a> - <i>Important:</i> (Outputs in
--   Fragmented MP4 or MPEG-TS format only. If you specify a preset in
--   <tt>PresetId</tt> for which the value of <tt>Container</tt> is
--   <tt>fmp4</tt> (Fragmented MP4) or <tt>ts</tt> (MPEG-TS),
--   <tt>SegmentDuration</tt> is the target maximum duration of each
--   segment in seconds. For <tt>HLSv3</tt> format playlists, each media
--   segment is stored in a separate <tt>.ts</tt> file. For <tt>HLSv4</tt>
--   , <tt>MPEG-DASH</tt> , and <tt>Smooth</tt> playlists, all media
--   segments for an output are stored in a single file. Each segment is
--   approximately the length of the <tt>SegmentDuration</tt> , though
--   individual segments might be shorter or longer. The range of valid
--   values is 1 to 60 seconds. If the duration of the video is not evenly
--   divisible by <tt>SegmentDuration</tt> , the duration of the last
--   segment is the remainder of total length/SegmentDuration. Elastic
--   Transcoder creates an output-specific playlist for each output
--   <tt>HLS</tt> output that you specify in OutputKeys. To add an output
--   to the master playlist for this job, include it in the
--   <tt>OutputKeys</tt> of the associated playlist.</li>
--   <li><a>joDurationMillis</a> - Duration of the output file, in
--   milliseconds.</li>
--   <li><a>joThumbnailEncryption</a> - The encryption settings, if any,
--   that you want Elastic Transcoder to apply to your thumbnail.</li>
--   <li><a>joDuration</a> - Duration of the output file, in seconds.</li>
--   <li><a>joRotate</a> - The number of degrees clockwise by which you
--   want Elastic Transcoder to rotate the output relative to the input.
--   Enter one of the following values: <tt>auto</tt> , <tt>0</tt> ,
--   <tt>90</tt> , <tt>180</tt> , <tt>270</tt> The value <tt>auto</tt>
--   generally works only if the file that you're transcoding contains
--   rotation metadata.</li>
--   </ul>
jobOutput :: JobOutput

-- | If Elastic Transcoder used a preset with a
--   <tt>ColorSpaceConversionMode</tt> to transcode the output file, the
--   <tt>AppliedColorSpaceConversion</tt> parameter shows the conversion
--   used. If no <tt>ColorSpaceConversionMode</tt> was defined in the
--   preset, this parameter is not be included in the job response.
joAppliedColorSpaceConversion :: Lens' JobOutput (Maybe Text)

-- | Whether you want Elastic Transcoder to create thumbnails for your
--   videos and, if so, how you want Elastic Transcoder to name the files.
--   If you don't want Elastic Transcoder to create thumbnails, specify "".
--   If you do want Elastic Transcoder to create thumbnails, specify the
--   information that you want to include in the file name for each
--   thumbnail. You can specify the following values in any sequence: *
--   <b><tt>{count}</tt> (Required)</b> : If you want to create thumbnails,
--   you must include <tt>{count}</tt> in the <tt>ThumbnailPattern</tt>
--   object. Wherever you specify <tt>{count}</tt> , Elastic Transcoder
--   adds a five-digit sequence number (beginning with <b>00001</b> ) to
--   thumbnail file names. The number indicates where a given thumbnail
--   appears in the sequence of thumbnails for a transcoded file.
--   <i>Important:</i> If you specify a literal value and/or
--   <tt>{resolution}</tt> but you omit <tt>{count}</tt> , Elastic
--   Transcoder returns a validation error and does not create the job. *
--   <b>Literal values (Optional)</b> : You can specify literal values
--   anywhere in the <tt>ThumbnailPattern</tt> object. For example, you can
--   include them as a file name prefix or as a delimiter between
--   <tt>{resolution}</tt> and <tt>{count}</tt> . *
--   <b><tt>{resolution}</tt> (Optional)</b> : If you want Elastic
--   Transcoder to include the resolution in the file name, include
--   <tt>{resolution}</tt> in the <tt>ThumbnailPattern</tt> object. When
--   creating thumbnails, Elastic Transcoder automatically saves the files
--   in the format (.jpg or .png) that appears in the preset that you
--   specified in the <tt>PresetID</tt> value of <tt>CreateJobOutput</tt> .
--   Elastic Transcoder also appends the applicable file name extension.
joThumbnailPattern :: Lens' JobOutput (Maybe Text)

-- | The status of one output in a job. If you specified only one output
--   for the job, <tt>Outputs:Status</tt> is always the same as
--   <tt>Job:Status</tt> . If you specified more than one output: *
--   <tt>Job:Status</tt> and <tt>Outputs:Status</tt> for all of the outputs
--   is Submitted until Elastic Transcoder starts to process the first
--   output. * When Elastic Transcoder starts to process the first output,
--   <tt>Outputs:Status</tt> for that output and <tt>Job:Status</tt> both
--   change to Progressing. For each output, the value of
--   <tt>Outputs:Status</tt> remains Submitted until Elastic Transcoder
--   starts to process the output. * Job:Status remains Progressing until
--   all of the outputs reach a terminal status, either Complete or Error.
--   * When all of the outputs reach a terminal status, <tt>Job:Status</tt>
--   changes to Complete only if <tt>Outputs:Status</tt> for all of the
--   outputs is <tt>Complete</tt> . If <tt>Outputs:Status</tt> for one or
--   more outputs is <tt>Error</tt> , the terminal status for
--   <tt>Job:Status</tt> is also <tt>Error</tt> . The value of
--   <tt>Status</tt> is one of the following: <tt>Submitted</tt> ,
--   <tt>Progressing</tt> , <tt>Complete</tt> , <tt>Canceled</tt> , or
--   <tt>Error</tt> .
joStatus :: Lens' JobOutput (Maybe Text)

-- | Height of the output file, in pixels.
joHeight :: Lens' JobOutput (Maybe Int)

-- | Frame rate of the output file, in frames per second.
joFrameRate :: Lens' JobOutput (Maybe Text)

-- | You can configure Elastic Transcoder to transcode captions, or
--   subtitles, from one format to another. All captions must be in UTF-8.
--   Elastic Transcoder supports two types of captions: * <b>Embedded:</b>
--   Embedded captions are included in the same file as the audio and
--   video. Elastic Transcoder supports only one embedded caption per
--   language, to a maximum of 300 embedded captions per file. Valid input
--   values include: <tt>CEA-608 (EIA-608</tt> , first non-empty channel
--   only), <tt>CEA-708 (EIA-708</tt> , first non-empty channel only), and
--   <tt>mov-text</tt> Valid outputs include: <tt>mov-text</tt> Elastic
--   Transcoder supports a maximum of one embedded format per output. *
--   <b>Sidecar:</b> Sidecar captions are kept in a separate metadata file
--   from the audio and video data. Sidecar captions require a player that
--   is capable of understanding the relationship between the video file
--   and the sidecar file. Elastic Transcoder supports only one sidecar
--   caption per language, to a maximum of 20 sidecar captions per file.
--   Valid input values include: <tt>dfxp</tt> (first div element only),
--   <tt>ebu-tt</tt> , <tt>scc</tt> , <tt>smpt</tt> , <tt>srt</tt> ,
--   <tt>ttml</tt> (first div element only), and <tt>webvtt</tt> Valid
--   outputs include: <tt>dfxp</tt> (first div element only), <tt>scc</tt>
--   , <tt>srt</tt> , and <tt>webvtt</tt> . If you want ttml or smpte-tt
--   compatible captions, specify dfxp as your output format. Elastic
--   Transcoder does not support OCR (Optical Character Recognition), does
--   not accept pictures as a valid input for captions, and is not
--   available for audio-only transcoding. Elastic Transcoder does not
--   preserve text formatting (for example, italics) during the transcoding
--   process. To remove captions or leave the captions empty, set
--   <tt>Captions</tt> to null. To pass through existing captions
--   unchanged, set the <tt>MergePolicy</tt> to <tt>MergeRetain</tt> , and
--   pass in a null <tt>CaptionSources</tt> array. For more information on
--   embedded files, see the Subtitles Wikipedia page. For more information
--   on sidecar files, see the Extensible Metadata Platform and Sidecar
--   file Wikipedia pages.
joCaptions :: Lens' JobOutput (Maybe Captions)

-- | The value of the <tt>Id</tt> object for the preset that you want to
--   use for this job. The preset determines the audio, video, and
--   thumbnail settings that Elastic Transcoder uses for transcoding. To
--   use a preset that you created, specify the preset ID that Elastic
--   Transcoder returned in the response when you created the preset. You
--   can also use the Elastic Transcoder system presets, which you can get
--   with <tt>ListPresets</tt> .
joPresetId :: Lens' JobOutput (Maybe Text)

-- | You can create an output file that contains an excerpt from the input
--   file. This excerpt, called a clip, can come from the beginning,
--   middle, or end of the file. The Composition object contains settings
--   for the clips that make up an output file. For the current release,
--   you can only specify settings for a single clip per output file. The
--   Composition object cannot be null.
joComposition :: Lens' JobOutput [Clip]

-- | The album art to be associated with the output file, if any.
joAlbumArt :: Lens' JobOutput (Maybe JobAlbumArt)

-- | File size of the output file, in bytes.
joFileSize :: Lens' JobOutput (Maybe Integer)

-- | Information about the watermarks that you want Elastic Transcoder to
--   add to the video during transcoding. You can specify up to four
--   watermarks for each output. Settings for each watermark must be
--   defined in the preset that you specify in <tt>Preset</tt> for the
--   current output. Watermarks are added to the output video in the
--   sequence in which you list them in the job output—the first watermark
--   in the list is added to the output video first, the second watermark
--   in the list is added next, and so on. As a result, if the settings in
--   a preset cause Elastic Transcoder to place all watermarks in the same
--   location, the second watermark that you add covers the first one, the
--   third one covers the second, and the fourth one covers the third.
joWatermarks :: Lens' JobOutput [JobWatermark]

-- | Specifies the width of the output file in pixels.
joWidth :: Lens' JobOutput (Maybe Int)

-- | The encryption settings, if any, that you want Elastic Transcoder to
--   apply to your output files. If you choose to use encryption, you must
--   specify a mode to use. If you choose not to use encryption, Elastic
--   Transcoder writes an unencrypted file to your Amazon S3 bucket.
joEncryption :: Lens' JobOutput (Maybe Encryption)

-- | The name to assign to the transcoded file. Elastic Transcoder saves
--   the file in the Amazon S3 bucket specified by the
--   <tt>OutputBucket</tt> object in the pipeline that is specified by the
--   pipeline ID.
joKey :: Lens' JobOutput (Maybe Text)

-- | Information that further explains <tt>Status</tt> .
joStatusDetail :: Lens' JobOutput (Maybe Text)

-- | A sequential counter, starting with 1, that identifies an output among
--   the outputs from the current job. In the Output syntax, this value is
--   always 1.
joId :: Lens' JobOutput (Maybe Text)

-- | <i>Important:</i> (Outputs in Fragmented MP4 or MPEG-TS format only.
--   If you specify a preset in <tt>PresetId</tt> for which the value of
--   <tt>Container</tt> is <tt>fmp4</tt> (Fragmented MP4) or <tt>ts</tt>
--   (MPEG-TS), <tt>SegmentDuration</tt> is the target maximum duration of
--   each segment in seconds. For <tt>HLSv3</tt> format playlists, each
--   media segment is stored in a separate <tt>.ts</tt> file. For
--   <tt>HLSv4</tt> , <tt>MPEG-DASH</tt> , and <tt>Smooth</tt> playlists,
--   all media segments for an output are stored in a single file. Each
--   segment is approximately the length of the <tt>SegmentDuration</tt> ,
--   though individual segments might be shorter or longer. The range of
--   valid values is 1 to 60 seconds. If the duration of the video is not
--   evenly divisible by <tt>SegmentDuration</tt> , the duration of the
--   last segment is the remainder of total length/SegmentDuration. Elastic
--   Transcoder creates an output-specific playlist for each output
--   <tt>HLS</tt> output that you specify in OutputKeys. To add an output
--   to the master playlist for this job, include it in the
--   <tt>OutputKeys</tt> of the associated playlist.
joSegmentDuration :: Lens' JobOutput (Maybe Text)

-- | Duration of the output file, in milliseconds.
joDurationMillis :: Lens' JobOutput (Maybe Integer)

-- | The encryption settings, if any, that you want Elastic Transcoder to
--   apply to your thumbnail.
joThumbnailEncryption :: Lens' JobOutput (Maybe Encryption)

-- | Duration of the output file, in seconds.
joDuration :: Lens' JobOutput (Maybe Integer)

-- | The number of degrees clockwise by which you want Elastic Transcoder
--   to rotate the output relative to the input. Enter one of the following
--   values: <tt>auto</tt> , <tt>0</tt> , <tt>90</tt> , <tt>180</tt> ,
--   <tt>270</tt> The value <tt>auto</tt> generally works only if the file
--   that you're transcoding contains rotation metadata.
joRotate :: Lens' JobOutput (Maybe Text)

-- | Watermarks can be in .png or .jpg format. If you want to display a
--   watermark that is not rectangular, use the .png format, which supports
--   transparency.
--   
--   <i>See:</i> <a>jobWatermark</a> smart constructor.
data JobWatermark

-- | Creates a value of <a>JobWatermark</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jwPresetWatermarkId</a> - The ID of the watermark settings that
--   Elastic Transcoder uses to add watermarks to the video during
--   transcoding. The settings are in the preset specified by Preset for
--   the current output. In that preset, the value of Watermarks Id tells
--   Elastic Transcoder which settings to use.</li>
--   <li><a>jwInputKey</a> - The name of the .png or .jpg file that you
--   want to use for the watermark. To determine which Amazon S3 bucket
--   contains the specified file, Elastic Transcoder checks the pipeline
--   specified by <tt>Pipeline</tt> ; the <tt>Input Bucket</tt> object in
--   that pipeline identifies the bucket. If the file name includes a
--   prefix, for example, <b>logos/128x64.png</b> , include the prefix in
--   the key. If the file isn't in the specified bucket, Elastic Transcoder
--   returns an error.</li>
--   <li><a>jwEncryption</a> - The encryption settings, if any, that you
--   want Elastic Transcoder to apply to your watermarks.</li>
--   </ul>
jobWatermark :: JobWatermark

-- | The ID of the watermark settings that Elastic Transcoder uses to add
--   watermarks to the video during transcoding. The settings are in the
--   preset specified by Preset for the current output. In that preset, the
--   value of Watermarks Id tells Elastic Transcoder which settings to use.
jwPresetWatermarkId :: Lens' JobWatermark (Maybe Text)

-- | The name of the .png or .jpg file that you want to use for the
--   watermark. To determine which Amazon S3 bucket contains the specified
--   file, Elastic Transcoder checks the pipeline specified by
--   <tt>Pipeline</tt> ; the <tt>Input Bucket</tt> object in that pipeline
--   identifies the bucket. If the file name includes a prefix, for
--   example, <b>logos/128x64.png</b> , include the prefix in the key. If
--   the file isn't in the specified bucket, Elastic Transcoder returns an
--   error.
jwInputKey :: Lens' JobWatermark (Maybe Text)

-- | The encryption settings, if any, that you want Elastic Transcoder to
--   apply to your watermarks.
jwEncryption :: Lens' JobWatermark (Maybe Encryption)

-- | The Amazon Simple Notification Service (Amazon SNS) topic or topics to
--   notify in order to report job status.
--   
--   <i>Important:</i> To receive notifications, you must also subscribe to
--   the new topic in the Amazon SNS console.
--   
--   <i>See:</i> <a>notifications</a> smart constructor.
data Notifications

-- | Creates a value of <a>Notifications</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nError</a> - The Amazon SNS topic that you want to notify when
--   Elastic Transcoder encounters an error condition.</li>
--   <li><a>nWarning</a> - The Amazon SNS topic that you want to notify
--   when Elastic Transcoder encounters a warning condition.</li>
--   <li><a>nProgressing</a> - The Amazon Simple Notification Service
--   (Amazon SNS) topic that you want to notify when Elastic Transcoder has
--   started to process the job.</li>
--   <li><a>nCompleted</a> - The Amazon SNS topic that you want to notify
--   when Elastic Transcoder has finished processing the job.</li>
--   </ul>
notifications :: Notifications

-- | The Amazon SNS topic that you want to notify when Elastic Transcoder
--   encounters an error condition.
nError :: Lens' Notifications (Maybe Text)

-- | The Amazon SNS topic that you want to notify when Elastic Transcoder
--   encounters a warning condition.
nWarning :: Lens' Notifications (Maybe Text)

-- | The Amazon Simple Notification Service (Amazon SNS) topic that you
--   want to notify when Elastic Transcoder has started to process the job.
nProgressing :: Lens' Notifications (Maybe Text)

-- | The Amazon SNS topic that you want to notify when Elastic Transcoder
--   has finished processing the job.
nCompleted :: Lens' Notifications (Maybe Text)

-- | The <tt>Permission</tt> structure.
--   
--   <i>See:</i> <a>permission</a> smart constructor.
data Permission

-- | Creates a value of <a>Permission</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pAccess</a> - The permission that you want to give to the AWS
--   user that is listed in Grantee. Valid values include: * <tt>READ</tt>
--   : The grantee can read the thumbnails and metadata for thumbnails that
--   Elastic Transcoder adds to the Amazon S3 bucket. * <tt>READ_ACP</tt> :
--   The grantee can read the object ACL for thumbnails that Elastic
--   Transcoder adds to the Amazon S3 bucket. * <tt>WRITE_ACP</tt> : The
--   grantee can write the ACL for the thumbnails that Elastic Transcoder
--   adds to the Amazon S3 bucket. * <tt>FULL_CONTROL</tt> : The grantee
--   has READ, READ_ACP, and WRITE_ACP permissions for the thumbnails that
--   Elastic Transcoder adds to the Amazon S3 bucket.</li>
--   <li><a>pGranteeType</a> - The type of value that appears in the
--   Grantee object: * <tt>Canonical</tt> : Either the canonical user ID
--   for an AWS account or an origin access identity for an Amazon
--   CloudFront distribution. <i>Important:</i> A canonical user ID is not
--   the same as an AWS account number. * <tt>Email</tt> : The registered
--   email address of an AWS account. * <tt>Group</tt> : One of the
--   following predefined Amazon S3 groups: <tt>AllUsers</tt> ,
--   <tt>AuthenticatedUsers</tt> , or <tt>LogDelivery</tt> .</li>
--   <li><a>pGrantee</a> - The AWS user or group that you want to have
--   access to transcoded files and playlists. To identify the user or
--   group, you can specify the canonical user ID for an AWS account, an
--   origin access identity for a CloudFront distribution, the registered
--   email address of an AWS account, or a predefined Amazon S3 group.</li>
--   </ul>
permission :: Permission

-- | The permission that you want to give to the AWS user that is listed in
--   Grantee. Valid values include: * <tt>READ</tt> : The grantee can read
--   the thumbnails and metadata for thumbnails that Elastic Transcoder
--   adds to the Amazon S3 bucket. * <tt>READ_ACP</tt> : The grantee can
--   read the object ACL for thumbnails that Elastic Transcoder adds to the
--   Amazon S3 bucket. * <tt>WRITE_ACP</tt> : The grantee can write the ACL
--   for the thumbnails that Elastic Transcoder adds to the Amazon S3
--   bucket. * <tt>FULL_CONTROL</tt> : The grantee has READ, READ_ACP, and
--   WRITE_ACP permissions for the thumbnails that Elastic Transcoder adds
--   to the Amazon S3 bucket.
pAccess :: Lens' Permission [Text]

-- | The type of value that appears in the Grantee object: *
--   <tt>Canonical</tt> : Either the canonical user ID for an AWS account
--   or an origin access identity for an Amazon CloudFront distribution.
--   <i>Important:</i> A canonical user ID is not the same as an AWS
--   account number. * <tt>Email</tt> : The registered email address of an
--   AWS account. * <tt>Group</tt> : One of the following predefined Amazon
--   S3 groups: <tt>AllUsers</tt> , <tt>AuthenticatedUsers</tt> , or
--   <tt>LogDelivery</tt> .
pGranteeType :: Lens' Permission (Maybe Text)

-- | The AWS user or group that you want to have access to transcoded files
--   and playlists. To identify the user or group, you can specify the
--   canonical user ID for an AWS account, an origin access identity for a
--   CloudFront distribution, the registered email address of an AWS
--   account, or a predefined Amazon S3 group.
pGrantee :: Lens' Permission (Maybe Text)

-- | The pipeline (queue) that is used to manage jobs.
--   
--   <i>See:</i> <a>pipeline</a> smart constructor.
data Pipeline

-- | Creates a value of <a>Pipeline</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pipStatus</a> - The current status of the pipeline: *
--   <tt>Active</tt> : The pipeline is processing jobs. * <tt>Paused</tt> :
--   The pipeline is not currently processing jobs.</li>
--   <li><a>pipARN</a> - The Amazon Resource Name (ARN) for the
--   pipeline.</li>
--   <li><a>pipInputBucket</a> - The Amazon S3 bucket from which Elastic
--   Transcoder gets media files for transcoding and the graphics files, if
--   any, that you want to use for watermarks.</li>
--   <li><a>pipContentConfig</a> - Information about the Amazon S3 bucket
--   in which you want Elastic Transcoder to save transcoded files and
--   playlists. Either you specify both <tt>ContentConfig</tt> and
--   <tt>ThumbnailConfig</tt> , or you specify <tt>OutputBucket</tt> . *
--   <b>Bucket</b> : The Amazon S3 bucket in which you want Elastic
--   Transcoder to save transcoded files and playlists. *
--   <b>Permissions</b> : A list of the users and/or predefined Amazon S3
--   groups you want to have access to transcoded files and playlists, and
--   the type of access that you want them to have. * GranteeType: The type
--   of value that appears in the <tt>Grantee</tt> object: *
--   <tt>Canonical</tt> : Either the canonical user ID for an AWS account
--   or an origin access identity for an Amazon CloudFront distribution. *
--   <tt>Email</tt> : The registered email address of an AWS account. *
--   <tt>Group</tt> : One of the following predefined Amazon S3 groups:
--   <tt>AllUsers</tt> , <tt>AuthenticatedUsers</tt> , or
--   <tt>LogDelivery</tt> . * <tt>Grantee</tt> : The AWS user or group that
--   you want to have access to transcoded files and playlists. *
--   <tt>Access</tt> : The permission that you want to give to the AWS user
--   that is listed in <tt>Grantee</tt> . Valid values include: *
--   <tt>READ</tt> : The grantee can read the objects and metadata for
--   objects that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>READ_ACP</tt> : The grantee can read the object ACL for objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has <tt>READ</tt> ,
--   <tt>READ_ACP</tt> , and <tt>WRITE_ACP</tt> permissions for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <b>StorageClass</b> : The Amazon S3 storage class, Standard or
--   ReducedRedundancy, that you want Elastic Transcoder to assign to the
--   video files and playlists that it stores in your Amazon S3
--   bucket.</li>
--   <li><a>pipOutputBucket</a> - The Amazon S3 bucket in which you want
--   Elastic Transcoder to save transcoded files, thumbnails, and
--   playlists. Either you specify this value, or you specify both
--   <tt>ContentConfig</tt> and <tt>ThumbnailConfig</tt> .</li>
--   <li><a>pipRole</a> - The IAM Amazon Resource Name (ARN) for the role
--   that Elastic Transcoder uses to transcode jobs for this pipeline.</li>
--   <li><a>pipName</a> - The name of the pipeline. We recommend that the
--   name be unique within the AWS account, but uniqueness is not enforced.
--   Constraints: Maximum 40 characters</li>
--   <li><a>pipAWSKMSKeyARN</a> - The AWS Key Management Service (AWS KMS)
--   key that you want to use with this pipeline. If you use either
--   <tt>S3</tt> or <tt>S3-AWS-KMS</tt> as your <tt>Encryption:Mode</tt> ,
--   you don't need to provide a key with your job because a default key,
--   known as an AWS-KMS key, is created for you automatically. You need to
--   provide an AWS-KMS key only if you want to use a non-default AWS-KMS
--   key, or if you are using an <tt>Encryption:Mode</tt> of
--   <tt>AES-PKCS7</tt> , <tt>AES-CTR</tt> , or <tt>AES-GCM</tt> .</li>
--   <li><a>pipId</a> - The identifier for the pipeline. You use this value
--   to identify the pipeline in which you want to perform a variety of
--   operations, such as creating a job or a preset.</li>
--   <li><a>pipNotifications</a> - The Amazon Simple Notification Service
--   (Amazon SNS) topic that you want to notify to report job status.
--   <i>Important:</i> To receive notifications, you must also subscribe to
--   the new topic in the Amazon SNS console. * <b>Progressing</b>
--   (optional): The Amazon Simple Notification Service (Amazon SNS) topic
--   that you want to notify when Elastic Transcoder has started to process
--   the job. * <b>Completed</b> (optional): The Amazon SNS topic that you
--   want to notify when Elastic Transcoder has finished processing the
--   job. * <b>Warning</b> (optional): The Amazon SNS topic that you want
--   to notify when Elastic Transcoder encounters a warning condition. *
--   <b>Error</b> (optional): The Amazon SNS topic that you want to notify
--   when Elastic Transcoder encounters an error condition.</li>
--   <li><a>pipThumbnailConfig</a> - Information about the Amazon S3 bucket
--   in which you want Elastic Transcoder to save thumbnail files. Either
--   you specify both <tt>ContentConfig</tt> and <tt>ThumbnailConfig</tt> ,
--   or you specify <tt>OutputBucket</tt> . * <tt>Bucket</tt> : The Amazon
--   S3 bucket in which you want Elastic Transcoder to save thumbnail
--   files. * <tt>Permissions</tt> : A list of the users and<i>or
--   predefined Amazon S3 groups you want to have access to thumbnail
--   files, and the type of access that you want them to have. *
--   GranteeType: The type of value that appears in the Grantee object: *
--   <tt>Canonical</tt> : Either the canonical user ID for an AWS account
--   or an origin access identity for an Amazon CloudFront distribution.
--   </i>Important:/ A canonical user ID is not the same as an AWS account
--   number. * <tt>Email</tt> : The registered email address of an AWS
--   account. * <tt>Group</tt> : One of the following predefined Amazon S3
--   groups: <tt>AllUsers</tt> , <tt>AuthenticatedUsers</tt> , or
--   <tt>LogDelivery</tt> . * <tt>Grantee</tt> : The AWS user or group that
--   you want to have access to thumbnail files. * Access: The permission
--   that you want to give to the AWS user that is listed in Grantee. Valid
--   values include: * <tt>READ</tt> : The grantee can read the thumbnails
--   and metadata for thumbnails that Elastic Transcoder adds to the Amazon
--   S3 bucket. * <tt>READ_ACP</tt> : The grantee can read the object ACL
--   for thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has READ, READ_ACP, and WRITE_ACP
--   permissions for the thumbnails that Elastic Transcoder adds to the
--   Amazon S3 bucket. * <tt>StorageClass</tt> : The Amazon S3 storage
--   class, <tt>Standard</tt> or <tt>ReducedRedundancy</tt> , that you want
--   Elastic Transcoder to assign to the thumbnails that it stores in your
--   Amazon S3 bucket.</li>
--   </ul>
pipeline :: Pipeline

-- | The current status of the pipeline: * <tt>Active</tt> : The pipeline
--   is processing jobs. * <tt>Paused</tt> : The pipeline is not currently
--   processing jobs.
pipStatus :: Lens' Pipeline (Maybe Text)

-- | The Amazon Resource Name (ARN) for the pipeline.
pipARN :: Lens' Pipeline (Maybe Text)

-- | The Amazon S3 bucket from which Elastic Transcoder gets media files
--   for transcoding and the graphics files, if any, that you want to use
--   for watermarks.
pipInputBucket :: Lens' Pipeline (Maybe Text)

-- | Information about the Amazon S3 bucket in which you want Elastic
--   Transcoder to save transcoded files and playlists. Either you specify
--   both <tt>ContentConfig</tt> and <tt>ThumbnailConfig</tt> , or you
--   specify <tt>OutputBucket</tt> . * <b>Bucket</b> : The Amazon S3 bucket
--   in which you want Elastic Transcoder to save transcoded files and
--   playlists. * <b>Permissions</b> : A list of the users and/or
--   predefined Amazon S3 groups you want to have access to transcoded
--   files and playlists, and the type of access that you want them to
--   have. * GranteeType: The type of value that appears in the
--   <tt>Grantee</tt> object: * <tt>Canonical</tt> : Either the canonical
--   user ID for an AWS account or an origin access identity for an Amazon
--   CloudFront distribution. * <tt>Email</tt> : The registered email
--   address of an AWS account. * <tt>Group</tt> : One of the following
--   predefined Amazon S3 groups: <tt>AllUsers</tt> ,
--   <tt>AuthenticatedUsers</tt> , or <tt>LogDelivery</tt> . *
--   <tt>Grantee</tt> : The AWS user or group that you want to have access
--   to transcoded files and playlists. * <tt>Access</tt> : The permission
--   that you want to give to the AWS user that is listed in
--   <tt>Grantee</tt> . Valid values include: * <tt>READ</tt> : The grantee
--   can read the objects and metadata for objects that Elastic Transcoder
--   adds to the Amazon S3 bucket. * <tt>READ_ACP</tt> : The grantee can
--   read the object ACL for objects that Elastic Transcoder adds to the
--   Amazon S3 bucket. * <tt>WRITE_ACP</tt> : The grantee can write the ACL
--   for the objects that Elastic Transcoder adds to the Amazon S3 bucket.
--   * <tt>FULL_CONTROL</tt> : The grantee has <tt>READ</tt> ,
--   <tt>READ_ACP</tt> , and <tt>WRITE_ACP</tt> permissions for the objects
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <b>StorageClass</b> : The Amazon S3 storage class, Standard or
--   ReducedRedundancy, that you want Elastic Transcoder to assign to the
--   video files and playlists that it stores in your Amazon S3 bucket.
pipContentConfig :: Lens' Pipeline (Maybe PipelineOutputConfig)

-- | The Amazon S3 bucket in which you want Elastic Transcoder to save
--   transcoded files, thumbnails, and playlists. Either you specify this
--   value, or you specify both <tt>ContentConfig</tt> and
--   <tt>ThumbnailConfig</tt> .
pipOutputBucket :: Lens' Pipeline (Maybe Text)

-- | The IAM Amazon Resource Name (ARN) for the role that Elastic
--   Transcoder uses to transcode jobs for this pipeline.
pipRole :: Lens' Pipeline (Maybe Text)

-- | The name of the pipeline. We recommend that the name be unique within
--   the AWS account, but uniqueness is not enforced. Constraints: Maximum
--   40 characters
pipName :: Lens' Pipeline (Maybe Text)

-- | The AWS Key Management Service (AWS KMS) key that you want to use with
--   this pipeline. If you use either <tt>S3</tt> or <tt>S3-AWS-KMS</tt> as
--   your <tt>Encryption:Mode</tt> , you don't need to provide a key with
--   your job because a default key, known as an AWS-KMS key, is created
--   for you automatically. You need to provide an AWS-KMS key only if you
--   want to use a non-default AWS-KMS key, or if you are using an
--   <tt>Encryption:Mode</tt> of <tt>AES-PKCS7</tt> , <tt>AES-CTR</tt> , or
--   <tt>AES-GCM</tt> .
pipAWSKMSKeyARN :: Lens' Pipeline (Maybe Text)

-- | The identifier for the pipeline. You use this value to identify the
--   pipeline in which you want to perform a variety of operations, such as
--   creating a job or a preset.
pipId :: Lens' Pipeline (Maybe Text)

-- | The Amazon Simple Notification Service (Amazon SNS) topic that you
--   want to notify to report job status. <i>Important:</i> To receive
--   notifications, you must also subscribe to the new topic in the Amazon
--   SNS console. * <b>Progressing</b> (optional): The Amazon Simple
--   Notification Service (Amazon SNS) topic that you want to notify when
--   Elastic Transcoder has started to process the job. * <b>Completed</b>
--   (optional): The Amazon SNS topic that you want to notify when Elastic
--   Transcoder has finished processing the job. * <b>Warning</b>
--   (optional): The Amazon SNS topic that you want to notify when Elastic
--   Transcoder encounters a warning condition. * <b>Error</b> (optional):
--   The Amazon SNS topic that you want to notify when Elastic Transcoder
--   encounters an error condition.
pipNotifications :: Lens' Pipeline (Maybe Notifications)

-- | Information about the Amazon S3 bucket in which you want Elastic
--   Transcoder to save thumbnail files. Either you specify both
--   <tt>ContentConfig</tt> and <tt>ThumbnailConfig</tt> , or you specify
--   <tt>OutputBucket</tt> . * <tt>Bucket</tt> : The Amazon S3 bucket in
--   which you want Elastic Transcoder to save thumbnail files. *
--   <tt>Permissions</tt> : A list of the users and<i>or predefined Amazon
--   S3 groups you want to have access to thumbnail files, and the type of
--   access that you want them to have. * GranteeType: The type of value
--   that appears in the Grantee object: * <tt>Canonical</tt> : Either the
--   canonical user ID for an AWS account or an origin access identity for
--   an Amazon CloudFront distribution. </i>Important:/ A canonical user ID
--   is not the same as an AWS account number. * <tt>Email</tt> : The
--   registered email address of an AWS account. * <tt>Group</tt> : One of
--   the following predefined Amazon S3 groups: <tt>AllUsers</tt> ,
--   <tt>AuthenticatedUsers</tt> , or <tt>LogDelivery</tt> . *
--   <tt>Grantee</tt> : The AWS user or group that you want to have access
--   to thumbnail files. * Access: The permission that you want to give to
--   the AWS user that is listed in Grantee. Valid values include: *
--   <tt>READ</tt> : The grantee can read the thumbnails and metadata for
--   thumbnails that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>READ_ACP</tt> : The grantee can read the object ACL for thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>WRITE_ACP</tt> : The grantee can write the ACL for the thumbnails
--   that Elastic Transcoder adds to the Amazon S3 bucket. *
--   <tt>FULL_CONTROL</tt> : The grantee has READ, READ_ACP, and WRITE_ACP
--   permissions for the thumbnails that Elastic Transcoder adds to the
--   Amazon S3 bucket. * <tt>StorageClass</tt> : The Amazon S3 storage
--   class, <tt>Standard</tt> or <tt>ReducedRedundancy</tt> , that you want
--   Elastic Transcoder to assign to the thumbnails that it stores in your
--   Amazon S3 bucket.
pipThumbnailConfig :: Lens' Pipeline (Maybe PipelineOutputConfig)

-- | The <tt>PipelineOutputConfig</tt> structure.
--   
--   <i>See:</i> <a>pipelineOutputConfig</a> smart constructor.
data PipelineOutputConfig

-- | Creates a value of <a>PipelineOutputConfig</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pocBucket</a> - The Amazon S3 bucket in which you want Elastic
--   Transcoder to save the transcoded files. Specify this value when all
--   of the following are true: * You want to save transcoded files,
--   thumbnails (if any), and playlists (if any) together in one bucket. *
--   You do not want to specify the users or groups who have access to the
--   transcoded files, thumbnails, and playlists. * You do not want to
--   specify the permissions that Elastic Transcoder grants to the files. *
--   You want to associate the transcoded files and thumbnails with the
--   Amazon S3 Standard storage class. If you want to save transcoded files
--   and playlists in one bucket and thumbnails in another bucket, specify
--   which users can access the transcoded files or the permissions the
--   users have, or change the Amazon S3 storage class, omit OutputBucket
--   and specify values for <tt>ContentConfig</tt> and
--   <tt>ThumbnailConfig</tt> instead.</li>
--   <li><a>pocStorageClass</a> - The Amazon S3 storage class,
--   <tt>Standard</tt> or <tt>ReducedRedundancy</tt> , that you want
--   Elastic Transcoder to assign to the video files and playlists that it
--   stores in your Amazon S3 bucket.</li>
--   <li><a>pocPermissions</a> - Optional. The <tt>Permissions</tt> object
--   specifies which users and<i>or predefined Amazon S3 groups you want to
--   have access to transcoded files and playlists, and the type of access
--   you want them to have. You can grant permissions to a maximum of 30
--   users and</i>or predefined Amazon S3 groups. If you include
--   <tt>Permissions</tt> , Elastic Transcoder grants only the permissions
--   that you specify. It does not grant full permissions to the owner of
--   the role specified by <tt>Role</tt> . If you want that user to have
--   full control, you must explicitly grant full control to the user. If
--   you omit <tt>Permissions</tt> , Elastic Transcoder grants full control
--   over the transcoded files and playlists to the owner of the role
--   specified by <tt>Role</tt> , and grants no other permissions to any
--   other user or group.</li>
--   </ul>
pipelineOutputConfig :: PipelineOutputConfig

-- | The Amazon S3 bucket in which you want Elastic Transcoder to save the
--   transcoded files. Specify this value when all of the following are
--   true: * You want to save transcoded files, thumbnails (if any), and
--   playlists (if any) together in one bucket. * You do not want to
--   specify the users or groups who have access to the transcoded files,
--   thumbnails, and playlists. * You do not want to specify the
--   permissions that Elastic Transcoder grants to the files. * You want to
--   associate the transcoded files and thumbnails with the Amazon S3
--   Standard storage class. If you want to save transcoded files and
--   playlists in one bucket and thumbnails in another bucket, specify
--   which users can access the transcoded files or the permissions the
--   users have, or change the Amazon S3 storage class, omit OutputBucket
--   and specify values for <tt>ContentConfig</tt> and
--   <tt>ThumbnailConfig</tt> instead.
pocBucket :: Lens' PipelineOutputConfig (Maybe Text)

-- | The Amazon S3 storage class, <tt>Standard</tt> or
--   <tt>ReducedRedundancy</tt> , that you want Elastic Transcoder to
--   assign to the video files and playlists that it stores in your Amazon
--   S3 bucket.
pocStorageClass :: Lens' PipelineOutputConfig (Maybe Text)

-- | Optional. The <tt>Permissions</tt> object specifies which users
--   and<i>or predefined Amazon S3 groups you want to have access to
--   transcoded files and playlists, and the type of access you want them
--   to have. You can grant permissions to a maximum of 30 users and</i>or
--   predefined Amazon S3 groups. If you include <tt>Permissions</tt> ,
--   Elastic Transcoder grants only the permissions that you specify. It
--   does not grant full permissions to the owner of the role specified by
--   <tt>Role</tt> . If you want that user to have full control, you must
--   explicitly grant full control to the user. If you omit
--   <tt>Permissions</tt> , Elastic Transcoder grants full control over the
--   transcoded files and playlists to the owner of the role specified by
--   <tt>Role</tt> , and grants no other permissions to any other user or
--   group.
pocPermissions :: Lens' PipelineOutputConfig [Permission]

-- | The PlayReady DRM settings, if any, that you want Elastic Transcoder
--   to apply to the output files associated with this playlist.
--   
--   PlayReady DRM encrypts your media files using <tt>AES-CTR</tt>
--   encryption.
--   
--   If you use DRM for an <tt>HLSv3</tt> playlist, your outputs must have
--   a master playlist.
--   
--   <i>See:</i> <a>playReadyDrm</a> smart constructor.
data PlayReadyDrm

-- | Creates a value of <a>PlayReadyDrm</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prdKeyId</a> - The ID for your DRM key, so that your DRM
--   license provider knows which key to provide. The key ID must be
--   provided in big endian, and Elastic Transcoder converts it to little
--   endian before inserting it into the PlayReady DRM headers. If you are
--   unsure whether your license server provides your key ID in big or
--   little endian, check with your DRM provider.</li>
--   <li><a>prdFormat</a> - The type of DRM, if any, that you want Elastic
--   Transcoder to apply to the output files associated with this
--   playlist.</li>
--   <li><a>prdKeyMD5</a> - The MD5 digest of the key used for DRM on your
--   file, and that you want Elastic Transcoder to use as a checksum to
--   make sure your key was not corrupted in transit. The key MD5 must be
--   base64-encoded, and it must be exactly 16 bytes before being
--   base64-encoded.</li>
--   <li><a>prdKey</a> - The DRM key for your file, provided by your DRM
--   license provider. The key must be base64-encoded, and it must be one
--   of the following bit lengths before being base64-encoded: <tt>128</tt>
--   , <tt>192</tt> , or <tt>256</tt> . The key must also be encrypted by
--   using AWS KMS.</li>
--   <li><a>prdInitializationVector</a> - The series of random bits created
--   by a random bit generator, unique for every encryption operation, that
--   you want Elastic Transcoder to use to encrypt your files. The
--   initialization vector must be base64-encoded, and it must be exactly 8
--   bytes long before being base64-encoded. If no initialization vector is
--   provided, Elastic Transcoder generates one for you.</li>
--   <li><a>prdLicenseAcquisitionURL</a> - The location of the license key
--   required to play DRM content. The URL must be an absolute path, and is
--   referenced by the PlayReady header. The PlayReady header is referenced
--   in the protection header of the client manifest for Smooth Streaming
--   outputs, and in the EXT-X-DXDRM and EXT-XDXDRMINFO metadata tags for
--   HLS playlist outputs. An example URL looks like this:
--   <tt><a>https://www.example.com/exampleKey/</a></tt></li>
--   </ul>
playReadyDrm :: PlayReadyDrm

-- | The ID for your DRM key, so that your DRM license provider knows which
--   key to provide. The key ID must be provided in big endian, and Elastic
--   Transcoder converts it to little endian before inserting it into the
--   PlayReady DRM headers. If you are unsure whether your license server
--   provides your key ID in big or little endian, check with your DRM
--   provider.
prdKeyId :: Lens' PlayReadyDrm (Maybe Text)

-- | The type of DRM, if any, that you want Elastic Transcoder to apply to
--   the output files associated with this playlist.
prdFormat :: Lens' PlayReadyDrm (Maybe Text)

-- | The MD5 digest of the key used for DRM on your file, and that you want
--   Elastic Transcoder to use as a checksum to make sure your key was not
--   corrupted in transit. The key MD5 must be base64-encoded, and it must
--   be exactly 16 bytes before being base64-encoded.
prdKeyMD5 :: Lens' PlayReadyDrm (Maybe Text)

-- | The DRM key for your file, provided by your DRM license provider. The
--   key must be base64-encoded, and it must be one of the following bit
--   lengths before being base64-encoded: <tt>128</tt> , <tt>192</tt> , or
--   <tt>256</tt> . The key must also be encrypted by using AWS KMS.
prdKey :: Lens' PlayReadyDrm (Maybe Text)

-- | The series of random bits created by a random bit generator, unique
--   for every encryption operation, that you want Elastic Transcoder to
--   use to encrypt your files. The initialization vector must be
--   base64-encoded, and it must be exactly 8 bytes long before being
--   base64-encoded. If no initialization vector is provided, Elastic
--   Transcoder generates one for you.
prdInitializationVector :: Lens' PlayReadyDrm (Maybe Text)

-- | The location of the license key required to play DRM content. The URL
--   must be an absolute path, and is referenced by the PlayReady header.
--   The PlayReady header is referenced in the protection header of the
--   client manifest for Smooth Streaming outputs, and in the EXT-X-DXDRM
--   and EXT-XDXDRMINFO metadata tags for HLS playlist outputs. An example
--   URL looks like this:
--   <tt><a>https://www.example.com/exampleKey/</a></tt>
prdLicenseAcquisitionURL :: Lens' PlayReadyDrm (Maybe Text)

-- | Use Only for Fragmented MP4 or MPEG-TS Outputs. If you specify a
--   preset for which the value of Container is <tt>fmp4</tt> (Fragmented
--   MP4) or <tt>ts</tt> (MPEG-TS), Playlists contains information about
--   the master playlists that you want Elastic Transcoder to create. We
--   recommend that you create only one master playlist per output format.
--   The maximum number of master playlists in a job is 30.
--   
--   <i>See:</i> <a>playlist</a> smart constructor.
data Playlist

-- | Creates a value of <a>Playlist</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pStatus</a> - The status of the job with which the playlist is
--   associated.</li>
--   <li><a>pPlayReadyDrm</a> - The DRM settings, if any, that you want
--   Elastic Transcoder to apply to the output files associated with this
--   playlist.</li>
--   <li><a>pFormat</a> - The format of the output playlist. Valid formats
--   include <tt>HLSv3</tt> , <tt>HLSv4</tt> , and <tt>Smooth</tt> .</li>
--   <li><a>pOutputKeys</a> - For each output in this job that you want to
--   include in a master playlist, the value of the Outputs:Key object. *
--   If your output is not <tt>HLS</tt> or does not have a segment duration
--   set, the name of the output file is a concatenation of
--   <tt>OutputKeyPrefix</tt> and <tt>Outputs:Key</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> * If your output is <tt>HLSv3</tt>
--   and has a segment duration set, or is not included in a playlist,
--   Elastic Transcoder creates an output playlist file with a file
--   extension of <tt>.m3u8</tt> , and a series of <tt>.ts</tt> files that
--   include a five-digit sequential counter beginning with 00000:
--   OutputKeyPrefix<tt>Outputs:Key</tt> .m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> 00000.ts * If your output is
--   <tt>HLSv4</tt> , has a segment duration set, and is included in an
--   <tt>HLSv4</tt> playlist, Elastic Transcoder creates an output playlist
--   file with a file extension of <tt>_v4.m3u8</tt> . If the output is
--   video, Elastic Transcoder also creates an output file with an
--   extension of <tt>_iframe.m3u8</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> _v4.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> _iframe.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> .ts Elastic Transcoder
--   automatically appends the relevant file extension to the file name. If
--   you include a file extension in Output Key, the file name will have
--   two extensions. If you include more than one output in a playlist, any
--   segment duration settings, clip settings, or caption settings must be
--   the same for all outputs in the playlist. For <tt>Smooth</tt>
--   playlists, the <tt>Audio:Profile</tt> , <tt>Video:Profile</tt> , and
--   <tt>Video:FrameRate</tt> to <tt>Video:KeyframesMaxDist</tt> ratio must
--   be the same for all outputs.</li>
--   <li><a>pName</a> - The name that you want Elastic Transcoder to assign
--   to the master playlist, for example, nyc-vacation.m3u8. If the name
--   includes a <tt>/</tt> character, the section of the name before the
--   last <tt>/</tt> must be identical for all <tt>Name</tt> objects. If
--   you create more than one master playlist, the values of all
--   <tt>Name</tt> objects must be unique.</li>
--   <li><a>pStatusDetail</a> - Information that further explains the
--   status.</li>
--   <li><a>pHlsContentProtection</a> - The HLS content protection
--   settings, if any, that you want Elastic Transcoder to apply to the
--   output files associated with this playlist.</li>
--   </ul>
playlist :: Playlist

-- | The status of the job with which the playlist is associated.
pStatus :: Lens' Playlist (Maybe Text)

-- | The DRM settings, if any, that you want Elastic Transcoder to apply to
--   the output files associated with this playlist.
pPlayReadyDrm :: Lens' Playlist (Maybe PlayReadyDrm)

-- | The format of the output playlist. Valid formats include
--   <tt>HLSv3</tt> , <tt>HLSv4</tt> , and <tt>Smooth</tt> .
pFormat :: Lens' Playlist (Maybe Text)

-- | For each output in this job that you want to include in a master
--   playlist, the value of the Outputs:Key object. * If your output is not
--   <tt>HLS</tt> or does not have a segment duration set, the name of the
--   output file is a concatenation of <tt>OutputKeyPrefix</tt> and
--   <tt>Outputs:Key</tt> : OutputKeyPrefix<tt>Outputs:Key</tt> * If your
--   output is <tt>HLSv3</tt> and has a segment duration set, or is not
--   included in a playlist, Elastic Transcoder creates an output playlist
--   file with a file extension of <tt>.m3u8</tt> , and a series of
--   <tt>.ts</tt> files that include a five-digit sequential counter
--   beginning with 00000: OutputKeyPrefix<tt>Outputs:Key</tt> .m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> 00000.ts * If your output is
--   <tt>HLSv4</tt> , has a segment duration set, and is included in an
--   <tt>HLSv4</tt> playlist, Elastic Transcoder creates an output playlist
--   file with a file extension of <tt>_v4.m3u8</tt> . If the output is
--   video, Elastic Transcoder also creates an output file with an
--   extension of <tt>_iframe.m3u8</tt> :
--   OutputKeyPrefix<tt>Outputs:Key</tt> _v4.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> _iframe.m3u8
--   OutputKeyPrefix<tt>Outputs:Key</tt> .ts Elastic Transcoder
--   automatically appends the relevant file extension to the file name. If
--   you include a file extension in Output Key, the file name will have
--   two extensions. If you include more than one output in a playlist, any
--   segment duration settings, clip settings, or caption settings must be
--   the same for all outputs in the playlist. For <tt>Smooth</tt>
--   playlists, the <tt>Audio:Profile</tt> , <tt>Video:Profile</tt> , and
--   <tt>Video:FrameRate</tt> to <tt>Video:KeyframesMaxDist</tt> ratio must
--   be the same for all outputs.
pOutputKeys :: Lens' Playlist [Text]

-- | The name that you want Elastic Transcoder to assign to the master
--   playlist, for example, nyc-vacation.m3u8. If the name includes a
--   <tt>/</tt> character, the section of the name before the last
--   <tt>/</tt> must be identical for all <tt>Name</tt> objects. If you
--   create more than one master playlist, the values of all <tt>Name</tt>
--   objects must be unique.
pName :: Lens' Playlist (Maybe Text)

-- | Information that further explains the status.
pStatusDetail :: Lens' Playlist (Maybe Text)

-- | The HLS content protection settings, if any, that you want Elastic
--   Transcoder to apply to the output files associated with this playlist.
pHlsContentProtection :: Lens' Playlist (Maybe HlsContentProtection)

-- | Presets are templates that contain most of the settings for
--   transcoding media files from one format to another. Elastic Transcoder
--   includes some default presets for common formats, for example, several
--   iPod and iPhone versions. You can also create your own presets for
--   formats that aren't included among the default presets. You specify
--   which preset you want to use when you create a job.
--   
--   <i>See:</i> <a>preset</a> smart constructor.
data Preset

-- | Creates a value of <a>Preset</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>preARN</a> - The Amazon Resource Name (ARN) for the
--   preset.</li>
--   <li><a>preVideo</a> - A section of the response body that provides
--   information about the video preset values.</li>
--   <li><a>preThumbnails</a> - A section of the response body that
--   provides information about the thumbnail preset values, if any.</li>
--   <li><a>preName</a> - The name of the preset.</li>
--   <li><a>preContainer</a> - The container type for the output file.
--   Valid values include <tt>flac</tt> , <tt>flv</tt> , <tt>fmp4</tt> ,
--   <tt>gif</tt> , <tt>mp3</tt> , <tt>mp4</tt> , <tt>mpg</tt> ,
--   <tt>mxf</tt> , <tt>oga</tt> , <tt>ogg</tt> , <tt>ts</tt> , and
--   <tt>webm</tt> .</li>
--   <li><a>preId</a> - Identifier for the new preset. You use this value
--   to get settings for the preset or to delete it.</li>
--   <li><a>preType</a> - Whether the preset is a default preset provided
--   by Elastic Transcoder (<tt>System</tt> ) or a preset that you have
--   defined (<tt>Custom</tt> ).</li>
--   <li><a>preDescription</a> - A description of the preset.</li>
--   <li><a>preAudio</a> - A section of the response body that provides
--   information about the audio preset values.</li>
--   </ul>
preset :: Preset

-- | The Amazon Resource Name (ARN) for the preset.
preARN :: Lens' Preset (Maybe Text)

-- | A section of the response body that provides information about the
--   video preset values.
preVideo :: Lens' Preset (Maybe VideoParameters)

-- | A section of the response body that provides information about the
--   thumbnail preset values, if any.
preThumbnails :: Lens' Preset (Maybe Thumbnails)

-- | The name of the preset.
preName :: Lens' Preset (Maybe Text)

-- | The container type for the output file. Valid values include
--   <tt>flac</tt> , <tt>flv</tt> , <tt>fmp4</tt> , <tt>gif</tt> ,
--   <tt>mp3</tt> , <tt>mp4</tt> , <tt>mpg</tt> , <tt>mxf</tt> ,
--   <tt>oga</tt> , <tt>ogg</tt> , <tt>ts</tt> , and <tt>webm</tt> .
preContainer :: Lens' Preset (Maybe Text)

-- | Identifier for the new preset. You use this value to get settings for
--   the preset or to delete it.
preId :: Lens' Preset (Maybe Text)

-- | Whether the preset is a default preset provided by Elastic Transcoder
--   (<tt>System</tt> ) or a preset that you have defined (<tt>Custom</tt>
--   ).
preType :: Lens' Preset (Maybe Text)

-- | A description of the preset.
preDescription :: Lens' Preset (Maybe Text)

-- | A section of the response body that provides information about the
--   audio preset values.
preAudio :: Lens' Preset (Maybe AudioParameters)

-- | Settings for the size, location, and opacity of graphics that you want
--   Elastic Transcoder to overlay over videos that are transcoded using
--   this preset. You can specify settings for up to four watermarks.
--   Watermarks appear in the specified size and location, and with the
--   specified opacity for the duration of the transcoded video.
--   
--   Watermarks can be in .png or .jpg format. If you want to display a
--   watermark that is not rectangular, use the .png format, which supports
--   transparency.
--   
--   When you create a job that uses this preset, you specify the .png or
--   .jpg graphics that you want Elastic Transcoder to include in the
--   transcoded videos. You can specify fewer graphics in the job than you
--   specify watermark settings in the preset, which allows you to use the
--   same preset for up to four watermarks that have different dimensions.
--   
--   <i>See:</i> <a>presetWatermark</a> smart constructor.
data PresetWatermark

-- | Creates a value of <a>PresetWatermark</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pwVerticalAlign</a> - The vertical position of the watermark
--   unless you specify a non-zero value for <tt>VerticalOffset</tt> : *
--   <b>Top</b> : The top edge of the watermark is aligned with the top
--   border of the video. * <b>Bottom</b> : The bottom edge of the
--   watermark is aligned with the bottom border of the video. *
--   <b>Center</b> : The watermark is centered between the top and bottom
--   borders.</li>
--   <li><a>pwSizingPolicy</a> - A value that controls scaling of the
--   watermark: * <b>Fit</b> : Elastic Transcoder scales the watermark so
--   it matches the value that you specified in either <tt>MaxWidth</tt> or
--   <tt>MaxHeight</tt> without exceeding the other value. * <b>Stretch</b>
--   : Elastic Transcoder stretches the watermark to match the values that
--   you specified for <tt>MaxWidth</tt> and <tt>MaxHeight</tt> . If the
--   relative proportions of the watermark and the values of
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> are different, the watermark
--   will be distorted. * <b>ShrinkToFit</b> : Elastic Transcoder scales
--   the watermark down so that its dimensions match the values that you
--   specified for at least one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt>
--   without exceeding either value. If you specify this option, Elastic
--   Transcoder does not scale the watermark up.</li>
--   <li><a>pwHorizontalOffset</a> - The amount by which you want the
--   horizontal position of the watermark to be offset from the position
--   specified by HorizontalAlign: * number of pixels (px): The minimum
--   value is 0 pixels, and the maximum value is the value of MaxWidth. *
--   integer percentage (%): The range of valid values is 0 to 100. For
--   example, if you specify Left for <tt>HorizontalAlign</tt> and 5px for
--   <tt>HorizontalOffset</tt> , the left side of the watermark appears 5
--   pixels from the left border of the output video.
--   <tt>HorizontalOffset</tt> is only valid when the value of
--   <tt>HorizontalAlign</tt> is <tt>Left</tt> or <tt>Right</tt> . If you
--   specify an offset that causes the watermark to extend beyond the left
--   or right border and Elastic Transcoder has not added black bars, the
--   watermark is cropped. If Elastic Transcoder has added black bars, the
--   watermark extends into the black bars. If the watermark extends beyond
--   the black bars, it is cropped. Use the value of <tt>Target</tt> to
--   specify whether you want to include the black bars that are added by
--   Elastic Transcoder, if any, in the offset calculation.</li>
--   <li><a>pwMaxHeight</a> - The maximum height of the watermark in one of
--   the following formats: * number of pixels (px): The minimum value is
--   16 pixels, and the maximum value is the value of <tt>MaxHeight</tt> .
--   * integer percentage (%): The range of valid values is 0 to 100. Use
--   the value of <tt>Target</tt> to specify whether you want Elastic
--   Transcoder to include the black bars that are added by Elastic
--   Transcoder, if any, in the calculation. If you specify the value in
--   pixels, it must be less than or equal to the value of
--   <tt>MaxHeight</tt> .</li>
--   <li><a>pwOpacity</a> - A percentage that indicates how much you want a
--   watermark to obscure the video in the location where it appears. Valid
--   values are 0 (the watermark is invisible) to 100 (the watermark
--   completely obscures the video in the specified location). The datatype
--   of <tt>Opacity</tt> is float. Elastic Transcoder supports transparent
--   .png graphics. If you use a transparent .png, the transparent portion
--   of the video appears as if you had specified a value of 0 for
--   <tt>Opacity</tt> . The .jpg file format doesn't support
--   transparency.</li>
--   <li><a>pwVerticalOffset</a> - <tt>VerticalOffset</tt> The amount by
--   which you want the vertical position of the watermark to be offset
--   from the position specified by VerticalAlign: * number of pixels (px):
--   The minimum value is 0 pixels, and the maximum value is the value of
--   <tt>MaxHeight</tt> . * integer percentage (%): The range of valid
--   values is 0 to 100. For example, if you specify <tt>Top</tt> for
--   <tt>VerticalAlign</tt> and <tt>5px</tt> for <tt>VerticalOffset</tt> ,
--   the top of the watermark appears 5 pixels from the top border of the
--   output video. <tt>VerticalOffset</tt> is only valid when the value of
--   VerticalAlign is Top or Bottom. If you specify an offset that causes
--   the watermark to extend beyond the top or bottom border and Elastic
--   Transcoder has not added black bars, the watermark is cropped. If
--   Elastic Transcoder has added black bars, the watermark extends into
--   the black bars. If the watermark extends beyond the black bars, it is
--   cropped. Use the value of <tt>Target</tt> to specify whether you want
--   Elastic Transcoder to include the black bars that are added by Elastic
--   Transcoder, if any, in the offset calculation.</li>
--   <li><a>pwMaxWidth</a> - The maximum width of the watermark in one of
--   the following formats: * number of pixels (px): The minimum value is
--   16 pixels, and the maximum value is the value of <tt>MaxWidth</tt> . *
--   integer percentage (%): The range of valid values is 0 to 100. Use the
--   value of <tt>Target</tt> to specify whether you want Elastic
--   Transcoder to include the black bars that are added by Elastic
--   Transcoder, if any, in the calculation. If you specify the value in
--   pixels, it must be less than or equal to the value of
--   <tt>MaxWidth</tt> .</li>
--   <li><a>pwId</a> - A unique identifier for the settings for one
--   watermark. The value of <tt>Id</tt> can be up to 40 characters
--   long.</li>
--   <li><a>pwHorizontalAlign</a> - The horizontal position of the
--   watermark unless you specify a non-zero value for
--   <tt>HorizontalOffset</tt> : * <b>Left</b> : The left edge of the
--   watermark is aligned with the left border of the video. * <b>Right</b>
--   : The right edge of the watermark is aligned with the right border of
--   the video. * <b>Center</b> : The watermark is centered between the
--   left and right borders.</li>
--   <li><a>pwTarget</a> - A value that determines how Elastic Transcoder
--   interprets values that you specified for <tt>HorizontalOffset</tt> ,
--   <tt>VerticalOffset</tt> , <tt>MaxWidth</tt> , and <tt>MaxHeight</tt> :
--   * <b>Content</b> : <tt>HorizontalOffset</tt> and
--   <tt>VerticalOffset</tt> values are calculated based on the borders of
--   the video excluding black bars added by Elastic Transcoder, if any. In
--   addition, <tt>MaxWidth</tt> and <tt>MaxHeight</tt> , if specified as a
--   percentage, are calculated based on the borders of the video excluding
--   black bars added by Elastic Transcoder, if any. * <b>Frame</b> :
--   <tt>HorizontalOffset</tt> and <tt>VerticalOffset</tt> values are
--   calculated based on the borders of the video including black bars
--   added by Elastic Transcoder, if any. In addition, <tt>MaxWidth</tt>
--   and <tt>MaxHeight</tt> , if specified as a percentage, are calculated
--   based on the borders of the video including black bars added by
--   Elastic Transcoder, if any.</li>
--   </ul>
presetWatermark :: PresetWatermark

-- | The vertical position of the watermark unless you specify a non-zero
--   value for <tt>VerticalOffset</tt> : * <b>Top</b> : The top edge of the
--   watermark is aligned with the top border of the video. * <b>Bottom</b>
--   : The bottom edge of the watermark is aligned with the bottom border
--   of the video. * <b>Center</b> : The watermark is centered between the
--   top and bottom borders.
pwVerticalAlign :: Lens' PresetWatermark (Maybe Text)

-- | A value that controls scaling of the watermark: * <b>Fit</b> : Elastic
--   Transcoder scales the watermark so it matches the value that you
--   specified in either <tt>MaxWidth</tt> or <tt>MaxHeight</tt> without
--   exceeding the other value. * <b>Stretch</b> : Elastic Transcoder
--   stretches the watermark to match the values that you specified for
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> . If the relative proportions
--   of the watermark and the values of <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> are different, the watermark will be distorted. *
--   <b>ShrinkToFit</b> : Elastic Transcoder scales the watermark down so
--   that its dimensions match the values that you specified for at least
--   one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without exceeding
--   either value. If you specify this option, Elastic Transcoder does not
--   scale the watermark up.
pwSizingPolicy :: Lens' PresetWatermark (Maybe Text)

-- | The amount by which you want the horizontal position of the watermark
--   to be offset from the position specified by HorizontalAlign: * number
--   of pixels (px): The minimum value is 0 pixels, and the maximum value
--   is the value of MaxWidth. * integer percentage (%): The range of valid
--   values is 0 to 100. For example, if you specify Left for
--   <tt>HorizontalAlign</tt> and 5px for <tt>HorizontalOffset</tt> , the
--   left side of the watermark appears 5 pixels from the left border of
--   the output video. <tt>HorizontalOffset</tt> is only valid when the
--   value of <tt>HorizontalAlign</tt> is <tt>Left</tt> or <tt>Right</tt> .
--   If you specify an offset that causes the watermark to extend beyond
--   the left or right border and Elastic Transcoder has not added black
--   bars, the watermark is cropped. If Elastic Transcoder has added black
--   bars, the watermark extends into the black bars. If the watermark
--   extends beyond the black bars, it is cropped. Use the value of
--   <tt>Target</tt> to specify whether you want to include the black bars
--   that are added by Elastic Transcoder, if any, in the offset
--   calculation.
pwHorizontalOffset :: Lens' PresetWatermark (Maybe Text)

-- | The maximum height of the watermark in one of the following formats: *
--   number of pixels (px): The minimum value is 16 pixels, and the maximum
--   value is the value of <tt>MaxHeight</tt> . * integer percentage (%):
--   The range of valid values is 0 to 100. Use the value of
--   <tt>Target</tt> to specify whether you want Elastic Transcoder to
--   include the black bars that are added by Elastic Transcoder, if any,
--   in the calculation. If you specify the value in pixels, it must be
--   less than or equal to the value of <tt>MaxHeight</tt> .
pwMaxHeight :: Lens' PresetWatermark (Maybe Text)

-- | A percentage that indicates how much you want a watermark to obscure
--   the video in the location where it appears. Valid values are 0 (the
--   watermark is invisible) to 100 (the watermark completely obscures the
--   video in the specified location). The datatype of <tt>Opacity</tt> is
--   float. Elastic Transcoder supports transparent .png graphics. If you
--   use a transparent .png, the transparent portion of the video appears
--   as if you had specified a value of 0 for <tt>Opacity</tt> . The .jpg
--   file format doesn't support transparency.
pwOpacity :: Lens' PresetWatermark (Maybe Text)

-- | <tt>VerticalOffset</tt> The amount by which you want the vertical
--   position of the watermark to be offset from the position specified by
--   VerticalAlign: * number of pixels (px): The minimum value is 0 pixels,
--   and the maximum value is the value of <tt>MaxHeight</tt> . * integer
--   percentage (%): The range of valid values is 0 to 100. For example, if
--   you specify <tt>Top</tt> for <tt>VerticalAlign</tt> and <tt>5px</tt>
--   for <tt>VerticalOffset</tt> , the top of the watermark appears 5
--   pixels from the top border of the output video.
--   <tt>VerticalOffset</tt> is only valid when the value of VerticalAlign
--   is Top or Bottom. If you specify an offset that causes the watermark
--   to extend beyond the top or bottom border and Elastic Transcoder has
--   not added black bars, the watermark is cropped. If Elastic Transcoder
--   has added black bars, the watermark extends into the black bars. If
--   the watermark extends beyond the black bars, it is cropped. Use the
--   value of <tt>Target</tt> to specify whether you want Elastic
--   Transcoder to include the black bars that are added by Elastic
--   Transcoder, if any, in the offset calculation.
pwVerticalOffset :: Lens' PresetWatermark (Maybe Text)

-- | The maximum width of the watermark in one of the following formats: *
--   number of pixels (px): The minimum value is 16 pixels, and the maximum
--   value is the value of <tt>MaxWidth</tt> . * integer percentage (%):
--   The range of valid values is 0 to 100. Use the value of
--   <tt>Target</tt> to specify whether you want Elastic Transcoder to
--   include the black bars that are added by Elastic Transcoder, if any,
--   in the calculation. If you specify the value in pixels, it must be
--   less than or equal to the value of <tt>MaxWidth</tt> .
pwMaxWidth :: Lens' PresetWatermark (Maybe Text)

-- | A unique identifier for the settings for one watermark. The value of
--   <tt>Id</tt> can be up to 40 characters long.
pwId :: Lens' PresetWatermark (Maybe Text)

-- | The horizontal position of the watermark unless you specify a non-zero
--   value for <tt>HorizontalOffset</tt> : * <b>Left</b> : The left edge of
--   the watermark is aligned with the left border of the video. *
--   <b>Right</b> : The right edge of the watermark is aligned with the
--   right border of the video. * <b>Center</b> : The watermark is centered
--   between the left and right borders.
pwHorizontalAlign :: Lens' PresetWatermark (Maybe Text)

-- | A value that determines how Elastic Transcoder interprets values that
--   you specified for <tt>HorizontalOffset</tt> , <tt>VerticalOffset</tt>
--   , <tt>MaxWidth</tt> , and <tt>MaxHeight</tt> : * <b>Content</b> :
--   <tt>HorizontalOffset</tt> and <tt>VerticalOffset</tt> values are
--   calculated based on the borders of the video excluding black bars
--   added by Elastic Transcoder, if any. In addition, <tt>MaxWidth</tt>
--   and <tt>MaxHeight</tt> , if specified as a percentage, are calculated
--   based on the borders of the video excluding black bars added by
--   Elastic Transcoder, if any. * <b>Frame</b> : <tt>HorizontalOffset</tt>
--   and <tt>VerticalOffset</tt> values are calculated based on the borders
--   of the video including black bars added by Elastic Transcoder, if any.
--   In addition, <tt>MaxWidth</tt> and <tt>MaxHeight</tt> , if specified
--   as a percentage, are calculated based on the borders of the video
--   including black bars added by Elastic Transcoder, if any.
pwTarget :: Lens' PresetWatermark (Maybe Text)

-- | Thumbnails for videos.
--   
--   <i>See:</i> <a>thumbnails</a> smart constructor.
data Thumbnails

-- | Creates a value of <a>Thumbnails</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tSizingPolicy</a> - Specify one of the following values to
--   control scaling of thumbnails: * <tt>Fit</tt> : Elastic Transcoder
--   scales thumbnails so they match the value that you specified in
--   thumbnail MaxWidth or MaxHeight settings without exceeding the other
--   value. * <tt>Fill</tt> : Elastic Transcoder scales thumbnails so they
--   match the value that you specified in thumbnail <tt>MaxWidth</tt> or
--   <tt>MaxHeight</tt> settings and matches or exceeds the other value.
--   Elastic Transcoder centers the image in thumbnails and then crops in
--   the dimension (if any) that exceeds the maximum value. *
--   <tt>Stretch</tt> : Elastic Transcoder stretches thumbnails to match
--   the values that you specified for thumbnail <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> settings. If the relative proportions of the input
--   video and thumbnails are different, the thumbnails will be distorted.
--   * <tt>Keep</tt> : Elastic Transcoder does not scale thumbnails. If
--   either dimension of the input video exceeds the values that you
--   specified for thumbnail <tt>MaxWidth</tt> and <tt>MaxHeight</tt>
--   settings, Elastic Transcoder crops the thumbnails. *
--   <tt>ShrinkToFit</tt> : Elastic Transcoder scales thumbnails down so
--   that their dimensions match the values that you specified for at least
--   one of thumbnail <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without
--   exceeding either value. If you specify this option, Elastic Transcoder
--   does not scale thumbnails up. * <tt>ShrinkToFill</tt> : Elastic
--   Transcoder scales thumbnails down so that their dimensions match the
--   values that you specified for at least one of <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> without dropping below either value. If you specify
--   this option, Elastic Transcoder does not scale thumbnails up.</li>
--   <li><a>tFormat</a> - The format of thumbnails, if any. Valid values
--   are <tt>jpg</tt> and <tt>png</tt> . You specify whether you want
--   Elastic Transcoder to create thumbnails when you create a job.</li>
--   <li><a>tMaxHeight</a> - The maximum height of thumbnails in pixels. If
--   you specify auto, Elastic Transcoder uses 1080 (Full HD) as the
--   default value. If you specify a numeric value, enter an even integer
--   between 32 and 3072.</li>
--   <li><a>tResolution</a> - <i>Important:</i> To better control
--   resolution and aspect ratio of thumbnails, we recommend that you use
--   the values <tt>MaxWidth</tt> , <tt>MaxHeight</tt> ,
--   <tt>SizingPolicy</tt> , and <tt>PaddingPolicy</tt> instead of
--   <tt>Resolution</tt> and <tt>AspectRatio</tt> . The two groups of
--   settings are mutually exclusive. Do not use them together. The width
--   and height of thumbnail files in pixels. Specify a value in the format
--   <tt><i>width</i> </tt> x <tt><i>height</i> </tt> where both values are
--   even integers. The values cannot exceed the width and height that you
--   specified in the <tt>Video:Resolution</tt> object.</li>
--   <li><a>tAspectRatio</a> - <i>Important:</i> To better control
--   resolution and aspect ratio of thumbnails, we recommend that you use
--   the values <tt>MaxWidth</tt> , <tt>MaxHeight</tt> ,
--   <tt>SizingPolicy</tt> , and <tt>PaddingPolicy</tt> instead of
--   <tt>Resolution</tt> and <tt>AspectRatio</tt> . The two groups of
--   settings are mutually exclusive. Do not use them together. The aspect
--   ratio of thumbnails. Valid values include: <tt>auto</tt> ,
--   <tt>1:1</tt> , <tt>4:3</tt> , <tt>3:2</tt> , <tt>16:9</tt> If you
--   specify <tt>auto</tt> , Elastic Transcoder tries to preserve the
--   aspect ratio of the video in the output file.</li>
--   <li><a>tPaddingPolicy</a> - When you set <tt>PaddingPolicy</tt> to
--   <tt>Pad</tt> , Elastic Transcoder may add black bars to the top and
--   bottom and/or left and right sides of thumbnails to make the total
--   size of the thumbnails match the values that you specified for
--   thumbnail <tt>MaxWidth</tt> and <tt>MaxHeight</tt> settings.</li>
--   <li><a>tInterval</a> - The approximate number of seconds between
--   thumbnails. Specify an integer value.</li>
--   <li><a>tMaxWidth</a> - The maximum width of thumbnails in pixels. If
--   you specify auto, Elastic Transcoder uses 1920 (Full HD) as the
--   default value. If you specify a numeric value, enter an even integer
--   between 32 and 4096.</li>
--   </ul>
thumbnails :: Thumbnails

-- | Specify one of the following values to control scaling of thumbnails:
--   * <tt>Fit</tt> : Elastic Transcoder scales thumbnails so they match
--   the value that you specified in thumbnail MaxWidth or MaxHeight
--   settings without exceeding the other value. * <tt>Fill</tt> : Elastic
--   Transcoder scales thumbnails so they match the value that you
--   specified in thumbnail <tt>MaxWidth</tt> or <tt>MaxHeight</tt>
--   settings and matches or exceeds the other value. Elastic Transcoder
--   centers the image in thumbnails and then crops in the dimension (if
--   any) that exceeds the maximum value. * <tt>Stretch</tt> : Elastic
--   Transcoder stretches thumbnails to match the values that you specified
--   for thumbnail <tt>MaxWidth</tt> and <tt>MaxHeight</tt> settings. If
--   the relative proportions of the input video and thumbnails are
--   different, the thumbnails will be distorted. * <tt>Keep</tt> : Elastic
--   Transcoder does not scale thumbnails. If either dimension of the input
--   video exceeds the values that you specified for thumbnail
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> settings, Elastic Transcoder
--   crops the thumbnails. * <tt>ShrinkToFit</tt> : Elastic Transcoder
--   scales thumbnails down so that their dimensions match the values that
--   you specified for at least one of thumbnail <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> without exceeding either value. If you specify this
--   option, Elastic Transcoder does not scale thumbnails up. *
--   <tt>ShrinkToFill</tt> : Elastic Transcoder scales thumbnails down so
--   that their dimensions match the values that you specified for at least
--   one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without dropping below
--   either value. If you specify this option, Elastic Transcoder does not
--   scale thumbnails up.
tSizingPolicy :: Lens' Thumbnails (Maybe Text)

-- | The format of thumbnails, if any. Valid values are <tt>jpg</tt> and
--   <tt>png</tt> . You specify whether you want Elastic Transcoder to
--   create thumbnails when you create a job.
tFormat :: Lens' Thumbnails (Maybe Text)

-- | The maximum height of thumbnails in pixels. If you specify auto,
--   Elastic Transcoder uses 1080 (Full HD) as the default value. If you
--   specify a numeric value, enter an even integer between 32 and 3072.
tMaxHeight :: Lens' Thumbnails (Maybe Text)

-- | <i>Important:</i> To better control resolution and aspect ratio of
--   thumbnails, we recommend that you use the values <tt>MaxWidth</tt> ,
--   <tt>MaxHeight</tt> , <tt>SizingPolicy</tt> , and
--   <tt>PaddingPolicy</tt> instead of <tt>Resolution</tt> and
--   <tt>AspectRatio</tt> . The two groups of settings are mutually
--   exclusive. Do not use them together. The width and height of thumbnail
--   files in pixels. Specify a value in the format <tt><i>width</i> </tt>
--   x <tt><i>height</i> </tt> where both values are even integers. The
--   values cannot exceed the width and height that you specified in the
--   <tt>Video:Resolution</tt> object.
tResolution :: Lens' Thumbnails (Maybe Text)

-- | <i>Important:</i> To better control resolution and aspect ratio of
--   thumbnails, we recommend that you use the values <tt>MaxWidth</tt> ,
--   <tt>MaxHeight</tt> , <tt>SizingPolicy</tt> , and
--   <tt>PaddingPolicy</tt> instead of <tt>Resolution</tt> and
--   <tt>AspectRatio</tt> . The two groups of settings are mutually
--   exclusive. Do not use them together. The aspect ratio of thumbnails.
--   Valid values include: <tt>auto</tt> , <tt>1:1</tt> , <tt>4:3</tt> ,
--   <tt>3:2</tt> , <tt>16:9</tt> If you specify <tt>auto</tt> , Elastic
--   Transcoder tries to preserve the aspect ratio of the video in the
--   output file.
tAspectRatio :: Lens' Thumbnails (Maybe Text)

-- | When you set <tt>PaddingPolicy</tt> to <tt>Pad</tt> , Elastic
--   Transcoder may add black bars to the top and bottom and/or left and
--   right sides of thumbnails to make the total size of the thumbnails
--   match the values that you specified for thumbnail <tt>MaxWidth</tt>
--   and <tt>MaxHeight</tt> settings.
tPaddingPolicy :: Lens' Thumbnails (Maybe Text)

-- | The approximate number of seconds between thumbnails. Specify an
--   integer value.
tInterval :: Lens' Thumbnails (Maybe Text)

-- | The maximum width of thumbnails in pixels. If you specify auto,
--   Elastic Transcoder uses 1920 (Full HD) as the default value. If you
--   specify a numeric value, enter an even integer between 32 and 4096.
tMaxWidth :: Lens' Thumbnails (Maybe Text)

-- | Settings that determine when a clip begins and how long it lasts.
--   
--   <i>See:</i> <a>timeSpan</a> smart constructor.
data TimeSpan

-- | Creates a value of <a>TimeSpan</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tsStartTime</a> - The place in the input file where you want a
--   clip to start. The format can be either HH:mm:ss.SSS (maximum value:
--   23:59:59.999; SSS is thousandths of a second) or sssss.SSS (maximum
--   value: 86399.999). If you don't specify a value, Elastic Transcoder
--   starts at the beginning of the input file.</li>
--   <li><a>tsDuration</a> - The duration of the clip. The format can be
--   either HH:mm:ss.SSS (maximum value: 23:59:59.999; SSS is thousandths
--   of a second) or sssss.SSS (maximum value: 86399.999). If you don't
--   specify a value, Elastic Transcoder creates an output file from
--   StartTime to the end of the file. If you specify a value longer than
--   the duration of the input file, Elastic Transcoder transcodes the file
--   and returns a warning message.</li>
--   </ul>
timeSpan :: TimeSpan

-- | The place in the input file where you want a clip to start. The format
--   can be either HH:mm:ss.SSS (maximum value: 23:59:59.999; SSS is
--   thousandths of a second) or sssss.SSS (maximum value: 86399.999). If
--   you don't specify a value, Elastic Transcoder starts at the beginning
--   of the input file.
tsStartTime :: Lens' TimeSpan (Maybe Text)

-- | The duration of the clip. The format can be either HH:mm:ss.SSS
--   (maximum value: 23:59:59.999; SSS is thousandths of a second) or
--   sssss.SSS (maximum value: 86399.999). If you don't specify a value,
--   Elastic Transcoder creates an output file from StartTime to the end of
--   the file. If you specify a value longer than the duration of the input
--   file, Elastic Transcoder transcodes the file and returns a warning
--   message.
tsDuration :: Lens' TimeSpan (Maybe Text)

-- | Details about the timing of a job.
--   
--   <i>See:</i> <a>timing</a> smart constructor.
data Timing

-- | Creates a value of <a>Timing</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tSubmitTimeMillis</a> - The time the job was submitted to
--   Elastic Transcoder, in epoch milliseconds.</li>
--   <li><a>tFinishTimeMillis</a> - The time the job finished transcoding,
--   in epoch milliseconds.</li>
--   <li><a>tStartTimeMillis</a> - The time the job began transcoding, in
--   epoch milliseconds.</li>
--   </ul>
timing :: Timing

-- | The time the job was submitted to Elastic Transcoder, in epoch
--   milliseconds.
tSubmitTimeMillis :: Lens' Timing (Maybe Integer)

-- | The time the job finished transcoding, in epoch milliseconds.
tFinishTimeMillis :: Lens' Timing (Maybe Integer)

-- | The time the job began transcoding, in epoch milliseconds.
tStartTimeMillis :: Lens' Timing (Maybe Integer)

-- | The <tt>VideoParameters</tt> structure.
--   
--   <i>See:</i> <a>videoParameters</a> smart constructor.
data VideoParameters

-- | Creates a value of <a>VideoParameters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vpKeyframesMaxDist</a> - Applicable only when the value of
--   Video:Codec is one of <tt>H.264</tt> , <tt>MPEG2</tt> , or
--   <tt>VP8</tt> . The maximum number of frames between key frames. Key
--   frames are fully encoded frames; the frames between key frames are
--   encoded based, in part, on the content of the key frames. The value is
--   an integer formatted as a string; valid values are between 1 (every
--   frame is a key frame) and 100000, inclusive. A higher value results in
--   higher compression but may also discernibly decrease video quality.
--   For <tt>Smooth</tt> outputs, the <tt>FrameRate</tt> must have a
--   constant ratio to the <tt>KeyframesMaxDist</tt> . This allows
--   <tt>Smooth</tt> playlists to switch between different quality levels
--   while the file is being played. For example, an input file can have a
--   <tt>FrameRate</tt> of 30 with a <tt>KeyframesMaxDist</tt> of 90. The
--   output file then needs to have a ratio of 1:3. Valid outputs would
--   have <tt>FrameRate</tt> of 30, 25, and 10, and
--   <tt>KeyframesMaxDist</tt> of 90, 75, and 30, respectively.
--   Alternately, this can be achieved by setting <tt>FrameRate</tt> to
--   auto and having the same values for <tt>MaxFrameRate</tt> and
--   <tt>KeyframesMaxDist</tt> .</li>
--   <li><a>vpFrameRate</a> - The frames per second for the video stream in
--   the output file. Valid values include: <tt>auto</tt> , <tt>10</tt> ,
--   <tt>15</tt> , <tt>23.97</tt> , <tt>24</tt> , <tt>25</tt> ,
--   <tt>29.97</tt> , <tt>30</tt> , <tt>60</tt> If you specify
--   <tt>auto</tt> , Elastic Transcoder uses the detected frame rate of the
--   input source. If you specify a frame rate, we recommend that you
--   perform the following calculation: <tt>Frame rate = maximum
--   recommended decoding speed in luma samples<i>second </i> (width in
--   pixels * height in pixels)</tt> where: * <i>width in pixels</i> and
--   <i>height in pixels</i> represent the Resolution of the output video.
--   * <i>maximum recommended decoding speed in Luma samples/second</i> is
--   less than or equal to the maximum value listed in the following table,
--   based on the value that you specified for Level. The maximum
--   recommended decoding speed in Luma samples<i>second for each level is
--   described in the following list (</i>Level - Decoding speed/ ): * 1 -
--   380160 * 1b - 380160 * 1.1 - 76800 * 1.2 - 1536000 * 1.3 - 3041280 * 2
--   - 3041280 * 2.1 - 5068800 * 2.2 - 5184000 * 3 - 10368000 * 3.1 -
--   27648000 * 3.2 - 55296000 * 4 - 62914560 * 4.1 - 62914560</li>
--   <li><a>vpSizingPolicy</a> - Specify one of the following values to
--   control scaling of the output video: * <tt>Fit</tt> : Elastic
--   Transcoder scales the output video so it matches the value that you
--   specified in either <tt>MaxWidth</tt> or <tt>MaxHeight</tt> without
--   exceeding the other value. * <tt>Fill</tt> : Elastic Transcoder scales
--   the output video so it matches the value that you specified in either
--   <tt>MaxWidth</tt> or <tt>MaxHeight</tt> and matches or exceeds the
--   other value. Elastic Transcoder centers the output video and then
--   crops it in the dimension (if any) that exceeds the maximum value. *
--   <tt>Stretch</tt> : Elastic Transcoder stretches the output video to
--   match the values that you specified for <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> . If the relative proportions of the input video
--   and the output video are different, the output video will be
--   distorted. * <tt>Keep</tt> : Elastic Transcoder does not scale the
--   output video. If either dimension of the input video exceeds the
--   values that you specified for <tt>MaxWidth</tt> and <tt>MaxHeight</tt>
--   , Elastic Transcoder crops the output video. * <tt>ShrinkToFit</tt> :
--   Elastic Transcoder scales the output video down so that its dimensions
--   match the values that you specified for at least one of
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without exceeding either
--   value. If you specify this option, Elastic Transcoder does not scale
--   the video up. * <tt>ShrinkToFill</tt> : Elastic Transcoder scales the
--   output video down so that its dimensions match the values that you
--   specified for at least one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt>
--   without dropping below either value. If you specify this option,
--   Elastic Transcoder does not scale the video up.</li>
--   <li><a>vpMaxFrameRate</a> - If you specify <tt>auto</tt> for
--   <tt>FrameRate</tt> , Elastic Transcoder uses the frame rate of the
--   input video for the frame rate of the output video. Specify the
--   maximum frame rate that you want Elastic Transcoder to use when the
--   frame rate of the input video is greater than the desired maximum
--   frame rate of the output video. Valid values include: <tt>10</tt> ,
--   <tt>15</tt> , <tt>23.97</tt> , <tt>24</tt> , <tt>25</tt> ,
--   <tt>29.97</tt> , <tt>30</tt> , <tt>60</tt> .</li>
--   <li><a>vpMaxHeight</a> - The maximum height of the output video in
--   pixels. If you specify <tt>auto</tt> , Elastic Transcoder uses 1080
--   (Full HD) as the default value. If you specify a numeric value, enter
--   an even integer between 96 and 3072.</li>
--   <li><a>vpWatermarks</a> - Settings for the size, location, and opacity
--   of graphics that you want Elastic Transcoder to overlay over videos
--   that are transcoded using this preset. You can specify settings for up
--   to four watermarks. Watermarks appear in the specified size and
--   location, and with the specified opacity for the duration of the
--   transcoded video. Watermarks can be in .png or .jpg format. If you
--   want to display a watermark that is not rectangular, use the .png
--   format, which supports transparency. When you create a job that uses
--   this preset, you specify the .png or .jpg graphics that you want
--   Elastic Transcoder to include in the transcoded videos. You can
--   specify fewer graphics in the job than you specify watermark settings
--   in the preset, which allows you to use the same preset for up to four
--   watermarks that have different dimensions.</li>
--   <li><a>vpDisplayAspectRatio</a> - The value that Elastic Transcoder
--   adds to the metadata in the output file.</li>
--   <li><a>vpResolution</a> - <i>Important:</i> To better control
--   resolution and aspect ratio of output videos, we recommend that you
--   use the values <tt>MaxWidth</tt> , <tt>MaxHeight</tt> ,
--   <tt>SizingPolicy</tt> , <tt>PaddingPolicy</tt> , and
--   <tt>DisplayAspectRatio</tt> instead of <tt>Resolution</tt> and
--   <tt>AspectRatio</tt> . The two groups of settings are mutually
--   exclusive. Do not use them together. The width and height of the video
--   in the output file, in pixels. Valid values are <tt>auto</tt> and
--   <i>width</i> x <i>height</i> : * <tt>auto</tt> : Elastic Transcoder
--   attempts to preserve the width and height of the input file, subject
--   to the following rules. * <tt><i>width</i> x <i>height</i> </tt> : The
--   width and height of the output video in pixels. Note the following
--   about specifying the width and height: * The width must be an even
--   integer between 128 and 4096, inclusive. * The height must be an even
--   integer between 96 and 3072, inclusive. * If you specify a resolution
--   that is less than the resolution of the input file, Elastic Transcoder
--   rescales the output file to the lower resolution. * If you specify a
--   resolution that is greater than the resolution of the input file,
--   Elastic Transcoder rescales the output to the higher resolution. * We
--   recommend that you specify a resolution for which the product of width
--   and height is less than or equal to the applicable value in the
--   following list (<i>List - Max width x height value</i> ): * 1 - 25344
--   * 1b - 25344 * 1.1 - 101376 * 1.2 - 101376 * 1.3 - 101376 * 2 - 101376
--   * 2.1 - 202752 * 2.2 - 404720 * 3 - 404720 * 3.1 - 921600 * 3.2 -
--   1310720 * 4 - 2097152 * 4.1 - 2097152</li>
--   <li><a>vpCodec</a> - The video codec for the output file. Valid values
--   include <tt>gif</tt> , <tt>H.264</tt> , <tt>mpeg2</tt> , <tt>vp8</tt>
--   , and <tt>vp9</tt> . You can only specify <tt>vp8</tt> and
--   <tt>vp9</tt> when the container type is <tt>webm</tt> , <tt>gif</tt>
--   when the container type is <tt>gif</tt> , and <tt>mpeg2</tt> when the
--   container type is <tt>mpg</tt> .</li>
--   <li><a>vpAspectRatio</a> - <i>Important:</i> To better control
--   resolution and aspect ratio of output videos, we recommend that you
--   use the values <tt>MaxWidth</tt> , <tt>MaxHeight</tt> ,
--   <tt>SizingPolicy</tt> , <tt>PaddingPolicy</tt> , and
--   <tt>DisplayAspectRatio</tt> instead of <tt>Resolution</tt> and
--   <tt>AspectRatio</tt> . The two groups of settings are mutually
--   exclusive. Do not use them together. The display aspect ratio of the
--   video in the output file. Valid values include: <tt>auto</tt> ,
--   <tt>1:1</tt> , <tt>4:3</tt> , <tt>3:2</tt> , <tt>16:9</tt> If you
--   specify <tt>auto</tt> , Elastic Transcoder tries to preserve the
--   aspect ratio of the input file. If you specify an aspect ratio for the
--   output file that differs from aspect ratio of the input file, Elastic
--   Transcoder adds pillarboxing (black bars on the sides) or letterboxing
--   (black bars on the top and bottom) to maintain the aspect ratio of the
--   active region of the video.</li>
--   <li><a>vpPaddingPolicy</a> - When you set <tt>PaddingPolicy</tt> to
--   <tt>Pad</tt> , Elastic Transcoder may add black bars to the top and
--   bottom and/or left and right sides of the output video to make the
--   total size of the output video match the values that you specified for
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> .</li>
--   <li><a>vpMaxWidth</a> - The maximum width of the output video in
--   pixels. If you specify <tt>auto</tt> , Elastic Transcoder uses 1920
--   (Full HD) as the default value. If you specify a numeric value, enter
--   an even integer between 128 and 4096.</li>
--   <li><a>vpBitRate</a> - The bit rate of the video stream in the output
--   file, in kilobits<i>second. Valid values depend on the values of
--   <tt>Level</tt> and <tt>Profile</tt> . If you specify <tt>auto</tt> ,
--   Elastic Transcoder uses the detected bit rate of the input source. If
--   you specify a value other than <tt>auto</tt> , we recommend that you
--   specify a value less than or equal to the maximum H.264-compliant
--   value listed for your level and profile: </i>Level - Maximum video bit
--   rate in kilobits/second (baseline and main Profile) : maximum video
--   bit rate in kilobits/second (high Profile)/ * 1 - 64 : 80 * 1b - 128 :
--   160 * 1.1 - 192 : 240 * 1.2 - 384 : 480 * 1.3 - 768 : 960 * 2 - 2000 :
--   2500 * 3 - 10000 : 12500 * 3.1 - 14000 : 17500 * 3.2 - 20000 : 25000 *
--   4 - 20000 : 25000 * 4.1 - 50000 : 62500</li>
--   <li><a>vpFixedGOP</a> - Applicable only when the value of Video:Codec
--   is one of <tt>H.264</tt> , <tt>MPEG2</tt> , or <tt>VP8</tt> . Whether
--   to use a fixed value for <tt>FixedGOP</tt> . Valid values are
--   <tt>true</tt> and <tt>false</tt> : * <tt>true</tt> : Elastic
--   Transcoder uses the value of <tt>KeyframesMaxDist</tt> for the
--   distance between key frames (the number of frames in a group of
--   pictures, or GOP). * <tt>false</tt> : The distance between key frames
--   can vary. <i>Important:</i> <tt>FixedGOP</tt> must be set to
--   <tt>true</tt> for <tt>fmp4</tt> containers.</li>
--   <li><a>vpCodecOptions</a> - <b>Profile (H.264<i>VP8</i>VP9 Only)</b>
--   The H.264 profile that you want to use for the output file. Elastic
--   Transcoder supports the following profiles: * <tt>baseline</tt> : The
--   profile most commonly used for videoconferencing and for mobile
--   applications. * <tt>main</tt> : The profile used for
--   standard-definition digital TV broadcasts. * <tt>high</tt> : The
--   profile used for high-definition digital TV broadcasts and for Blu-ray
--   discs. <b>Level (H.264 Only)</b> The H.264 level that you want to use
--   for the output file. Elastic Transcoder supports the following levels:
--   <tt>1</tt> , <tt>1b</tt> , <tt>1.1</tt> , <tt>1.2</tt> , <tt>1.3</tt>
--   , <tt>2</tt> , <tt>2.1</tt> , <tt>2.2</tt> , <tt>3</tt> , <tt>3.1</tt>
--   , <tt>3.2</tt> , <tt>4</tt> , <tt>4.1</tt> <b>MaxReferenceFrames
--   (H.264 Only)</b> Applicable only when the value of Video:Codec is
--   H.264. The maximum number of previously decoded frames to use as a
--   reference for decoding future frames. Valid values are integers 0
--   through 16, but we recommend that you not use a value greater than the
--   following: <tt>Min(Floor(Maximum decoded picture buffer in macroblocks
--   * 256 / (Width in pixels * Height in pixels)), 16)</tt> where <i>Width
--   in pixels</i> and <i>Height in pixels</i> represent either MaxWidth
--   and MaxHeight, or Resolution. <i>Maximum decoded picture buffer in
--   macroblocks</i> depends on the value of the <tt>Level</tt> object. See
--   the list below. (A macroblock is a block of pixels measuring 16x16.) *
--   1 - 396 * 1b - 396 * 1.1 - 900 * 1.2 - 2376 * 1.3 - 2376 * 2 - 2376 *
--   2.1 - 4752 * 2.2 - 8100 * 3 - 8100 * 3.1 - 18000 * 3.2 - 20480 * 4 -
--   32768 * 4.1 - 32768 <b>MaxBitRate (Optional, H.264<i>MPEG2</i>VP8/VP9
--   only)</b> The maximum number of bits per second in a video buffer; the
--   size of the buffer is specified by <tt>BufferSize</tt> . Specify a
--   value between 16 and 62,500. You can reduce the bandwidth required to
--   stream a video by reducing the maximum bit rate, but this also reduces
--   the quality of the video. <b>BufferSize (Optional,
--   H.264<i>MPEG2</i>VP8/VP9 only)</b> The maximum number of bits in any x
--   seconds of the output video. This window is commonly 10 seconds, the
--   standard segment duration when you're using FMP4 or MPEG-TS for the
--   container type of the output video. Specify an integer greater than 0.
--   If you specify <tt>MaxBitRate</tt> and omit <tt>BufferSize</tt> ,
--   Elastic Transcoder sets <tt>BufferSize</tt> to 10 times the value of
--   <tt>MaxBitRate</tt> . <b>InterlacedMode (Optional, H.264/MPEG2
--   Only)</b> The interlace mode for the output video. Interlaced video is
--   used to double the perceived frame rate for a video by interlacing two
--   fields (one field on every other line, the other field on the other
--   lines) so that the human eye registers multiple pictures per frame.
--   Interlacing reduces the bandwidth required for transmitting a video,
--   but can result in blurred images and flickering. Valid values include
--   <tt>Progressive</tt> (no interlacing, top to bottom),
--   <tt>TopFirst</tt> (top field first), <tt>BottomFirst</tt> (bottom
--   field first), and <tt>Auto</tt> . If <tt>InterlaceMode</tt> is not
--   specified, Elastic Transcoder uses <tt>Progressive</tt> for the
--   output. If <tt>Auto</tt> is specified, Elastic Transcoder interlaces
--   the output. <b>ColorSpaceConversionMode (Optional, H.264/MPEG2
--   Only)</b> The color space conversion Elastic Transcoder applies to the
--   output video. Color spaces are the algorithms used by the computer to
--   store information about how to render color. <tt>Bt.601</tt> is the
--   standard for standard definition video, while <tt>Bt.709</tt> is the
--   standard for high definition video. Valid values include <tt>None</tt>
--   , <tt>Bt709toBt601</tt> , <tt>Bt601toBt709</tt> , and <tt>Auto</tt> .
--   If you chose <tt>Auto</tt> for <tt>ColorSpaceConversionMode</tt> and
--   your output is interlaced, your frame rate is one of <tt>23.97</tt> ,
--   <tt>24</tt> , <tt>25</tt> , <tt>29.97</tt> , <tt>50</tt> , or
--   <tt>60</tt> , your <tt>SegmentDuration</tt> is null, and you are using
--   one of the resolution changes from the list below, Elastic Transcoder
--   applies the following color space conversions: * <i>Standard to HD,
--   720x480 to 1920x1080</i> - Elastic Transcoder applies
--   <tt>Bt601ToBt709</tt> * <i>Standard to HD, 720x576 to 1920x1080</i> -
--   Elastic Transcoder applies <tt>Bt601ToBt709</tt> * <i>HD to Standard,
--   1920x1080 to 720x480</i> - Elastic Transcoder applies
--   <tt>Bt709ToBt601</tt> * <i>HD to Standard, 1920x1080 to 720x576</i> -
--   Elastic Transcoder applies <tt>Bt709ToBt601</tt> If you do not specify
--   a <tt>ColorSpaceConversionMode</tt> , Elastic Transcoder does not
--   change the color space of a file. If you are unsure what
--   <tt>ColorSpaceConversionMode</tt> was applied to your output file, you
--   can check the <tt>AppliedColorSpaceConversion</tt> parameter included
--   in your job response. If your job does not have an
--   <tt>AppliedColorSpaceConversion</tt> in its response, no
--   <tt>ColorSpaceConversionMode</tt> was applied.
--   <b>ChromaSubsampling</b> The sampling pattern for the chroma (color)
--   channels of the output video. Valid values include <tt>yuv420p</tt>
--   and <tt>yuv422p</tt> . <tt>yuv420p</tt> samples the chroma information
--   of every other horizontal and every other vertical line,
--   <tt>yuv422p</tt> samples the color information of every horizontal
--   line and every other vertical line. <b>LoopCount (Gif Only)</b> The
--   number of times you want the output gif to loop. Valid values include
--   <tt>Infinite</tt> and integers between <tt>0</tt> and <tt>100</tt> ,
--   inclusive.</li>
--   </ul>
videoParameters :: VideoParameters

-- | Applicable only when the value of Video:Codec is one of <tt>H.264</tt>
--   , <tt>MPEG2</tt> , or <tt>VP8</tt> . The maximum number of frames
--   between key frames. Key frames are fully encoded frames; the frames
--   between key frames are encoded based, in part, on the content of the
--   key frames. The value is an integer formatted as a string; valid
--   values are between 1 (every frame is a key frame) and 100000,
--   inclusive. A higher value results in higher compression but may also
--   discernibly decrease video quality. For <tt>Smooth</tt> outputs, the
--   <tt>FrameRate</tt> must have a constant ratio to the
--   <tt>KeyframesMaxDist</tt> . This allows <tt>Smooth</tt> playlists to
--   switch between different quality levels while the file is being
--   played. For example, an input file can have a <tt>FrameRate</tt> of 30
--   with a <tt>KeyframesMaxDist</tt> of 90. The output file then needs to
--   have a ratio of 1:3. Valid outputs would have <tt>FrameRate</tt> of
--   30, 25, and 10, and <tt>KeyframesMaxDist</tt> of 90, 75, and 30,
--   respectively. Alternately, this can be achieved by setting
--   <tt>FrameRate</tt> to auto and having the same values for
--   <tt>MaxFrameRate</tt> and <tt>KeyframesMaxDist</tt> .
vpKeyframesMaxDist :: Lens' VideoParameters (Maybe Text)

-- | The frames per second for the video stream in the output file. Valid
--   values include: <tt>auto</tt> , <tt>10</tt> , <tt>15</tt> ,
--   <tt>23.97</tt> , <tt>24</tt> , <tt>25</tt> , <tt>29.97</tt> ,
--   <tt>30</tt> , <tt>60</tt> If you specify <tt>auto</tt> , Elastic
--   Transcoder uses the detected frame rate of the input source. If you
--   specify a frame rate, we recommend that you perform the following
--   calculation: <tt>Frame rate = maximum recommended decoding speed in
--   luma samples<i>second </i> (width in pixels * height in pixels)</tt>
--   where: * <i>width in pixels</i> and <i>height in pixels</i> represent
--   the Resolution of the output video. * <i>maximum recommended decoding
--   speed in Luma samples/second</i> is less than or equal to the maximum
--   value listed in the following table, based on the value that you
--   specified for Level. The maximum recommended decoding speed in Luma
--   samples<i>second for each level is described in the following list
--   (</i>Level - Decoding speed/ ): * 1 - 380160 * 1b - 380160 * 1.1 -
--   76800 * 1.2 - 1536000 * 1.3 - 3041280 * 2 - 3041280 * 2.1 - 5068800 *
--   2.2 - 5184000 * 3 - 10368000 * 3.1 - 27648000 * 3.2 - 55296000 * 4 -
--   62914560 * 4.1 - 62914560
vpFrameRate :: Lens' VideoParameters (Maybe Text)

-- | Specify one of the following values to control scaling of the output
--   video: * <tt>Fit</tt> : Elastic Transcoder scales the output video so
--   it matches the value that you specified in either <tt>MaxWidth</tt> or
--   <tt>MaxHeight</tt> without exceeding the other value. * <tt>Fill</tt>
--   : Elastic Transcoder scales the output video so it matches the value
--   that you specified in either <tt>MaxWidth</tt> or <tt>MaxHeight</tt>
--   and matches or exceeds the other value. Elastic Transcoder centers the
--   output video and then crops it in the dimension (if any) that exceeds
--   the maximum value. * <tt>Stretch</tt> : Elastic Transcoder stretches
--   the output video to match the values that you specified for
--   <tt>MaxWidth</tt> and <tt>MaxHeight</tt> . If the relative proportions
--   of the input video and the output video are different, the output
--   video will be distorted. * <tt>Keep</tt> : Elastic Transcoder does not
--   scale the output video. If either dimension of the input video exceeds
--   the values that you specified for <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> , Elastic Transcoder crops the output video. *
--   <tt>ShrinkToFit</tt> : Elastic Transcoder scales the output video down
--   so that its dimensions match the values that you specified for at
--   least one of <tt>MaxWidth</tt> and <tt>MaxHeight</tt> without
--   exceeding either value. If you specify this option, Elastic Transcoder
--   does not scale the video up. * <tt>ShrinkToFill</tt> : Elastic
--   Transcoder scales the output video down so that its dimensions match
--   the values that you specified for at least one of <tt>MaxWidth</tt>
--   and <tt>MaxHeight</tt> without dropping below either value. If you
--   specify this option, Elastic Transcoder does not scale the video up.
vpSizingPolicy :: Lens' VideoParameters (Maybe Text)

-- | If you specify <tt>auto</tt> for <tt>FrameRate</tt> , Elastic
--   Transcoder uses the frame rate of the input video for the frame rate
--   of the output video. Specify the maximum frame rate that you want
--   Elastic Transcoder to use when the frame rate of the input video is
--   greater than the desired maximum frame rate of the output video. Valid
--   values include: <tt>10</tt> , <tt>15</tt> , <tt>23.97</tt> ,
--   <tt>24</tt> , <tt>25</tt> , <tt>29.97</tt> , <tt>30</tt> , <tt>60</tt>
--   .
vpMaxFrameRate :: Lens' VideoParameters (Maybe Text)

-- | The maximum height of the output video in pixels. If you specify
--   <tt>auto</tt> , Elastic Transcoder uses 1080 (Full HD) as the default
--   value. If you specify a numeric value, enter an even integer between
--   96 and 3072.
vpMaxHeight :: Lens' VideoParameters (Maybe Text)

-- | Settings for the size, location, and opacity of graphics that you want
--   Elastic Transcoder to overlay over videos that are transcoded using
--   this preset. You can specify settings for up to four watermarks.
--   Watermarks appear in the specified size and location, and with the
--   specified opacity for the duration of the transcoded video. Watermarks
--   can be in .png or .jpg format. If you want to display a watermark that
--   is not rectangular, use the .png format, which supports transparency.
--   When you create a job that uses this preset, you specify the .png or
--   .jpg graphics that you want Elastic Transcoder to include in the
--   transcoded videos. You can specify fewer graphics in the job than you
--   specify watermark settings in the preset, which allows you to use the
--   same preset for up to four watermarks that have different dimensions.
vpWatermarks :: Lens' VideoParameters [PresetWatermark]

-- | The value that Elastic Transcoder adds to the metadata in the output
--   file.
vpDisplayAspectRatio :: Lens' VideoParameters (Maybe Text)

-- | <i>Important:</i> To better control resolution and aspect ratio of
--   output videos, we recommend that you use the values <tt>MaxWidth</tt>
--   , <tt>MaxHeight</tt> , <tt>SizingPolicy</tt> , <tt>PaddingPolicy</tt>
--   , and <tt>DisplayAspectRatio</tt> instead of <tt>Resolution</tt> and
--   <tt>AspectRatio</tt> . The two groups of settings are mutually
--   exclusive. Do not use them together. The width and height of the video
--   in the output file, in pixels. Valid values are <tt>auto</tt> and
--   <i>width</i> x <i>height</i> : * <tt>auto</tt> : Elastic Transcoder
--   attempts to preserve the width and height of the input file, subject
--   to the following rules. * <tt><i>width</i> x <i>height</i> </tt> : The
--   width and height of the output video in pixels. Note the following
--   about specifying the width and height: * The width must be an even
--   integer between 128 and 4096, inclusive. * The height must be an even
--   integer between 96 and 3072, inclusive. * If you specify a resolution
--   that is less than the resolution of the input file, Elastic Transcoder
--   rescales the output file to the lower resolution. * If you specify a
--   resolution that is greater than the resolution of the input file,
--   Elastic Transcoder rescales the output to the higher resolution. * We
--   recommend that you specify a resolution for which the product of width
--   and height is less than or equal to the applicable value in the
--   following list (<i>List - Max width x height value</i> ): * 1 - 25344
--   * 1b - 25344 * 1.1 - 101376 * 1.2 - 101376 * 1.3 - 101376 * 2 - 101376
--   * 2.1 - 202752 * 2.2 - 404720 * 3 - 404720 * 3.1 - 921600 * 3.2 -
--   1310720 * 4 - 2097152 * 4.1 - 2097152
vpResolution :: Lens' VideoParameters (Maybe Text)

-- | The video codec for the output file. Valid values include <tt>gif</tt>
--   , <tt>H.264</tt> , <tt>mpeg2</tt> , <tt>vp8</tt> , and <tt>vp9</tt> .
--   You can only specify <tt>vp8</tt> and <tt>vp9</tt> when the container
--   type is <tt>webm</tt> , <tt>gif</tt> when the container type is
--   <tt>gif</tt> , and <tt>mpeg2</tt> when the container type is
--   <tt>mpg</tt> .
vpCodec :: Lens' VideoParameters (Maybe Text)

-- | <i>Important:</i> To better control resolution and aspect ratio of
--   output videos, we recommend that you use the values <tt>MaxWidth</tt>
--   , <tt>MaxHeight</tt> , <tt>SizingPolicy</tt> , <tt>PaddingPolicy</tt>
--   , and <tt>DisplayAspectRatio</tt> instead of <tt>Resolution</tt> and
--   <tt>AspectRatio</tt> . The two groups of settings are mutually
--   exclusive. Do not use them together. The display aspect ratio of the
--   video in the output file. Valid values include: <tt>auto</tt> ,
--   <tt>1:1</tt> , <tt>4:3</tt> , <tt>3:2</tt> , <tt>16:9</tt> If you
--   specify <tt>auto</tt> , Elastic Transcoder tries to preserve the
--   aspect ratio of the input file. If you specify an aspect ratio for the
--   output file that differs from aspect ratio of the input file, Elastic
--   Transcoder adds pillarboxing (black bars on the sides) or letterboxing
--   (black bars on the top and bottom) to maintain the aspect ratio of the
--   active region of the video.
vpAspectRatio :: Lens' VideoParameters (Maybe Text)

-- | When you set <tt>PaddingPolicy</tt> to <tt>Pad</tt> , Elastic
--   Transcoder may add black bars to the top and bottom and/or left and
--   right sides of the output video to make the total size of the output
--   video match the values that you specified for <tt>MaxWidth</tt> and
--   <tt>MaxHeight</tt> .
vpPaddingPolicy :: Lens' VideoParameters (Maybe Text)

-- | The maximum width of the output video in pixels. If you specify
--   <tt>auto</tt> , Elastic Transcoder uses 1920 (Full HD) as the default
--   value. If you specify a numeric value, enter an even integer between
--   128 and 4096.
vpMaxWidth :: Lens' VideoParameters (Maybe Text)

-- | The bit rate of the video stream in the output file, in
--   kilobits<i>second. Valid values depend on the values of <tt>Level</tt>
--   and <tt>Profile</tt> . If you specify <tt>auto</tt> , Elastic
--   Transcoder uses the detected bit rate of the input source. If you
--   specify a value other than <tt>auto</tt> , we recommend that you
--   specify a value less than or equal to the maximum H.264-compliant
--   value listed for your level and profile: </i>Level - Maximum video bit
--   rate in kilobits/second (baseline and main Profile) : maximum video
--   bit rate in kilobits/second (high Profile)/ * 1 - 64 : 80 * 1b - 128 :
--   160 * 1.1 - 192 : 240 * 1.2 - 384 : 480 * 1.3 - 768 : 960 * 2 - 2000 :
--   2500 * 3 - 10000 : 12500 * 3.1 - 14000 : 17500 * 3.2 - 20000 : 25000 *
--   4 - 20000 : 25000 * 4.1 - 50000 : 62500
vpBitRate :: Lens' VideoParameters (Maybe Text)

-- | Applicable only when the value of Video:Codec is one of <tt>H.264</tt>
--   , <tt>MPEG2</tt> , or <tt>VP8</tt> . Whether to use a fixed value for
--   <tt>FixedGOP</tt> . Valid values are <tt>true</tt> and <tt>false</tt>
--   : * <tt>true</tt> : Elastic Transcoder uses the value of
--   <tt>KeyframesMaxDist</tt> for the distance between key frames (the
--   number of frames in a group of pictures, or GOP). * <tt>false</tt> :
--   The distance between key frames can vary. <i>Important:</i>
--   <tt>FixedGOP</tt> must be set to <tt>true</tt> for <tt>fmp4</tt>
--   containers.
vpFixedGOP :: Lens' VideoParameters (Maybe Text)

-- | <b>Profile (H.264<i>VP8</i>VP9 Only)</b> The H.264 profile that you
--   want to use for the output file. Elastic Transcoder supports the
--   following profiles: * <tt>baseline</tt> : The profile most commonly
--   used for videoconferencing and for mobile applications. *
--   <tt>main</tt> : The profile used for standard-definition digital TV
--   broadcasts. * <tt>high</tt> : The profile used for high-definition
--   digital TV broadcasts and for Blu-ray discs. <b>Level (H.264 Only)</b>
--   The H.264 level that you want to use for the output file. Elastic
--   Transcoder supports the following levels: <tt>1</tt> , <tt>1b</tt> ,
--   <tt>1.1</tt> , <tt>1.2</tt> , <tt>1.3</tt> , <tt>2</tt> , <tt>2.1</tt>
--   , <tt>2.2</tt> , <tt>3</tt> , <tt>3.1</tt> , <tt>3.2</tt> , <tt>4</tt>
--   , <tt>4.1</tt> <b>MaxReferenceFrames (H.264 Only)</b> Applicable only
--   when the value of Video:Codec is H.264. The maximum number of
--   previously decoded frames to use as a reference for decoding future
--   frames. Valid values are integers 0 through 16, but we recommend that
--   you not use a value greater than the following: <tt>Min(Floor(Maximum
--   decoded picture buffer in macroblocks * 256 / (Width in pixels *
--   Height in pixels)), 16)</tt> where <i>Width in pixels</i> and
--   <i>Height in pixels</i> represent either MaxWidth and MaxHeight, or
--   Resolution. <i>Maximum decoded picture buffer in macroblocks</i>
--   depends on the value of the <tt>Level</tt> object. See the list below.
--   (A macroblock is a block of pixels measuring 16x16.) * 1 - 396 * 1b -
--   396 * 1.1 - 900 * 1.2 - 2376 * 1.3 - 2376 * 2 - 2376 * 2.1 - 4752 *
--   2.2 - 8100 * 3 - 8100 * 3.1 - 18000 * 3.2 - 20480 * 4 - 32768 * 4.1 -
--   32768 <b>MaxBitRate (Optional, H.264<i>MPEG2</i>VP8/VP9 only)</b> The
--   maximum number of bits per second in a video buffer; the size of the
--   buffer is specified by <tt>BufferSize</tt> . Specify a value between
--   16 and 62,500. You can reduce the bandwidth required to stream a video
--   by reducing the maximum bit rate, but this also reduces the quality of
--   the video. <b>BufferSize (Optional, H.264<i>MPEG2</i>VP8/VP9 only)</b>
--   The maximum number of bits in any x seconds of the output video. This
--   window is commonly 10 seconds, the standard segment duration when
--   you're using FMP4 or MPEG-TS for the container type of the output
--   video. Specify an integer greater than 0. If you specify
--   <tt>MaxBitRate</tt> and omit <tt>BufferSize</tt> , Elastic Transcoder
--   sets <tt>BufferSize</tt> to 10 times the value of <tt>MaxBitRate</tt>
--   . <b>InterlacedMode (Optional, H.264/MPEG2 Only)</b> The interlace
--   mode for the output video. Interlaced video is used to double the
--   perceived frame rate for a video by interlacing two fields (one field
--   on every other line, the other field on the other lines) so that the
--   human eye registers multiple pictures per frame. Interlacing reduces
--   the bandwidth required for transmitting a video, but can result in
--   blurred images and flickering. Valid values include
--   <tt>Progressive</tt> (no interlacing, top to bottom),
--   <tt>TopFirst</tt> (top field first), <tt>BottomFirst</tt> (bottom
--   field first), and <tt>Auto</tt> . If <tt>InterlaceMode</tt> is not
--   specified, Elastic Transcoder uses <tt>Progressive</tt> for the
--   output. If <tt>Auto</tt> is specified, Elastic Transcoder interlaces
--   the output. <b>ColorSpaceConversionMode (Optional, H.264/MPEG2
--   Only)</b> The color space conversion Elastic Transcoder applies to the
--   output video. Color spaces are the algorithms used by the computer to
--   store information about how to render color. <tt>Bt.601</tt> is the
--   standard for standard definition video, while <tt>Bt.709</tt> is the
--   standard for high definition video. Valid values include <tt>None</tt>
--   , <tt>Bt709toBt601</tt> , <tt>Bt601toBt709</tt> , and <tt>Auto</tt> .
--   If you chose <tt>Auto</tt> for <tt>ColorSpaceConversionMode</tt> and
--   your output is interlaced, your frame rate is one of <tt>23.97</tt> ,
--   <tt>24</tt> , <tt>25</tt> , <tt>29.97</tt> , <tt>50</tt> , or
--   <tt>60</tt> , your <tt>SegmentDuration</tt> is null, and you are using
--   one of the resolution changes from the list below, Elastic Transcoder
--   applies the following color space conversions: * <i>Standard to HD,
--   720x480 to 1920x1080</i> - Elastic Transcoder applies
--   <tt>Bt601ToBt709</tt> * <i>Standard to HD, 720x576 to 1920x1080</i> -
--   Elastic Transcoder applies <tt>Bt601ToBt709</tt> * <i>HD to Standard,
--   1920x1080 to 720x480</i> - Elastic Transcoder applies
--   <tt>Bt709ToBt601</tt> * <i>HD to Standard, 1920x1080 to 720x576</i> -
--   Elastic Transcoder applies <tt>Bt709ToBt601</tt> If you do not specify
--   a <tt>ColorSpaceConversionMode</tt> , Elastic Transcoder does not
--   change the color space of a file. If you are unsure what
--   <tt>ColorSpaceConversionMode</tt> was applied to your output file, you
--   can check the <tt>AppliedColorSpaceConversion</tt> parameter included
--   in your job response. If your job does not have an
--   <tt>AppliedColorSpaceConversion</tt> in its response, no
--   <tt>ColorSpaceConversionMode</tt> was applied.
--   <b>ChromaSubsampling</b> The sampling pattern for the chroma (color)
--   channels of the output video. Valid values include <tt>yuv420p</tt>
--   and <tt>yuv422p</tt> . <tt>yuv420p</tt> samples the chroma information
--   of every other horizontal and every other vertical line,
--   <tt>yuv422p</tt> samples the color information of every horizontal
--   line and every other vertical line. <b>LoopCount (Gif Only)</b> The
--   number of times you want the output gif to loop. Valid values include
--   <tt>Infinite</tt> and integers between <tt>0</tt> and <tt>100</tt> ,
--   inclusive.
vpCodecOptions :: Lens' VideoParameters (HashMap Text Text)

-- | Elastic Transcoder returns a warning if the resources used by your
--   pipeline are not in the same region as the pipeline.
--   
--   Using resources in the same region, such as your Amazon S3 buckets,
--   Amazon SNS notification topics, and AWS KMS key, reduces processing
--   time and prevents cross-regional charges.
--   
--   <i>See:</i> <a>warning</a> smart constructor.
data Warning

-- | Creates a value of <a>Warning</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>wCode</a> - The code of the cross-regional warning.</li>
--   <li><a>wMessage</a> - The message explaining what resources are in a
--   different region from the pipeline.</li>
--   </ul>
warning :: Warning

-- | The code of the cross-regional warning.
wCode :: Lens' Warning (Maybe Text)

-- | The message explaining what resources are in a different region from
--   the pipeline.
wMessage :: Lens' Warning (Maybe Text)
