Skip to content

Commit b92d28c

Browse files
committed
Include outputMediaAspectRatio param for model config.
1 parent a6a83cb commit b92d28c

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

src/Providers/Models/DTO/ModelConfig.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
* outputMimeType?: string,
4141
* outputSchema?: array<string, mixed>,
4242
* outputMediaOrientation?: string,
43+
* outputMediaAspectRatio?: string,
4344
* customOptions?: array<string, mixed>
4445
* }
4546
*
@@ -64,6 +65,7 @@ class ModelConfig extends AbstractDataTransferObject
6465
public const KEY_OUTPUT_MIME_TYPE = 'outputMimeType';
6566
public const KEY_OUTPUT_SCHEMA = 'outputSchema';
6667
public const KEY_OUTPUT_MEDIA_ORIENTATION = 'outputMediaOrientation';
68+
public const KEY_OUTPUT_MEDIA_ASPECT_RATIO = 'outputMediaAspectRatio';
6769
public const KEY_CUSTOM_OPTIONS = 'customOptions';
6870

6971
/**
@@ -151,6 +153,11 @@ class ModelConfig extends AbstractDataTransferObject
151153
*/
152154
protected ?MediaOrientationEnum $outputMediaOrientation = null;
153155

156+
/**
157+
* @var string|null Output media aspect ratio (e.g. 3:2, 16:9).
158+
*/
159+
protected ?string $outputMediaAspectRatio = null;
160+
154161
/**
155162
* @var array<string, mixed> Custom provider-specific options.
156163
*/
@@ -590,6 +597,37 @@ public function getOutputMediaOrientation(): ?MediaOrientationEnum
590597
return $this->outputMediaOrientation;
591598
}
592599

600+
/**
601+
* Sets the output media aspect ratio.
602+
*
603+
* If set, this supersedes the output media orientation, as it is a more specific configuration.
604+
*
605+
* @since n.e.x.t
606+
*
607+
* @param string $outputMediaAspectRatio The output media aspect ratio (e.g. 3:2, 16:9).
608+
*/
609+
public function setOutputMediaAspectRatio(string $outputMediaAspectRatio): void
610+
{
611+
if (!preg_match('/^\d+:\d+$/', $outputMediaAspectRatio)) {
612+
throw new InvalidArgumentException(
613+
'Output media aspect ratio must be in the format "width:height" (e.g. 3:2, 16:9).'
614+
);
615+
}
616+
$this->outputMediaAspectRatio = $outputMediaAspectRatio;
617+
}
618+
619+
/**
620+
* Gets the output media aspect ratio.
621+
*
622+
* @since n.e.x.t
623+
*
624+
* @return string|null The output media aspect ratio (e.g. 3:2, 16:9).
625+
*/
626+
public function getOutputMediaAspectRatio(): ?string
627+
{
628+
return $this->outputMediaAspectRatio;
629+
}
630+
593631
/**
594632
* Sets a single custom option.
595633
*
@@ -724,6 +762,11 @@ public static function getJsonSchema(): array
724762
'enum' => MediaOrientationEnum::getValues(),
725763
'description' => 'Output media orientation.',
726764
],
765+
self::KEY_OUTPUT_MEDIA_ASPECT_RATIO => [
766+
'type' => 'string',
767+
'pattern' => '^\d+:\d+$',
768+
'description' => 'Output media aspect ratio.',
769+
],
727770
self::KEY_CUSTOM_OPTIONS => [
728771
'type' => 'object',
729772
'additionalProperties' => true,
@@ -820,6 +863,10 @@ static function (ModalityEnum $modality): string {
820863
$data[self::KEY_OUTPUT_MEDIA_ORIENTATION] = $this->outputMediaOrientation->value;
821864
}
822865

866+
if ($this->outputMediaAspectRatio !== null) {
867+
$data[self::KEY_OUTPUT_MEDIA_ASPECT_RATIO] = $this->outputMediaAspectRatio;
868+
}
869+
823870
$data[self::KEY_CUSTOM_OPTIONS] = $this->customOptions;
824871

825872
return $data;
@@ -907,6 +954,10 @@ public static function fromArray(array $array): self
907954
$config->setOutputMediaOrientation(MediaOrientationEnum::from($array[self::KEY_OUTPUT_MEDIA_ORIENTATION]));
908955
}
909956

957+
if (isset($array[self::KEY_OUTPUT_MEDIA_ASPECT_RATIO])) {
958+
$config->setOutputMediaAspectRatio($array[self::KEY_OUTPUT_MEDIA_ASPECT_RATIO]);
959+
}
960+
910961
if (isset($array[self::KEY_CUSTOM_OPTIONS])) {
911962
$config->setCustomOptions($array[self::KEY_CUSTOM_OPTIONS]);
912963
}

0 commit comments

Comments
 (0)