/*
* 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 set Codec, under VideoDescription>CodecSettings to the value AV1.
///
public partial class Av1Settings
{
private Av1AdaptiveQuantization _adaptiveQuantization;
private Av1BitDepth _bitDepth;
private Av1FramerateControl _framerateControl;
private Av1FramerateConversionAlgorithm _framerateConversionAlgorithm;
private int? _framerateDenominator;
private int? _framerateNumerator;
private double? _gopSize;
private int? _maxBitrate;
private int? _numberBFramesBetweenReferenceFrames;
private Av1QvbrSettings _qvbrSettings;
private Av1RateControlMode _rateControlMode;
private int? _slices;
private Av1SpatialAdaptiveQuantization _spatialAdaptiveQuantization;
///
/// Gets and sets the property AdaptiveQuantization. Specify the strength of any adaptive
/// quantization filters that you enable. The value that you choose here applies to Spatial
/// adaptive quantization.
///
public Av1AdaptiveQuantization AdaptiveQuantization
{
get { return this._adaptiveQuantization; }
set { this._adaptiveQuantization = value; }
}
// Check to see if AdaptiveQuantization property is set
internal bool IsSetAdaptiveQuantization()
{
return this._adaptiveQuantization != null;
}
///
/// Gets and sets the property BitDepth. Specify the Bit depth. You can choose 8-bit or
/// 10-bit.
///
public Av1BitDepth BitDepth
{
get { return this._bitDepth; }
set { this._bitDepth = value; }
}
// Check to see if BitDepth property is set
internal bool IsSetBitDepth()
{
return this._bitDepth != null;
}
///
/// Gets and sets the property FramerateControl. 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 Av1FramerateControl 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 Av1FramerateConversionAlgorithm 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=2147483647)]
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=1, Max=2147483647)]
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 GopSize. Specify the GOP length (keyframe interval) in
/// frames. With AV1, MediaConvert doesn't support GOP length in seconds. This value must
/// be greater than zero and preferably equal to 1 + ((numberBFrames + 1) * x), where
/// x is an integer value.
///
public double GopSize
{
get { return this._gopSize.GetValueOrDefault(); }
set { this._gopSize = value; }
}
// Check to see if GopSize property is set
internal bool IsSetGopSize()
{
return this._gopSize.HasValue;
}
///
/// Gets and sets the property MaxBitrate. Maximum bitrate in bits/second. For example,
/// enter five megabits per second as 5000000. Required when Rate control mode is QVBR.
///
[AWSProperty(Min=1000, Max=1152000000)]
public int MaxBitrate
{
get { return this._maxBitrate.GetValueOrDefault(); }
set { this._maxBitrate = value; }
}
// Check to see if MaxBitrate property is set
internal bool IsSetMaxBitrate()
{
return this._maxBitrate.HasValue;
}
///
/// Gets and sets the property NumberBFramesBetweenReferenceFrames. Specify from the number
/// of B-frames, in the range of 0-15. For AV1 encoding, we recommend using 7 or 15. Choose
/// a larger number for a lower bitrate and smaller file size; choose a smaller number
/// for better video quality.
///
[AWSProperty(Min=0, Max=15)]
public int NumberBFramesBetweenReferenceFrames
{
get { return this._numberBFramesBetweenReferenceFrames.GetValueOrDefault(); }
set { this._numberBFramesBetweenReferenceFrames = value; }
}
// Check to see if NumberBFramesBetweenReferenceFrames property is set
internal bool IsSetNumberBFramesBetweenReferenceFrames()
{
return this._numberBFramesBetweenReferenceFrames.HasValue;
}
///
/// Gets and sets the property QvbrSettings. Settings for quality-defined variable bitrate
/// encoding with the H.265 codec. Use these settings only when you set QVBR for Rate
/// control mode.
///
public Av1QvbrSettings QvbrSettings
{
get { return this._qvbrSettings; }
set { this._qvbrSettings = value; }
}
// Check to see if QvbrSettings property is set
internal bool IsSetQvbrSettings()
{
return this._qvbrSettings != null;
}
///
/// Gets and sets the property RateControlMode. 'With AV1 outputs, for rate control mode,
/// MediaConvert supports only quality-defined variable bitrate (QVBR). You can''t use
/// CBR or VBR.'
///
public Av1RateControlMode RateControlMode
{
get { return this._rateControlMode; }
set { this._rateControlMode = value; }
}
// Check to see if RateControlMode property is set
internal bool IsSetRateControlMode()
{
return this._rateControlMode != null;
}
///
/// Gets and sets the property Slices. Specify the number of slices per picture. This
/// value must be 1, 2, 4, 8, 16, or 32. For progressive pictures, this value must be
/// less than or equal to the number of macroblock rows. For interlaced pictures, this
/// value must be less than or equal to half the number of macroblock rows.
///
[AWSProperty(Min=1, Max=32)]
public int Slices
{
get { return this._slices.GetValueOrDefault(); }
set { this._slices = value; }
}
// Check to see if Slices property is set
internal bool IsSetSlices()
{
return this._slices.HasValue;
}
///
/// Gets and sets the property SpatialAdaptiveQuantization. Keep the default value, Enabled,
/// to adjust quantization within each frame based on spatial variation of content complexity.
/// When you enable this feature, the encoder uses fewer bits on areas that can sustain
/// more distortion with no noticeable visual degradation and uses more bits on areas
/// where any small distortion will be noticeable. For example, complex textured blocks
/// are encoded with fewer bits and smooth textured blocks are encoded with more bits.
/// Enabling this feature will almost always improve your video quality. Note, though,
/// that this feature doesn't take into account where the viewer's attention is likely
/// to be. If viewers are likely to be focusing their attention on a part of the screen
/// with a lot of complex texture, you might choose to disable this feature. Related setting:
/// When you enable spatial adaptive quantization, set the value for Adaptive quantization
/// depending on your content. For homogeneous content, such as cartoons and video games,
/// set it to Low. For content with a wider variety of textures, set it to High or Higher.
///
public Av1SpatialAdaptiveQuantization SpatialAdaptiveQuantization
{
get { return this._spatialAdaptiveQuantization; }
set { this._spatialAdaptiveQuantization = value; }
}
// Check to see if SpatialAdaptiveQuantization property is set
internal bool IsSetSpatialAdaptiveQuantization()
{
return this._spatialAdaptiveQuantization != null;
}
}
}