From 18b13f720065b26ef7fa73ee3e52b2c466120cc9 Mon Sep 17 00:00:00 2001 From: AsyncAws Bot Date: Thu, 2 Jul 2026 09:21:01 +0000 Subject: [PATCH] update generated code --- manifest.json | 2 +- src/Service/MediaConvert/CHANGELOG.md | 4 + src/Service/MediaConvert/composer.json | 2 +- .../Enum/H264ExplicitWeightedPrediction.php | 25 +++++ .../src/Result/CreateJobResponse.php | 13 +++ .../src/Result/GetJobResponse.php | 13 +++ .../src/Result/ListJobsResponse.php | 13 +++ .../src/ValueObject/DurationControl.php | 96 +++++++++++++++++++ .../src/ValueObject/H264Settings.php | 27 ++++++ .../src/ValueObject/VideoPreprocessor.php | 20 ++++ 10 files changed, 213 insertions(+), 2 deletions(-) create mode 100644 src/Service/MediaConvert/src/Enum/H264ExplicitWeightedPrediction.php create mode 100644 src/Service/MediaConvert/src/ValueObject/DurationControl.php diff --git a/manifest.json b/manifest.json index 1dd85a7b1..8ddc38cf7 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "variables": { - "${LATEST}": "3.387.0" + "${LATEST}": "3.387.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 322cfb342..463cbe4f3 100644 --- a/src/Service/MediaConvert/CHANGELOG.md +++ b/src/Service/MediaConvert/CHANGELOG.md @@ -2,6 +2,10 @@ ## NOT RELEASED +### Added + +- AWS api-change: Adds support for integer-second duration normalization and the option to disable explicit weighted prediction. + ## 1.15.0 ### Added diff --git a/src/Service/MediaConvert/composer.json b/src/Service/MediaConvert/composer.json index 089f52fab..84e5405a1 100644 --- a/src/Service/MediaConvert/composer.json +++ b/src/Service/MediaConvert/composer.json @@ -32,7 +32,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.16-dev" } } } diff --git a/src/Service/MediaConvert/src/Enum/H264ExplicitWeightedPrediction.php b/src/Service/MediaConvert/src/Enum/H264ExplicitWeightedPrediction.php new file mode 100644 index 000000000..e24096d31 --- /dev/null +++ b/src/Service/MediaConvert/src/Enum/H264ExplicitWeightedPrediction.php @@ -0,0 +1,25 @@ + true, + self::ENABLED => true, + ][$value]); + } +} diff --git a/src/Service/MediaConvert/src/Result/CreateJobResponse.php b/src/Service/MediaConvert/src/Result/CreateJobResponse.php index 0883d771c..cc658fcf9 100644 --- a/src/Service/MediaConvert/src/Result/CreateJobResponse.php +++ b/src/Service/MediaConvert/src/Result/CreateJobResponse.php @@ -191,6 +191,7 @@ use AsyncAws\MediaConvert\Enum\H264DynamicSubGop; use AsyncAws\MediaConvert\Enum\H264EndOfStreamMarkers; use AsyncAws\MediaConvert\Enum\H264EntropyEncoding; +use AsyncAws\MediaConvert\Enum\H264ExplicitWeightedPrediction; use AsyncAws\MediaConvert\Enum\H264FieldEncoding; use AsyncAws\MediaConvert\Enum\H264FlickerAdaptiveQuantization; use AsyncAws\MediaConvert\Enum\H264FramerateControl; @@ -502,6 +503,7 @@ use AsyncAws\MediaConvert\ValueObject\DestinationSettings; use AsyncAws\MediaConvert\ValueObject\DolbyVision; use AsyncAws\MediaConvert\ValueObject\DolbyVisionLevel6Metadata; +use AsyncAws\MediaConvert\ValueObject\DurationControl; use AsyncAws\MediaConvert\ValueObject\DvbNitSettings; use AsyncAws\MediaConvert\ValueObject\DvbSdtSettings; use AsyncAws\MediaConvert\ValueObject\DvbSubDestinationSettings; @@ -1306,6 +1308,15 @@ private function populateResultDolbyVisionLevel6Metadata(array $json): DolbyVisi ]); } + private function populateResultDurationControl(array $json): DurationControl + { + return new DurationControl([ + 'IntegerDurationMaximumCompressionDenominator' => isset($json['integerDurationMaximumCompressionDenominator']) ? (int) $json['integerDurationMaximumCompressionDenominator'] : null, + 'IntegerDurationMaximumCompressionNumerator' => isset($json['integerDurationMaximumCompressionNumerator']) ? (int) $json['integerDurationMaximumCompressionNumerator'] : null, + 'IntegerDurationTrimThresholdMilliseconds' => isset($json['integerDurationTrimThresholdMilliseconds']) ? (int) $json['integerDurationTrimThresholdMilliseconds'] : null, + ]); + } + private function populateResultDvbNitSettings(array $json): DvbNitSettings { return new DvbNitSettings([ @@ -1596,6 +1607,7 @@ private function populateResultH264Settings(array $json): H264Settings 'DynamicSubGop' => isset($json['dynamicSubGop']) ? (!H264DynamicSubGop::exists((string) $json['dynamicSubGop']) ? H264DynamicSubGop::UNKNOWN_TO_SDK : (string) $json['dynamicSubGop']) : null, 'EndOfStreamMarkers' => isset($json['endOfStreamMarkers']) ? (!H264EndOfStreamMarkers::exists((string) $json['endOfStreamMarkers']) ? H264EndOfStreamMarkers::UNKNOWN_TO_SDK : (string) $json['endOfStreamMarkers']) : null, 'EntropyEncoding' => isset($json['entropyEncoding']) ? (!H264EntropyEncoding::exists((string) $json['entropyEncoding']) ? H264EntropyEncoding::UNKNOWN_TO_SDK : (string) $json['entropyEncoding']) : null, + 'ExplicitWeightedPrediction' => isset($json['explicitWeightedPrediction']) ? (!H264ExplicitWeightedPrediction::exists((string) $json['explicitWeightedPrediction']) ? H264ExplicitWeightedPrediction::UNKNOWN_TO_SDK : (string) $json['explicitWeightedPrediction']) : null, 'FieldEncoding' => isset($json['fieldEncoding']) ? (!H264FieldEncoding::exists((string) $json['fieldEncoding']) ? H264FieldEncoding::UNKNOWN_TO_SDK : (string) $json['fieldEncoding']) : null, 'FlickerAdaptiveQuantization' => isset($json['flickerAdaptiveQuantization']) ? (!H264FlickerAdaptiveQuantization::exists((string) $json['flickerAdaptiveQuantization']) ? H264FlickerAdaptiveQuantization::UNKNOWN_TO_SDK : (string) $json['flickerAdaptiveQuantization']) : null, 'FramerateControl' => isset($json['framerateControl']) ? (!H264FramerateControl::exists((string) $json['framerateControl']) ? H264FramerateControl::UNKNOWN_TO_SDK : (string) $json['framerateControl']) : null, @@ -2855,6 +2867,7 @@ private function populateResultVideoPreprocessor(array $json): VideoPreprocessor 'ColorCorrector' => empty($json['colorCorrector']) ? null : $this->populateResultColorCorrector($json['colorCorrector']), 'Deinterlacer' => empty($json['deinterlacer']) ? null : $this->populateResultDeinterlacer($json['deinterlacer']), 'DolbyVision' => empty($json['dolbyVision']) ? null : $this->populateResultDolbyVision($json['dolbyVision']), + 'DurationControl' => empty($json['durationControl']) ? null : $this->populateResultDurationControl($json['durationControl']), 'Hdr10Plus' => empty($json['hdr10Plus']) ? null : $this->populateResultHdr10Plus($json['hdr10Plus']), 'ImageInserter' => empty($json['imageInserter']) ? null : $this->populateResultImageInserter($json['imageInserter']), 'NoiseReducer' => empty($json['noiseReducer']) ? null : $this->populateResultNoiseReducer($json['noiseReducer']), diff --git a/src/Service/MediaConvert/src/Result/GetJobResponse.php b/src/Service/MediaConvert/src/Result/GetJobResponse.php index 1f505b87b..8dceba140 100644 --- a/src/Service/MediaConvert/src/Result/GetJobResponse.php +++ b/src/Service/MediaConvert/src/Result/GetJobResponse.php @@ -191,6 +191,7 @@ use AsyncAws\MediaConvert\Enum\H264DynamicSubGop; use AsyncAws\MediaConvert\Enum\H264EndOfStreamMarkers; use AsyncAws\MediaConvert\Enum\H264EntropyEncoding; +use AsyncAws\MediaConvert\Enum\H264ExplicitWeightedPrediction; use AsyncAws\MediaConvert\Enum\H264FieldEncoding; use AsyncAws\MediaConvert\Enum\H264FlickerAdaptiveQuantization; use AsyncAws\MediaConvert\Enum\H264FramerateControl; @@ -502,6 +503,7 @@ use AsyncAws\MediaConvert\ValueObject\DestinationSettings; use AsyncAws\MediaConvert\ValueObject\DolbyVision; use AsyncAws\MediaConvert\ValueObject\DolbyVisionLevel6Metadata; +use AsyncAws\MediaConvert\ValueObject\DurationControl; use AsyncAws\MediaConvert\ValueObject\DvbNitSettings; use AsyncAws\MediaConvert\ValueObject\DvbSdtSettings; use AsyncAws\MediaConvert\ValueObject\DvbSubDestinationSettings; @@ -1306,6 +1308,15 @@ private function populateResultDolbyVisionLevel6Metadata(array $json): DolbyVisi ]); } + private function populateResultDurationControl(array $json): DurationControl + { + return new DurationControl([ + 'IntegerDurationMaximumCompressionDenominator' => isset($json['integerDurationMaximumCompressionDenominator']) ? (int) $json['integerDurationMaximumCompressionDenominator'] : null, + 'IntegerDurationMaximumCompressionNumerator' => isset($json['integerDurationMaximumCompressionNumerator']) ? (int) $json['integerDurationMaximumCompressionNumerator'] : null, + 'IntegerDurationTrimThresholdMilliseconds' => isset($json['integerDurationTrimThresholdMilliseconds']) ? (int) $json['integerDurationTrimThresholdMilliseconds'] : null, + ]); + } + private function populateResultDvbNitSettings(array $json): DvbNitSettings { return new DvbNitSettings([ @@ -1596,6 +1607,7 @@ private function populateResultH264Settings(array $json): H264Settings 'DynamicSubGop' => isset($json['dynamicSubGop']) ? (!H264DynamicSubGop::exists((string) $json['dynamicSubGop']) ? H264DynamicSubGop::UNKNOWN_TO_SDK : (string) $json['dynamicSubGop']) : null, 'EndOfStreamMarkers' => isset($json['endOfStreamMarkers']) ? (!H264EndOfStreamMarkers::exists((string) $json['endOfStreamMarkers']) ? H264EndOfStreamMarkers::UNKNOWN_TO_SDK : (string) $json['endOfStreamMarkers']) : null, 'EntropyEncoding' => isset($json['entropyEncoding']) ? (!H264EntropyEncoding::exists((string) $json['entropyEncoding']) ? H264EntropyEncoding::UNKNOWN_TO_SDK : (string) $json['entropyEncoding']) : null, + 'ExplicitWeightedPrediction' => isset($json['explicitWeightedPrediction']) ? (!H264ExplicitWeightedPrediction::exists((string) $json['explicitWeightedPrediction']) ? H264ExplicitWeightedPrediction::UNKNOWN_TO_SDK : (string) $json['explicitWeightedPrediction']) : null, 'FieldEncoding' => isset($json['fieldEncoding']) ? (!H264FieldEncoding::exists((string) $json['fieldEncoding']) ? H264FieldEncoding::UNKNOWN_TO_SDK : (string) $json['fieldEncoding']) : null, 'FlickerAdaptiveQuantization' => isset($json['flickerAdaptiveQuantization']) ? (!H264FlickerAdaptiveQuantization::exists((string) $json['flickerAdaptiveQuantization']) ? H264FlickerAdaptiveQuantization::UNKNOWN_TO_SDK : (string) $json['flickerAdaptiveQuantization']) : null, 'FramerateControl' => isset($json['framerateControl']) ? (!H264FramerateControl::exists((string) $json['framerateControl']) ? H264FramerateControl::UNKNOWN_TO_SDK : (string) $json['framerateControl']) : null, @@ -2855,6 +2867,7 @@ private function populateResultVideoPreprocessor(array $json): VideoPreprocessor 'ColorCorrector' => empty($json['colorCorrector']) ? null : $this->populateResultColorCorrector($json['colorCorrector']), 'Deinterlacer' => empty($json['deinterlacer']) ? null : $this->populateResultDeinterlacer($json['deinterlacer']), 'DolbyVision' => empty($json['dolbyVision']) ? null : $this->populateResultDolbyVision($json['dolbyVision']), + 'DurationControl' => empty($json['durationControl']) ? null : $this->populateResultDurationControl($json['durationControl']), 'Hdr10Plus' => empty($json['hdr10Plus']) ? null : $this->populateResultHdr10Plus($json['hdr10Plus']), 'ImageInserter' => empty($json['imageInserter']) ? null : $this->populateResultImageInserter($json['imageInserter']), 'NoiseReducer' => empty($json['noiseReducer']) ? null : $this->populateResultNoiseReducer($json['noiseReducer']), diff --git a/src/Service/MediaConvert/src/Result/ListJobsResponse.php b/src/Service/MediaConvert/src/Result/ListJobsResponse.php index 87a2b4c51..7ba5c53e9 100644 --- a/src/Service/MediaConvert/src/Result/ListJobsResponse.php +++ b/src/Service/MediaConvert/src/Result/ListJobsResponse.php @@ -192,6 +192,7 @@ use AsyncAws\MediaConvert\Enum\H264DynamicSubGop; use AsyncAws\MediaConvert\Enum\H264EndOfStreamMarkers; use AsyncAws\MediaConvert\Enum\H264EntropyEncoding; +use AsyncAws\MediaConvert\Enum\H264ExplicitWeightedPrediction; use AsyncAws\MediaConvert\Enum\H264FieldEncoding; use AsyncAws\MediaConvert\Enum\H264FlickerAdaptiveQuantization; use AsyncAws\MediaConvert\Enum\H264FramerateControl; @@ -505,6 +506,7 @@ use AsyncAws\MediaConvert\ValueObject\DestinationSettings; use AsyncAws\MediaConvert\ValueObject\DolbyVision; use AsyncAws\MediaConvert\ValueObject\DolbyVisionLevel6Metadata; +use AsyncAws\MediaConvert\ValueObject\DurationControl; use AsyncAws\MediaConvert\ValueObject\DvbNitSettings; use AsyncAws\MediaConvert\ValueObject\DvbSdtSettings; use AsyncAws\MediaConvert\ValueObject\DvbSubDestinationSettings; @@ -1373,6 +1375,15 @@ private function populateResultDolbyVisionLevel6Metadata(array $json): DolbyVisi ]); } + private function populateResultDurationControl(array $json): DurationControl + { + return new DurationControl([ + 'IntegerDurationMaximumCompressionDenominator' => isset($json['integerDurationMaximumCompressionDenominator']) ? (int) $json['integerDurationMaximumCompressionDenominator'] : null, + 'IntegerDurationMaximumCompressionNumerator' => isset($json['integerDurationMaximumCompressionNumerator']) ? (int) $json['integerDurationMaximumCompressionNumerator'] : null, + 'IntegerDurationTrimThresholdMilliseconds' => isset($json['integerDurationTrimThresholdMilliseconds']) ? (int) $json['integerDurationTrimThresholdMilliseconds'] : null, + ]); + } + private function populateResultDvbNitSettings(array $json): DvbNitSettings { return new DvbNitSettings([ @@ -1663,6 +1674,7 @@ private function populateResultH264Settings(array $json): H264Settings 'DynamicSubGop' => isset($json['dynamicSubGop']) ? (!H264DynamicSubGop::exists((string) $json['dynamicSubGop']) ? H264DynamicSubGop::UNKNOWN_TO_SDK : (string) $json['dynamicSubGop']) : null, 'EndOfStreamMarkers' => isset($json['endOfStreamMarkers']) ? (!H264EndOfStreamMarkers::exists((string) $json['endOfStreamMarkers']) ? H264EndOfStreamMarkers::UNKNOWN_TO_SDK : (string) $json['endOfStreamMarkers']) : null, 'EntropyEncoding' => isset($json['entropyEncoding']) ? (!H264EntropyEncoding::exists((string) $json['entropyEncoding']) ? H264EntropyEncoding::UNKNOWN_TO_SDK : (string) $json['entropyEncoding']) : null, + 'ExplicitWeightedPrediction' => isset($json['explicitWeightedPrediction']) ? (!H264ExplicitWeightedPrediction::exists((string) $json['explicitWeightedPrediction']) ? H264ExplicitWeightedPrediction::UNKNOWN_TO_SDK : (string) $json['explicitWeightedPrediction']) : null, 'FieldEncoding' => isset($json['fieldEncoding']) ? (!H264FieldEncoding::exists((string) $json['fieldEncoding']) ? H264FieldEncoding::UNKNOWN_TO_SDK : (string) $json['fieldEncoding']) : null, 'FlickerAdaptiveQuantization' => isset($json['flickerAdaptiveQuantization']) ? (!H264FlickerAdaptiveQuantization::exists((string) $json['flickerAdaptiveQuantization']) ? H264FlickerAdaptiveQuantization::UNKNOWN_TO_SDK : (string) $json['flickerAdaptiveQuantization']) : null, 'FramerateControl' => isset($json['framerateControl']) ? (!H264FramerateControl::exists((string) $json['framerateControl']) ? H264FramerateControl::UNKNOWN_TO_SDK : (string) $json['framerateControl']) : null, @@ -2922,6 +2934,7 @@ private function populateResultVideoPreprocessor(array $json): VideoPreprocessor 'ColorCorrector' => empty($json['colorCorrector']) ? null : $this->populateResultColorCorrector($json['colorCorrector']), 'Deinterlacer' => empty($json['deinterlacer']) ? null : $this->populateResultDeinterlacer($json['deinterlacer']), 'DolbyVision' => empty($json['dolbyVision']) ? null : $this->populateResultDolbyVision($json['dolbyVision']), + 'DurationControl' => empty($json['durationControl']) ? null : $this->populateResultDurationControl($json['durationControl']), 'Hdr10Plus' => empty($json['hdr10Plus']) ? null : $this->populateResultHdr10Plus($json['hdr10Plus']), 'ImageInserter' => empty($json['imageInserter']) ? null : $this->populateResultImageInserter($json['imageInserter']), 'NoiseReducer' => empty($json['noiseReducer']) ? null : $this->populateResultNoiseReducer($json['noiseReducer']), diff --git a/src/Service/MediaConvert/src/ValueObject/DurationControl.php b/src/Service/MediaConvert/src/ValueObject/DurationControl.php new file mode 100644 index 000000000..fbbf9d9b4 --- /dev/null +++ b/src/Service/MediaConvert/src/ValueObject/DurationControl.php @@ -0,0 +1,96 @@ +integerDurationMaximumCompressionDenominator = $input['IntegerDurationMaximumCompressionDenominator'] ?? null; + $this->integerDurationMaximumCompressionNumerator = $input['IntegerDurationMaximumCompressionNumerator'] ?? null; + $this->integerDurationTrimThresholdMilliseconds = $input['IntegerDurationTrimThresholdMilliseconds'] ?? null; + } + + /** + * @param array{ + * IntegerDurationMaximumCompressionDenominator?: int|null, + * IntegerDurationMaximumCompressionNumerator?: int|null, + * IntegerDurationTrimThresholdMilliseconds?: int|null, + * }|DurationControl $input + */ + public static function create($input): self + { + return $input instanceof self ? $input : new self($input); + } + + public function getIntegerDurationMaximumCompressionDenominator(): ?int + { + return $this->integerDurationMaximumCompressionDenominator; + } + + public function getIntegerDurationMaximumCompressionNumerator(): ?int + { + return $this->integerDurationMaximumCompressionNumerator; + } + + public function getIntegerDurationTrimThresholdMilliseconds(): ?int + { + return $this->integerDurationTrimThresholdMilliseconds; + } + + /** + * @internal + */ + public function requestBody(): array + { + $payload = []; + if (null !== $v = $this->integerDurationMaximumCompressionDenominator) { + $payload['integerDurationMaximumCompressionDenominator'] = $v; + } + if (null !== $v = $this->integerDurationMaximumCompressionNumerator) { + $payload['integerDurationMaximumCompressionNumerator'] = $v; + } + if (null !== $v = $this->integerDurationTrimThresholdMilliseconds) { + $payload['integerDurationTrimThresholdMilliseconds'] = $v; + } + + return $payload; + } +} diff --git a/src/Service/MediaConvert/src/ValueObject/H264Settings.php b/src/Service/MediaConvert/src/ValueObject/H264Settings.php index b33522750..75a4e3a45 100644 --- a/src/Service/MediaConvert/src/ValueObject/H264Settings.php +++ b/src/Service/MediaConvert/src/ValueObject/H264Settings.php @@ -10,6 +10,7 @@ use AsyncAws\MediaConvert\Enum\H264DynamicSubGop; use AsyncAws\MediaConvert\Enum\H264EndOfStreamMarkers; use AsyncAws\MediaConvert\Enum\H264EntropyEncoding; +use AsyncAws\MediaConvert\Enum\H264ExplicitWeightedPrediction; use AsyncAws\MediaConvert\Enum\H264FieldEncoding; use AsyncAws\MediaConvert\Enum\H264FlickerAdaptiveQuantization; use AsyncAws\MediaConvert\Enum\H264FramerateControl; @@ -111,6 +112,14 @@ final class H264Settings */ private $entropyEncoding; + /** + * Enable or disable explicit weighted prediction for the H.264 encoder. Weighted prediction improves compression + * efficiency for content with fading or brightness changes between frames. + * + * @var H264ExplicitWeightedPrediction::*|null + */ + private $explicitWeightedPrediction; + /** * 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 to disable PAFF encoding and create separate interlaced fields. @@ -538,6 +547,7 @@ final class H264Settings * DynamicSubGop?: H264DynamicSubGop::*|null, * EndOfStreamMarkers?: H264EndOfStreamMarkers::*|null, * EntropyEncoding?: H264EntropyEncoding::*|null, + * ExplicitWeightedPrediction?: H264ExplicitWeightedPrediction::*|null, * FieldEncoding?: H264FieldEncoding::*|null, * FlickerAdaptiveQuantization?: H264FlickerAdaptiveQuantization::*|null, * FramerateControl?: H264FramerateControl::*|null, @@ -588,6 +598,7 @@ public function __construct(array $input) $this->dynamicSubGop = $input['DynamicSubGop'] ?? null; $this->endOfStreamMarkers = $input['EndOfStreamMarkers'] ?? null; $this->entropyEncoding = $input['EntropyEncoding'] ?? null; + $this->explicitWeightedPrediction = $input['ExplicitWeightedPrediction'] ?? null; $this->fieldEncoding = $input['FieldEncoding'] ?? null; $this->flickerAdaptiveQuantization = $input['FlickerAdaptiveQuantization'] ?? null; $this->framerateControl = $input['FramerateControl'] ?? null; @@ -638,6 +649,7 @@ public function __construct(array $input) * DynamicSubGop?: H264DynamicSubGop::*|null, * EndOfStreamMarkers?: H264EndOfStreamMarkers::*|null, * EntropyEncoding?: H264EntropyEncoding::*|null, + * ExplicitWeightedPrediction?: H264ExplicitWeightedPrediction::*|null, * FieldEncoding?: H264FieldEncoding::*|null, * FlickerAdaptiveQuantization?: H264FlickerAdaptiveQuantization::*|null, * FramerateControl?: H264FramerateControl::*|null, @@ -741,6 +753,14 @@ public function getEntropyEncoding(): ?string return $this->entropyEncoding; } + /** + * @return H264ExplicitWeightedPrediction::*|null + */ + public function getExplicitWeightedPrediction(): ?string + { + return $this->explicitWeightedPrediction; + } + /** * @return H264FieldEncoding::*|null */ @@ -1051,6 +1071,13 @@ public function requestBody(): array } $payload['entropyEncoding'] = $v; } + if (null !== $v = $this->explicitWeightedPrediction) { + if (!H264ExplicitWeightedPrediction::exists($v)) { + /** @psalm-suppress NoValue */ + throw new InvalidArgument(\sprintf('Invalid parameter "explicitWeightedPrediction" for "%s". The value "%s" is not a valid "H264ExplicitWeightedPrediction".', __CLASS__, $v)); + } + $payload['explicitWeightedPrediction'] = $v; + } if (null !== $v = $this->fieldEncoding) { if (!H264FieldEncoding::exists($v)) { /** @psalm-suppress NoValue */ diff --git a/src/Service/MediaConvert/src/ValueObject/VideoPreprocessor.php b/src/Service/MediaConvert/src/ValueObject/VideoPreprocessor.php index 701fc3f26..aa45b40b5 100644 --- a/src/Service/MediaConvert/src/ValueObject/VideoPreprocessor.php +++ b/src/Service/MediaConvert/src/ValueObject/VideoPreprocessor.php @@ -31,6 +31,15 @@ final class VideoPreprocessor */ private $dolbyVision; + /** + * Enable integer-second duration normalization. When enabled, the output duration is adjusted to land on an exact + * integer-second boundary. The adjustment method (trim, compress, or pad) is chosen automatically based on how far the + * input duration is from the nearest integer second. + * + * @var DurationControl|null + */ + private $durationControl; + /** * Enable HDR10+ analysis and metadata injection. Compatible with HEVC only. * @@ -76,6 +85,7 @@ final class VideoPreprocessor * ColorCorrector?: ColorCorrector|array|null, * Deinterlacer?: Deinterlacer|array|null, * DolbyVision?: DolbyVision|array|null, + * DurationControl?: DurationControl|array|null, * Hdr10Plus?: Hdr10Plus|array|null, * ImageInserter?: ImageInserter|array|null, * NoiseReducer?: NoiseReducer|array|null, @@ -88,6 +98,7 @@ public function __construct(array $input) $this->colorCorrector = isset($input['ColorCorrector']) ? ColorCorrector::create($input['ColorCorrector']) : null; $this->deinterlacer = isset($input['Deinterlacer']) ? Deinterlacer::create($input['Deinterlacer']) : null; $this->dolbyVision = isset($input['DolbyVision']) ? DolbyVision::create($input['DolbyVision']) : null; + $this->durationControl = isset($input['DurationControl']) ? DurationControl::create($input['DurationControl']) : null; $this->hdr10Plus = isset($input['Hdr10Plus']) ? Hdr10Plus::create($input['Hdr10Plus']) : null; $this->imageInserter = isset($input['ImageInserter']) ? ImageInserter::create($input['ImageInserter']) : null; $this->noiseReducer = isset($input['NoiseReducer']) ? NoiseReducer::create($input['NoiseReducer']) : null; @@ -100,6 +111,7 @@ public function __construct(array $input) * ColorCorrector?: ColorCorrector|array|null, * Deinterlacer?: Deinterlacer|array|null, * DolbyVision?: DolbyVision|array|null, + * DurationControl?: DurationControl|array|null, * Hdr10Plus?: Hdr10Plus|array|null, * ImageInserter?: ImageInserter|array|null, * NoiseReducer?: NoiseReducer|array|null, @@ -127,6 +139,11 @@ public function getDolbyVision(): ?DolbyVision return $this->dolbyVision; } + public function getDurationControl(): ?DurationControl + { + return $this->durationControl; + } + public function getHdr10Plus(): ?Hdr10Plus { return $this->hdr10Plus; @@ -167,6 +184,9 @@ public function requestBody(): array if (null !== $v = $this->dolbyVision) { $payload['dolbyVision'] = $v->requestBody(); } + if (null !== $v = $this->durationControl) { + $payload['durationControl'] = $v->requestBody(); + } if (null !== $v = $this->hdr10Plus) { $payload['hdr10Plus'] = $v->requestBody(); }