From 46ceb4a609642584fee39e2bc11fffd588895519 Mon Sep 17 00:00:00 2001 From: AsyncAws Bot Date: Thu, 18 Dec 2025 06:40:19 +0000 Subject: [PATCH] update generated code --- manifest.json | 2 +- src/Service/MediaConvert/CHANGELOG.md | 1 + .../src/Enum/AudioDefaultSelection.php | 8 +- .../src/Enum/CaptionSourceType.php | 2 + .../src/Enum/H265MvOverPictureBoundaries.php | 21 +++ .../src/Enum/H265MvTemporalPredictor.php | 21 +++ .../MediaConvert/src/Enum/H265TilePadding.php | 22 +++ .../src/Enum/H265TreeBlockSize.php | 22 +++ .../src/Result/CreateJobResponse.php | 8 + .../src/Result/GetJobResponse.php | 8 + .../src/Result/ListJobsResponse.php | 8 + .../src/ValueObject/AudioSelector.php | 8 +- .../src/ValueObject/H265Settings.php | 145 ++++++++++++++++++ .../src/ValueObject/InputVideoGenerator.php | 19 +++ .../src/ValueObject/VideoOverlayInput.php | 33 ++++ 15 files changed, 323 insertions(+), 5 deletions(-) create mode 100644 src/Service/MediaConvert/src/Enum/H265MvOverPictureBoundaries.php create mode 100644 src/Service/MediaConvert/src/Enum/H265MvTemporalPredictor.php create mode 100644 src/Service/MediaConvert/src/Enum/H265TilePadding.php create mode 100644 src/Service/MediaConvert/src/Enum/H265TreeBlockSize.php diff --git a/manifest.json b/manifest.json index 2836438c6..d9663e556 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "variables": { - "${LATEST}": "3.367.1" + "${LATEST}": "3.368.1" }, "endpoints": "https://raw.githubusercontent.com/aws/aws-sdk-php/${LATEST}/src/data/endpoints.json", "services": { diff --git a/src/Service/MediaConvert/CHANGELOG.md b/src/Service/MediaConvert/CHANGELOG.md index 12b9cf61a..624a9a7dd 100644 --- a/src/Service/MediaConvert/CHANGELOG.md +++ b/src/Service/MediaConvert/CHANGELOG.md @@ -7,6 +7,7 @@ - AWS api-change: This release adds the ability to set resolution for the black video generator. - AWS api-change: Adds SlowPalPitchCorrection to audio pitch correction settings. Enables opacity for VideoOverlays. Adds REMUX_ALL option to enable multi-rendition passthrough to VideoSelector for allow listed accounts. - AWS api-change: Lowers minimum duration for black video generator. Adds support for embedding and signing C2PA content credentials in DASH and CMAF HLS outputs. +- AWS api-change: Adds support for tile encoding in HEVC and audio for video overlays. ### Dependency bumped diff --git a/src/Service/MediaConvert/src/Enum/AudioDefaultSelection.php b/src/Service/MediaConvert/src/Enum/AudioDefaultSelection.php index fd4b7eaab..0ecf5a9ae 100644 --- a/src/Service/MediaConvert/src/Enum/AudioDefaultSelection.php +++ b/src/Service/MediaConvert/src/Enum/AudioDefaultSelection.php @@ -3,8 +3,12 @@ namespace AsyncAws\MediaConvert\Enum; /** - * Enable this setting on one audio selector to set it as the default for the job. The service uses this default for - * outputs where it can't find the specified input audio. If you don't set a default, those outputs have no audio. + * Specify a fallback audio selector for this input. Use to ensure outputs have audio even when the audio selector you + * specify in your output is missing from the source. DEFAULT (Checked in the MediaConvert console): If your output + * settings specify an audio selector that does not exist in this input, MediaConvert uses this audio selector instead. + * This is useful when you have multiple inputs with a different number of audio tracks. NOT_DEFAULT (Unchecked in the + * MediaConvert console): MediaConvert will not fallback from any missing audio selector. Any output specifying a + * missing audio selector will be silent. */ final class AudioDefaultSelection { diff --git a/src/Service/MediaConvert/src/Enum/CaptionSourceType.php b/src/Service/MediaConvert/src/Enum/CaptionSourceType.php index b1301493e..04d3b27af 100644 --- a/src/Service/MediaConvert/src/Enum/CaptionSourceType.php +++ b/src/Service/MediaConvert/src/Enum/CaptionSourceType.php @@ -20,6 +20,7 @@ final class CaptionSourceType public const STL = 'STL'; public const TELETEXT = 'TELETEXT'; public const TTML = 'TTML'; + public const TT_3GPP = 'TT_3GPP'; public const WEBVTT = 'WEBVTT'; public static function exists(string $value): bool @@ -38,6 +39,7 @@ public static function exists(string $value): bool self::STL => true, self::TELETEXT => true, self::TTML => true, + self::TT_3GPP => true, self::WEBVTT => true, ][$value]); } diff --git a/src/Service/MediaConvert/src/Enum/H265MvOverPictureBoundaries.php b/src/Service/MediaConvert/src/Enum/H265MvOverPictureBoundaries.php new file mode 100644 index 000000000..dc11e4420 --- /dev/null +++ b/src/Service/MediaConvert/src/Enum/H265MvOverPictureBoundaries.php @@ -0,0 +1,21 @@ + true, + self::ENABLED => true, + ][$value]); + } +} diff --git a/src/Service/MediaConvert/src/Enum/H265MvTemporalPredictor.php b/src/Service/MediaConvert/src/Enum/H265MvTemporalPredictor.php new file mode 100644 index 000000000..ca511ddeb --- /dev/null +++ b/src/Service/MediaConvert/src/Enum/H265MvTemporalPredictor.php @@ -0,0 +1,21 @@ + true, + self::ENABLED => true, + ][$value]); + } +} diff --git a/src/Service/MediaConvert/src/Enum/H265TilePadding.php b/src/Service/MediaConvert/src/Enum/H265TilePadding.php new file mode 100644 index 000000000..80bca8f09 --- /dev/null +++ b/src/Service/MediaConvert/src/Enum/H265TilePadding.php @@ -0,0 +1,22 @@ + true, + self::PADDED => true, + ][$value]); + } +} diff --git a/src/Service/MediaConvert/src/Enum/H265TreeBlockSize.php b/src/Service/MediaConvert/src/Enum/H265TreeBlockSize.php new file mode 100644 index 000000000..cd607fe4e --- /dev/null +++ b/src/Service/MediaConvert/src/Enum/H265TreeBlockSize.php @@ -0,0 +1,22 @@ + true, + self::TREE_SIZE_32X32 => true, + ][$value]); + } +} diff --git a/src/Service/MediaConvert/src/Result/CreateJobResponse.php b/src/Service/MediaConvert/src/Result/CreateJobResponse.php index 2a91115b9..d41fb8743 100644 --- a/src/Service/MediaConvert/src/Result/CreateJobResponse.php +++ b/src/Service/MediaConvert/src/Result/CreateJobResponse.php @@ -1157,6 +1157,8 @@ private function populateResultH265Settings(array $json): H265Settings 'InterlaceMode' => isset($json['interlaceMode']) ? (string) $json['interlaceMode'] : null, 'MaxBitrate' => isset($json['maxBitrate']) ? (int) $json['maxBitrate'] : null, 'MinIInterval' => isset($json['minIInterval']) ? (int) $json['minIInterval'] : null, + 'MvOverPictureBoundaries' => isset($json['mvOverPictureBoundaries']) ? (string) $json['mvOverPictureBoundaries'] : null, + 'MvTemporalPredictor' => isset($json['mvTemporalPredictor']) ? (string) $json['mvTemporalPredictor'] : null, 'NumberBFramesBetweenReferenceFrames' => isset($json['numberBFramesBetweenReferenceFrames']) ? (int) $json['numberBFramesBetweenReferenceFrames'] : null, 'NumberReferenceFrames' => isset($json['numberReferenceFrames']) ? (int) $json['numberReferenceFrames'] : null, 'ParControl' => isset($json['parControl']) ? (string) $json['parControl'] : null, @@ -1175,7 +1177,11 @@ private function populateResultH265Settings(array $json): H265Settings 'Telecine' => isset($json['telecine']) ? (string) $json['telecine'] : null, 'TemporalAdaptiveQuantization' => isset($json['temporalAdaptiveQuantization']) ? (string) $json['temporalAdaptiveQuantization'] : null, 'TemporalIds' => isset($json['temporalIds']) ? (string) $json['temporalIds'] : null, + 'TileHeight' => isset($json['tileHeight']) ? (int) $json['tileHeight'] : null, + 'TilePadding' => isset($json['tilePadding']) ? (string) $json['tilePadding'] : null, + 'TileWidth' => isset($json['tileWidth']) ? (int) $json['tileWidth'] : null, 'Tiles' => isset($json['tiles']) ? (string) $json['tiles'] : null, + 'TreeBlockSize' => isset($json['treeBlockSize']) ? (string) $json['treeBlockSize'] : null, 'UnregisteredSeiTimecode' => isset($json['unregisteredSeiTimecode']) ? (string) $json['unregisteredSeiTimecode'] : null, 'WriteMp4PackagingType' => isset($json['writeMp4PackagingType']) ? (string) $json['writeMp4PackagingType'] : null, ]); @@ -1412,6 +1418,7 @@ private function populateResultInputVideoGenerator(array $json): InputVideoGener 'FramerateDenominator' => isset($json['framerateDenominator']) ? (int) $json['framerateDenominator'] : null, 'FramerateNumerator' => isset($json['framerateNumerator']) ? (int) $json['framerateNumerator'] : null, 'Height' => isset($json['height']) ? (int) $json['height'] : null, + 'ImageInput' => isset($json['imageInput']) ? (string) $json['imageInput'] : null, 'SampleRate' => isset($json['sampleRate']) ? (int) $json['sampleRate'] : null, 'Width' => isset($json['width']) ? (int) $json['width'] : null, ]); @@ -2259,6 +2266,7 @@ private function populateResultVideoOverlayCrop(array $json): VideoOverlayCrop private function populateResultVideoOverlayInput(array $json): VideoOverlayInput { return new VideoOverlayInput([ + 'AudioSelectors' => !isset($json['audioSelectors']) ? null : $this->populateResult__mapOfAudioSelector($json['audioSelectors']), 'FileInput' => isset($json['fileInput']) ? (string) $json['fileInput'] : null, 'InputClippings' => !isset($json['inputClippings']) ? null : $this->populateResult__listOfVideoOverlayInputClipping($json['inputClippings']), 'TimecodeSource' => isset($json['timecodeSource']) ? (string) $json['timecodeSource'] : null, diff --git a/src/Service/MediaConvert/src/Result/GetJobResponse.php b/src/Service/MediaConvert/src/Result/GetJobResponse.php index 9f284ca97..a9766a030 100644 --- a/src/Service/MediaConvert/src/Result/GetJobResponse.php +++ b/src/Service/MediaConvert/src/Result/GetJobResponse.php @@ -1157,6 +1157,8 @@ private function populateResultH265Settings(array $json): H265Settings 'InterlaceMode' => isset($json['interlaceMode']) ? (string) $json['interlaceMode'] : null, 'MaxBitrate' => isset($json['maxBitrate']) ? (int) $json['maxBitrate'] : null, 'MinIInterval' => isset($json['minIInterval']) ? (int) $json['minIInterval'] : null, + 'MvOverPictureBoundaries' => isset($json['mvOverPictureBoundaries']) ? (string) $json['mvOverPictureBoundaries'] : null, + 'MvTemporalPredictor' => isset($json['mvTemporalPredictor']) ? (string) $json['mvTemporalPredictor'] : null, 'NumberBFramesBetweenReferenceFrames' => isset($json['numberBFramesBetweenReferenceFrames']) ? (int) $json['numberBFramesBetweenReferenceFrames'] : null, 'NumberReferenceFrames' => isset($json['numberReferenceFrames']) ? (int) $json['numberReferenceFrames'] : null, 'ParControl' => isset($json['parControl']) ? (string) $json['parControl'] : null, @@ -1175,7 +1177,11 @@ private function populateResultH265Settings(array $json): H265Settings 'Telecine' => isset($json['telecine']) ? (string) $json['telecine'] : null, 'TemporalAdaptiveQuantization' => isset($json['temporalAdaptiveQuantization']) ? (string) $json['temporalAdaptiveQuantization'] : null, 'TemporalIds' => isset($json['temporalIds']) ? (string) $json['temporalIds'] : null, + 'TileHeight' => isset($json['tileHeight']) ? (int) $json['tileHeight'] : null, + 'TilePadding' => isset($json['tilePadding']) ? (string) $json['tilePadding'] : null, + 'TileWidth' => isset($json['tileWidth']) ? (int) $json['tileWidth'] : null, 'Tiles' => isset($json['tiles']) ? (string) $json['tiles'] : null, + 'TreeBlockSize' => isset($json['treeBlockSize']) ? (string) $json['treeBlockSize'] : null, 'UnregisteredSeiTimecode' => isset($json['unregisteredSeiTimecode']) ? (string) $json['unregisteredSeiTimecode'] : null, 'WriteMp4PackagingType' => isset($json['writeMp4PackagingType']) ? (string) $json['writeMp4PackagingType'] : null, ]); @@ -1412,6 +1418,7 @@ private function populateResultInputVideoGenerator(array $json): InputVideoGener 'FramerateDenominator' => isset($json['framerateDenominator']) ? (int) $json['framerateDenominator'] : null, 'FramerateNumerator' => isset($json['framerateNumerator']) ? (int) $json['framerateNumerator'] : null, 'Height' => isset($json['height']) ? (int) $json['height'] : null, + 'ImageInput' => isset($json['imageInput']) ? (string) $json['imageInput'] : null, 'SampleRate' => isset($json['sampleRate']) ? (int) $json['sampleRate'] : null, 'Width' => isset($json['width']) ? (int) $json['width'] : null, ]); @@ -2259,6 +2266,7 @@ private function populateResultVideoOverlayCrop(array $json): VideoOverlayCrop private function populateResultVideoOverlayInput(array $json): VideoOverlayInput { return new VideoOverlayInput([ + 'AudioSelectors' => !isset($json['audioSelectors']) ? null : $this->populateResult__mapOfAudioSelector($json['audioSelectors']), 'FileInput' => isset($json['fileInput']) ? (string) $json['fileInput'] : null, 'InputClippings' => !isset($json['inputClippings']) ? null : $this->populateResult__listOfVideoOverlayInputClipping($json['inputClippings']), 'TimecodeSource' => isset($json['timecodeSource']) ? (string) $json['timecodeSource'] : null, diff --git a/src/Service/MediaConvert/src/Result/ListJobsResponse.php b/src/Service/MediaConvert/src/Result/ListJobsResponse.php index 44082facb..5a3806e4b 100644 --- a/src/Service/MediaConvert/src/Result/ListJobsResponse.php +++ b/src/Service/MediaConvert/src/Result/ListJobsResponse.php @@ -1224,6 +1224,8 @@ private function populateResultH265Settings(array $json): H265Settings 'InterlaceMode' => isset($json['interlaceMode']) ? (string) $json['interlaceMode'] : null, 'MaxBitrate' => isset($json['maxBitrate']) ? (int) $json['maxBitrate'] : null, 'MinIInterval' => isset($json['minIInterval']) ? (int) $json['minIInterval'] : null, + 'MvOverPictureBoundaries' => isset($json['mvOverPictureBoundaries']) ? (string) $json['mvOverPictureBoundaries'] : null, + 'MvTemporalPredictor' => isset($json['mvTemporalPredictor']) ? (string) $json['mvTemporalPredictor'] : null, 'NumberBFramesBetweenReferenceFrames' => isset($json['numberBFramesBetweenReferenceFrames']) ? (int) $json['numberBFramesBetweenReferenceFrames'] : null, 'NumberReferenceFrames' => isset($json['numberReferenceFrames']) ? (int) $json['numberReferenceFrames'] : null, 'ParControl' => isset($json['parControl']) ? (string) $json['parControl'] : null, @@ -1242,7 +1244,11 @@ private function populateResultH265Settings(array $json): H265Settings 'Telecine' => isset($json['telecine']) ? (string) $json['telecine'] : null, 'TemporalAdaptiveQuantization' => isset($json['temporalAdaptiveQuantization']) ? (string) $json['temporalAdaptiveQuantization'] : null, 'TemporalIds' => isset($json['temporalIds']) ? (string) $json['temporalIds'] : null, + 'TileHeight' => isset($json['tileHeight']) ? (int) $json['tileHeight'] : null, + 'TilePadding' => isset($json['tilePadding']) ? (string) $json['tilePadding'] : null, + 'TileWidth' => isset($json['tileWidth']) ? (int) $json['tileWidth'] : null, 'Tiles' => isset($json['tiles']) ? (string) $json['tiles'] : null, + 'TreeBlockSize' => isset($json['treeBlockSize']) ? (string) $json['treeBlockSize'] : null, 'UnregisteredSeiTimecode' => isset($json['unregisteredSeiTimecode']) ? (string) $json['unregisteredSeiTimecode'] : null, 'WriteMp4PackagingType' => isset($json['writeMp4PackagingType']) ? (string) $json['writeMp4PackagingType'] : null, ]); @@ -1479,6 +1485,7 @@ private function populateResultInputVideoGenerator(array $json): InputVideoGener 'FramerateDenominator' => isset($json['framerateDenominator']) ? (int) $json['framerateDenominator'] : null, 'FramerateNumerator' => isset($json['framerateNumerator']) ? (int) $json['framerateNumerator'] : null, 'Height' => isset($json['height']) ? (int) $json['height'] : null, + 'ImageInput' => isset($json['imageInput']) ? (string) $json['imageInput'] : null, 'SampleRate' => isset($json['sampleRate']) ? (int) $json['sampleRate'] : null, 'Width' => isset($json['width']) ? (int) $json['width'] : null, ]); @@ -2326,6 +2333,7 @@ private function populateResultVideoOverlayCrop(array $json): VideoOverlayCrop private function populateResultVideoOverlayInput(array $json): VideoOverlayInput { return new VideoOverlayInput([ + 'AudioSelectors' => !isset($json['audioSelectors']) ? null : $this->populateResult__mapOfAudioSelector($json['audioSelectors']), 'FileInput' => isset($json['fileInput']) ? (string) $json['fileInput'] : null, 'InputClippings' => !isset($json['inputClippings']) ? null : $this->populateResult__listOfVideoOverlayInputClipping($json['inputClippings']), 'TimecodeSource' => isset($json['timecodeSource']) ? (string) $json['timecodeSource'] : null, diff --git a/src/Service/MediaConvert/src/ValueObject/AudioSelector.php b/src/Service/MediaConvert/src/ValueObject/AudioSelector.php index c85c8df30..124fed068 100644 --- a/src/Service/MediaConvert/src/ValueObject/AudioSelector.php +++ b/src/Service/MediaConvert/src/ValueObject/AudioSelector.php @@ -40,8 +40,12 @@ final class AudioSelector private $customLanguageCode; /** - * Enable this setting on one audio selector to set it as the default for the job. The service uses this default for - * outputs where it can't find the specified input audio. If you don't set a default, those outputs have no audio. + * Specify a fallback audio selector for this input. Use to ensure outputs have audio even when the audio selector you + * specify in your output is missing from the source. DEFAULT (Checked in the MediaConvert console): If your output + * settings specify an audio selector that does not exist in this input, MediaConvert uses this audio selector instead. + * This is useful when you have multiple inputs with a different number of audio tracks. NOT_DEFAULT (Unchecked in the + * MediaConvert console): MediaConvert will not fallback from any missing audio selector. Any output specifying a + * missing audio selector will be silent. * * @var AudioDefaultSelection::*|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/H265Settings.php b/src/Service/MediaConvert/src/ValueObject/H265Settings.php index 82ee2b955..8686e2a16 100644 --- a/src/Service/MediaConvert/src/ValueObject/H265Settings.php +++ b/src/Service/MediaConvert/src/ValueObject/H265Settings.php @@ -17,6 +17,8 @@ use AsyncAws\MediaConvert\Enum\H265GopBReference; use AsyncAws\MediaConvert\Enum\H265GopSizeUnits; use AsyncAws\MediaConvert\Enum\H265InterlaceMode; +use AsyncAws\MediaConvert\Enum\H265MvOverPictureBoundaries; +use AsyncAws\MediaConvert\Enum\H265MvTemporalPredictor; use AsyncAws\MediaConvert\Enum\H265ParControl; use AsyncAws\MediaConvert\Enum\H265QualityTuningLevel; use AsyncAws\MediaConvert\Enum\H265RateControlMode; @@ -28,7 +30,9 @@ use AsyncAws\MediaConvert\Enum\H265Telecine; use AsyncAws\MediaConvert\Enum\H265TemporalAdaptiveQuantization; use AsyncAws\MediaConvert\Enum\H265TemporalIds; +use AsyncAws\MediaConvert\Enum\H265TilePadding; use AsyncAws\MediaConvert\Enum\H265Tiles; +use AsyncAws\MediaConvert\Enum\H265TreeBlockSize; use AsyncAws\MediaConvert\Enum\H265UnregisteredSeiTimecode; use AsyncAws\MediaConvert\Enum\H265WriteMp4PackagingType; @@ -283,6 +287,22 @@ final class H265Settings */ private $minIinterval; + /** + * If you are setting up the picture as a tile, you must set this to "disabled". In all other configurations, you + * typically enter "enabled". + * + * @var H265MvOverPictureBoundaries::*|null + */ + private $mvOverPictureBoundaries; + + /** + * If you are setting up the picture as a tile, you must set this to "disabled". In other configurations, you typically + * enter "enabled". + * + * @var H265MvTemporalPredictor::*|null + */ + private $mvTemporalPredictor; + /** * Specify the number of B-frames between reference frames in this output. For the best video quality: Leave blank. * MediaConvert automatically determines the number of B-frames to use based on the characteristics of your input video. @@ -473,6 +493,32 @@ final class H265Settings */ private $temporalIds; + /** + * Set this field to set up the picture as a tile. You must also set TileWidth. The tile height must result in 22 or + * fewer rows in the frame. The tile width must result in 20 or fewer columns in the frame. And finally, the product of + * the column count and row count must be 64 or less. If the tile width and height are specified, MediaConvert will + * override the video codec slices field with a value that MediaConvert calculates. + * + * @var int|null + */ + private $tileHeight; + + /** + * Set to "padded" to force MediaConvert to add padding to the frame, to obtain a frame that is a whole multiple of the + * tile size. If you are setting up the picture as a tile, you must enter "padded". In all other configurations, you + * typically enter "none". + * + * @var H265TilePadding::*|null + */ + private $tilePadding; + + /** + * Set this field to set up the picture as a tile. See TileHeight for more information. + * + * @var int|null + */ + private $tileWidth; + /** * Enable use of tiles, allowing horizontal as well as vertical subdivision of the encoded pictures. * @@ -480,6 +526,15 @@ final class H265Settings */ private $tiles; + /** + * Select the tree block size used for encoding. If you enter "auto", the encoder will pick the best size. If you are + * setting up the picture as a tile, you must set this to 32x32. In all other configurations, you typically enter + * "auto". + * + * @var H265TreeBlockSize::*|null + */ + private $treeBlockSize; + /** * Inserts timecode for each frame as 4 bytes of an unregistered SEI message. * @@ -526,6 +581,8 @@ final class H265Settings * InterlaceMode?: H265InterlaceMode::*|null, * MaxBitrate?: int|null, * MinIInterval?: int|null, + * MvOverPictureBoundaries?: H265MvOverPictureBoundaries::*|null, + * MvTemporalPredictor?: H265MvTemporalPredictor::*|null, * NumberBFramesBetweenReferenceFrames?: int|null, * NumberReferenceFrames?: int|null, * ParControl?: H265ParControl::*|null, @@ -544,7 +601,11 @@ final class H265Settings * Telecine?: H265Telecine::*|null, * TemporalAdaptiveQuantization?: H265TemporalAdaptiveQuantization::*|null, * TemporalIds?: H265TemporalIds::*|null, + * TileHeight?: int|null, + * TilePadding?: H265TilePadding::*|null, + * TileWidth?: int|null, * Tiles?: H265Tiles::*|null, + * TreeBlockSize?: H265TreeBlockSize::*|null, * UnregisteredSeiTimecode?: H265UnregisteredSeiTimecode::*|null, * WriteMp4PackagingType?: H265WriteMp4PackagingType::*|null, * } $input @@ -575,6 +636,8 @@ public function __construct(array $input) $this->interlaceMode = $input['InterlaceMode'] ?? null; $this->maxBitrate = $input['MaxBitrate'] ?? null; $this->minIinterval = $input['MinIInterval'] ?? null; + $this->mvOverPictureBoundaries = $input['MvOverPictureBoundaries'] ?? null; + $this->mvTemporalPredictor = $input['MvTemporalPredictor'] ?? null; $this->numberBframesBetweenReferenceFrames = $input['NumberBFramesBetweenReferenceFrames'] ?? null; $this->numberReferenceFrames = $input['NumberReferenceFrames'] ?? null; $this->parControl = $input['ParControl'] ?? null; @@ -593,7 +656,11 @@ public function __construct(array $input) $this->telecine = $input['Telecine'] ?? null; $this->temporalAdaptiveQuantization = $input['TemporalAdaptiveQuantization'] ?? null; $this->temporalIds = $input['TemporalIds'] ?? null; + $this->tileHeight = $input['TileHeight'] ?? null; + $this->tilePadding = $input['TilePadding'] ?? null; + $this->tileWidth = $input['TileWidth'] ?? null; $this->tiles = $input['Tiles'] ?? null; + $this->treeBlockSize = $input['TreeBlockSize'] ?? null; $this->unregisteredSeiTimecode = $input['UnregisteredSeiTimecode'] ?? null; $this->writeMp4PackagingType = $input['WriteMp4PackagingType'] ?? null; } @@ -624,6 +691,8 @@ public function __construct(array $input) * InterlaceMode?: H265InterlaceMode::*|null, * MaxBitrate?: int|null, * MinIInterval?: int|null, + * MvOverPictureBoundaries?: H265MvOverPictureBoundaries::*|null, + * MvTemporalPredictor?: H265MvTemporalPredictor::*|null, * NumberBFramesBetweenReferenceFrames?: int|null, * NumberReferenceFrames?: int|null, * ParControl?: H265ParControl::*|null, @@ -642,7 +711,11 @@ public function __construct(array $input) * Telecine?: H265Telecine::*|null, * TemporalAdaptiveQuantization?: H265TemporalAdaptiveQuantization::*|null, * TemporalIds?: H265TemporalIds::*|null, + * TileHeight?: int|null, + * TilePadding?: H265TilePadding::*|null, + * TileWidth?: int|null, * Tiles?: H265Tiles::*|null, + * TreeBlockSize?: H265TreeBlockSize::*|null, * UnregisteredSeiTimecode?: H265UnregisteredSeiTimecode::*|null, * WriteMp4PackagingType?: H265WriteMp4PackagingType::*|null, * }|H265Settings $input @@ -811,6 +884,22 @@ public function getMinIinterval(): ?int return $this->minIinterval; } + /** + * @return H265MvOverPictureBoundaries::*|null + */ + public function getMvOverPictureBoundaries(): ?string + { + return $this->mvOverPictureBoundaries; + } + + /** + * @return H265MvTemporalPredictor::*|null + */ + public function getMvTemporalPredictor(): ?string + { + return $this->mvTemporalPredictor; + } + public function getNumberBframesBetweenReferenceFrames(): ?int { return $this->numberBframesBetweenReferenceFrames; @@ -937,6 +1026,24 @@ public function getTemporalIds(): ?string return $this->temporalIds; } + public function getTileHeight(): ?int + { + return $this->tileHeight; + } + + /** + * @return H265TilePadding::*|null + */ + public function getTilePadding(): ?string + { + return $this->tilePadding; + } + + public function getTileWidth(): ?int + { + return $this->tileWidth; + } + /** * @return H265Tiles::*|null */ @@ -945,6 +1052,14 @@ public function getTiles(): ?string return $this->tiles; } + /** + * @return H265TreeBlockSize::*|null + */ + public function getTreeBlockSize(): ?string + { + return $this->treeBlockSize; + } + /** * @return H265UnregisteredSeiTimecode::*|null */ @@ -1078,6 +1193,18 @@ public function requestBody(): array if (null !== $v = $this->minIinterval) { $payload['minIInterval'] = $v; } + if (null !== $v = $this->mvOverPictureBoundaries) { + if (!H265MvOverPictureBoundaries::exists($v)) { + throw new InvalidArgument(\sprintf('Invalid parameter "mvOverPictureBoundaries" for "%s". The value "%s" is not a valid "H265MvOverPictureBoundaries".', __CLASS__, $v)); + } + $payload['mvOverPictureBoundaries'] = $v; + } + if (null !== $v = $this->mvTemporalPredictor) { + if (!H265MvTemporalPredictor::exists($v)) { + throw new InvalidArgument(\sprintf('Invalid parameter "mvTemporalPredictor" for "%s". The value "%s" is not a valid "H265MvTemporalPredictor".', __CLASS__, $v)); + } + $payload['mvTemporalPredictor'] = $v; + } if (null !== $v = $this->numberBframesBetweenReferenceFrames) { $payload['numberBFramesBetweenReferenceFrames'] = $v; } @@ -1173,12 +1300,30 @@ public function requestBody(): array } $payload['temporalIds'] = $v; } + if (null !== $v = $this->tileHeight) { + $payload['tileHeight'] = $v; + } + if (null !== $v = $this->tilePadding) { + if (!H265TilePadding::exists($v)) { + throw new InvalidArgument(\sprintf('Invalid parameter "tilePadding" for "%s". The value "%s" is not a valid "H265TilePadding".', __CLASS__, $v)); + } + $payload['tilePadding'] = $v; + } + if (null !== $v = $this->tileWidth) { + $payload['tileWidth'] = $v; + } if (null !== $v = $this->tiles) { if (!H265Tiles::exists($v)) { throw new InvalidArgument(\sprintf('Invalid parameter "tiles" for "%s". The value "%s" is not a valid "H265Tiles".', __CLASS__, $v)); } $payload['tiles'] = $v; } + if (null !== $v = $this->treeBlockSize) { + if (!H265TreeBlockSize::exists($v)) { + throw new InvalidArgument(\sprintf('Invalid parameter "treeBlockSize" for "%s". The value "%s" is not a valid "H265TreeBlockSize".', __CLASS__, $v)); + } + $payload['treeBlockSize'] = $v; + } if (null !== $v = $this->unregisteredSeiTimecode) { if (!H265UnregisteredSeiTimecode::exists($v)) { throw new InvalidArgument(\sprintf('Invalid parameter "unregisteredSeiTimecode" for "%s". The value "%s" is not a valid "H265UnregisteredSeiTimecode".', __CLASS__, $v)); diff --git a/src/Service/MediaConvert/src/ValueObject/InputVideoGenerator.php b/src/Service/MediaConvert/src/ValueObject/InputVideoGenerator.php index 230ffbae0..b116ea4e5 100644 --- a/src/Service/MediaConvert/src/ValueObject/InputVideoGenerator.php +++ b/src/Service/MediaConvert/src/ValueObject/InputVideoGenerator.php @@ -53,6 +53,14 @@ final class InputVideoGenerator */ private $height; + /** + * Specify the HTTP, HTTPS, or Amazon S3 location of the image that you want to overlay on the video. Use a PNG or TGA + * file. + * + * @var string|null + */ + private $imageInput; + /** * Specify the audio sample rate, in Hz, for the silent audio in your video generator input. * Enter an integer from 32000 to 48000. @@ -77,6 +85,7 @@ final class InputVideoGenerator * FramerateDenominator?: int|null, * FramerateNumerator?: int|null, * Height?: int|null, + * ImageInput?: string|null, * SampleRate?: int|null, * Width?: int|null, * } $input @@ -88,6 +97,7 @@ public function __construct(array $input) $this->framerateDenominator = $input['FramerateDenominator'] ?? null; $this->framerateNumerator = $input['FramerateNumerator'] ?? null; $this->height = $input['Height'] ?? null; + $this->imageInput = $input['ImageInput'] ?? null; $this->sampleRate = $input['SampleRate'] ?? null; $this->width = $input['Width'] ?? null; } @@ -99,6 +109,7 @@ public function __construct(array $input) * FramerateDenominator?: int|null, * FramerateNumerator?: int|null, * Height?: int|null, + * ImageInput?: string|null, * SampleRate?: int|null, * Width?: int|null, * }|InputVideoGenerator $input @@ -133,6 +144,11 @@ public function getHeight(): ?int return $this->height; } + public function getImageInput(): ?string + { + return $this->imageInput; + } + public function getSampleRate(): ?int { return $this->sampleRate; @@ -164,6 +180,9 @@ public function requestBody(): array if (null !== $v = $this->height) { $payload['height'] = $v; } + if (null !== $v = $this->imageInput) { + $payload['imageInput'] = $v; + } if (null !== $v = $this->sampleRate) { $payload['sampleRate'] = $v; } diff --git a/src/Service/MediaConvert/src/ValueObject/VideoOverlayInput.php b/src/Service/MediaConvert/src/ValueObject/VideoOverlayInput.php index 1723a8093..b79d05ff6 100644 --- a/src/Service/MediaConvert/src/ValueObject/VideoOverlayInput.php +++ b/src/Service/MediaConvert/src/ValueObject/VideoOverlayInput.php @@ -11,6 +11,18 @@ */ final class VideoOverlayInput { + /** + * Use Audio selectors to specify audio to use during your Video overlay. You can use multiple Audio selectors per Video + * overlay. When you include an Audio selector within a Video overlay, MediaConvert mutes any Audio selectors with the + * same name from the underlying input. For example, if your underlying input has Audio selector 1 and Audio selector 2, + * and your Video overlay only has Audio selector 1, then MediaConvert replaces all audio for Audio selector 1 during + * the Video overlay. To replace all audio for all Audio selectors from the underlying input by using a single Audio + * selector in your overlay, set DefaultSelection to DEFAULT (Check \"Use as default\" in the MediaConvert console). + * + * @var array|null + */ + private $audioSelectors; + /** * Specify the input file S3, HTTP, or HTTPS URL for your video overlay. * To specify one or more Transitions for your base input video instead: Leave blank. @@ -47,6 +59,7 @@ final class VideoOverlayInput /** * @param array{ + * AudioSelectors?: array|null, * FileInput?: string|null, * InputClippings?: array|null, * TimecodeSource?: InputTimecodeSource::*|null, @@ -55,6 +68,7 @@ final class VideoOverlayInput */ public function __construct(array $input) { + $this->audioSelectors = isset($input['AudioSelectors']) ? array_map([AudioSelector::class, 'create'], $input['AudioSelectors']) : null; $this->fileInput = $input['FileInput'] ?? null; $this->inputClippings = isset($input['InputClippings']) ? array_map([VideoOverlayInputClipping::class, 'create'], $input['InputClippings']) : null; $this->timecodeSource = $input['TimecodeSource'] ?? null; @@ -63,6 +77,7 @@ public function __construct(array $input) /** * @param array{ + * AudioSelectors?: array|null, * FileInput?: string|null, * InputClippings?: array|null, * TimecodeSource?: InputTimecodeSource::*|null, @@ -74,6 +89,14 @@ public static function create($input): self return $input instanceof self ? $input : new self($input); } + /** + * @return array + */ + public function getAudioSelectors(): array + { + return $this->audioSelectors ?? []; + } + public function getFileInput(): ?string { return $this->fileInput; @@ -106,6 +129,16 @@ public function getTimecodeStart(): ?string public function requestBody(): array { $payload = []; + if (null !== $v = $this->audioSelectors) { + if (empty($v)) { + $payload['audioSelectors'] = new \stdClass(); + } else { + $payload['audioSelectors'] = []; + foreach ($v as $name => $mv) { + $payload['audioSelectors'][$name] = $mv->requestBody(); + } + } + } if (null !== $v = $this->fileInput) { $payload['fileInput'] = $v; }