/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the mediaconvert-2017-08-29.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.MediaConvert.Model
{
///
/// Required when you choose AVC-Intra for your output video codec. For more information
/// about the AVC-Intra settings, see the relevant specification. For detailed information
/// about SD and HD in AVC-Intra, see https://ieeexplore.ieee.org/document/7290936. For
/// information about 4K/2K in AVC-Intra, see https://pro-av.panasonic.net/en/avc-ultra/AVC-ULTRAoverview.pdf.
///
public partial class AvcIntraSettings
{
private AvcIntraClass _avcIntraClass;
private AvcIntraUhdSettings _avcIntraUhdSettings;
private AvcIntraFramerateControl _framerateControl;
private AvcIntraFramerateConversionAlgorithm _framerateConversionAlgorithm;
private int? _framerateDenominator;
private int? _framerateNumerator;
private AvcIntraInterlaceMode _interlaceMode;
private AvcIntraScanTypeConversionMode _scanTypeConversionMode;
private AvcIntraSlowPal _slowPal;
private AvcIntraTelecine _telecine;
///
/// Gets and sets the property AvcIntraClass. Specify the AVC-Intra class of your output.
/// The AVC-Intra class selection determines the output video bit rate depending on the
/// frame rate of the output. Outputs with higher class values have higher bitrates and
/// improved image quality. Note that for Class 4K/2K, MediaConvert supports only 4:2:2
/// chroma subsampling.
///
public AvcIntraClass AvcIntraClass
{
get { return this._avcIntraClass; }
set { this._avcIntraClass = value; }
}
// Check to see if AvcIntraClass property is set
internal bool IsSetAvcIntraClass()
{
return this._avcIntraClass != null;
}
///
/// Gets and sets the property AvcIntraUhdSettings. Optional when you set AVC-Intra class
/// to Class 4K/2K. When you set AVC-Intra class to a different value, this object isn't
/// allowed.
///
public AvcIntraUhdSettings AvcIntraUhdSettings
{
get { return this._avcIntraUhdSettings; }
set { this._avcIntraUhdSettings = value; }
}
// Check to see if AvcIntraUhdSettings property is set
internal bool IsSetAvcIntraUhdSettings()
{
return this._avcIntraUhdSettings != null;
}
///
/// Gets and sets the property FramerateControl. If you are using the console, use the
/// Framerate setting to specify the frame rate for this output. If you want to keep the
/// same frame rate as the input video, choose Follow source. If you want to do frame
/// rate conversion, choose a frame rate from the dropdown list or choose Custom. The
/// framerates shown in the dropdown list are decimal approximations of fractions. If
/// you choose Custom, specify your frame rate as a fraction.
///
public AvcIntraFramerateControl FramerateControl
{
get { return this._framerateControl; }
set { this._framerateControl = value; }
}
// Check to see if FramerateControl property is set
internal bool IsSetFramerateControl()
{
return this._framerateControl != null;
}
///
/// Gets and sets the property FramerateConversionAlgorithm. Choose the method that you
/// want MediaConvert to use when increasing or decreasing the frame rate. For numerically
/// simple conversions, such as 60 fps to 30 fps: We recommend that you keep the default
/// value, Drop duplicate. For numerically complex conversions, to avoid stutter: Choose
/// Interpolate. This results in a smooth picture, but might introduce undesirable video
/// artifacts. For complex frame rate conversions, especially if your source video has
/// already been converted from its original cadence: Choose FrameFormer to do motion-compensated
/// interpolation. FrameFormer uses the best conversion method frame by frame. Note that
/// using FrameFormer increases the transcoding time and incurs a significant add-on cost.
/// When you choose FrameFormer, your input video resolution must be at least 128x96.
///
public AvcIntraFramerateConversionAlgorithm FramerateConversionAlgorithm
{
get { return this._framerateConversionAlgorithm; }
set { this._framerateConversionAlgorithm = value; }
}
// Check to see if FramerateConversionAlgorithm property is set
internal bool IsSetFramerateConversionAlgorithm()
{
return this._framerateConversionAlgorithm != null;
}
///
/// Gets and sets the property FramerateDenominator. When you use the API for transcode
/// jobs that use frame rate conversion, specify the frame rate as a fraction. For example,
/// 24000 / 1001 = 23.976 fps. Use FramerateDenominator to specify the denominator of
/// this fraction. In this example, use 1001 for the value of FramerateDenominator. When
/// you use the console for transcode jobs that use frame rate conversion, provide the
/// value as a decimal number for Framerate. In this example, specify 23.976.
///
[AWSProperty(Min=1, Max=1001)]
public int FramerateDenominator
{
get { return this._framerateDenominator.GetValueOrDefault(); }
set { this._framerateDenominator = value; }
}
// Check to see if FramerateDenominator property is set
internal bool IsSetFramerateDenominator()
{
return this._framerateDenominator.HasValue;
}
///
/// Gets and sets the property FramerateNumerator. When you use the API for transcode
/// jobs that use frame rate conversion, specify the frame rate as a fraction. For example,
/// 24000 / 1001 = 23.976 fps. Use FramerateNumerator to specify the numerator of this
/// fraction. In this example, use 24000 for the value of FramerateNumerator. When you
/// use the console for transcode jobs that use frame rate conversion, provide the value
/// as a decimal number for Framerate. In this example, specify 23.976.
///
[AWSProperty(Min=24, Max=60000)]
public int FramerateNumerator
{
get { return this._framerateNumerator.GetValueOrDefault(); }
set { this._framerateNumerator = value; }
}
// Check to see if FramerateNumerator property is set
internal bool IsSetFramerateNumerator()
{
return this._framerateNumerator.HasValue;
}
///
/// Gets and sets the property InterlaceMode. Choose the scan line type for the output.
/// Keep the default value, Progressive to create a progressive output, regardless of
/// the scan type of your input. Use Top field first or Bottom field first to create an
/// output that's interlaced with the same field polarity throughout. Use Follow, default
/// top or Follow, default bottom to produce outputs with the same field polarity as the
/// source. For jobs that have multiple inputs, the output field polarity might change
/// over the course of the output. Follow behavior depends on the input scan type. If
/// the source is interlaced, the output will be interlaced with the same polarity as
/// the source. If the source is progressive, the output will be interlaced with top field
/// bottom field first, depending on which of the Follow options you choose.
///
public AvcIntraInterlaceMode InterlaceMode
{
get { return this._interlaceMode; }
set { this._interlaceMode = value; }
}
// Check to see if InterlaceMode property is set
internal bool IsSetInterlaceMode()
{
return this._interlaceMode != null;
}
///
/// Gets and sets the property ScanTypeConversionMode. Use this setting for interlaced
/// outputs, when your output frame rate is half of your input frame rate. In this situation,
/// choose Optimized interlacing to create a better quality interlaced output. In this
/// case, each progressive frame from the input corresponds to an interlaced field in
/// the output. Keep the default value, Basic interlacing, for all other output frame
/// rates. With basic interlacing, MediaConvert performs any frame rate conversion first
/// and then interlaces the frames. When you choose Optimized interlacing and you set
/// your output frame rate to a value that isn't suitable for optimized interlacing, MediaConvert
/// automatically falls back to basic interlacing. Required settings: To use optimized
/// interlacing, you must set Telecine to None or Soft. You can't use optimized interlacing
/// for hard telecine outputs. You must also set Interlace mode to a value other than
/// Progressive.
///
public AvcIntraScanTypeConversionMode ScanTypeConversionMode
{
get { return this._scanTypeConversionMode; }
set { this._scanTypeConversionMode = value; }
}
// Check to see if ScanTypeConversionMode property is set
internal bool IsSetScanTypeConversionMode()
{
return this._scanTypeConversionMode != null;
}
///
/// Gets and sets the property SlowPal. Ignore this setting unless your input frame rate
/// is 23.976 or 24 frames per second (fps). Enable slow PAL to create a 25 fps output.
/// When you enable slow PAL, MediaConvert relabels the video frames to 25 fps and resamples
/// your audio to keep it synchronized with the video. Note that enabling this setting
/// will slightly reduce the duration of your video. Required settings: You must also
/// set Framerate to 25.
///
public AvcIntraSlowPal SlowPal
{
get { return this._slowPal; }
set { this._slowPal = value; }
}
// Check to see if SlowPal property is set
internal bool IsSetSlowPal()
{
return this._slowPal != null;
}
///
/// Gets and sets the property Telecine. When you do frame rate conversion from 23.976
/// frames per second (fps) to 29.97 fps, and your output scan type is interlaced, you
/// can optionally enable hard telecine to create a smoother picture. When you keep the
/// default value, None, MediaConvert does a standard frame rate conversion to 29.97 without
/// doing anything with the field polarity to create a smoother picture.
///
public AvcIntraTelecine Telecine
{
get { return this._telecine; }
set { this._telecine = value; }
}
// Check to see if Telecine property is set
internal bool IsSetTelecine()
{
return this._telecine != null;
}
}
}