diff --git a/manifest.json b/manifest.json index df71ce2fc..95f6dac84 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "variables": { - "${LATEST}": "3.342.6" + "${LATEST}": "3.342.8" }, "endpoints": "https://raw.githubusercontent.com/aws/aws-sdk-php/${LATEST}/src/data/endpoints.json", "services": { diff --git a/src/Service/MediaConvert/CHANGELOG.md b/src/Service/MediaConvert/CHANGELOG.md index 230ec3393..72442b3cd 100644 --- a/src/Service/MediaConvert/CHANGELOG.md +++ b/src/Service/MediaConvert/CHANGELOG.md @@ -2,6 +2,10 @@ ## NOT RELEASED +### Added + +- AWS api-change: This release adds support for AVC passthrough, the ability to specify PTS offset without padding, and an A/V segment matching feature. + ## 1.6.0 ### Added diff --git a/src/Service/MediaConvert/composer.json b/src/Service/MediaConvert/composer.json index de2d10564..ef25c63af 100644 --- a/src/Service/MediaConvert/composer.json +++ b/src/Service/MediaConvert/composer.json @@ -28,7 +28,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "1.7-dev" } } } diff --git a/src/Service/MediaConvert/src/Enum/CmafSegmentLengthControl.php b/src/Service/MediaConvert/src/Enum/CmafSegmentLengthControl.php index 8f0408326..f4476853e 100644 --- a/src/Service/MediaConvert/src/Enum/CmafSegmentLengthControl.php +++ b/src/Service/MediaConvert/src/Enum/CmafSegmentLengthControl.php @@ -3,20 +3,30 @@ namespace AsyncAws\MediaConvert\Enum; /** - * Specify how you want MediaConvert to determine the segment length. Choose Exact to have the encoder use the exact - * length that you specify with the setting Segment length. This might result in extra I-frames. Choose Multiple of GOP - * to have the encoder round up the segment lengths to match the next GOP boundary. + * Specify how you want MediaConvert to determine segment lengths in this output group. To use the exact value that you + * specify under Segment length: Choose Exact. Note that this might result in additional I-frames in the output GOP. To + * create segment lengths that are a multiple of the GOP: Choose Multiple of GOP. MediaConvert will round up the segment + * lengths to match the next GOP boundary. To have MediaConvert automatically determine a segment duration that is a + * multiple of both the audio packets and the frame rates: Choose Match. When you do, also specify a target segment + * duration under Segment length. This is useful for some ad-insertion or segment replacement workflows. Note that Match + * has the following requirements: - Output containers: Include at least one video output and at least one audio output. + * Audio-only outputs are not supported. - Output frame rate: Follow source is not supported. - Multiple output frame + * rates: When you specify multiple outputs, we recommend they share a similar frame rate (as in X/3, X/2, X, or 2X). + * For example: 5, 15, 30 and 60. Or: 25 and 50. (Outputs must share an integer multiple.) - Output audio codec: Specify + * Advanced Audio Coding (AAC). - Output sample rate: Choose 48kHz. */ final class CmafSegmentLengthControl { public const EXACT = 'EXACT'; public const GOP_MULTIPLE = 'GOP_MULTIPLE'; + public const MATCH = 'MATCH'; public static function exists(string $value): bool { return isset([ self::EXACT => true, self::GOP_MULTIPLE => true, + self::MATCH => true, ][$value]); } } diff --git a/src/Service/MediaConvert/src/Enum/DashIsoSegmentLengthControl.php b/src/Service/MediaConvert/src/Enum/DashIsoSegmentLengthControl.php index a92aa4c40..47b023f02 100644 --- a/src/Service/MediaConvert/src/Enum/DashIsoSegmentLengthControl.php +++ b/src/Service/MediaConvert/src/Enum/DashIsoSegmentLengthControl.php @@ -3,20 +3,30 @@ namespace AsyncAws\MediaConvert\Enum; /** - * Specify how you want MediaConvert to determine the segment length. Choose Exact to have the encoder use the exact - * length that you specify with the setting Segment length. This might result in extra I-frames. Choose Multiple of GOP - * to have the encoder round up the segment lengths to match the next GOP boundary. + * Specify how you want MediaConvert to determine segment lengths in this output group. To use the exact value that you + * specify under Segment length: Choose Exact. Note that this might result in additional I-frames in the output GOP. To + * create segment lengths that are a multiple of the GOP: Choose Multiple of GOP. MediaConvert will round up the segment + * lengths to match the next GOP boundary. To have MediaConvert automatically determine a segment duration that is a + * multiple of both the audio packets and the frame rates: Choose Match. When you do, also specify a target segment + * duration under Segment length. This is useful for some ad-insertion or segment replacement workflows. Note that Match + * has the following requirements: - Output containers: Include at least one video output and at least one audio output. + * Audio-only outputs are not supported. - Output frame rate: Follow source is not supported. - Multiple output frame + * rates: When you specify multiple outputs, we recommend they share a similar frame rate (as in X/3, X/2, X, or 2X). + * For example: 5, 15, 30 and 60. Or: 25 and 50. (Outputs must share an integer multiple.) - Output audio codec: Specify + * Advanced Audio Coding (AAC). - Output sample rate: Choose 48kHz. */ final class DashIsoSegmentLengthControl { public const EXACT = 'EXACT'; public const GOP_MULTIPLE = 'GOP_MULTIPLE'; + public const MATCH = 'MATCH'; public static function exists(string $value): bool { return isset([ self::EXACT => true, self::GOP_MULTIPLE => true, + self::MATCH => true, ][$value]); } } diff --git a/src/Service/MediaConvert/src/Enum/HlsSegmentLengthControl.php b/src/Service/MediaConvert/src/Enum/HlsSegmentLengthControl.php index cca939d2a..0e6c344ad 100644 --- a/src/Service/MediaConvert/src/Enum/HlsSegmentLengthControl.php +++ b/src/Service/MediaConvert/src/Enum/HlsSegmentLengthControl.php @@ -3,20 +3,30 @@ namespace AsyncAws\MediaConvert\Enum; /** - * Specify how you want MediaConvert to determine the segment length. Choose Exact to have the encoder use the exact - * length that you specify with the setting Segment length. This might result in extra I-frames. Choose Multiple of GOP - * to have the encoder round up the segment lengths to match the next GOP boundary. + * Specify how you want MediaConvert to determine segment lengths in this output group. To use the exact value that you + * specify under Segment length: Choose Exact. Note that this might result in additional I-frames in the output GOP. To + * create segment lengths that are a multiple of the GOP: Choose Multiple of GOP. MediaConvert will round up the segment + * lengths to match the next GOP boundary. To have MediaConvert automatically determine a segment duration that is a + * multiple of both the audio packets and the frame rates: Choose Match. When you do, also specify a target segment + * duration under Segment length. This is useful for some ad-insertion or segment replacement workflows. Note that Match + * has the following requirements: - Output containers: Include at least one video output and at least one audio output. + * Audio-only outputs are not supported. - Output frame rate: Follow source is not supported. - Multiple output frame + * rates: When you specify multiple outputs, we recommend they share a similar frame rate (as in X/3, X/2, X, or 2X). + * For example: 5, 15, 30 and 60. Or: 25 and 50. (Outputs must share an integer multiple.) - Output audio codec: Specify + * Advanced Audio Coding (AAC). - Output sample rate: Choose 48kHz. */ final class HlsSegmentLengthControl { public const EXACT = 'EXACT'; public const GOP_MULTIPLE = 'GOP_MULTIPLE'; + public const MATCH = 'MATCH'; public static function exists(string $value): bool { return isset([ self::EXACT => true, self::GOP_MULTIPLE => true, + self::MATCH => true, ][$value]); } } diff --git a/src/Service/MediaConvert/src/Enum/TsPtsOffset.php b/src/Service/MediaConvert/src/Enum/TsPtsOffset.php index ce4361a16..fd5d0f49e 100644 --- a/src/Service/MediaConvert/src/Enum/TsPtsOffset.php +++ b/src/Service/MediaConvert/src/Enum/TsPtsOffset.php @@ -7,17 +7,19 @@ * automatically determine the initial PTS offset: Keep the default value, Auto. We recommend that you choose Auto for * the widest player compatibility. The initial PTS will be at least two seconds and vary depending on your output's * bitrate, HRD buffer size and HRD buffer initial fill percentage. To manually specify an initial PTS offset: Choose - * Seconds. Then specify the number of seconds with PTS offset. + * Seconds or Milliseconds. Then specify the number of seconds or milliseconds with PTS offset. */ final class TsPtsOffset { public const AUTO = 'AUTO'; + public const MILLISECONDS = 'MILLISECONDS'; public const SECONDS = 'SECONDS'; public static function exists(string $value): bool { return isset([ self::AUTO => true, + self::MILLISECONDS => true, self::SECONDS => true, ][$value]); } diff --git a/src/Service/MediaConvert/src/Result/CreateJobResponse.php b/src/Service/MediaConvert/src/Result/CreateJobResponse.php index 2f6e0abb5..b58714bcc 100644 --- a/src/Service/MediaConvert/src/Result/CreateJobResponse.php +++ b/src/Service/MediaConvert/src/Result/CreateJobResponse.php @@ -1491,6 +1491,7 @@ private function populateResultM2tsSettings(array $json): M2tsSettings 'AudioDuration' => isset($json['audioDuration']) ? (string) $json['audioDuration'] : null, 'AudioFramesPerPes' => isset($json['audioFramesPerPes']) ? (int) $json['audioFramesPerPes'] : null, 'AudioPids' => !isset($json['audioPids']) ? null : $this->populateResult__listOf__integerMin32Max8182($json['audioPids']), + 'AudioPtsOffsetDelta' => isset($json['audioPtsOffsetDelta']) ? (int) $json['audioPtsOffsetDelta'] : null, 'Bitrate' => isset($json['bitrate']) ? (int) $json['bitrate'] : null, 'BufferModel' => isset($json['bufferModel']) ? (string) $json['bufferModel'] : null, 'DataPTSControl' => isset($json['dataPTSControl']) ? (string) $json['dataPTSControl'] : null, @@ -1538,6 +1539,7 @@ private function populateResultM3u8Settings(array $json): M3u8Settings 'AudioDuration' => isset($json['audioDuration']) ? (string) $json['audioDuration'] : null, 'AudioFramesPerPes' => isset($json['audioFramesPerPes']) ? (int) $json['audioFramesPerPes'] : null, 'AudioPids' => !isset($json['audioPids']) ? null : $this->populateResult__listOf__integerMin32Max8182($json['audioPids']), + 'AudioPtsOffsetDelta' => isset($json['audioPtsOffsetDelta']) ? (int) $json['audioPtsOffsetDelta'] : null, 'DataPTSControl' => isset($json['dataPTSControl']) ? (string) $json['dataPTSControl'] : null, 'MaxPcrInterval' => isset($json['maxPcrInterval']) ? (int) $json['maxPcrInterval'] : null, 'NielsenId3' => isset($json['nielsenId3']) ? (string) $json['nielsenId3'] : null, diff --git a/src/Service/MediaConvert/src/Result/GetJobResponse.php b/src/Service/MediaConvert/src/Result/GetJobResponse.php index 6a9046d48..ecc8a6e9c 100644 --- a/src/Service/MediaConvert/src/Result/GetJobResponse.php +++ b/src/Service/MediaConvert/src/Result/GetJobResponse.php @@ -1491,6 +1491,7 @@ private function populateResultM2tsSettings(array $json): M2tsSettings 'AudioDuration' => isset($json['audioDuration']) ? (string) $json['audioDuration'] : null, 'AudioFramesPerPes' => isset($json['audioFramesPerPes']) ? (int) $json['audioFramesPerPes'] : null, 'AudioPids' => !isset($json['audioPids']) ? null : $this->populateResult__listOf__integerMin32Max8182($json['audioPids']), + 'AudioPtsOffsetDelta' => isset($json['audioPtsOffsetDelta']) ? (int) $json['audioPtsOffsetDelta'] : null, 'Bitrate' => isset($json['bitrate']) ? (int) $json['bitrate'] : null, 'BufferModel' => isset($json['bufferModel']) ? (string) $json['bufferModel'] : null, 'DataPTSControl' => isset($json['dataPTSControl']) ? (string) $json['dataPTSControl'] : null, @@ -1538,6 +1539,7 @@ private function populateResultM3u8Settings(array $json): M3u8Settings 'AudioDuration' => isset($json['audioDuration']) ? (string) $json['audioDuration'] : null, 'AudioFramesPerPes' => isset($json['audioFramesPerPes']) ? (int) $json['audioFramesPerPes'] : null, 'AudioPids' => !isset($json['audioPids']) ? null : $this->populateResult__listOf__integerMin32Max8182($json['audioPids']), + 'AudioPtsOffsetDelta' => isset($json['audioPtsOffsetDelta']) ? (int) $json['audioPtsOffsetDelta'] : null, 'DataPTSControl' => isset($json['dataPTSControl']) ? (string) $json['dataPTSControl'] : null, 'MaxPcrInterval' => isset($json['maxPcrInterval']) ? (int) $json['maxPcrInterval'] : null, 'NielsenId3' => isset($json['nielsenId3']) ? (string) $json['nielsenId3'] : null, diff --git a/src/Service/MediaConvert/src/Result/ListJobsResponse.php b/src/Service/MediaConvert/src/Result/ListJobsResponse.php index b84405d44..b54d3bd6e 100644 --- a/src/Service/MediaConvert/src/Result/ListJobsResponse.php +++ b/src/Service/MediaConvert/src/Result/ListJobsResponse.php @@ -1558,6 +1558,7 @@ private function populateResultM2tsSettings(array $json): M2tsSettings 'AudioDuration' => isset($json['audioDuration']) ? (string) $json['audioDuration'] : null, 'AudioFramesPerPes' => isset($json['audioFramesPerPes']) ? (int) $json['audioFramesPerPes'] : null, 'AudioPids' => !isset($json['audioPids']) ? null : $this->populateResult__listOf__integerMin32Max8182($json['audioPids']), + 'AudioPtsOffsetDelta' => isset($json['audioPtsOffsetDelta']) ? (int) $json['audioPtsOffsetDelta'] : null, 'Bitrate' => isset($json['bitrate']) ? (int) $json['bitrate'] : null, 'BufferModel' => isset($json['bufferModel']) ? (string) $json['bufferModel'] : null, 'DataPTSControl' => isset($json['dataPTSControl']) ? (string) $json['dataPTSControl'] : null, @@ -1605,6 +1606,7 @@ private function populateResultM3u8Settings(array $json): M3u8Settings 'AudioDuration' => isset($json['audioDuration']) ? (string) $json['audioDuration'] : null, 'AudioFramesPerPes' => isset($json['audioFramesPerPes']) ? (int) $json['audioFramesPerPes'] : null, 'AudioPids' => !isset($json['audioPids']) ? null : $this->populateResult__listOf__integerMin32Max8182($json['audioPids']), + 'AudioPtsOffsetDelta' => isset($json['audioPtsOffsetDelta']) ? (int) $json['audioPtsOffsetDelta'] : null, 'DataPTSControl' => isset($json['dataPTSControl']) ? (string) $json['dataPTSControl'] : null, 'MaxPcrInterval' => isset($json['maxPcrInterval']) ? (int) $json['maxPcrInterval'] : null, 'NielsenId3' => isset($json['nielsenId3']) ? (string) $json['nielsenId3'] : null, diff --git a/src/Service/MediaConvert/src/ValueObject/CmafGroupSettings.php b/src/Service/MediaConvert/src/ValueObject/CmafGroupSettings.php index 0a655daf6..6b0b8ad32 100644 --- a/src/Service/MediaConvert/src/ValueObject/CmafGroupSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/CmafGroupSettings.php @@ -221,9 +221,17 @@ final class CmafGroupSettings private $segmentLength; /** - * Specify how you want MediaConvert to determine the segment length. Choose Exact to have the encoder use the exact - * length that you specify with the setting Segment length. This might result in extra I-frames. Choose Multiple of GOP - * to have the encoder round up the segment lengths to match the next GOP boundary. + * Specify how you want MediaConvert to determine segment lengths in this output group. To use the exact value that you + * specify under Segment length: Choose Exact. Note that this might result in additional I-frames in the output GOP. To + * create segment lengths that are a multiple of the GOP: Choose Multiple of GOP. MediaConvert will round up the segment + * lengths to match the next GOP boundary. To have MediaConvert automatically determine a segment duration that is a + * multiple of both the audio packets and the frame rates: Choose Match. When you do, also specify a target segment + * duration under Segment length. This is useful for some ad-insertion or segment replacement workflows. Note that Match + * has the following requirements: - Output containers: Include at least one video output and at least one audio output. + * Audio-only outputs are not supported. - Output frame rate: Follow source is not supported. - Multiple output frame + * rates: When you specify multiple outputs, we recommend they share a similar frame rate (as in X/3, X/2, X, or 2X). + * For example: 5, 15, 30 and 60. Or: 25 and 50. (Outputs must share an integer multiple.) - Output audio codec: Specify + * Advanced Audio Coding (AAC). - Output sample rate: Choose 48kHz. * * @var CmafSegmentLengthControl::*|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/DashIsoGroupSettings.php b/src/Service/MediaConvert/src/ValueObject/DashIsoGroupSettings.php index 59c0a31d2..dffef1613 100644 --- a/src/Service/MediaConvert/src/ValueObject/DashIsoGroupSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/DashIsoGroupSettings.php @@ -204,9 +204,17 @@ final class DashIsoGroupSettings private $segmentLength; /** - * Specify how you want MediaConvert to determine the segment length. Choose Exact to have the encoder use the exact - * length that you specify with the setting Segment length. This might result in extra I-frames. Choose Multiple of GOP - * to have the encoder round up the segment lengths to match the next GOP boundary. + * Specify how you want MediaConvert to determine segment lengths in this output group. To use the exact value that you + * specify under Segment length: Choose Exact. Note that this might result in additional I-frames in the output GOP. To + * create segment lengths that are a multiple of the GOP: Choose Multiple of GOP. MediaConvert will round up the segment + * lengths to match the next GOP boundary. To have MediaConvert automatically determine a segment duration that is a + * multiple of both the audio packets and the frame rates: Choose Match. When you do, also specify a target segment + * duration under Segment length. This is useful for some ad-insertion or segment replacement workflows. Note that Match + * has the following requirements: - Output containers: Include at least one video output and at least one audio output. + * Audio-only outputs are not supported. - Output frame rate: Follow source is not supported. - Multiple output frame + * rates: When you specify multiple outputs, we recommend they share a similar frame rate (as in X/3, X/2, X, or 2X). + * For example: 5, 15, 30 and 60. Or: 25 and 50. (Outputs must share an integer multiple.) - Output audio codec: Specify + * Advanced Audio Coding (AAC). - Output sample rate: Choose 48kHz. * * @var DashIsoSegmentLengthControl::*|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/HlsGroupSettings.php b/src/Service/MediaConvert/src/ValueObject/HlsGroupSettings.php index 9bfae292d..e0dfde9d7 100644 --- a/src/Service/MediaConvert/src/ValueObject/HlsGroupSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/HlsGroupSettings.php @@ -245,9 +245,17 @@ final class HlsGroupSettings private $segmentLength; /** - * Specify how you want MediaConvert to determine the segment length. Choose Exact to have the encoder use the exact - * length that you specify with the setting Segment length. This might result in extra I-frames. Choose Multiple of GOP - * to have the encoder round up the segment lengths to match the next GOP boundary. + * Specify how you want MediaConvert to determine segment lengths in this output group. To use the exact value that you + * specify under Segment length: Choose Exact. Note that this might result in additional I-frames in the output GOP. To + * create segment lengths that are a multiple of the GOP: Choose Multiple of GOP. MediaConvert will round up the segment + * lengths to match the next GOP boundary. To have MediaConvert automatically determine a segment duration that is a + * multiple of both the audio packets and the frame rates: Choose Match. When you do, also specify a target segment + * duration under Segment length. This is useful for some ad-insertion or segment replacement workflows. Note that Match + * has the following requirements: - Output containers: Include at least one video output and at least one audio output. + * Audio-only outputs are not supported. - Output frame rate: Follow source is not supported. - Multiple output frame + * rates: When you specify multiple outputs, we recommend they share a similar frame rate (as in X/3, X/2, X, or 2X). + * For example: 5, 15, 30 and 60. Or: 25 and 50. (Outputs must share an integer multiple.) - Output audio codec: Specify + * Advanced Audio Coding (AAC). - Output sample rate: Choose 48kHz. * * @var HlsSegmentLengthControl::*|null */ diff --git a/src/Service/MediaConvert/src/ValueObject/M2tsSettings.php b/src/Service/MediaConvert/src/ValueObject/M2tsSettings.php index d58e5cc03..706cdcbf8 100644 --- a/src/Service/MediaConvert/src/ValueObject/M2tsSettings.php +++ b/src/Service/MediaConvert/src/ValueObject/M2tsSettings.php @@ -68,6 +68,15 @@ final class M2tsSettings */ private $audioPids; + /** + * Manually specify the difference in PTS offset that will be applied to the audio track, in seconds or milliseconds, + * when you set PTS offset to Seconds or Milliseconds. Enter an integer from -10000 to 10000. Leave blank to keep the + * default value 0. + * + * @var int|null + */ + private $audioPtsOffsetDelta; + /** * Specify the output bitrate of the transport stream in bits per second. Setting to 0 lets the muxer automatically * determine the appropriate bitrate. Other common values are 3750000, 7500000, and 15000000. @@ -290,7 +299,7 @@ final class M2tsSettings * automatically determine the initial PTS offset: Keep the default value, Auto. We recommend that you choose Auto for * the widest player compatibility. The initial PTS will be at least two seconds and vary depending on your output's * bitrate, HRD buffer size and HRD buffer initial fill percentage. To manually specify an initial PTS offset: Choose - * Seconds. Then specify the number of seconds with PTS offset. + * Seconds or Milliseconds. Then specify the number of seconds or milliseconds with PTS offset. * * @var TsPtsOffset::*|null */ @@ -389,6 +398,7 @@ final class M2tsSettings * AudioDuration?: null|M2tsAudioDuration::*, * AudioFramesPerPes?: null|int, * AudioPids?: null|int[], + * AudioPtsOffsetDelta?: null|int, * Bitrate?: null|int, * BufferModel?: null|M2tsBufferModel::*, * DataPTSControl?: null|M2tsDataPtsControl::*, @@ -435,6 +445,7 @@ public function __construct(array $input) $this->audioDuration = $input['AudioDuration'] ?? null; $this->audioFramesPerPes = $input['AudioFramesPerPes'] ?? null; $this->audioPids = $input['AudioPids'] ?? null; + $this->audioPtsOffsetDelta = $input['AudioPtsOffsetDelta'] ?? null; $this->bitrate = $input['Bitrate'] ?? null; $this->bufferModel = $input['BufferModel'] ?? null; $this->dataPtsControl = $input['DataPTSControl'] ?? null; @@ -481,6 +492,7 @@ public function __construct(array $input) * AudioDuration?: null|M2tsAudioDuration::*, * AudioFramesPerPes?: null|int, * AudioPids?: null|int[], + * AudioPtsOffsetDelta?: null|int, * Bitrate?: null|int, * BufferModel?: null|M2tsBufferModel::*, * DataPTSControl?: null|M2tsDataPtsControl::*, @@ -555,6 +567,11 @@ public function getAudioPids(): array return $this->audioPids ?? []; } + public function getAudioPtsOffsetDelta(): ?int + { + return $this->audioPtsOffsetDelta; + } + public function getBitrate(): ?int { return $this->bitrate; @@ -822,6 +839,9 @@ public function requestBody(): array $payload['audioPids'][$index] = $listValue; } } + if (null !== $v = $this->audioPtsOffsetDelta) { + $payload['audioPtsOffsetDelta'] = $v; + } if (null !== $v = $this->bitrate) { $payload['bitrate'] = $v; } diff --git a/src/Service/MediaConvert/src/ValueObject/M3u8Settings.php b/src/Service/MediaConvert/src/ValueObject/M3u8Settings.php index 16f7824b5..8e42aa343 100644 --- a/src/Service/MediaConvert/src/ValueObject/M3u8Settings.php +++ b/src/Service/MediaConvert/src/ValueObject/M3u8Settings.php @@ -47,6 +47,15 @@ final class M3u8Settings */ private $audioPids; + /** + * Manually specify the difference in PTS offset that will be applied to the audio track, in seconds or milliseconds, + * when you set PTS offset to Seconds or Milliseconds. Enter an integer from -10000 to 10000. Leave blank to keep the + * default value 0. + * + * @var int|null + */ + private $audioPtsOffsetDelta; + /** * If you select ALIGN_TO_VIDEO, MediaConvert writes captions and data packets with Presentation Timestamp (PTS) values * greater than or equal to the first video packet PTS (MediaConvert drops captions and data packets with lesser PTS @@ -136,7 +145,7 @@ final class M3u8Settings * automatically determine the initial PTS offset: Keep the default value, Auto. We recommend that you choose Auto for * the widest player compatibility. The initial PTS will be at least two seconds and vary depending on your output's * bitrate, HRD buffer size and HRD buffer initial fill percentage. To manually specify an initial PTS offset: Choose - * Seconds. Then specify the number of seconds with PTS offset. + * Seconds or Milliseconds. Then specify the number of seconds or milliseconds with PTS offset. * * @var TsPtsOffset::*|null */ @@ -195,6 +204,7 @@ final class M3u8Settings * AudioDuration?: null|M3u8AudioDuration::*, * AudioFramesPerPes?: null|int, * AudioPids?: null|int[], + * AudioPtsOffsetDelta?: null|int, * DataPTSControl?: null|M3u8DataPtsControl::*, * MaxPcrInterval?: null|int, * NielsenId3?: null|M3u8NielsenId3::*, @@ -220,6 +230,7 @@ public function __construct(array $input) $this->audioDuration = $input['AudioDuration'] ?? null; $this->audioFramesPerPes = $input['AudioFramesPerPes'] ?? null; $this->audioPids = $input['AudioPids'] ?? null; + $this->audioPtsOffsetDelta = $input['AudioPtsOffsetDelta'] ?? null; $this->dataPtsControl = $input['DataPTSControl'] ?? null; $this->maxPcrInterval = $input['MaxPcrInterval'] ?? null; $this->nielsenId3 = $input['NielsenId3'] ?? null; @@ -245,6 +256,7 @@ public function __construct(array $input) * AudioDuration?: null|M3u8AudioDuration::*, * AudioFramesPerPes?: null|int, * AudioPids?: null|int[], + * AudioPtsOffsetDelta?: null|int, * DataPTSControl?: null|M3u8DataPtsControl::*, * MaxPcrInterval?: null|int, * NielsenId3?: null|M3u8NielsenId3::*, @@ -291,6 +303,11 @@ public function getAudioPids(): array return $this->audioPids ?? []; } + public function getAudioPtsOffsetDelta(): ?int + { + return $this->audioPtsOffsetDelta; + } + /** * @return M3u8DataPtsControl::*|null */ @@ -422,6 +439,9 @@ public function requestBody(): array $payload['audioPids'][$index] = $listValue; } } + if (null !== $v = $this->audioPtsOffsetDelta) { + $payload['audioPtsOffsetDelta'] = $v; + } if (null !== $v = $this->dataPtsControl) { if (!M3u8DataPtsControl::exists($v)) { throw new InvalidArgument(\sprintf('Invalid parameter "dataPTSControl" for "%s". The value "%s" is not a valid "M3u8DataPtsControl".', __CLASS__, $v)); diff --git a/src/Service/MediaConvert/src/ValueObject/SpekeKeyProvider.php b/src/Service/MediaConvert/src/ValueObject/SpekeKeyProvider.php index 9a19ccb57..aff15007c 100644 --- a/src/Service/MediaConvert/src/ValueObject/SpekeKeyProvider.php +++ b/src/Service/MediaConvert/src/ValueObject/SpekeKeyProvider.php @@ -33,8 +33,8 @@ final class SpekeKeyProvider private $resourceId; /** - * Relates to SPEKE implementation. DRM system identifiers. DASH output groups support a max of two system ids. Other - * group types support one system id. See + * Relates to SPEKE implementation. DRM system identifiers. DASH output groups support a max of two system ids. HLS + * output groups support a max of 3 system ids. Other group types support one system id. See * https://dashif.org/identifiers/content_protection/ for more details. * * @var string[]|null diff --git a/src/Service/MediaConvert/src/ValueObject/SpekeKeyProviderCmaf.php b/src/Service/MediaConvert/src/ValueObject/SpekeKeyProviderCmaf.php index e4c626ab4..77fa5630e 100644 --- a/src/Service/MediaConvert/src/ValueObject/SpekeKeyProviderCmaf.php +++ b/src/Service/MediaConvert/src/ValueObject/SpekeKeyProviderCmaf.php @@ -35,9 +35,8 @@ final class SpekeKeyProviderCmaf private $encryptionContractConfiguration; /** - * Specify the DRM system ID that you want signaled in the HLS manifest that MediaConvert creates as part of this CMAF - * package. The HLS manifest can currently signal only one system ID. For more information, see - * https://dashif.org/identifiers/content_protection/. + * Specify up to 3 DRM system IDs that you want signaled in the HLS manifest that MediaConvert creates as part of this + * CMAF package. For more information, see https://dashif.org/identifiers/content_protection/. * * @var string[]|null */ diff --git a/src/Service/Route53/CHANGELOG.md b/src/Service/Route53/CHANGELOG.md index e2a1750e1..d90bf0bfd 100644 --- a/src/Service/Route53/CHANGELOG.md +++ b/src/Service/Route53/CHANGELOG.md @@ -2,6 +2,10 @@ ## NOT RELEASED +### Added + +- AWS api-change: Amazon Route 53 now supports the iso-f regions for private DNS Amazon VPCs and cloudwatch healthchecks. + ## 2.7.0 ### Added diff --git a/src/Service/Route53/composer.json b/src/Service/Route53/composer.json index 90197e931..432589625 100644 --- a/src/Service/Route53/composer.json +++ b/src/Service/Route53/composer.json @@ -29,7 +29,7 @@ }, "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "2.8-dev" } } } diff --git a/src/Service/Route53/src/Enum/VPCRegion.php b/src/Service/Route53/src/Enum/VPCRegion.php index c47782d0c..976884811 100644 --- a/src/Service/Route53/src/Enum/VPCRegion.php +++ b/src/Service/Route53/src/Enum/VPCRegion.php @@ -39,6 +39,8 @@ final class VPCRegion public const US_GOV_EAST_1 = 'us-gov-east-1'; public const US_GOV_WEST_1 = 'us-gov-west-1'; public const US_ISOB_EAST_1 = 'us-isob-east-1'; + public const US_ISOF_EAST_1 = 'us-isof-east-1'; + public const US_ISOF_SOUTH_1 = 'us-isof-south-1'; public const US_ISO_EAST_1 = 'us-iso-east-1'; public const US_ISO_WEST_1 = 'us-iso-west-1'; public const US_WEST_1 = 'us-west-1'; @@ -82,6 +84,8 @@ public static function exists(string $value): bool self::US_GOV_EAST_1 => true, self::US_GOV_WEST_1 => true, self::US_ISOB_EAST_1 => true, + self::US_ISOF_EAST_1 => true, + self::US_ISOF_SOUTH_1 => true, self::US_ISO_EAST_1 => true, self::US_ISO_WEST_1 => true, self::US_WEST_1 => true, diff --git a/src/Service/Route53/src/Route53Client.php b/src/Service/Route53/src/Route53Client.php index 781b3b18e..2aed3bf03 100644 --- a/src/Service/Route53/src/Route53Client.php +++ b/src/Service/Route53/src/Route53Client.php @@ -431,6 +431,9 @@ public function listHostedZonesByName($input = []): ListHostedZonesByNameRespons * The results begin with the first resource record set in the list whose name is greater than or equal to `Name`, and * whose type is greater than or equal to `Type`. * + * > Type is only used to sort between records with the same record Name. + * + * * **Resource record sets that are PENDING** * * This action returns the most current version of the records. This includes records that are `PENDING`, and that are