class Aws::MediaConvert::Types::H264Settings

Required when you set (Codec) under (VideoDescription)>(CodecSettings) to the value H_264.

@note When making an API call, you may pass H264Settings

data as a hash:

    {
      adaptive_quantization: "OFF", # accepts OFF, AUTO, LOW, MEDIUM, HIGH, HIGHER, MAX
      bitrate: 1,
      codec_level: "AUTO", # accepts AUTO, LEVEL_1, LEVEL_1_1, LEVEL_1_2, LEVEL_1_3, LEVEL_2, LEVEL_2_1, LEVEL_2_2, LEVEL_3, LEVEL_3_1, LEVEL_3_2, LEVEL_4, LEVEL_4_1, LEVEL_4_2, LEVEL_5, LEVEL_5_1, LEVEL_5_2
      codec_profile: "BASELINE", # accepts BASELINE, HIGH, HIGH_10BIT, HIGH_422, HIGH_422_10BIT, MAIN
      dynamic_sub_gop: "ADAPTIVE", # accepts ADAPTIVE, STATIC
      entropy_encoding: "CABAC", # accepts CABAC, CAVLC
      field_encoding: "PAFF", # accepts PAFF, FORCE_FIELD, MBAFF
      flicker_adaptive_quantization: "DISABLED", # accepts DISABLED, ENABLED
      framerate_control: "INITIALIZE_FROM_SOURCE", # accepts INITIALIZE_FROM_SOURCE, SPECIFIED
      framerate_conversion_algorithm: "DUPLICATE_DROP", # accepts DUPLICATE_DROP, INTERPOLATE, FRAMEFORMER
      framerate_denominator: 1,
      framerate_numerator: 1,
      gop_b_reference: "DISABLED", # accepts DISABLED, ENABLED
      gop_closed_cadence: 1,
      gop_size: 1.0,
      gop_size_units: "FRAMES", # accepts FRAMES, SECONDS
      hrd_buffer_initial_fill_percentage: 1,
      hrd_buffer_size: 1,
      interlace_mode: "PROGRESSIVE", # accepts PROGRESSIVE, TOP_FIELD, BOTTOM_FIELD, FOLLOW_TOP_FIELD, FOLLOW_BOTTOM_FIELD
      max_bitrate: 1,
      min_i_interval: 1,
      number_b_frames_between_reference_frames: 1,
      number_reference_frames: 1,
      par_control: "INITIALIZE_FROM_SOURCE", # accepts INITIALIZE_FROM_SOURCE, SPECIFIED
      par_denominator: 1,
      par_numerator: 1,
      quality_tuning_level: "SINGLE_PASS", # accepts SINGLE_PASS, SINGLE_PASS_HQ, MULTI_PASS_HQ
      qvbr_settings: {
        max_average_bitrate: 1,
        qvbr_quality_level: 1,
        qvbr_quality_level_fine_tune: 1.0,
      },
      rate_control_mode: "VBR", # accepts VBR, CBR, QVBR
      repeat_pps: "DISABLED", # accepts DISABLED, ENABLED
      scan_type_conversion_mode: "INTERLACED", # accepts INTERLACED, INTERLACED_OPTIMIZE
      scene_change_detect: "DISABLED", # accepts DISABLED, ENABLED, TRANSITION_DETECTION
      slices: 1,
      slow_pal: "DISABLED", # accepts DISABLED, ENABLED
      softness: 1,
      spatial_adaptive_quantization: "DISABLED", # accepts DISABLED, ENABLED
      syntax: "DEFAULT", # accepts DEFAULT, RP2027
      telecine: "NONE", # accepts NONE, SOFT, HARD
      temporal_adaptive_quantization: "DISABLED", # accepts DISABLED, ENABLED
      unregistered_sei_timecode: "DISABLED", # accepts DISABLED, ENABLED
    }

@!attribute [rw] adaptive_quantization

Keep the default value, Auto (AUTO), for this setting to have
MediaConvert automatically apply the best types of quantization for
your video content. When you want to apply your quantization
settings manually, you must set H264AdaptiveQuantization to a value
other than Auto (AUTO). Use this setting to specify the strength of
any adaptive quantization filters that you enable. If you don't
want MediaConvert to do any adaptive quantization in this transcode,
set Adaptive quantization (H264AdaptiveQuantization) to Off (OFF).
Related settings: The value that you choose here applies to the
following settings: H264FlickerAdaptiveQuantization,
H264SpatialAdaptiveQuantization, and
H264TemporalAdaptiveQuantization.
@return [String]

@!attribute [rw] bitrate

Specify the average bitrate in bits per second. Required for VBR and
CBR. For MS Smooth outputs, bitrates must be unique when rounded
down to the nearest multiple of 1000.
@return [Integer]

@!attribute [rw] codec_level

Specify an H.264 level that is consistent with your output video
settings. If you aren't sure what level to specify, choose Auto
(AUTO).
@return [String]

@!attribute [rw] codec_profile

H.264 Profile. High 4:2:2 and 10-bit profiles are only available
with the AVC-I License.
@return [String]

@!attribute [rw] dynamic_sub_gop

Choose Adaptive to improve subjective video quality for high-motion
content. This will cause the service to use fewer B-frames (which
infer information based on other frames) for high-motion portions of
the video and more B-frames for low-motion portions. The maximum
number of B-frames is limited by the value you provide for the
setting B frames between reference frames
(numberBFramesBetweenReferenceFrames).
@return [String]

@!attribute [rw] entropy_encoding

Entropy encoding mode. Use CABAC (must be in Main or High profile)
or CAVLC.
@return [String]

@!attribute [rw] field_encoding

The video encoding method for your MPEG-4 AVC output. Keep the
default value, PAFF, to have MediaConvert use PAFF encoding for
interlaced outputs. Choose Force field (FORCE\_FIELD) to disable
PAFF encoding and create separate interlaced fields. Choose MBAFF to
disable PAFF and have MediaConvert use MBAFF encoding for interlaced
outputs.
@return [String]

@!attribute [rw] flicker_adaptive_quantization

Only use this setting when you change the default value, AUTO, for
the setting H264AdaptiveQuantization. When you keep all defaults,
excluding H264AdaptiveQuantization and all other adaptive
quantization from your JSON job specification, MediaConvert
automatically applies the best types of quantization for your video
content. When you set H264AdaptiveQuantization to a value other than
AUTO, the default value for H264FlickerAdaptiveQuantization is
Disabled (DISABLED). Change this value to Enabled (ENABLED) to
reduce I-frame pop. I-frame pop appears as a visual flicker that can
arise when the encoder saves bits by copying some macroblocks many
times from frame to frame, and then refreshes them at the I-frame.
When you enable this setting, the encoder updates these macroblocks
slightly more often to smooth out the flicker. To manually enable or
disable H264FlickerAdaptiveQuantization, you must set Adaptive
quantization (H264AdaptiveQuantization) to a value other than AUTO.
@return [String]

@!attribute [rw] framerate_control

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. If you are creating your transcoding job
specification as a JSON file without the console, use
FramerateControl to specify which value the service uses for the
frame rate for this output. Choose INITIALIZE\_FROM\_SOURCE if you
want the service to use the frame rate from the input. Choose
SPECIFIED if you want the service to use the frame rate you specify
in the settings FramerateNumerator and FramerateDenominator.
@return [String]

@!attribute [rw] framerate_conversion_algorithm

Choose the method that you want MediaConvert to use when increasing
or decreasing the frame rate. We recommend using drop duplicate
(DUPLICATE\_DROP) for numerically simple conversions, such as 60 fps
to 30 fps. For numerically complex conversions, you can use
interpolate (INTERPOLATE) to avoid stutter. 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, use FrameFormer
(FRAMEFORMER) to do motion-compensated interpolation. FrameFormer
chooses the best conversion method frame by frame. Note that using
FrameFormer increases the transcoding time and incurs a significant
add-on cost.
@return [String]

@!attribute [rw] framerate_denominator

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.
@return [Integer]

@!attribute [rw] framerate_numerator

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.
@return [Integer]

@!attribute [rw] gop_b_reference

If enable, use reference B frames for GOP structures that have B
frames > 1.
@return [String]

@!attribute [rw] gop_closed_cadence

Frequency of closed GOPs. In streaming applications, it is
recommended that this be set to 1 so a decoder joining mid-stream
will receive an IDR frame as quickly as possible. Setting this value
to 0 will break output segmenting.
@return [Integer]

@!attribute [rw] gop_size

GOP Length (keyframe interval) in frames or seconds. Must be greater
than zero.
@return [Float]

@!attribute [rw] gop_size_units

Indicates if the GOP Size in H264 is specified in frames or seconds.
If seconds the system will convert the GOP Size into a frame count
at run time.
@return [String]

@!attribute [rw] hrd_buffer_initial_fill_percentage

Percentage of the buffer that should initially be filled (HRD buffer
model).
@return [Integer]

@!attribute [rw] hrd_buffer_size

Size of buffer (HRD buffer model) in bits. For example, enter five
megabits as 5000000.
@return [Integer]

@!attribute [rw] interlace_mode

Choose the scan line type for the output. Keep the default value,
Progressive (PROGRESSIVE) to create a progressive output, regardless
of the scan type of your input. Use Top field first (TOP\_FIELD) or
Bottom field first (BOTTOM\_FIELD) to create an output that's
interlaced with the same field polarity throughout. Use Follow,
default top (FOLLOW\_TOP\_FIELD) or Follow, default bottom
(FOLLOW\_BOTTOM\_FIELD) 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.
@return [String]

@!attribute [rw] max_bitrate

Maximum bitrate in bits/second. For example, enter five megabits per
second as 5000000. Required when Rate control mode is QVBR.
@return [Integer]

@!attribute [rw] min_i_interval

Enforces separation between repeated (cadence) I-frames and I-frames
inserted by Scene Change Detection. If a scene change I-frame is
within I-interval frames of a cadence I-frame, the GOP is shrunk
and/or stretched to the scene change I-frame. GOP stretch requires
enabling lookahead as well as setting I-interval. The normal cadence
resumes for the next GOP. This setting is only used when Scene
Change Detect is enabled. Note: Maximum GOP stretch = GOP size +
Min-I-interval - 1
@return [Integer]

@!attribute [rw] number_b_frames_between_reference_frames

Specify the number of B-frames that MediaConvert puts between
reference frames in this output. Valid values are whole numbers from
0 through 7. When you don't specify a value, MediaConvert defaults
to 2.
@return [Integer]

@!attribute [rw] number_reference_frames

Number of reference frames to use. The encoder may use more than
requested if using B-frames and/or interlaced encoding.
@return [Integer]

@!attribute [rw] par_control

Optional. Specify how the service determines the pixel aspect ratio
(PAR) for this output. The default behavior, Follow source
(INITIALIZE\_FROM\_SOURCE), uses the PAR from your input video for
your output. To specify a different PAR in the console, choose any
value other than Follow source. To specify a different PAR by
editing the JSON job specification, choose SPECIFIED. When you
choose SPECIFIED for this setting, you must also specify values for
the parNumerator and parDenominator settings.
@return [String]

@!attribute [rw] par_denominator

Required when you set Pixel aspect ratio (parControl) to SPECIFIED.
On the console, this corresponds to any value other than Follow
source. When you specify an output pixel aspect ratio (PAR) that is
different from your input video PAR, provide your output PAR as a
ratio. For example, for D1/DV NTSC widescreen, you would specify the
ratio 40:33. In this example, the value for parDenominator is 33.
@return [Integer]

@!attribute [rw] par_numerator

Required when you set Pixel aspect ratio (parControl) to SPECIFIED.
On the console, this corresponds to any value other than Follow
source. When you specify an output pixel aspect ratio (PAR) that is
different from your input video PAR, provide your output PAR as a
ratio. For example, for D1/DV NTSC widescreen, you would specify the
ratio 40:33. In this example, the value for parNumerator is 40.
@return [Integer]

@!attribute [rw] quality_tuning_level

Optional. Use Quality tuning level (qualityTuningLevel) to choose
how you want to trade off encoding speed for output video quality.
The default behavior is faster, lower quality, single-pass encoding.
@return [String]

@!attribute [rw] qvbr_settings

Settings for quality-defined variable bitrate encoding with the
H.265 codec. Use these settings only when you set QVBR for Rate
control mode (RateControlMode).
@return [Types::H264QvbrSettings]

@!attribute [rw] rate_control_mode

Use this setting to specify whether this output has a variable
bitrate (VBR), constant bitrate (CBR) or quality-defined variable
bitrate (QVBR).
@return [String]

@!attribute [rw] repeat_pps

Places a PPS header on each encoded picture, even if repeated.
@return [String]

@!attribute [rw] scan_type_conversion_mode

Use this setting for interlaced outputs, when your output frame rate
is half of your input frame rate. In this situation, choose
Optimized interlacing (INTERLACED\_OPTIMIZE) 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 (INTERLACED), 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 (telecine) to None
(NONE) or Soft (SOFT). You can't use optimized interlacing for hard
telecine outputs. You must also set Interlace mode (interlaceMode)
to a value other than Progressive (PROGRESSIVE).
@return [String]

@!attribute [rw] scene_change_detect

Enable this setting to insert I-frames at scene changes that the
service automatically detects. This improves video quality and is
enabled by default. If this output uses QVBR, choose Transition
detection (TRANSITION\_DETECTION) for further video quality
improvement. For more information about QVBR, see
https://docs.aws.amazon.com/console/mediaconvert/cbr-vbr-qvbr.
@return [String]

@!attribute [rw] slices

Number of slices per picture. Must be less than or equal to the
number of macroblock rows for progressive pictures, and less than or
equal to half the number of macroblock rows for interlaced pictures.
@return [Integer]

@!attribute [rw] slow_pal

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. In your JSON job specification, set
(framerateControl) to (SPECIFIED), (framerateNumerator) to 25 and
(framerateDenominator) to 1.
@return [String]

@!attribute [rw] softness

Ignore this setting unless you need to comply with a specification
that requires a specific value. If you don't have a specification
requirement, we recommend that you adjust the softness of your
output by using a lower value for the setting Sharpness (sharpness)
or by enabling a noise reducer filter (noiseReducerFilter). The
Softness (softness) setting specifies the quantization matrices that
the encoder uses. Keep the default value, 0, for flat quantization.
Choose the value 1 or 16 to use the default JVT softening
quantization matricies from the H.264 specification. Choose a value
from 17 to 128 to use planar interpolation. Increasing values from
17 to 128 result in increasing reduction of high-frequency data. The
value 128 results in the softest video.
@return [Integer]

@!attribute [rw] spatial_adaptive_quantization

Only use this setting when you change the default value, Auto
(AUTO), for the setting H264AdaptiveQuantization. When you keep all
defaults, excluding H264AdaptiveQuantization and all other adaptive
quantization from your JSON job specification, MediaConvert
automatically applies the best types of quantization for your video
content. When you set H264AdaptiveQuantization to a value other than
AUTO, the default value for H264SpatialAdaptiveQuantization is
Enabled (ENABLED). Keep this default value 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 set
H264SpatialAdaptiveQuantization to Disabled (DISABLED). Related
setting: When you enable spatial adaptive quantization, set the
value for Adaptive quantization (H264AdaptiveQuantization) 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. To manually enable or disable
H264SpatialAdaptiveQuantization, you must set Adaptive quantization
(H264AdaptiveQuantization) to a value other than AUTO.
@return [String]

@!attribute [rw] syntax

Produces a bitstream compliant with SMPTE RP-2027.
@return [String]

@!attribute [rw] 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 or soft telecine to create a smoother
picture. Hard telecine (HARD) produces a 29.97i output. Soft
telecine (SOFT) produces an output with a 23.976 output that signals
to the video player device to do the conversion during play back.
When you keep the default value, None (NONE), MediaConvert does a
standard frame rate conversion to 29.97 without doing anything with
the field polarity to create a smoother picture.
@return [String]

@!attribute [rw] temporal_adaptive_quantization

Only use this setting when you change the default value, AUTO, for
the setting H264AdaptiveQuantization. When you keep all defaults,
excluding H264AdaptiveQuantization and all other adaptive
quantization from your JSON job specification, MediaConvert
automatically applies the best types of quantization for your video
content. When you set H264AdaptiveQuantization to a value other than
AUTO, the default value for H264TemporalAdaptiveQuantization is
Enabled (ENABLED). Keep this default value to adjust quantization
within each frame based on temporal variation of content complexity.
When you enable this feature, the encoder uses fewer bits on areas
of the frame that aren't moving and uses more bits on complex
objects with sharp edges that move a lot. For example, this feature
improves the readability of text tickers on newscasts and
scoreboards on sports matches. 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 that doesn't have moving objects with sharp
edges, such as sports athletes' faces, you might choose to set
H264TemporalAdaptiveQuantization to Disabled (DISABLED). Related
setting: When you enable temporal quantization, adjust the strength
of the filter with the setting Adaptive quantization
(adaptiveQuantization). To manually enable or disable
H264TemporalAdaptiveQuantization, you must set Adaptive quantization
(H264AdaptiveQuantization) to a value other than AUTO.
@return [String]

@!attribute [rw] unregistered_sei_timecode

Inserts timecode for each frame as 4 bytes of an unregistered SEI
message.
@return [String]

@see docs.aws.amazon.com/goto/WebAPI/mediaconvert-2017-08-29/H264Settings AWS API Documentation

Constants

SENSITIVE