From 3b741f7c7ca784b0c86e7a3de7dc31b5c5cadab1 Mon Sep 17 00:00:00 2001 From: AsyncAws Bot Date: Tue, 4 Nov 2025 06:36:29 +0000 Subject: [PATCH 1/2] update generated code --- manifest.json | 2 +- src/Service/Kinesis/CHANGELOG.md | 2 + .../Kinesis/src/Input/CreateStreamInput.php | 26 ++++++++ src/Service/Kinesis/src/KinesisClient.php | 23 +++++-- .../Result/DescribeStreamSummaryOutput.php | 10 +++ .../ValueObject/StreamDescriptionSummary.php | 16 +++++ .../src/ValueObject/WarmThroughputObject.php | 59 +++++++++++++++++ src/Service/Lambda/CHANGELOG.md | 1 + src/Service/Lambda/src/Enum/Runtime.php | 4 ++ src/Service/MediaConvert/CHANGELOG.md | 1 + .../src/Enum/AudioSelectorType.php | 21 ++++-- .../src/Enum/DashManifestStyle.php | 14 ++-- .../src/Enum/MpdCaptionContainerType.php | 8 +-- .../src/Enum/SlowPalPitchCorrection.php | 23 +++++++ .../src/Enum/VideoSelectorMode.php | 23 +++++++ .../src/Result/CreateJobResponse.php | 21 ++++++ .../src/Result/GetJobResponse.php | 21 ++++++ .../src/Result/ListJobsResponse.php | 21 ++++++ .../src/ValueObject/AudioDescription.php | 18 +++++ .../AudioPitchCorrectionSettings.php | 66 +++++++++++++++++++ .../src/ValueObject/AudioSelector.php | 51 ++++++++++++-- .../src/ValueObject/CmafGroupSettings.php | 12 ++-- .../src/ValueObject/DashIsoGroupSettings.php | 12 ++-- .../src/ValueObject/MpdSettings.php | 8 +-- .../src/ValueObject/PassthroughSettings.php | 66 +++++++++++++++++++ .../src/ValueObject/TrackSourceSettings.php | 28 +++++++- .../src/ValueObject/VideoCodecSettings.php | 18 +++++ .../src/ValueObject/VideoOverlayPosition.php | 19 ++++++ .../ValueObject/VideoOverlayTransition.php | 2 +- .../src/ValueObject/VideoSelector.php | 7 +- 30 files changed, 556 insertions(+), 47 deletions(-) create mode 100644 src/Service/Kinesis/src/ValueObject/WarmThroughputObject.php create mode 100644 src/Service/MediaConvert/src/Enum/SlowPalPitchCorrection.php create mode 100644 src/Service/MediaConvert/src/Enum/VideoSelectorMode.php create mode 100644 src/Service/MediaConvert/src/ValueObject/AudioPitchCorrectionSettings.php create mode 100644 src/Service/MediaConvert/src/ValueObject/PassthroughSettings.php diff --git a/manifest.json b/manifest.json index 5f26270f3..d2e8379cf 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "variables": { - "${LATEST}": "3.359.0" + "${LATEST}": "3.359.4" }, "endpoints": "https://raw.githubusercontent.com/aws/aws-sdk-php/${LATEST}/src/data/endpoints.json", "services": { diff --git a/src/Service/Kinesis/CHANGELOG.md b/src/Service/Kinesis/CHANGELOG.md index 73eb539ec..30fa3bc77 100644 --- a/src/Service/Kinesis/CHANGELOG.md +++ b/src/Service/Kinesis/CHANGELOG.md @@ -6,6 +6,8 @@ - AWS api-change: Added `us-isob-west-1` region - AWS api-change: Adds support for record sizes up to 10MiB and introduces new UpdateMaxRecordSize API to modify stream record size limits. Adds record size parameters to existing CreateStream and DescribeStreamSummary APIs for request and response payloads respectively. +- AWS api-change: Adds support for MinimumThroughputBillingCommitment with new UpdateAccountSettings API. Adds support to configure warm throughput for on-demand streams in new UpdateStreamWarmThroughput API and existing CreateStream API and UpdateStreamMode API. +- AWS api-change: Update endpoint ruleset parameters casing ### Dependency bumped diff --git a/src/Service/Kinesis/src/Input/CreateStreamInput.php b/src/Service/Kinesis/src/Input/CreateStreamInput.php index 840e81187..e0e5c0d67 100644 --- a/src/Service/Kinesis/src/Input/CreateStreamInput.php +++ b/src/Service/Kinesis/src/Input/CreateStreamInput.php @@ -48,6 +48,14 @@ final class CreateStreamInput extends Input */ private $tags; + /** + * The target warm throughput in MB/s that the stream should be scaled to handle. This represents the throughput + * capacity that will be immediately available for write operations. + * + * @var int|null + */ + private $warmThroughputMiBps; + /** * The maximum record size of a single record in kibibyte (KiB) that you can write to, and read from a stream. * @@ -61,6 +69,7 @@ final class CreateStreamInput extends Input * ShardCount?: int|null, * StreamModeDetails?: StreamModeDetails|array|null, * Tags?: array|null, + * WarmThroughputMiBps?: int|null, * MaxRecordSizeInKiB?: int|null, * '@region'?: string|null, * } $input @@ -71,6 +80,7 @@ public function __construct(array $input = []) $this->shardCount = $input['ShardCount'] ?? null; $this->streamModeDetails = isset($input['StreamModeDetails']) ? StreamModeDetails::create($input['StreamModeDetails']) : null; $this->tags = $input['Tags'] ?? null; + $this->warmThroughputMiBps = $input['WarmThroughputMiBps'] ?? null; $this->maxRecordSizeInKiB = $input['MaxRecordSizeInKiB'] ?? null; parent::__construct($input); } @@ -81,6 +91,7 @@ public function __construct(array $input = []) * ShardCount?: int|null, * StreamModeDetails?: StreamModeDetails|array|null, * Tags?: array|null, + * WarmThroughputMiBps?: int|null, * MaxRecordSizeInKiB?: int|null, * '@region'?: string|null, * }|CreateStreamInput $input @@ -118,6 +129,11 @@ public function getTags(): array return $this->tags ?? []; } + public function getWarmThroughputMiBps(): ?int + { + return $this->warmThroughputMiBps; + } + /** * @internal */ @@ -182,6 +198,13 @@ public function setTags(array $value): self return $this; } + public function setWarmThroughputMiBps(?int $value): self + { + $this->warmThroughputMiBps = $value; + + return $this; + } + private function requestBody(): array { $payload = []; @@ -205,6 +228,9 @@ private function requestBody(): array } } } + if (null !== $v = $this->warmThroughputMiBps) { + $payload['WarmThroughputMiBps'] = $v; + } if (null !== $v = $this->maxRecordSizeInKiB) { $payload['MaxRecordSizeInKiB'] = $v; } diff --git a/src/Service/Kinesis/src/KinesisClient.php b/src/Service/Kinesis/src/KinesisClient.php index 31ace7b11..32c72de12 100644 --- a/src/Service/Kinesis/src/KinesisClient.php +++ b/src/Service/Kinesis/src/KinesisClient.php @@ -127,10 +127,17 @@ public function addTagsToStream($input): Result * You can create your data stream using either on-demand or provisioned capacity mode. Data streams with an on-demand * mode require no capacity planning and automatically scale to handle gigabytes of write and read throughput per * minute. With the on-demand mode, Kinesis Data Streams automatically manages the shards in order to provide the - * necessary throughput. For the data streams with a provisioned mode, you must specify the number of shards for the - * data stream. Each shard can support reads up to five transactions per second, up to a maximum data read total of 2 - * MiB per second. Each shard can support writes up to 1,000 records per second, up to a maximum data write total of 1 - * MiB per second. If the amount of data input increases or decreases, you can add or remove shards. + * necessary throughput. + * + * If you'd still like to proactively scale your on-demand data stream’s capacity, you can unlock the warm throughput + * feature for on-demand data streams by enabling `MinimumThroughputBillingCommitment` for your account. Once your + * account has `MinimumThroughputBillingCommitment` enabled, you can specify the warm throughput in MiB per second that + * your stream can support in writes. + * + * For the data streams with a provisioned mode, you must specify the number of shards for the data stream. Each shard + * can support reads up to five transactions per second, up to a maximum data read total of 2 MiB per second. Each shard + * can support writes up to 1,000 records per second, up to a maximum data write total of 1 MiB per second. If the + * amount of data input increases or decreases, you can add or remove shards. * * The stream name identifies the stream. The name is scoped to the Amazon Web Services account used by the application. * It is also scoped by Amazon Web Services Region. That is, two streams in two different accounts can have the same @@ -145,8 +152,9 @@ public function addTagsToStream($input): Result * - Have more than five streams in the `CREATING` state at any point in time. * - Create more shards than are authorized for your account. * - * For the default shard limit for an Amazon Web Services account, see Amazon Kinesis Data Streams Limits [^1] in the - * *Amazon Kinesis Data Streams Developer Guide*. To increase this limit, contact Amazon Web Services Support [^2]. + * For the default shard or on-demand throughput limits for an Amazon Web Services account, see Amazon Kinesis Data + * Streams Limits [^1] in the *Amazon Kinesis Data Streams Developer Guide*. To increase this limit, contact Amazon Web + * Services Support [^2]. * * You can use DescribeStreamSummary to check the stream status, which is returned in `StreamStatus`. * @@ -169,6 +177,7 @@ public function addTagsToStream($input): Result * ShardCount?: int|null, * StreamModeDetails?: StreamModeDetails|array|null, * Tags?: array|null, + * WarmThroughputMiBps?: int|null, * MaxRecordSizeInKiB?: int|null, * '@region'?: string|null, * }|CreateStreamInput $input @@ -176,6 +185,7 @@ public function addTagsToStream($input): Result * @throws InvalidArgumentException * @throws LimitExceededException * @throws ResourceInUseException + * @throws ValidationException */ public function createStream($input): Result { @@ -184,6 +194,7 @@ public function createStream($input): Result 'InvalidArgumentException' => InvalidArgumentException::class, 'LimitExceededException' => LimitExceededException::class, 'ResourceInUseException' => ResourceInUseException::class, + 'ValidationException' => ValidationException::class, ]])); return new Result($response); diff --git a/src/Service/Kinesis/src/Result/DescribeStreamSummaryOutput.php b/src/Service/Kinesis/src/Result/DescribeStreamSummaryOutput.php index cc27ae59f..4b31c6ede 100644 --- a/src/Service/Kinesis/src/Result/DescribeStreamSummaryOutput.php +++ b/src/Service/Kinesis/src/Result/DescribeStreamSummaryOutput.php @@ -8,6 +8,7 @@ use AsyncAws\Kinesis\ValueObject\EnhancedMetrics; use AsyncAws\Kinesis\ValueObject\StreamDescriptionSummary; use AsyncAws\Kinesis\ValueObject\StreamModeDetails; +use AsyncAws\Kinesis\ValueObject\WarmThroughputObject; class DescribeStreamSummaryOutput extends Result { @@ -82,6 +83,7 @@ private function populateResultStreamDescriptionSummary(array $json): StreamDesc 'KeyId' => isset($json['KeyId']) ? (string) $json['KeyId'] : null, 'OpenShardCount' => (int) $json['OpenShardCount'], 'ConsumerCount' => isset($json['ConsumerCount']) ? (int) $json['ConsumerCount'] : null, + 'WarmThroughput' => empty($json['WarmThroughput']) ? null : $this->populateResultWarmThroughputObject($json['WarmThroughput']), 'MaxRecordSizeInKiB' => isset($json['MaxRecordSizeInKiB']) ? (int) $json['MaxRecordSizeInKiB'] : null, ]); } @@ -92,4 +94,12 @@ private function populateResultStreamModeDetails(array $json): StreamModeDetails 'StreamMode' => (string) $json['StreamMode'], ]); } + + private function populateResultWarmThroughputObject(array $json): WarmThroughputObject + { + return new WarmThroughputObject([ + 'TargetMiBps' => isset($json['TargetMiBps']) ? (int) $json['TargetMiBps'] : null, + 'CurrentMiBps' => isset($json['CurrentMiBps']) ? (int) $json['CurrentMiBps'] : null, + ]); + } } diff --git a/src/Service/Kinesis/src/ValueObject/StreamDescriptionSummary.php b/src/Service/Kinesis/src/ValueObject/StreamDescriptionSummary.php index d113f781e..d68752d0e 100644 --- a/src/Service/Kinesis/src/ValueObject/StreamDescriptionSummary.php +++ b/src/Service/Kinesis/src/ValueObject/StreamDescriptionSummary.php @@ -109,6 +109,14 @@ final class StreamDescriptionSummary */ private $consumerCount; + /** + * The warm throughput in MB/s for the stream. This represents the throughput capacity that will be immediately + * available for write operations. + * + * @var WarmThroughputObject|null + */ + private $warmThroughput; + /** * The maximum record size of a single record in kibibyte (KiB) that you can write to, and read from a stream. * @@ -129,6 +137,7 @@ final class StreamDescriptionSummary * KeyId?: string|null, * OpenShardCount: int, * ConsumerCount?: int|null, + * WarmThroughput?: WarmThroughputObject|array|null, * MaxRecordSizeInKiB?: int|null, * } $input */ @@ -145,6 +154,7 @@ public function __construct(array $input) $this->keyId = $input['KeyId'] ?? null; $this->openShardCount = $input['OpenShardCount'] ?? $this->throwException(new InvalidArgument('Missing required field "OpenShardCount".')); $this->consumerCount = $input['ConsumerCount'] ?? null; + $this->warmThroughput = isset($input['WarmThroughput']) ? WarmThroughputObject::create($input['WarmThroughput']) : null; $this->maxRecordSizeInKiB = $input['MaxRecordSizeInKiB'] ?? null; } @@ -161,6 +171,7 @@ public function __construct(array $input) * KeyId?: string|null, * OpenShardCount: int, * ConsumerCount?: int|null, + * WarmThroughput?: WarmThroughputObject|array|null, * MaxRecordSizeInKiB?: int|null, * }|StreamDescriptionSummary $input */ @@ -238,6 +249,11 @@ public function getStreamStatus(): string return $this->streamStatus; } + public function getWarmThroughput(): ?WarmThroughputObject + { + return $this->warmThroughput; + } + /** * @return never */ diff --git a/src/Service/Kinesis/src/ValueObject/WarmThroughputObject.php b/src/Service/Kinesis/src/ValueObject/WarmThroughputObject.php new file mode 100644 index 000000000..ad40b7c22 --- /dev/null +++ b/src/Service/Kinesis/src/ValueObject/WarmThroughputObject.php @@ -0,0 +1,59 @@ +targetMiBps = $input['TargetMiBps'] ?? null; + $this->currentMiBps = $input['CurrentMiBps'] ?? null; + } + + /** + * @param array{ + * TargetMiBps?: int|null, + * CurrentMiBps?: int|null, + * }|WarmThroughputObject $input + */ + public static function create($input): self + { + return $input instanceof self ? $input : new self($input); + } + + public function getCurrentMiBps(): ?int + { + return $this->currentMiBps; + } + + public function getTargetMiBps(): ?int + { + return $this->targetMiBps; + } +} diff --git a/src/Service/Lambda/CHANGELOG.md b/src/Service/Lambda/CHANGELOG.md index 6dc607527..4549b4bb7 100644 --- a/src/Service/Lambda/CHANGELOG.md +++ b/src/Service/Lambda/CHANGELOG.md @@ -7,6 +7,7 @@ - AWS api-change: Add NodeJs 24 (nodejs24.x) support to AWS Lambda. - AWS api-change: Added `us-isob-west-1` region - AWS api-change: Added SerializedRequestEntityTooLargeException to Lambda Invoke API +- AWS api-change: Add Python3.14 (python3.14) and Java 25 (java25) support to AWS Lambda ### Dependency bumped diff --git a/src/Service/Lambda/src/Enum/Runtime.php b/src/Service/Lambda/src/Enum/Runtime.php index 7cda0f461..b5997cea7 100644 --- a/src/Service/Lambda/src/Enum/Runtime.php +++ b/src/Service/Lambda/src/Enum/Runtime.php @@ -14,6 +14,7 @@ final class Runtime public const JAVA_11 = 'java11'; public const JAVA_17 = 'java17'; public const JAVA_21 = 'java21'; + public const JAVA_25 = 'java25'; public const JAVA_8 = 'java8'; public const JAVA_8_AL_2 = 'java8.al2'; public const NODEJS = 'nodejs'; @@ -37,6 +38,7 @@ final class Runtime public const PYTHON_3_11 = 'python3.11'; public const PYTHON_3_12 = 'python3.12'; public const PYTHON_3_13 = 'python3.13'; + public const PYTHON_3_14 = 'python3.14'; public const PYTHON_3_6 = 'python3.6'; public const PYTHON_3_7 = 'python3.7'; public const PYTHON_3_8 = 'python3.8'; @@ -60,6 +62,7 @@ public static function exists(string $value): bool self::JAVA_11 => true, self::JAVA_17 => true, self::JAVA_21 => true, + self::JAVA_25 => true, self::JAVA_8 => true, self::JAVA_8_AL_2 => true, self::NODEJS => true, @@ -83,6 +86,7 @@ public static function exists(string $value): bool self::PYTHON_3_11 => true, self::PYTHON_3_12 => true, self::PYTHON_3_13 => true, + self::PYTHON_3_14 => true, self::PYTHON_3_6 => true, self::PYTHON_3_7 => true, self::PYTHON_3_8 => true, diff --git a/src/Service/MediaConvert/CHANGELOG.md b/src/Service/MediaConvert/CHANGELOG.md index a2fc461da..d6ce4cc5c 100644 --- a/src/Service/MediaConvert/CHANGELOG.md +++ b/src/Service/MediaConvert/CHANGELOG.md @@ -5,6 +5,7 @@ ### Added - 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. ### Dependency bumped diff --git a/src/Service/MediaConvert/src/Enum/AudioSelectorType.php b/src/Service/MediaConvert/src/Enum/AudioSelectorType.php index 6dfc8744a..8c36cb2f4 100644 --- a/src/Service/MediaConvert/src/Enum/AudioSelectorType.php +++ b/src/Service/MediaConvert/src/Enum/AudioSelectorType.php @@ -6,12 +6,19 @@ * Specify how MediaConvert selects audio content within your input. The default is Track. PID: Select audio by * specifying the Packet Identifier (PID) values for MPEG Transport Stream inputs. Use this when you know the exact PID * values of your audio streams. Track: Default. Select audio by track number. This is the most common option and works - * with most input container formats. Language code: Select audio by language using an ISO 639-2 or ISO 639-3 - * three-letter code in all capital letters. Use this when your source has embedded language metadata and you want to - * select tracks based on their language. HLS rendition group: Select audio from an HLS rendition group. Use this when - * your input is an HLS package with multiple audio renditions and you want to select specific rendition groups. All - * PCM: Select all uncompressed PCM audio tracks from your input automatically. This is useful when you want to include - * all PCM audio tracks without specifying individual track numbers. + * with most input container formats. If more types of audio data get recognized in the future, these numberings may + * shift, but the numberings used for Stream mode will not. Language code: Select audio by language using an ISO 639-2 + * or ISO 639-3 three-letter code in all capital letters. Use this when your source has embedded language metadata + * and you want to select tracks based on their language. HLS rendition group: Select audio from an HLS rendition group. + * Use this when your input is an HLS package with multiple audio renditions and you want to select specific rendition + * groups. All PCM: Select all uncompressed PCM audio tracks from your input automatically. This is useful when you want + * to include all PCM audio tracks without specifying individual track numbers. Stream: Select audio by stream number. + * Stream numbers include all tracks in the source file, regardless of type, and correspond to either the order of + * tracks in the file, or if applicable, the stream number metadata of the track. Although all tracks count toward these + * stream numbers, in this audio selector context, only the stream number of a track containing audio data may be used. + * If your source file contains a track which is not recognized by the service, then the corresponding stream number + * will still be reserved for future use. If more types of audio data get recognized in the future, these numberings + * will not shift. */ final class AudioSelectorType { @@ -19,6 +26,7 @@ final class AudioSelectorType public const HLS_RENDITION_GROUP = 'HLS_RENDITION_GROUP'; public const LANGUAGE_CODE = 'LANGUAGE_CODE'; public const PID = 'PID'; + public const STREAM = 'STREAM'; public const TRACK = 'TRACK'; public static function exists(string $value): bool @@ -28,6 +36,7 @@ public static function exists(string $value): bool self::HLS_RENDITION_GROUP => true, self::LANGUAGE_CODE => true, self::PID => true, + self::STREAM => true, self::TRACK => true, ][$value]); } diff --git a/src/Service/MediaConvert/src/Enum/DashManifestStyle.php b/src/Service/MediaConvert/src/Enum/DashManifestStyle.php index 24308df5b..6e00559c2 100644 --- a/src/Service/MediaConvert/src/Enum/DashManifestStyle.php +++ b/src/Service/MediaConvert/src/Enum/DashManifestStyle.php @@ -3,17 +3,20 @@ namespace AsyncAws\MediaConvert\Enum; /** - * Specify how MediaConvert writes SegmentTimeline in your output DASH manifest. To write a SegmentTimeline in each - * video Representation: Keep the default value, Basic. To write a common SegmentTimeline in the video AdaptationSet: - * Choose Compact. Note that MediaConvert will still write a SegmentTimeline in any Representation that does not share a - * common timeline. To write a video AdaptationSet for each different output framerate, and a common SegmentTimeline in - * each AdaptationSet: Choose Distinct. + * Specify how MediaConvert writes SegmentTimeline in your output DASH manifest. To write a SegmentTimeline for outputs + * that you also specify a Name modifier for: Keep the default value, Basic. Note that if you do not specify a name + * modifier for an output, MediaConvert will not write a SegmentTimeline for it. To write a common SegmentTimeline in + * the video AdaptationSet: Choose Compact. Note that MediaConvert will still write a SegmentTimeline in any + * Representation that does not share a common timeline. To write a video AdaptationSet for each different output + * framerate, and a common SegmentTimeline in each AdaptationSet: Choose Distinct. To write a SegmentTimeline in each + * AdaptationSet: Choose Full. */ final class DashManifestStyle { public const BASIC = 'BASIC'; public const COMPACT = 'COMPACT'; public const DISTINCT = 'DISTINCT'; + public const FULL = 'FULL'; public static function exists(string $value): bool { @@ -21,6 +24,7 @@ public static function exists(string $value): bool self::BASIC => true, self::COMPACT => true, self::DISTINCT => true, + self::FULL => true, ][$value]); } } diff --git a/src/Service/MediaConvert/src/Enum/MpdCaptionContainerType.php b/src/Service/MediaConvert/src/Enum/MpdCaptionContainerType.php index d43726f5a..7a1fea200 100644 --- a/src/Service/MediaConvert/src/Enum/MpdCaptionContainerType.php +++ b/src/Service/MediaConvert/src/Enum/MpdCaptionContainerType.php @@ -3,10 +3,10 @@ namespace AsyncAws\MediaConvert\Enum; /** - * Use this setting only in DASH output groups that include sidecar TTML or IMSC captions. You specify sidecar captions - * in a separate output from your audio and video. Choose Raw for captions in a single XML file in a raw container. - * Choose Fragmented MPEG-4 for captions in XML format contained within fragmented MP4 files. This set of fragmented MP4 - * files is separate from your video and audio fragmented MP4 files. + * Use this setting only in DASH output groups that include sidecar TTML, IMSC or WEBVTT captions. You specify sidecar + * captions in a separate output from your audio and video. Choose Raw for captions in a single XML file in a raw + * container. Choose Fragmented MPEG-4 for captions in XML format contained within fragmented MP4 files. This set of + * fragmented MP4 files is separate from your video and audio fragmented MP4 files. */ final class MpdCaptionContainerType { diff --git a/src/Service/MediaConvert/src/Enum/SlowPalPitchCorrection.php b/src/Service/MediaConvert/src/Enum/SlowPalPitchCorrection.php new file mode 100644 index 000000000..a1fa754ad --- /dev/null +++ b/src/Service/MediaConvert/src/Enum/SlowPalPitchCorrection.php @@ -0,0 +1,23 @@ + true, + self::ENABLED => true, + ][$value]); + } +} diff --git a/src/Service/MediaConvert/src/Enum/VideoSelectorMode.php b/src/Service/MediaConvert/src/Enum/VideoSelectorMode.php new file mode 100644 index 000000000..4f3190b93 --- /dev/null +++ b/src/Service/MediaConvert/src/Enum/VideoSelectorMode.php @@ -0,0 +1,23 @@ + true, + self::REMUX_ALL => true, + ][$value]); + } +} diff --git a/src/Service/MediaConvert/src/Result/CreateJobResponse.php b/src/Service/MediaConvert/src/Result/CreateJobResponse.php index 9d6ac8bc6..a218ea7be 100644 --- a/src/Service/MediaConvert/src/Result/CreateJobResponse.php +++ b/src/Service/MediaConvert/src/Result/CreateJobResponse.php @@ -19,6 +19,7 @@ use AsyncAws\MediaConvert\ValueObject\AudioCodecSettings; use AsyncAws\MediaConvert\ValueObject\AudioDescription; use AsyncAws\MediaConvert\ValueObject\AudioNormalizationSettings; +use AsyncAws\MediaConvert\ValueObject\AudioPitchCorrectionSettings; use AsyncAws\MediaConvert\ValueObject\AudioSelector; use AsyncAws\MediaConvert\ValueObject\AudioSelectorGroup; use AsyncAws\MediaConvert\ValueObject\AutomatedAbrRule; @@ -138,6 +139,7 @@ use AsyncAws\MediaConvert\ValueObject\OutputGroupSettings; use AsyncAws\MediaConvert\ValueObject\OutputSettings; use AsyncAws\MediaConvert\ValueObject\PartnerWatermarking; +use AsyncAws\MediaConvert\ValueObject\PassthroughSettings; use AsyncAws\MediaConvert\ValueObject\ProresSettings; use AsyncAws\MediaConvert\ValueObject\QueueTransition; use AsyncAws\MediaConvert\ValueObject\Rectangle; @@ -319,6 +321,7 @@ private function populateResultAudioDescription(array $json): AudioDescription return new AudioDescription([ 'AudioChannelTaggingSettings' => empty($json['audioChannelTaggingSettings']) ? null : $this->populateResultAudioChannelTaggingSettings($json['audioChannelTaggingSettings']), 'AudioNormalizationSettings' => empty($json['audioNormalizationSettings']) ? null : $this->populateResultAudioNormalizationSettings($json['audioNormalizationSettings']), + 'AudioPitchCorrectionSettings' => empty($json['audioPitchCorrectionSettings']) ? null : $this->populateResultAudioPitchCorrectionSettings($json['audioPitchCorrectionSettings']), 'AudioSourceName' => isset($json['audioSourceName']) ? (string) $json['audioSourceName'] : null, 'AudioType' => isset($json['audioType']) ? (int) $json['audioType'] : null, 'AudioTypeControl' => isset($json['audioTypeControl']) ? (string) $json['audioTypeControl'] : null, @@ -344,6 +347,13 @@ private function populateResultAudioNormalizationSettings(array $json): AudioNor ]); } + private function populateResultAudioPitchCorrectionSettings(array $json): AudioPitchCorrectionSettings + { + return new AudioPitchCorrectionSettings([ + 'SlowPalPitchCorrection' => isset($json['slowPalPitchCorrection']) ? (string) $json['slowPalPitchCorrection'] : null, + ]); + } + private function populateResultAudioSelector(array $json): AudioSelector { return new AudioSelector([ @@ -358,6 +368,7 @@ private function populateResultAudioSelector(array $json): AudioSelector 'ProgramSelection' => isset($json['programSelection']) ? (int) $json['programSelection'] : null, 'RemixSettings' => empty($json['remixSettings']) ? null : $this->populateResultRemixSettings($json['remixSettings']), 'SelectorType' => isset($json['selectorType']) ? (string) $json['selectorType'] : null, + 'Streams' => !isset($json['streams']) ? null : $this->populateResult__listOf__integerMin1Max2147483647($json['streams']), 'Tracks' => !isset($json['tracks']) ? null : $this->populateResult__listOf__integerMin1Max2147483647($json['tracks']), ]); } @@ -1938,6 +1949,13 @@ private function populateResultPartnerWatermarking(array $json): PartnerWatermar ]); } + private function populateResultPassthroughSettings(array $json): PassthroughSettings + { + return new PassthroughSettings([ + 'VideoSelectorMode' => isset($json['videoSelectorMode']) ? (string) $json['videoSelectorMode'] : null, + ]); + } + private function populateResultProresSettings(array $json): ProresSettings { return new ProresSettings([ @@ -2113,6 +2131,7 @@ private function populateResultTiming(array $json): Timing private function populateResultTrackSourceSettings(array $json): TrackSourceSettings { return new TrackSourceSettings([ + 'StreamNumber' => isset($json['streamNumber']) ? (int) $json['streamNumber'] : null, 'TrackNumber' => isset($json['trackNumber']) ? (int) $json['trackNumber'] : null, ]); } @@ -2165,6 +2184,7 @@ private function populateResultVideoCodecSettings(array $json): VideoCodecSettin 'H264Settings' => empty($json['h264Settings']) ? null : $this->populateResultH264Settings($json['h264Settings']), 'H265Settings' => empty($json['h265Settings']) ? null : $this->populateResultH265Settings($json['h265Settings']), 'Mpeg2Settings' => empty($json['mpeg2Settings']) ? null : $this->populateResultMpeg2Settings($json['mpeg2Settings']), + 'PassthroughSettings' => empty($json['passthroughSettings']) ? null : $this->populateResultPassthroughSettings($json['passthroughSettings']), 'ProresSettings' => empty($json['proresSettings']) ? null : $this->populateResultProresSettings($json['proresSettings']), 'UncompressedSettings' => empty($json['uncompressedSettings']) ? null : $this->populateResultUncompressedSettings($json['uncompressedSettings']), 'Vc3Settings' => empty($json['vc3Settings']) ? null : $this->populateResultVc3Settings($json['vc3Settings']), @@ -2251,6 +2271,7 @@ private function populateResultVideoOverlayPosition(array $json): VideoOverlayPo { return new VideoOverlayPosition([ 'Height' => isset($json['height']) ? (int) $json['height'] : null, + 'Opacity' => isset($json['opacity']) ? (int) $json['opacity'] : null, 'Unit' => isset($json['unit']) ? (string) $json['unit'] : null, 'Width' => isset($json['width']) ? (int) $json['width'] : null, 'XPosition' => isset($json['xPosition']) ? (int) $json['xPosition'] : null, diff --git a/src/Service/MediaConvert/src/Result/GetJobResponse.php b/src/Service/MediaConvert/src/Result/GetJobResponse.php index bd671a644..1a9a2dadd 100644 --- a/src/Service/MediaConvert/src/Result/GetJobResponse.php +++ b/src/Service/MediaConvert/src/Result/GetJobResponse.php @@ -19,6 +19,7 @@ use AsyncAws\MediaConvert\ValueObject\AudioCodecSettings; use AsyncAws\MediaConvert\ValueObject\AudioDescription; use AsyncAws\MediaConvert\ValueObject\AudioNormalizationSettings; +use AsyncAws\MediaConvert\ValueObject\AudioPitchCorrectionSettings; use AsyncAws\MediaConvert\ValueObject\AudioSelector; use AsyncAws\MediaConvert\ValueObject\AudioSelectorGroup; use AsyncAws\MediaConvert\ValueObject\AutomatedAbrRule; @@ -138,6 +139,7 @@ use AsyncAws\MediaConvert\ValueObject\OutputGroupSettings; use AsyncAws\MediaConvert\ValueObject\OutputSettings; use AsyncAws\MediaConvert\ValueObject\PartnerWatermarking; +use AsyncAws\MediaConvert\ValueObject\PassthroughSettings; use AsyncAws\MediaConvert\ValueObject\ProresSettings; use AsyncAws\MediaConvert\ValueObject\QueueTransition; use AsyncAws\MediaConvert\ValueObject\Rectangle; @@ -319,6 +321,7 @@ private function populateResultAudioDescription(array $json): AudioDescription return new AudioDescription([ 'AudioChannelTaggingSettings' => empty($json['audioChannelTaggingSettings']) ? null : $this->populateResultAudioChannelTaggingSettings($json['audioChannelTaggingSettings']), 'AudioNormalizationSettings' => empty($json['audioNormalizationSettings']) ? null : $this->populateResultAudioNormalizationSettings($json['audioNormalizationSettings']), + 'AudioPitchCorrectionSettings' => empty($json['audioPitchCorrectionSettings']) ? null : $this->populateResultAudioPitchCorrectionSettings($json['audioPitchCorrectionSettings']), 'AudioSourceName' => isset($json['audioSourceName']) ? (string) $json['audioSourceName'] : null, 'AudioType' => isset($json['audioType']) ? (int) $json['audioType'] : null, 'AudioTypeControl' => isset($json['audioTypeControl']) ? (string) $json['audioTypeControl'] : null, @@ -344,6 +347,13 @@ private function populateResultAudioNormalizationSettings(array $json): AudioNor ]); } + private function populateResultAudioPitchCorrectionSettings(array $json): AudioPitchCorrectionSettings + { + return new AudioPitchCorrectionSettings([ + 'SlowPalPitchCorrection' => isset($json['slowPalPitchCorrection']) ? (string) $json['slowPalPitchCorrection'] : null, + ]); + } + private function populateResultAudioSelector(array $json): AudioSelector { return new AudioSelector([ @@ -358,6 +368,7 @@ private function populateResultAudioSelector(array $json): AudioSelector 'ProgramSelection' => isset($json['programSelection']) ? (int) $json['programSelection'] : null, 'RemixSettings' => empty($json['remixSettings']) ? null : $this->populateResultRemixSettings($json['remixSettings']), 'SelectorType' => isset($json['selectorType']) ? (string) $json['selectorType'] : null, + 'Streams' => !isset($json['streams']) ? null : $this->populateResult__listOf__integerMin1Max2147483647($json['streams']), 'Tracks' => !isset($json['tracks']) ? null : $this->populateResult__listOf__integerMin1Max2147483647($json['tracks']), ]); } @@ -1938,6 +1949,13 @@ private function populateResultPartnerWatermarking(array $json): PartnerWatermar ]); } + private function populateResultPassthroughSettings(array $json): PassthroughSettings + { + return new PassthroughSettings([ + 'VideoSelectorMode' => isset($json['videoSelectorMode']) ? (string) $json['videoSelectorMode'] : null, + ]); + } + private function populateResultProresSettings(array $json): ProresSettings { return new ProresSettings([ @@ -2113,6 +2131,7 @@ private function populateResultTiming(array $json): Timing private function populateResultTrackSourceSettings(array $json): TrackSourceSettings { return new TrackSourceSettings([ + 'StreamNumber' => isset($json['streamNumber']) ? (int) $json['streamNumber'] : null, 'TrackNumber' => isset($json['trackNumber']) ? (int) $json['trackNumber'] : null, ]); } @@ -2165,6 +2184,7 @@ private function populateResultVideoCodecSettings(array $json): VideoCodecSettin 'H264Settings' => empty($json['h264Settings']) ? null : $this->populateResultH264Settings($json['h264Settings']), 'H265Settings' => empty($json['h265Settings']) ? null : $this->populateResultH265Settings($json['h265Settings']), 'Mpeg2Settings' => empty($json['mpeg2Settings']) ? null : $this->populateResultMpeg2Settings($json['mpeg2Settings']), + 'PassthroughSettings' => empty($json['passthroughSettings']) ? null : $this->populateResultPassthroughSettings($json['passthroughSettings']), 'ProresSettings' => empty($json['proresSettings']) ? null : $this->populateResultProresSettings($json['proresSettings']), 'UncompressedSettings' => empty($json['uncompressedSettings']) ? null : $this->populateResultUncompressedSettings($json['uncompressedSettings']), 'Vc3Settings' => empty($json['vc3Settings']) ? null : $this->populateResultVc3Settings($json['vc3Settings']), @@ -2251,6 +2271,7 @@ private function populateResultVideoOverlayPosition(array $json): VideoOverlayPo { return new VideoOverlayPosition([ 'Height' => isset($json['height']) ? (int) $json['height'] : null, + 'Opacity' => isset($json['opacity']) ? (int) $json['opacity'] : null, 'Unit' => isset($json['unit']) ? (string) $json['unit'] : null, 'Width' => isset($json['width']) ? (int) $json['width'] : null, 'XPosition' => isset($json['xPosition']) ? (int) $json['xPosition'] : null, diff --git a/src/Service/MediaConvert/src/Result/ListJobsResponse.php b/src/Service/MediaConvert/src/Result/ListJobsResponse.php index 64ab7050e..3d157d53f 100644 --- a/src/Service/MediaConvert/src/Result/ListJobsResponse.php +++ b/src/Service/MediaConvert/src/Result/ListJobsResponse.php @@ -22,6 +22,7 @@ use AsyncAws\MediaConvert\ValueObject\AudioCodecSettings; use AsyncAws\MediaConvert\ValueObject\AudioDescription; use AsyncAws\MediaConvert\ValueObject\AudioNormalizationSettings; +use AsyncAws\MediaConvert\ValueObject\AudioPitchCorrectionSettings; use AsyncAws\MediaConvert\ValueObject\AudioSelector; use AsyncAws\MediaConvert\ValueObject\AudioSelectorGroup; use AsyncAws\MediaConvert\ValueObject\AutomatedAbrRule; @@ -141,6 +142,7 @@ use AsyncAws\MediaConvert\ValueObject\OutputGroupSettings; use AsyncAws\MediaConvert\ValueObject\OutputSettings; use AsyncAws\MediaConvert\ValueObject\PartnerWatermarking; +use AsyncAws\MediaConvert\ValueObject\PassthroughSettings; use AsyncAws\MediaConvert\ValueObject\ProresSettings; use AsyncAws\MediaConvert\ValueObject\QueueTransition; use AsyncAws\MediaConvert\ValueObject\Rectangle; @@ -386,6 +388,7 @@ private function populateResultAudioDescription(array $json): AudioDescription return new AudioDescription([ 'AudioChannelTaggingSettings' => empty($json['audioChannelTaggingSettings']) ? null : $this->populateResultAudioChannelTaggingSettings($json['audioChannelTaggingSettings']), 'AudioNormalizationSettings' => empty($json['audioNormalizationSettings']) ? null : $this->populateResultAudioNormalizationSettings($json['audioNormalizationSettings']), + 'AudioPitchCorrectionSettings' => empty($json['audioPitchCorrectionSettings']) ? null : $this->populateResultAudioPitchCorrectionSettings($json['audioPitchCorrectionSettings']), 'AudioSourceName' => isset($json['audioSourceName']) ? (string) $json['audioSourceName'] : null, 'AudioType' => isset($json['audioType']) ? (int) $json['audioType'] : null, 'AudioTypeControl' => isset($json['audioTypeControl']) ? (string) $json['audioTypeControl'] : null, @@ -411,6 +414,13 @@ private function populateResultAudioNormalizationSettings(array $json): AudioNor ]); } + private function populateResultAudioPitchCorrectionSettings(array $json): AudioPitchCorrectionSettings + { + return new AudioPitchCorrectionSettings([ + 'SlowPalPitchCorrection' => isset($json['slowPalPitchCorrection']) ? (string) $json['slowPalPitchCorrection'] : null, + ]); + } + private function populateResultAudioSelector(array $json): AudioSelector { return new AudioSelector([ @@ -425,6 +435,7 @@ private function populateResultAudioSelector(array $json): AudioSelector 'ProgramSelection' => isset($json['programSelection']) ? (int) $json['programSelection'] : null, 'RemixSettings' => empty($json['remixSettings']) ? null : $this->populateResultRemixSettings($json['remixSettings']), 'SelectorType' => isset($json['selectorType']) ? (string) $json['selectorType'] : null, + 'Streams' => !isset($json['streams']) ? null : $this->populateResult__listOf__integerMin1Max2147483647($json['streams']), 'Tracks' => !isset($json['tracks']) ? null : $this->populateResult__listOf__integerMin1Max2147483647($json['tracks']), ]); } @@ -2005,6 +2016,13 @@ private function populateResultPartnerWatermarking(array $json): PartnerWatermar ]); } + private function populateResultPassthroughSettings(array $json): PassthroughSettings + { + return new PassthroughSettings([ + 'VideoSelectorMode' => isset($json['videoSelectorMode']) ? (string) $json['videoSelectorMode'] : null, + ]); + } + private function populateResultProresSettings(array $json): ProresSettings { return new ProresSettings([ @@ -2180,6 +2198,7 @@ private function populateResultTiming(array $json): Timing private function populateResultTrackSourceSettings(array $json): TrackSourceSettings { return new TrackSourceSettings([ + 'StreamNumber' => isset($json['streamNumber']) ? (int) $json['streamNumber'] : null, 'TrackNumber' => isset($json['trackNumber']) ? (int) $json['trackNumber'] : null, ]); } @@ -2232,6 +2251,7 @@ private function populateResultVideoCodecSettings(array $json): VideoCodecSettin 'H264Settings' => empty($json['h264Settings']) ? null : $this->populateResultH264Settings($json['h264Settings']), 'H265Settings' => empty($json['h265Settings']) ? null : $this->populateResultH265Settings($json['h265Settings']), 'Mpeg2Settings' => empty($json['mpeg2Settings']) ? null : $this->populateResultMpeg2Settings($json['mpeg2Settings']), + 'PassthroughSettings' => empty($json['passthroughSettings']) ? null : $this->populateResultPassthroughSettings($json['passthroughSettings']), 'ProresSettings' => empty($json['proresSettings']) ? null : $this->populateResultProresSettings($json['proresSettings']), 'UncompressedSettings' => empty($json['uncompressedSettings']) ? null : $this->populateResultUncompressedSettings($json['uncompressedSettings']), 'Vc3Settings' => empty($json['vc3Settings']) ? null : $this->populateResultVc3Settings($json['vc3Settings']), @@ -2318,6 +2338,7 @@ private function populateResultVideoOverlayPosition(array $json): VideoOverlayPo { return new VideoOverlayPosition([ 'Height' => isset($json['height']) ? (int) $json['height'] : null, + 'Opacity' => isset($json['opacity']) ? (int) $json['opacity'] : null, 'Unit' => isset($json['unit']) ? (string) $json['unit'] : null, 'Width' => isset($json['width']) ? (int) $json['width'] : null, 'XPosition' => isset($json['xPosition']) ? (int) $json['xPosition'] : null, diff --git a/src/Service/MediaConvert/src/ValueObject/AudioDescription.php b/src/Service/MediaConvert/src/ValueObject/AudioDescription.php index 8762ccccd..a9d3e5e2e 100644 --- a/src/Service/MediaConvert/src/ValueObject/AudioDescription.php +++ b/src/Service/MediaConvert/src/ValueObject/AudioDescription.php @@ -31,6 +31,13 @@ final class AudioDescription */ private $audioNormalizationSettings; + /** + * Settings for audio pitch correction during framerate conversion. + * + * @var AudioPitchCorrectionSettings|null + */ + private $audioPitchCorrectionSettings; + /** * Specifies which audio data to use from each input. In the simplest case, specify an "Audio * Selector":#inputs-audio_selector by name based on its order within each input. For example if you specify "Audio @@ -125,6 +132,7 @@ final class AudioDescription * @param array{ * AudioChannelTaggingSettings?: AudioChannelTaggingSettings|array|null, * AudioNormalizationSettings?: AudioNormalizationSettings|array|null, + * AudioPitchCorrectionSettings?: AudioPitchCorrectionSettings|array|null, * AudioSourceName?: string|null, * AudioType?: int|null, * AudioTypeControl?: AudioTypeControl::*|null, @@ -140,6 +148,7 @@ public function __construct(array $input) { $this->audioChannelTaggingSettings = isset($input['AudioChannelTaggingSettings']) ? AudioChannelTaggingSettings::create($input['AudioChannelTaggingSettings']) : null; $this->audioNormalizationSettings = isset($input['AudioNormalizationSettings']) ? AudioNormalizationSettings::create($input['AudioNormalizationSettings']) : null; + $this->audioPitchCorrectionSettings = isset($input['AudioPitchCorrectionSettings']) ? AudioPitchCorrectionSettings::create($input['AudioPitchCorrectionSettings']) : null; $this->audioSourceName = $input['AudioSourceName'] ?? null; $this->audioType = $input['AudioType'] ?? null; $this->audioTypeControl = $input['AudioTypeControl'] ?? null; @@ -155,6 +164,7 @@ public function __construct(array $input) * @param array{ * AudioChannelTaggingSettings?: AudioChannelTaggingSettings|array|null, * AudioNormalizationSettings?: AudioNormalizationSettings|array|null, + * AudioPitchCorrectionSettings?: AudioPitchCorrectionSettings|array|null, * AudioSourceName?: string|null, * AudioType?: int|null, * AudioTypeControl?: AudioTypeControl::*|null, @@ -181,6 +191,11 @@ public function getAudioNormalizationSettings(): ?AudioNormalizationSettings return $this->audioNormalizationSettings; } + public function getAudioPitchCorrectionSettings(): ?AudioPitchCorrectionSettings + { + return $this->audioPitchCorrectionSettings; + } + public function getAudioSourceName(): ?string { return $this->audioSourceName; @@ -247,6 +262,9 @@ public function requestBody(): array if (null !== $v = $this->audioNormalizationSettings) { $payload['audioNormalizationSettings'] = $v->requestBody(); } + if (null !== $v = $this->audioPitchCorrectionSettings) { + $payload['audioPitchCorrectionSettings'] = $v->requestBody(); + } if (null !== $v = $this->audioSourceName) { $payload['audioSourceName'] = $v; } diff --git a/src/Service/MediaConvert/src/ValueObject/AudioPitchCorrectionSettings.php b/src/Service/MediaConvert/src/ValueObject/AudioPitchCorrectionSettings.php new file mode 100644 index 000000000..d2c2045bb --- /dev/null +++ b/src/Service/MediaConvert/src/ValueObject/AudioPitchCorrectionSettings.php @@ -0,0 +1,66 @@ +slowPalPitchCorrection = $input['SlowPalPitchCorrection'] ?? null; + } + + /** + * @param array{ + * SlowPalPitchCorrection?: SlowPalPitchCorrection::*|null, + * }|AudioPitchCorrectionSettings $input + */ + public static function create($input): self + { + return $input instanceof self ? $input : new self($input); + } + + /** + * @return SlowPalPitchCorrection::*|null + */ + public function getSlowPalPitchCorrection(): ?string + { + return $this->slowPalPitchCorrection; + } + + /** + * @internal + */ + public function requestBody(): array + { + $payload = []; + if (null !== $v = $this->slowPalPitchCorrection) { + if (!SlowPalPitchCorrection::exists($v)) { + throw new InvalidArgument(\sprintf('Invalid parameter "slowPalPitchCorrection" for "%s". The value "%s" is not a valid "SlowPalPitchCorrection".', __CLASS__, $v)); + } + $payload['slowPalPitchCorrection'] = $v; + } + + return $payload; + } +} diff --git a/src/Service/MediaConvert/src/ValueObject/AudioSelector.php b/src/Service/MediaConvert/src/ValueObject/AudioSelector.php index a5aa69ad6..c85c8df30 100644 --- a/src/Service/MediaConvert/src/ValueObject/AudioSelector.php +++ b/src/Service/MediaConvert/src/ValueObject/AudioSelector.php @@ -112,24 +112,42 @@ final class AudioSelector * Specify how MediaConvert selects audio content within your input. The default is Track. PID: Select audio by * specifying the Packet Identifier (PID) values for MPEG Transport Stream inputs. Use this when you know the exact PID * values of your audio streams. Track: Default. Select audio by track number. This is the most common option and works - * with most input container formats. Language code: Select audio by language using an ISO 639-2 or ISO 639-3 - * three-letter code in all capital letters. Use this when your source has embedded language metadata and you want to - * select tracks based on their language. HLS rendition group: Select audio from an HLS rendition group. Use this when - * your input is an HLS package with multiple audio renditions and you want to select specific rendition groups. All - * PCM: Select all uncompressed PCM audio tracks from your input automatically. This is useful when you want to include - * all PCM audio tracks without specifying individual track numbers. + * with most input container formats. If more types of audio data get recognized in the future, these numberings may + * shift, but the numberings used for Stream mode will not. Language code: Select audio by language using an ISO 639-2 + * or ISO 639-3 three-letter code in all capital letters. Use this when your source has embedded language metadata + * and you want to select tracks based on their language. HLS rendition group: Select audio from an HLS rendition group. + * Use this when your input is an HLS package with multiple audio renditions and you want to select specific rendition + * groups. All PCM: Select all uncompressed PCM audio tracks from your input automatically. This is useful when you want + * to include all PCM audio tracks without specifying individual track numbers. Stream: Select audio by stream number. + * Stream numbers include all tracks in the source file, regardless of type, and correspond to either the order of + * tracks in the file, or if applicable, the stream number metadata of the track. Although all tracks count toward these + * stream numbers, in this audio selector context, only the stream number of a track containing audio data may be used. + * If your source file contains a track which is not recognized by the service, then the corresponding stream number + * will still be reserved for future use. If more types of audio data get recognized in the future, these numberings + * will not shift. * * @var AudioSelectorType::*|null */ private $selectorType; /** - * Identify a track from the input audio to include in this selector by entering the track index number. To include + * Identify a track from the input audio to include in this selector by entering the stream index number. These + * numberings count all tracks in the input file, but only a track containing audio data may be used here. To include * several tracks in a single audio selector, specify multiple tracks as follows. Using the console, enter a * comma-separated list. For example, type "1,2,3" to include tracks 1 through 3. * * @var int[]|null */ + private $streams; + + /** + * Identify a track from the input audio to include in this selector by entering the track index number. These + * numberings include only tracks recognized as audio. If the service recognizes more types of audio tracks in the + * future, these numberings may shift. To include several tracks in a single audio selector, specify multiple tracks as + * follows. Using the console, enter a comma-separated list. For example, type "1,2,3" to include tracks 1 through 3. + * + * @var int[]|null + */ private $tracks; /** @@ -145,6 +163,7 @@ final class AudioSelector * ProgramSelection?: int|null, * RemixSettings?: RemixSettings|array|null, * SelectorType?: AudioSelectorType::*|null, + * Streams?: int[]|null, * Tracks?: int[]|null, * } $input */ @@ -161,6 +180,7 @@ public function __construct(array $input) $this->programSelection = $input['ProgramSelection'] ?? null; $this->remixSettings = isset($input['RemixSettings']) ? RemixSettings::create($input['RemixSettings']) : null; $this->selectorType = $input['SelectorType'] ?? null; + $this->streams = $input['Streams'] ?? null; $this->tracks = $input['Tracks'] ?? null; } @@ -177,6 +197,7 @@ public function __construct(array $input) * ProgramSelection?: int|null, * RemixSettings?: RemixSettings|array|null, * SelectorType?: AudioSelectorType::*|null, + * Streams?: int[]|null, * Tracks?: int[]|null, * }|AudioSelector $input */ @@ -255,6 +276,14 @@ public function getSelectorType(): ?string return $this->selectorType; } + /** + * @return int[] + */ + public function getStreams(): array + { + return $this->streams ?? []; + } + /** * @return int[] */ @@ -319,6 +348,14 @@ public function requestBody(): array } $payload['selectorType'] = $v; } + if (null !== $v = $this->streams) { + $index = -1; + $payload['streams'] = []; + foreach ($v as $listValue) { + ++$index; + $payload['streams'][$index] = $listValue; + } + } if (null !== $v = $this->tracks) { $index = -1; $payload['tracks'] = []; diff --git a/src/Service/MediaConvert/src/ValueObject/CmafGroupSettings.php b/src/Service/MediaConvert/src/ValueObject/CmafGroupSettings.php index 446082606..05e56846e 100644 --- a/src/Service/MediaConvert/src/ValueObject/CmafGroupSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/CmafGroupSettings.php @@ -74,11 +74,13 @@ final class CmafGroupSettings private $dashIframeTrickPlayNameModifier; /** - * Specify how MediaConvert writes SegmentTimeline in your output DASH manifest. To write a SegmentTimeline in each - * video Representation: Keep the default value, Basic. To write a common SegmentTimeline in the video AdaptationSet: - * Choose Compact. Note that MediaConvert will still write a SegmentTimeline in any Representation that does not share a - * common timeline. To write a video AdaptationSet for each different output framerate, and a common SegmentTimeline in - * each AdaptationSet: Choose Distinct. + * Specify how MediaConvert writes SegmentTimeline in your output DASH manifest. To write a SegmentTimeline for outputs + * that you also specify a Name modifier for: Keep the default value, Basic. Note that if you do not specify a name + * modifier for an output, MediaConvert will not write a SegmentTimeline for it. To write a common SegmentTimeline in + * the video AdaptationSet: Choose Compact. Note that MediaConvert will still write a SegmentTimeline in any + * Representation that does not share a common timeline. To write a video AdaptationSet for each different output + * framerate, and a common SegmentTimeline in each AdaptationSet: Choose Distinct. To write a SegmentTimeline in each + * AdaptationSet: Choose Full. * * @var DashManifestStyle::*|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/DashIsoGroupSettings.php b/src/Service/MediaConvert/src/ValueObject/DashIsoGroupSettings.php index 2143e3eb7..84f0e384e 100644 --- a/src/Service/MediaConvert/src/ValueObject/DashIsoGroupSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/DashIsoGroupSettings.php @@ -64,11 +64,13 @@ final class DashIsoGroupSettings private $dashIframeTrickPlayNameModifier; /** - * Specify how MediaConvert writes SegmentTimeline in your output DASH manifest. To write a SegmentTimeline in each - * video Representation: Keep the default value, Basic. To write a common SegmentTimeline in the video AdaptationSet: - * Choose Compact. Note that MediaConvert will still write a SegmentTimeline in any Representation that does not share a - * common timeline. To write a video AdaptationSet for each different output framerate, and a common SegmentTimeline in - * each AdaptationSet: Choose Distinct. + * Specify how MediaConvert writes SegmentTimeline in your output DASH manifest. To write a SegmentTimeline for outputs + * that you also specify a Name modifier for: Keep the default value, Basic. Note that if you do not specify a name + * modifier for an output, MediaConvert will not write a SegmentTimeline for it. To write a common SegmentTimeline in + * the video AdaptationSet: Choose Compact. Note that MediaConvert will still write a SegmentTimeline in any + * Representation that does not share a common timeline. To write a video AdaptationSet for each different output + * framerate, and a common SegmentTimeline in each AdaptationSet: Choose Distinct. To write a SegmentTimeline in each + * AdaptationSet: Choose Full. * * @var DashManifestStyle::*|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/MpdSettings.php b/src/Service/MediaConvert/src/ValueObject/MpdSettings.php index 3ca474c80..800ef1f87 100644 --- a/src/Service/MediaConvert/src/ValueObject/MpdSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/MpdSettings.php @@ -45,10 +45,10 @@ final class MpdSettings private $audioDuration; /** - * Use this setting only in DASH output groups that include sidecar TTML or IMSC captions. You specify sidecar captions - * in a separate output from your audio and video. Choose Raw for captions in a single XML file in a raw container. - * Choose Fragmented MPEG-4 for captions in XML format contained within fragmented MP4 files. This set of fragmented MP4 - * files is separate from your video and audio fragmented MP4 files. + * Use this setting only in DASH output groups that include sidecar TTML, IMSC or WEBVTT captions. You specify sidecar + * captions in a separate output from your audio and video. Choose Raw for captions in a single XML file in a raw + * container. Choose Fragmented MPEG-4 for captions in XML format contained within fragmented MP4 files. This set of + * fragmented MP4 files is separate from your video and audio fragmented MP4 files. * * @var MpdCaptionContainerType::*|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/PassthroughSettings.php b/src/Service/MediaConvert/src/ValueObject/PassthroughSettings.php new file mode 100644 index 000000000..c575d051d --- /dev/null +++ b/src/Service/MediaConvert/src/ValueObject/PassthroughSettings.php @@ -0,0 +1,66 @@ +videoSelectorMode = $input['VideoSelectorMode'] ?? null; + } + + /** + * @param array{ + * VideoSelectorMode?: VideoSelectorMode::*|null, + * }|PassthroughSettings $input + */ + public static function create($input): self + { + return $input instanceof self ? $input : new self($input); + } + + /** + * @return VideoSelectorMode::*|null + */ + public function getVideoSelectorMode(): ?string + { + return $this->videoSelectorMode; + } + + /** + * @internal + */ + public function requestBody(): array + { + $payload = []; + if (null !== $v = $this->videoSelectorMode) { + if (!VideoSelectorMode::exists($v)) { + throw new InvalidArgument(\sprintf('Invalid parameter "videoSelectorMode" for "%s". The value "%s" is not a valid "VideoSelectorMode".', __CLASS__, $v)); + } + $payload['videoSelectorMode'] = $v; + } + + return $payload; + } +} diff --git a/src/Service/MediaConvert/src/ValueObject/TrackSourceSettings.php b/src/Service/MediaConvert/src/ValueObject/TrackSourceSettings.php index cdbf80261..c963e0606 100644 --- a/src/Service/MediaConvert/src/ValueObject/TrackSourceSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/TrackSourceSettings.php @@ -9,11 +9,26 @@ */ final class TrackSourceSettings { + /** + * Use this setting to select a single captions track from a source. Stream numbers include all tracks in the source + * file, regardless of type, and correspond to either the order of tracks in the file, or if applicable, the stream + * number metadata of the track. Although all tracks count toward these stream numbers, in this caption selector + * context, only the stream number of a track containing caption data may be used. To include more than one captions + * track in your job outputs, create multiple input captions selectors. Specify one stream per selector. If your source + * file contains a track which is not recognized by the service, then the corresponding stream number will still be + * reserved for future use. If more types of caption data get recognized in the future, these numberings will not shift. + * + * @var int|null + */ + private $streamNumber; + /** * Use this setting to select a single captions track from a source. Track numbers correspond to the order in the * captions source file. For IMF sources, track numbering is based on the order that the captions appear in the CPL. For * example, use 1 to select the captions asset that is listed first in the CPL. To include more than one captions track - * in your job outputs, create multiple input captions selectors. Specify one track per selector. + * in your job outputs, create multiple input captions selectors. Specify one track per selector. If more types of + * caption data get recognized in the future, these numberings may shift, but the numberings used for streamNumber will + * not. * * @var int|null */ @@ -21,16 +36,19 @@ final class TrackSourceSettings /** * @param array{ + * StreamNumber?: int|null, * TrackNumber?: int|null, * } $input */ public function __construct(array $input) { + $this->streamNumber = $input['StreamNumber'] ?? null; $this->trackNumber = $input['TrackNumber'] ?? null; } /** * @param array{ + * StreamNumber?: int|null, * TrackNumber?: int|null, * }|TrackSourceSettings $input */ @@ -39,6 +57,11 @@ public static function create($input): self return $input instanceof self ? $input : new self($input); } + public function getStreamNumber(): ?int + { + return $this->streamNumber; + } + public function getTrackNumber(): ?int { return $this->trackNumber; @@ -50,6 +73,9 @@ public function getTrackNumber(): ?int public function requestBody(): array { $payload = []; + if (null !== $v = $this->streamNumber) { + $payload['streamNumber'] = $v; + } if (null !== $v = $this->trackNumber) { $payload['trackNumber'] = $v; } diff --git a/src/Service/MediaConvert/src/ValueObject/VideoCodecSettings.php b/src/Service/MediaConvert/src/ValueObject/VideoCodecSettings.php index abadd7709..680a88046 100644 --- a/src/Service/MediaConvert/src/ValueObject/VideoCodecSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/VideoCodecSettings.php @@ -77,6 +77,13 @@ final class VideoCodecSettings */ private $mpeg2Settings; + /** + * Optional settings when you set Codec to the value Passthrough. + * + * @var PassthroughSettings|null + */ + private $passthroughSettings; + /** * Required when you set Codec to the value PRORES. * @@ -129,6 +136,7 @@ final class VideoCodecSettings * H264Settings?: H264Settings|array|null, * H265Settings?: H265Settings|array|null, * Mpeg2Settings?: Mpeg2Settings|array|null, + * PassthroughSettings?: PassthroughSettings|array|null, * ProresSettings?: ProresSettings|array|null, * UncompressedSettings?: UncompressedSettings|array|null, * Vc3Settings?: Vc3Settings|array|null, @@ -147,6 +155,7 @@ public function __construct(array $input) $this->h264Settings = isset($input['H264Settings']) ? H264Settings::create($input['H264Settings']) : null; $this->h265Settings = isset($input['H265Settings']) ? H265Settings::create($input['H265Settings']) : null; $this->mpeg2Settings = isset($input['Mpeg2Settings']) ? Mpeg2Settings::create($input['Mpeg2Settings']) : null; + $this->passthroughSettings = isset($input['PassthroughSettings']) ? PassthroughSettings::create($input['PassthroughSettings']) : null; $this->proresSettings = isset($input['ProresSettings']) ? ProresSettings::create($input['ProresSettings']) : null; $this->uncompressedSettings = isset($input['UncompressedSettings']) ? UncompressedSettings::create($input['UncompressedSettings']) : null; $this->vc3Settings = isset($input['Vc3Settings']) ? Vc3Settings::create($input['Vc3Settings']) : null; @@ -165,6 +174,7 @@ public function __construct(array $input) * H264Settings?: H264Settings|array|null, * H265Settings?: H265Settings|array|null, * Mpeg2Settings?: Mpeg2Settings|array|null, + * PassthroughSettings?: PassthroughSettings|array|null, * ProresSettings?: ProresSettings|array|null, * UncompressedSettings?: UncompressedSettings|array|null, * Vc3Settings?: Vc3Settings|array|null, @@ -221,6 +231,11 @@ public function getMpeg2Settings(): ?Mpeg2Settings return $this->mpeg2Settings; } + public function getPassthroughSettings(): ?PassthroughSettings + { + return $this->passthroughSettings; + } + public function getProresSettings(): ?ProresSettings { return $this->proresSettings; @@ -284,6 +299,9 @@ public function requestBody(): array if (null !== $v = $this->mpeg2Settings) { $payload['mpeg2Settings'] = $v->requestBody(); } + if (null !== $v = $this->passthroughSettings) { + $payload['passthroughSettings'] = $v->requestBody(); + } if (null !== $v = $this->proresSettings) { $payload['proresSettings'] = $v->requestBody(); } diff --git a/src/Service/MediaConvert/src/ValueObject/VideoOverlayPosition.php b/src/Service/MediaConvert/src/ValueObject/VideoOverlayPosition.php index 4a71d6976..af6500b06 100644 --- a/src/Service/MediaConvert/src/ValueObject/VideoOverlayPosition.php +++ b/src/Service/MediaConvert/src/ValueObject/VideoOverlayPosition.php @@ -22,6 +22,14 @@ final class VideoOverlayPosition */ private $height; + /** + * Use Opacity to specify how much of the underlying video shows through the overlay video. 0 is transparent and 100 is + * fully opaque. Default is 100. + * + * @var int|null + */ + private $opacity; + /** * Specify the Unit type to use when you enter a value for X position, Y position, Width, or Height. You can choose * Pixels or Percentage. Leave blank to use the default value, Pixels. @@ -69,6 +77,7 @@ final class VideoOverlayPosition /** * @param array{ * Height?: int|null, + * Opacity?: int|null, * Unit?: VideoOverlayUnit::*|null, * Width?: int|null, * XPosition?: int|null, @@ -78,6 +87,7 @@ final class VideoOverlayPosition public function __construct(array $input) { $this->height = $input['Height'] ?? null; + $this->opacity = $input['Opacity'] ?? null; $this->unit = $input['Unit'] ?? null; $this->width = $input['Width'] ?? null; $this->xposition = $input['XPosition'] ?? null; @@ -87,6 +97,7 @@ public function __construct(array $input) /** * @param array{ * Height?: int|null, + * Opacity?: int|null, * Unit?: VideoOverlayUnit::*|null, * Width?: int|null, * XPosition?: int|null, @@ -103,6 +114,11 @@ public function getHeight(): ?int return $this->height; } + public function getOpacity(): ?int + { + return $this->opacity; + } + /** * @return VideoOverlayUnit::*|null */ @@ -135,6 +151,9 @@ public function requestBody(): array if (null !== $v = $this->height) { $payload['height'] = $v; } + if (null !== $v = $this->opacity) { + $payload['opacity'] = $v; + } if (null !== $v = $this->unit) { if (!VideoOverlayUnit::exists($v)) { throw new InvalidArgument(\sprintf('Invalid parameter "unit" for "%s". The value "%s" is not a valid "VideoOverlayUnit".', __CLASS__, $v)); diff --git a/src/Service/MediaConvert/src/ValueObject/VideoOverlayTransition.php b/src/Service/MediaConvert/src/ValueObject/VideoOverlayTransition.php index ef7f6641b..88eb27d1b 100644 --- a/src/Service/MediaConvert/src/ValueObject/VideoOverlayTransition.php +++ b/src/Service/MediaConvert/src/ValueObject/VideoOverlayTransition.php @@ -5,7 +5,7 @@ /** * Specify one or more Transitions for your video overlay. Use Transitions to reposition or resize your overlay over * time. To use the same position and size for the duration of your video overlay: Leave blank. To specify a Transition: - * Enter a value for Start timecode, End Timecode, X Position, Y Position, Width, or Height. + * Enter a value for Start timecode, End Timecode, X Position, Y Position, Width, Height, or Opacity. */ final class VideoOverlayTransition { diff --git a/src/Service/MediaConvert/src/ValueObject/VideoSelector.php b/src/Service/MediaConvert/src/ValueObject/VideoSelector.php index 23876dcf1..77aac77af 100644 --- a/src/Service/MediaConvert/src/ValueObject/VideoSelector.php +++ b/src/Service/MediaConvert/src/ValueObject/VideoSelector.php @@ -153,8 +153,11 @@ final class VideoSelector private $selectorType; /** - * Specify a stream for MediaConvert to use from your HLS input. Enter an integer corresponding to the stream order in - * your HLS manifest. + * Specify one or more video streams for MediaConvert to use from your HLS input. Enter an integer corresponding to the + * stream number, with the first stream in your HLS multivariant playlist starting at 1.For re-encoding workflows, + * MediaConvert uses the video stream that you select with the highest bitrate as the input.For video passthrough + * workflows, you specify whether to passthrough a single video stream or multiple video streams under Video selector + * source in the output video encoding settings. * * @var int[]|null */ From 1bde337cfb9063b9652dcf526ab4f782fcdaf5a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Deruss=C3=A9?= Date: Tue, 4 Nov 2025 09:11:17 +0100 Subject: [PATCH 2/2] Update src/Service/Kinesis/CHANGELOG.md --- src/Service/Kinesis/CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Service/Kinesis/CHANGELOG.md b/src/Service/Kinesis/CHANGELOG.md index 30fa3bc77..ee96d006f 100644 --- a/src/Service/Kinesis/CHANGELOG.md +++ b/src/Service/Kinesis/CHANGELOG.md @@ -6,8 +6,7 @@ - AWS api-change: Added `us-isob-west-1` region - AWS api-change: Adds support for record sizes up to 10MiB and introduces new UpdateMaxRecordSize API to modify stream record size limits. Adds record size parameters to existing CreateStream and DescribeStreamSummary APIs for request and response payloads respectively. -- AWS api-change: Adds support for MinimumThroughputBillingCommitment with new UpdateAccountSettings API. Adds support to configure warm throughput for on-demand streams in new UpdateStreamWarmThroughput API and existing CreateStream API and UpdateStreamMode API. -- AWS api-change: Update endpoint ruleset parameters casing +- AWS api-change: Adds support to configure warm throughput for on-demand streams in new UpdateStreamWarmThroughput API and existing CreateStream API and UpdateStreamMode API. ### Dependency bumped