diff --git a/manifest.json b/manifest.json index 21b79b935..03d8c6e3e 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "variables": { - "${LATEST}": "3.343.8" + "${LATEST}": "3.343.12" }, "endpoints": "https://raw.githubusercontent.com/aws/aws-sdk-php/${LATEST}/src/data/endpoints.json", "services": { diff --git a/src/Service/CodeBuild/CHANGELOG.md b/src/Service/CodeBuild/CHANGELOG.md index 25a655758..dbb3e0267 100644 --- a/src/Service/CodeBuild/CHANGELOG.md +++ b/src/Service/CodeBuild/CHANGELOG.md @@ -2,6 +2,10 @@ ## NOT RELEASED +### Added + +- AWS api-change: AWS CodeBuild now supports Docker Server capability + ## 2.10.0 ### Added diff --git a/src/Service/CodeBuild/composer.json b/src/Service/CodeBuild/composer.json index 2187c09cd..b654fb3c8 100644 --- a/src/Service/CodeBuild/composer.json +++ b/src/Service/CodeBuild/composer.json @@ -28,7 +28,7 @@ }, "extra": { "branch-alias": { - "dev-master": "2.10-dev" + "dev-master": "2.11-dev" } } } diff --git a/src/Service/CodeBuild/src/Result/BatchGetBuildsOutput.php b/src/Service/CodeBuild/src/Result/BatchGetBuildsOutput.php index 8e581eef4..b0b894512 100644 --- a/src/Service/CodeBuild/src/Result/BatchGetBuildsOutput.php +++ b/src/Service/CodeBuild/src/Result/BatchGetBuildsOutput.php @@ -11,6 +11,8 @@ use AsyncAws\CodeBuild\ValueObject\CloudWatchLogsConfig; use AsyncAws\CodeBuild\ValueObject\ComputeConfiguration; use AsyncAws\CodeBuild\ValueObject\DebugSession; +use AsyncAws\CodeBuild\ValueObject\DockerServer; +use AsyncAws\CodeBuild\ValueObject\DockerServerStatus; use AsyncAws\CodeBuild\ValueObject\EnvironmentVariable; use AsyncAws\CodeBuild\ValueObject\ExportedEnvironmentVariable; use AsyncAws\CodeBuild\ValueObject\GitSubmodulesConfig; @@ -255,6 +257,23 @@ private function populateResultDebugSession(array $json): DebugSession ]); } + private function populateResultDockerServer(array $json): DockerServer + { + return new DockerServer([ + 'computeType' => (string) $json['computeType'], + 'securityGroupIds' => !isset($json['securityGroupIds']) ? null : $this->populateResultSecurityGroupIds($json['securityGroupIds']), + 'status' => empty($json['status']) ? null : $this->populateResultDockerServerStatus($json['status']), + ]); + } + + private function populateResultDockerServerStatus(array $json): DockerServerStatus + { + return new DockerServerStatus([ + 'status' => isset($json['status']) ? (string) $json['status'] : null, + 'message' => isset($json['message']) ? (string) $json['message'] : null, + ]); + } + private function populateResultEnvironmentVariable(array $json): EnvironmentVariable { return new EnvironmentVariable([ @@ -387,6 +406,7 @@ private function populateResultProjectEnvironment(array $json): ProjectEnvironme 'certificate' => isset($json['certificate']) ? (string) $json['certificate'] : null, 'registryCredential' => empty($json['registryCredential']) ? null : $this->populateResultRegistryCredential($json['registryCredential']), 'imagePullCredentialsType' => isset($json['imagePullCredentialsType']) ? (string) $json['imagePullCredentialsType'] : null, + 'dockerServer' => empty($json['dockerServer']) ? null : $this->populateResultDockerServer($json['dockerServer']), ]); } diff --git a/src/Service/CodeBuild/src/Result/StartBuildOutput.php b/src/Service/CodeBuild/src/Result/StartBuildOutput.php index 3d8068d72..c8cf505d7 100644 --- a/src/Service/CodeBuild/src/Result/StartBuildOutput.php +++ b/src/Service/CodeBuild/src/Result/StartBuildOutput.php @@ -11,6 +11,8 @@ use AsyncAws\CodeBuild\ValueObject\CloudWatchLogsConfig; use AsyncAws\CodeBuild\ValueObject\ComputeConfiguration; use AsyncAws\CodeBuild\ValueObject\DebugSession; +use AsyncAws\CodeBuild\ValueObject\DockerServer; +use AsyncAws\CodeBuild\ValueObject\DockerServerStatus; use AsyncAws\CodeBuild\ValueObject\EnvironmentVariable; use AsyncAws\CodeBuild\ValueObject\ExportedEnvironmentVariable; use AsyncAws\CodeBuild\ValueObject\GitSubmodulesConfig; @@ -205,6 +207,23 @@ private function populateResultDebugSession(array $json): DebugSession ]); } + private function populateResultDockerServer(array $json): DockerServer + { + return new DockerServer([ + 'computeType' => (string) $json['computeType'], + 'securityGroupIds' => !isset($json['securityGroupIds']) ? null : $this->populateResultSecurityGroupIds($json['securityGroupIds']), + 'status' => empty($json['status']) ? null : $this->populateResultDockerServerStatus($json['status']), + ]); + } + + private function populateResultDockerServerStatus(array $json): DockerServerStatus + { + return new DockerServerStatus([ + 'status' => isset($json['status']) ? (string) $json['status'] : null, + 'message' => isset($json['message']) ? (string) $json['message'] : null, + ]); + } + private function populateResultEnvironmentVariable(array $json): EnvironmentVariable { return new EnvironmentVariable([ @@ -337,6 +356,7 @@ private function populateResultProjectEnvironment(array $json): ProjectEnvironme 'certificate' => isset($json['certificate']) ? (string) $json['certificate'] : null, 'registryCredential' => empty($json['registryCredential']) ? null : $this->populateResultRegistryCredential($json['registryCredential']), 'imagePullCredentialsType' => isset($json['imagePullCredentialsType']) ? (string) $json['imagePullCredentialsType'] : null, + 'dockerServer' => empty($json['dockerServer']) ? null : $this->populateResultDockerServer($json['dockerServer']), ]); } diff --git a/src/Service/CodeBuild/src/Result/StopBuildOutput.php b/src/Service/CodeBuild/src/Result/StopBuildOutput.php index bf9944e39..463088425 100644 --- a/src/Service/CodeBuild/src/Result/StopBuildOutput.php +++ b/src/Service/CodeBuild/src/Result/StopBuildOutput.php @@ -11,6 +11,8 @@ use AsyncAws\CodeBuild\ValueObject\CloudWatchLogsConfig; use AsyncAws\CodeBuild\ValueObject\ComputeConfiguration; use AsyncAws\CodeBuild\ValueObject\DebugSession; +use AsyncAws\CodeBuild\ValueObject\DockerServer; +use AsyncAws\CodeBuild\ValueObject\DockerServerStatus; use AsyncAws\CodeBuild\ValueObject\EnvironmentVariable; use AsyncAws\CodeBuild\ValueObject\ExportedEnvironmentVariable; use AsyncAws\CodeBuild\ValueObject\GitSubmodulesConfig; @@ -205,6 +207,23 @@ private function populateResultDebugSession(array $json): DebugSession ]); } + private function populateResultDockerServer(array $json): DockerServer + { + return new DockerServer([ + 'computeType' => (string) $json['computeType'], + 'securityGroupIds' => !isset($json['securityGroupIds']) ? null : $this->populateResultSecurityGroupIds($json['securityGroupIds']), + 'status' => empty($json['status']) ? null : $this->populateResultDockerServerStatus($json['status']), + ]); + } + + private function populateResultDockerServerStatus(array $json): DockerServerStatus + { + return new DockerServerStatus([ + 'status' => isset($json['status']) ? (string) $json['status'] : null, + 'message' => isset($json['message']) ? (string) $json['message'] : null, + ]); + } + private function populateResultEnvironmentVariable(array $json): EnvironmentVariable { return new EnvironmentVariable([ @@ -337,6 +356,7 @@ private function populateResultProjectEnvironment(array $json): ProjectEnvironme 'certificate' => isset($json['certificate']) ? (string) $json['certificate'] : null, 'registryCredential' => empty($json['registryCredential']) ? null : $this->populateResultRegistryCredential($json['registryCredential']), 'imagePullCredentialsType' => isset($json['imagePullCredentialsType']) ? (string) $json['imagePullCredentialsType'] : null, + 'dockerServer' => empty($json['dockerServer']) ? null : $this->populateResultDockerServer($json['dockerServer']), ]); } diff --git a/src/Service/CodeBuild/src/ValueObject/DockerServer.php b/src/Service/CodeBuild/src/ValueObject/DockerServer.php new file mode 100644 index 000000000..a6830a0da --- /dev/null +++ b/src/Service/CodeBuild/src/ValueObject/DockerServer.php @@ -0,0 +1,97 @@ + Security groups configured for Docker servers should allow ingress network traffic from the VPC configured in the + * > project. They should allow ingress on port 9876. + * + * @var string[]|null + */ + private $securityGroupIds; + + /** + * A DockerServerStatus object to use for this docker server. + * + * @var DockerServerStatus|null + */ + private $status; + + /** + * @param array{ + * computeType: ComputeType::*, + * securityGroupIds?: null|string[], + * status?: null|DockerServerStatus|array, + * } $input + */ + public function __construct(array $input) + { + $this->computeType = $input['computeType'] ?? $this->throwException(new InvalidArgument('Missing required field "computeType".')); + $this->securityGroupIds = $input['securityGroupIds'] ?? null; + $this->status = isset($input['status']) ? DockerServerStatus::create($input['status']) : null; + } + + /** + * @param array{ + * computeType: ComputeType::*, + * securityGroupIds?: null|string[], + * status?: null|DockerServerStatus|array, + * }|DockerServer $input + */ + public static function create($input): self + { + return $input instanceof self ? $input : new self($input); + } + + /** + * @return ComputeType::* + */ + public function getComputeType(): string + { + return $this->computeType; + } + + /** + * @return string[] + */ + public function getSecurityGroupIds(): array + { + return $this->securityGroupIds ?? []; + } + + public function getStatus(): ?DockerServerStatus + { + return $this->status; + } + + /** + * @return never + */ + private function throwException(\Throwable $exception) + { + throw $exception; + } +} diff --git a/src/Service/CodeBuild/src/ValueObject/DockerServerStatus.php b/src/Service/CodeBuild/src/ValueObject/DockerServerStatus.php new file mode 100644 index 000000000..32590fc6f --- /dev/null +++ b/src/Service/CodeBuild/src/ValueObject/DockerServerStatus.php @@ -0,0 +1,56 @@ +status = $input['status'] ?? null; + $this->message = $input['message'] ?? null; + } + + /** + * @param array{ + * status?: null|string, + * message?: null|string, + * }|DockerServerStatus $input + */ + public static function create($input): self + { + return $input instanceof self ? $input : new self($input); + } + + public function getMessage(): ?string + { + return $this->message; + } + + public function getStatus(): ?string + { + return $this->status; + } +} diff --git a/src/Service/CodeBuild/src/ValueObject/ProjectEnvironment.php b/src/Service/CodeBuild/src/ValueObject/ProjectEnvironment.php index 497dd1dd8..4f64be652 100644 --- a/src/Service/CodeBuild/src/ValueObject/ProjectEnvironment.php +++ b/src/Service/CodeBuild/src/ValueObject/ProjectEnvironment.php @@ -174,6 +174,13 @@ final class ProjectEnvironment */ private $imagePullCredentialsType; + /** + * A DockerServer object to use for this build project. + * + * @var DockerServer|null + */ + private $dockerServer; + /** * @param array{ * type: EnvironmentType::*, @@ -186,6 +193,7 @@ final class ProjectEnvironment * certificate?: null|string, * registryCredential?: null|RegistryCredential|array, * imagePullCredentialsType?: null|ImagePullCredentialsType::*, + * dockerServer?: null|DockerServer|array, * } $input */ public function __construct(array $input) @@ -200,6 +208,7 @@ public function __construct(array $input) $this->certificate = $input['certificate'] ?? null; $this->registryCredential = isset($input['registryCredential']) ? RegistryCredential::create($input['registryCredential']) : null; $this->imagePullCredentialsType = $input['imagePullCredentialsType'] ?? null; + $this->dockerServer = isset($input['dockerServer']) ? DockerServer::create($input['dockerServer']) : null; } /** @@ -214,6 +223,7 @@ public function __construct(array $input) * certificate?: null|string, * registryCredential?: null|RegistryCredential|array, * imagePullCredentialsType?: null|ImagePullCredentialsType::*, + * dockerServer?: null|DockerServer|array, * }|ProjectEnvironment $input */ public static function create($input): self @@ -239,6 +249,11 @@ public function getComputeType(): string return $this->computeType; } + public function getDockerServer(): ?DockerServer + { + return $this->dockerServer; + } + /** * @return EnvironmentVariable[] */ diff --git a/src/Service/MediaConvert/CHANGELOG.md b/src/Service/MediaConvert/CHANGELOG.md index 640c9e2ec..365d6ea66 100644 --- a/src/Service/MediaConvert/CHANGELOG.md +++ b/src/Service/MediaConvert/CHANGELOG.md @@ -2,6 +2,10 @@ ## NOT RELEASED +### Added + +- AWS api-change: This update enables cropping for video overlays and adds a new STL to Teletext upconversion toggle to preserve styling. + ## 1.8.0 ### Added diff --git a/src/Service/MediaConvert/composer.json b/src/Service/MediaConvert/composer.json index 2f944b24e..f4d02e4f4 100644 --- a/src/Service/MediaConvert/composer.json +++ b/src/Service/MediaConvert/composer.json @@ -28,7 +28,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } } } diff --git a/src/Service/MediaConvert/src/Enum/CaptionSourceUpconvertSTLToTeletext.php b/src/Service/MediaConvert/src/Enum/CaptionSourceUpconvertSTLToTeletext.php new file mode 100644 index 000000000..e74669177 --- /dev/null +++ b/src/Service/MediaConvert/src/Enum/CaptionSourceUpconvertSTLToTeletext.php @@ -0,0 +1,22 @@ + true, + self::UPCONVERT => true, + ][$value]); + } +} diff --git a/src/Service/MediaConvert/src/Result/CreateJobResponse.php b/src/Service/MediaConvert/src/Result/CreateJobResponse.php index 091aef48e..ff1bf26cb 100644 --- a/src/Service/MediaConvert/src/Result/CreateJobResponse.php +++ b/src/Service/MediaConvert/src/Result/CreateJobResponse.php @@ -163,6 +163,7 @@ use AsyncAws\MediaConvert\ValueObject\VideoDescription; use AsyncAws\MediaConvert\ValueObject\VideoDetail; use AsyncAws\MediaConvert\ValueObject\VideoOverlay; +use AsyncAws\MediaConvert\ValueObject\VideoOverlayCrop; use AsyncAws\MediaConvert\ValueObject\VideoOverlayInput; use AsyncAws\MediaConvert\ValueObject\VideoOverlayInputClipping; use AsyncAws\MediaConvert\ValueObject\VideoOverlayPosition; @@ -1000,6 +1001,7 @@ private function populateResultFileSourceSettings(array $json): FileSourceSettin 'SourceFile' => isset($json['sourceFile']) ? (string) $json['sourceFile'] : null, 'TimeDelta' => isset($json['timeDelta']) ? (int) $json['timeDelta'] : null, 'TimeDeltaUnits' => isset($json['timeDeltaUnits']) ? (string) $json['timeDeltaUnits'] : null, + 'UpconvertSTLToTeletext' => isset($json['upconvertSTLToTeletext']) ? (string) $json['upconvertSTLToTeletext'] : null, ]); } @@ -2183,6 +2185,7 @@ private function populateResultVideoDetail(array $json): VideoDetail private function populateResultVideoOverlay(array $json): VideoOverlay { return new VideoOverlay([ + 'Crop' => empty($json['crop']) ? null : $this->populateResultVideoOverlayCrop($json['crop']), 'EndTimecode' => isset($json['endTimecode']) ? (string) $json['endTimecode'] : null, 'InitialPosition' => empty($json['initialPosition']) ? null : $this->populateResultVideoOverlayPosition($json['initialPosition']), 'Input' => empty($json['input']) ? null : $this->populateResultVideoOverlayInput($json['input']), @@ -2192,6 +2195,17 @@ private function populateResultVideoOverlay(array $json): VideoOverlay ]); } + private function populateResultVideoOverlayCrop(array $json): VideoOverlayCrop + { + return new VideoOverlayCrop([ + 'Height' => isset($json['height']) ? (int) $json['height'] : null, + 'Unit' => isset($json['unit']) ? (string) $json['unit'] : null, + 'Width' => isset($json['width']) ? (int) $json['width'] : null, + 'X' => isset($json['x']) ? (int) $json['x'] : null, + 'Y' => isset($json['y']) ? (int) $json['y'] : null, + ]); + } + private function populateResultVideoOverlayInput(array $json): VideoOverlayInput { return new VideoOverlayInput([ diff --git a/src/Service/MediaConvert/src/Result/GetJobResponse.php b/src/Service/MediaConvert/src/Result/GetJobResponse.php index af068d396..ec9513280 100644 --- a/src/Service/MediaConvert/src/Result/GetJobResponse.php +++ b/src/Service/MediaConvert/src/Result/GetJobResponse.php @@ -163,6 +163,7 @@ use AsyncAws\MediaConvert\ValueObject\VideoDescription; use AsyncAws\MediaConvert\ValueObject\VideoDetail; use AsyncAws\MediaConvert\ValueObject\VideoOverlay; +use AsyncAws\MediaConvert\ValueObject\VideoOverlayCrop; use AsyncAws\MediaConvert\ValueObject\VideoOverlayInput; use AsyncAws\MediaConvert\ValueObject\VideoOverlayInputClipping; use AsyncAws\MediaConvert\ValueObject\VideoOverlayPosition; @@ -1000,6 +1001,7 @@ private function populateResultFileSourceSettings(array $json): FileSourceSettin 'SourceFile' => isset($json['sourceFile']) ? (string) $json['sourceFile'] : null, 'TimeDelta' => isset($json['timeDelta']) ? (int) $json['timeDelta'] : null, 'TimeDeltaUnits' => isset($json['timeDeltaUnits']) ? (string) $json['timeDeltaUnits'] : null, + 'UpconvertSTLToTeletext' => isset($json['upconvertSTLToTeletext']) ? (string) $json['upconvertSTLToTeletext'] : null, ]); } @@ -2183,6 +2185,7 @@ private function populateResultVideoDetail(array $json): VideoDetail private function populateResultVideoOverlay(array $json): VideoOverlay { return new VideoOverlay([ + 'Crop' => empty($json['crop']) ? null : $this->populateResultVideoOverlayCrop($json['crop']), 'EndTimecode' => isset($json['endTimecode']) ? (string) $json['endTimecode'] : null, 'InitialPosition' => empty($json['initialPosition']) ? null : $this->populateResultVideoOverlayPosition($json['initialPosition']), 'Input' => empty($json['input']) ? null : $this->populateResultVideoOverlayInput($json['input']), @@ -2192,6 +2195,17 @@ private function populateResultVideoOverlay(array $json): VideoOverlay ]); } + private function populateResultVideoOverlayCrop(array $json): VideoOverlayCrop + { + return new VideoOverlayCrop([ + 'Height' => isset($json['height']) ? (int) $json['height'] : null, + 'Unit' => isset($json['unit']) ? (string) $json['unit'] : null, + 'Width' => isset($json['width']) ? (int) $json['width'] : null, + 'X' => isset($json['x']) ? (int) $json['x'] : null, + 'Y' => isset($json['y']) ? (int) $json['y'] : null, + ]); + } + private function populateResultVideoOverlayInput(array $json): VideoOverlayInput { return new VideoOverlayInput([ diff --git a/src/Service/MediaConvert/src/Result/ListJobsResponse.php b/src/Service/MediaConvert/src/Result/ListJobsResponse.php index 1415d2844..b3e049886 100644 --- a/src/Service/MediaConvert/src/Result/ListJobsResponse.php +++ b/src/Service/MediaConvert/src/Result/ListJobsResponse.php @@ -166,6 +166,7 @@ use AsyncAws\MediaConvert\ValueObject\VideoDescription; use AsyncAws\MediaConvert\ValueObject\VideoDetail; use AsyncAws\MediaConvert\ValueObject\VideoOverlay; +use AsyncAws\MediaConvert\ValueObject\VideoOverlayCrop; use AsyncAws\MediaConvert\ValueObject\VideoOverlayInput; use AsyncAws\MediaConvert\ValueObject\VideoOverlayInputClipping; use AsyncAws\MediaConvert\ValueObject\VideoOverlayPosition; @@ -1067,6 +1068,7 @@ private function populateResultFileSourceSettings(array $json): FileSourceSettin 'SourceFile' => isset($json['sourceFile']) ? (string) $json['sourceFile'] : null, 'TimeDelta' => isset($json['timeDelta']) ? (int) $json['timeDelta'] : null, 'TimeDeltaUnits' => isset($json['timeDeltaUnits']) ? (string) $json['timeDeltaUnits'] : null, + 'UpconvertSTLToTeletext' => isset($json['upconvertSTLToTeletext']) ? (string) $json['upconvertSTLToTeletext'] : null, ]); } @@ -2250,6 +2252,7 @@ private function populateResultVideoDetail(array $json): VideoDetail private function populateResultVideoOverlay(array $json): VideoOverlay { return new VideoOverlay([ + 'Crop' => empty($json['crop']) ? null : $this->populateResultVideoOverlayCrop($json['crop']), 'EndTimecode' => isset($json['endTimecode']) ? (string) $json['endTimecode'] : null, 'InitialPosition' => empty($json['initialPosition']) ? null : $this->populateResultVideoOverlayPosition($json['initialPosition']), 'Input' => empty($json['input']) ? null : $this->populateResultVideoOverlayInput($json['input']), @@ -2259,6 +2262,17 @@ private function populateResultVideoOverlay(array $json): VideoOverlay ]); } + private function populateResultVideoOverlayCrop(array $json): VideoOverlayCrop + { + return new VideoOverlayCrop([ + 'Height' => isset($json['height']) ? (int) $json['height'] : null, + 'Unit' => isset($json['unit']) ? (string) $json['unit'] : null, + 'Width' => isset($json['width']) ? (int) $json['width'] : null, + 'X' => isset($json['x']) ? (int) $json['x'] : null, + 'Y' => isset($json['y']) ? (int) $json['y'] : null, + ]); + } + private function populateResultVideoOverlayInput(array $json): VideoOverlayInput { return new VideoOverlayInput([ diff --git a/src/Service/MediaConvert/src/ValueObject/Av1Settings.php b/src/Service/MediaConvert/src/ValueObject/Av1Settings.php index f21729566..475e0d573 100644 --- a/src/Service/MediaConvert/src/ValueObject/Av1Settings.php +++ b/src/Service/MediaConvert/src/ValueObject/Av1Settings.php @@ -118,15 +118,15 @@ final class Av1Settings * Optionally choose one or more per frame metric reports to generate along with your output. You can use these metrics * to analyze your video output according to one or more commonly used image quality metrics. You can specify per frame * metrics for output groups or for individual outputs. When you do, MediaConvert writes a CSV (Comma-Separated Values) - * file to your S3 output destination, named after the video, video codec, and metric type. For example: - * video_h264_PSNR.csv Jobs that generate per frame metrics will take longer to complete, depending on the resolution - * and complexity of your output. For example, some 4K jobs might take up to twice as long to complete. Note that when - * analyzing the video quality of your output, or when comparing the video quality of multiple different outputs, we - * generally also recommend a detailed visual review in a controlled environment. You can choose from the following per - * frame metrics: * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale - * Similarity Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method - * Assessment Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the - * QVBR rate control mode. + * file to your S3 output destination, named after the output name and metric type. For example: videofile_PSNR.csv Jobs + * that generate per frame metrics will take longer to complete, depending on the resolution and complexity of your + * output. For example, some 4K jobs might take up to twice as long to complete. Note that when analyzing the video + * quality of your output, or when comparing the video quality of multiple different outputs, we generally also + * recommend a detailed visual review in a controlled environment. You can choose from the following per frame metrics: + * * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale Similarity + * Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method Assessment + * Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the QVBR rate + * control mode. * * @var list|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/AvcIntraSettings.php b/src/Service/MediaConvert/src/ValueObject/AvcIntraSettings.php index 8894c5a61..8163c7f16 100644 --- a/src/Service/MediaConvert/src/ValueObject/AvcIntraSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/AvcIntraSettings.php @@ -101,15 +101,15 @@ final class AvcIntraSettings * Optionally choose one or more per frame metric reports to generate along with your output. You can use these metrics * to analyze your video output according to one or more commonly used image quality metrics. You can specify per frame * metrics for output groups or for individual outputs. When you do, MediaConvert writes a CSV (Comma-Separated Values) - * file to your S3 output destination, named after the video, video codec, and metric type. For example: - * video_h264_PSNR.csv Jobs that generate per frame metrics will take longer to complete, depending on the resolution - * and complexity of your output. For example, some 4K jobs might take up to twice as long to complete. Note that when - * analyzing the video quality of your output, or when comparing the video quality of multiple different outputs, we - * generally also recommend a detailed visual review in a controlled environment. You can choose from the following per - * frame metrics: * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale - * Similarity Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method - * Assessment Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the - * QVBR rate control mode. + * file to your S3 output destination, named after the output name and metric type. For example: videofile_PSNR.csv Jobs + * that generate per frame metrics will take longer to complete, depending on the resolution and complexity of your + * output. For example, some 4K jobs might take up to twice as long to complete. Note that when analyzing the video + * quality of your output, or when comparing the video quality of multiple different outputs, we generally also + * recommend a detailed visual review in a controlled environment. You can choose from the following per frame metrics: + * * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale Similarity + * Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method Assessment + * Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the QVBR rate + * control mode. * * @var list|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/FileSourceSettings.php b/src/Service/MediaConvert/src/ValueObject/FileSourceSettings.php index 8480c5678..90e9c868a 100644 --- a/src/Service/MediaConvert/src/ValueObject/FileSourceSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/FileSourceSettings.php @@ -5,6 +5,7 @@ use AsyncAws\Core\Exception\InvalidArgument; use AsyncAws\MediaConvert\Enum\CaptionSourceByteRateLimit; use AsyncAws\MediaConvert\Enum\CaptionSourceConvertPaintOnToPopOn; +use AsyncAws\MediaConvert\Enum\CaptionSourceUpconvertSTLToTeletext; use AsyncAws\MediaConvert\Enum\FileSourceConvert608To708; use AsyncAws\MediaConvert\Enum\FileSourceTimeDeltaUnits; @@ -87,6 +88,15 @@ final class FileSourceSettings */ private $timeDeltaUnits; + /** + * Specify whether this set of input captions appears in your outputs in both STL and Teletext format. If you choose + * Upconvert, MediaConvert includes the captions data in two ways: it passes the STL data through using the Teletext + * compatibility bytes fields of the Teletext wrapper, and it also translates the STL data into Teletext. + * + * @var CaptionSourceUpconvertSTLToTeletext::*|null + */ + private $upconvertStlToTeletext; + /** * @param array{ * ByteRateLimit?: null|CaptionSourceByteRateLimit::*, @@ -96,6 +106,7 @@ final class FileSourceSettings * SourceFile?: null|string, * TimeDelta?: null|int, * TimeDeltaUnits?: null|FileSourceTimeDeltaUnits::*, + * UpconvertSTLToTeletext?: null|CaptionSourceUpconvertSTLToTeletext::*, * } $input */ public function __construct(array $input) @@ -107,6 +118,7 @@ public function __construct(array $input) $this->sourceFile = $input['SourceFile'] ?? null; $this->timeDelta = $input['TimeDelta'] ?? null; $this->timeDeltaUnits = $input['TimeDeltaUnits'] ?? null; + $this->upconvertStlToTeletext = $input['UpconvertSTLToTeletext'] ?? null; } /** @@ -118,6 +130,7 @@ public function __construct(array $input) * SourceFile?: null|string, * TimeDelta?: null|int, * TimeDeltaUnits?: null|FileSourceTimeDeltaUnits::*, + * UpconvertSTLToTeletext?: null|CaptionSourceUpconvertSTLToTeletext::*, * }|FileSourceSettings $input */ public static function create($input): self @@ -172,6 +185,14 @@ public function getTimeDeltaUnits(): ?string return $this->timeDeltaUnits; } + /** + * @return CaptionSourceUpconvertSTLToTeletext::*|null + */ + public function getUpconvertStlToTeletext(): ?string + { + return $this->upconvertStlToTeletext; + } + /** * @internal */ @@ -211,6 +232,12 @@ public function requestBody(): array } $payload['timeDeltaUnits'] = $v; } + if (null !== $v = $this->upconvertStlToTeletext) { + if (!CaptionSourceUpconvertSTLToTeletext::exists($v)) { + throw new InvalidArgument(\sprintf('Invalid parameter "upconvertSTLToTeletext" for "%s". The value "%s" is not a valid "CaptionSourceUpconvertSTLToTeletext".', __CLASS__, $v)); + } + $payload['upconvertSTLToTeletext'] = $v; + } return $payload; } diff --git a/src/Service/MediaConvert/src/ValueObject/H264Settings.php b/src/Service/MediaConvert/src/ValueObject/H264Settings.php index fa6419fc5..090f85710 100644 --- a/src/Service/MediaConvert/src/ValueObject/H264Settings.php +++ b/src/Service/MediaConvert/src/ValueObject/H264Settings.php @@ -337,15 +337,15 @@ final class H264Settings * Optionally choose one or more per frame metric reports to generate along with your output. You can use these metrics * to analyze your video output according to one or more commonly used image quality metrics. You can specify per frame * metrics for output groups or for individual outputs. When you do, MediaConvert writes a CSV (Comma-Separated Values) - * file to your S3 output destination, named after the video, video codec, and metric type. For example: - * video_h264_PSNR.csv Jobs that generate per frame metrics will take longer to complete, depending on the resolution - * and complexity of your output. For example, some 4K jobs might take up to twice as long to complete. Note that when - * analyzing the video quality of your output, or when comparing the video quality of multiple different outputs, we - * generally also recommend a detailed visual review in a controlled environment. You can choose from the following per - * frame metrics: * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale - * Similarity Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method - * Assessment Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the - * QVBR rate control mode. + * file to your S3 output destination, named after the output name and metric type. For example: videofile_PSNR.csv Jobs + * that generate per frame metrics will take longer to complete, depending on the resolution and complexity of your + * output. For example, some 4K jobs might take up to twice as long to complete. Note that when analyzing the video + * quality of your output, or when comparing the video quality of multiple different outputs, we generally also + * recommend a detailed visual review in a controlled environment. You can choose from the following per frame metrics: + * * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale Similarity + * Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method Assessment + * Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the QVBR rate + * control mode. * * @var list|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/H265Settings.php b/src/Service/MediaConvert/src/ValueObject/H265Settings.php index 5af174878..9132e2797 100644 --- a/src/Service/MediaConvert/src/ValueObject/H265Settings.php +++ b/src/Service/MediaConvert/src/ValueObject/H265Settings.php @@ -334,15 +334,15 @@ final class H265Settings * Optionally choose one or more per frame metric reports to generate along with your output. You can use these metrics * to analyze your video output according to one or more commonly used image quality metrics. You can specify per frame * metrics for output groups or for individual outputs. When you do, MediaConvert writes a CSV (Comma-Separated Values) - * file to your S3 output destination, named after the video, video codec, and metric type. For example: - * video_h264_PSNR.csv Jobs that generate per frame metrics will take longer to complete, depending on the resolution - * and complexity of your output. For example, some 4K jobs might take up to twice as long to complete. Note that when - * analyzing the video quality of your output, or when comparing the video quality of multiple different outputs, we - * generally also recommend a detailed visual review in a controlled environment. You can choose from the following per - * frame metrics: * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale - * Similarity Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method - * Assessment Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the - * QVBR rate control mode. + * file to your S3 output destination, named after the output name and metric type. For example: videofile_PSNR.csv Jobs + * that generate per frame metrics will take longer to complete, depending on the resolution and complexity of your + * output. For example, some 4K jobs might take up to twice as long to complete. Note that when analyzing the video + * quality of your output, or when comparing the video quality of multiple different outputs, we generally also + * recommend a detailed visual review in a controlled environment. You can choose from the following per frame metrics: + * * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale Similarity + * Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method Assessment + * Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the QVBR rate + * control mode. * * @var list|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/Mpeg2Settings.php b/src/Service/MediaConvert/src/ValueObject/Mpeg2Settings.php index 188a5e3b4..1ffc063f9 100644 --- a/src/Service/MediaConvert/src/ValueObject/Mpeg2Settings.php +++ b/src/Service/MediaConvert/src/ValueObject/Mpeg2Settings.php @@ -251,15 +251,15 @@ final class Mpeg2Settings * Optionally choose one or more per frame metric reports to generate along with your output. You can use these metrics * to analyze your video output according to one or more commonly used image quality metrics. You can specify per frame * metrics for output groups or for individual outputs. When you do, MediaConvert writes a CSV (Comma-Separated Values) - * file to your S3 output destination, named after the video, video codec, and metric type. For example: - * video_h264_PSNR.csv Jobs that generate per frame metrics will take longer to complete, depending on the resolution - * and complexity of your output. For example, some 4K jobs might take up to twice as long to complete. Note that when - * analyzing the video quality of your output, or when comparing the video quality of multiple different outputs, we - * generally also recommend a detailed visual review in a controlled environment. You can choose from the following per - * frame metrics: * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale - * Similarity Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method - * Assessment Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the - * QVBR rate control mode. + * file to your S3 output destination, named after the output name and metric type. For example: videofile_PSNR.csv Jobs + * that generate per frame metrics will take longer to complete, depending on the resolution and complexity of your + * output. For example, some 4K jobs might take up to twice as long to complete. Note that when analyzing the video + * quality of your output, or when comparing the video quality of multiple different outputs, we generally also + * recommend a detailed visual review in a controlled environment. You can choose from the following per frame metrics: + * * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale Similarity + * Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method Assessment + * Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the QVBR rate + * control mode. * * @var list|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/OutputGroupSettings.php b/src/Service/MediaConvert/src/ValueObject/OutputGroupSettings.php index f17342e8b..0b6543675 100644 --- a/src/Service/MediaConvert/src/ValueObject/OutputGroupSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/OutputGroupSettings.php @@ -55,15 +55,15 @@ final class OutputGroupSettings * Optionally choose one or more per frame metric reports to generate along with your output. You can use these metrics * to analyze your video output according to one or more commonly used image quality metrics. You can specify per frame * metrics for output groups or for individual outputs. When you do, MediaConvert writes a CSV (Comma-Separated Values) - * file to your S3 output destination, named after the video, video codec, and metric type. For example: - * video_h264_PSNR.csv Jobs that generate per frame metrics will take longer to complete, depending on the resolution - * and complexity of your output. For example, some 4K jobs might take up to twice as long to complete. Note that when - * analyzing the video quality of your output, or when comparing the video quality of multiple different outputs, we - * generally also recommend a detailed visual review in a controlled environment. You can choose from the following per - * frame metrics: * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale - * Similarity Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method - * Assessment Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the - * QVBR rate control mode. + * file to your S3 output destination, named after the output name and metric type. For example: videofile_PSNR.csv Jobs + * that generate per frame metrics will take longer to complete, depending on the resolution and complexity of your + * output. For example, some 4K jobs might take up to twice as long to complete. Note that when analyzing the video + * quality of your output, or when comparing the video quality of multiple different outputs, we generally also + * recommend a detailed visual review in a controlled environment. You can choose from the following per frame metrics: + * * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale Similarity + * Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method Assessment + * Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the QVBR rate + * control mode. * * @var list|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/ProresSettings.php b/src/Service/MediaConvert/src/ValueObject/ProresSettings.php index e5aee2b41..3ae50d6a3 100644 --- a/src/Service/MediaConvert/src/ValueObject/ProresSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/ProresSettings.php @@ -132,15 +132,15 @@ final class ProresSettings * Optionally choose one or more per frame metric reports to generate along with your output. You can use these metrics * to analyze your video output according to one or more commonly used image quality metrics. You can specify per frame * metrics for output groups or for individual outputs. When you do, MediaConvert writes a CSV (Comma-Separated Values) - * file to your S3 output destination, named after the video, video codec, and metric type. For example: - * video_h264_PSNR.csv Jobs that generate per frame metrics will take longer to complete, depending on the resolution - * and complexity of your output. For example, some 4K jobs might take up to twice as long to complete. Note that when - * analyzing the video quality of your output, or when comparing the video quality of multiple different outputs, we - * generally also recommend a detailed visual review in a controlled environment. You can choose from the following per - * frame metrics: * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale - * Similarity Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method - * Assessment Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the - * QVBR rate control mode. + * file to your S3 output destination, named after the output name and metric type. For example: videofile_PSNR.csv Jobs + * that generate per frame metrics will take longer to complete, depending on the resolution and complexity of your + * output. For example, some 4K jobs might take up to twice as long to complete. Note that when analyzing the video + * quality of your output, or when comparing the video quality of multiple different outputs, we generally also + * recommend a detailed visual review in a controlled environment. You can choose from the following per frame metrics: + * * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale Similarity + * Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method Assessment + * Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the QVBR rate + * control mode. * * @var list|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/VideoOverlay.php b/src/Service/MediaConvert/src/ValueObject/VideoOverlay.php index ddd31e039..a8eb2d04c 100644 --- a/src/Service/MediaConvert/src/ValueObject/VideoOverlay.php +++ b/src/Service/MediaConvert/src/ValueObject/VideoOverlay.php @@ -11,6 +11,14 @@ */ final class VideoOverlay { + /** + * Specify a rectangle of content to crop and use from your video overlay's input video. When you do, MediaConvert uses + * the cropped dimensions that you specify under X offset, Y offset, Width, and Height. + * + * @var VideoOverlayCrop|null + */ + private $crop; + /** * Enter the end timecode in the base input video for this overlay. Your overlay will be active through this frame. To * display your video overlay for the duration of the base input video: Leave blank. Use the format HH:MM:SS:FF or @@ -72,6 +80,7 @@ final class VideoOverlay /** * @param array{ + * Crop?: null|VideoOverlayCrop|array, * EndTimecode?: null|string, * InitialPosition?: null|VideoOverlayPosition|array, * Input?: null|VideoOverlayInput|array, @@ -82,6 +91,7 @@ final class VideoOverlay */ public function __construct(array $input) { + $this->crop = isset($input['Crop']) ? VideoOverlayCrop::create($input['Crop']) : null; $this->endTimecode = $input['EndTimecode'] ?? null; $this->initialPosition = isset($input['InitialPosition']) ? VideoOverlayPosition::create($input['InitialPosition']) : null; $this->input = isset($input['Input']) ? VideoOverlayInput::create($input['Input']) : null; @@ -92,6 +102,7 @@ public function __construct(array $input) /** * @param array{ + * Crop?: null|VideoOverlayCrop|array, * EndTimecode?: null|string, * InitialPosition?: null|VideoOverlayPosition|array, * Input?: null|VideoOverlayInput|array, @@ -105,6 +116,11 @@ public static function create($input): self return $input instanceof self ? $input : new self($input); } + public function getCrop(): ?VideoOverlayCrop + { + return $this->crop; + } + public function getEndTimecode(): ?string { return $this->endTimecode; @@ -147,6 +163,9 @@ public function getTransitions(): array public function requestBody(): array { $payload = []; + if (null !== $v = $this->crop) { + $payload['crop'] = $v->requestBody(); + } if (null !== $v = $this->endTimecode) { $payload['endTimecode'] = $v; } diff --git a/src/Service/MediaConvert/src/ValueObject/VideoOverlayCrop.php b/src/Service/MediaConvert/src/ValueObject/VideoOverlayCrop.php new file mode 100644 index 000000000..d2b6a7ace --- /dev/null +++ b/src/Service/MediaConvert/src/ValueObject/VideoOverlayCrop.php @@ -0,0 +1,157 @@ +height = $input['Height'] ?? null; + $this->unit = $input['Unit'] ?? null; + $this->width = $input['Width'] ?? null; + $this->x = $input['X'] ?? null; + $this->y = $input['Y'] ?? null; + } + + /** + * @param array{ + * Height?: null|int, + * Unit?: null|VideoOverlayUnit::*, + * Width?: null|int, + * X?: null|int, + * Y?: null|int, + * }|VideoOverlayCrop $input + */ + public static function create($input): self + { + return $input instanceof self ? $input : new self($input); + } + + public function getHeight(): ?int + { + return $this->height; + } + + /** + * @return VideoOverlayUnit::*|null + */ + public function getUnit(): ?string + { + return $this->unit; + } + + public function getWidth(): ?int + { + return $this->width; + } + + public function getX(): ?int + { + return $this->x; + } + + public function getY(): ?int + { + return $this->y; + } + + /** + * @internal + */ + public function requestBody(): array + { + $payload = []; + if (null !== $v = $this->height) { + $payload['height'] = $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)); + } + $payload['unit'] = $v; + } + if (null !== $v = $this->width) { + $payload['width'] = $v; + } + if (null !== $v = $this->x) { + $payload['x'] = $v; + } + if (null !== $v = $this->y) { + $payload['y'] = $v; + } + + return $payload; + } +} diff --git a/src/Service/MediaConvert/src/ValueObject/XavcSettings.php b/src/Service/MediaConvert/src/ValueObject/XavcSettings.php index e4844a2d7..0f8be0a73 100644 --- a/src/Service/MediaConvert/src/ValueObject/XavcSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/XavcSettings.php @@ -89,15 +89,15 @@ final class XavcSettings * Optionally choose one or more per frame metric reports to generate along with your output. You can use these metrics * to analyze your video output according to one or more commonly used image quality metrics. You can specify per frame * metrics for output groups or for individual outputs. When you do, MediaConvert writes a CSV (Comma-Separated Values) - * file to your S3 output destination, named after the video, video codec, and metric type. For example: - * video_h264_PSNR.csv Jobs that generate per frame metrics will take longer to complete, depending on the resolution - * and complexity of your output. For example, some 4K jobs might take up to twice as long to complete. Note that when - * analyzing the video quality of your output, or when comparing the video quality of multiple different outputs, we - * generally also recommend a detailed visual review in a controlled environment. You can choose from the following per - * frame metrics: * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale - * Similarity Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method - * Assessment Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the - * QVBR rate control mode. + * file to your S3 output destination, named after the output name and metric type. For example: videofile_PSNR.csv Jobs + * that generate per frame metrics will take longer to complete, depending on the resolution and complexity of your + * output. For example, some 4K jobs might take up to twice as long to complete. Note that when analyzing the video + * quality of your output, or when comparing the video quality of multiple different outputs, we generally also + * recommend a detailed visual review in a controlled environment. You can choose from the following per frame metrics: + * * PSNR: Peak Signal-to-Noise Ratio * SSIM: Structural Similarity Index Measure * MS_SSIM: Multi-Scale Similarity + * Index Measure * PSNR_HVS: Peak Signal-to-Noise Ratio, Human Visual System * VMAF: Video Multi-Method Assessment + * Fusion * QVBR: Quality-Defined Variable Bitrate. This option is only available when your output uses the QVBR rate + * control mode. * * @var list|null */