diff --git a/src/main/java/com/google/genai/Models.java b/src/main/java/com/google/genai/Models.java index d4ad7780b51..595dbbb55b5 100644 --- a/src/main/java/com/google/genai/Models.java +++ b/src/main/java/com/google/genai/Models.java @@ -2606,6 +2606,10 @@ ObjectNode generateVideosConfigToMldev( throw new IllegalArgumentException("labels parameter is not supported in Gemini API."); } + if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"resizeMode"}))) { + throw new IllegalArgumentException("resizeMode parameter is not supported in Gemini API."); + } + return toObject; } @@ -2747,6 +2751,13 @@ ObjectNode generateVideosConfigToVertex( Common.getValueByPath(fromObject, new String[] {"labels"})); } + if (Common.getValueByPath(fromObject, new String[] {"resizeMode"}) != null) { + Common.setValueByPath( + parentObject, + new String[] {"parameters", "resizeMode"}, + Common.getValueByPath(fromObject, new String[] {"resizeMode"})); + } + return toObject; } diff --git a/src/main/java/com/google/genai/types/GenerateVideosConfig.java b/src/main/java/com/google/genai/types/GenerateVideosConfig.java index 3cf73799ac0..15f2577612a 100644 --- a/src/main/java/com/google/genai/types/GenerateVideosConfig.java +++ b/src/main/java/com/google/genai/types/GenerateVideosConfig.java @@ -124,6 +124,10 @@ public abstract class GenerateVideosConfig extends JsonSerializable { @JsonProperty("labels") public abstract Optional> labels(); + /** Resize mode of the image input for video generation. */ + @JsonProperty("resizeMode") + public abstract Optional resizeMode(); + /** Instantiates a builder for GenerateVideosConfig. */ @ExcludeFromGeneratedCoverageReport public static Builder builder() { @@ -555,6 +559,44 @@ public Builder clearLabels() { return labels(Optional.empty()); } + /** + * Setter for resizeMode. + * + *

resizeMode: Resize mode of the image input for video generation. + */ + @JsonProperty("resizeMode") + public abstract Builder resizeMode(ImageResizeMode resizeMode); + + @ExcludeFromGeneratedCoverageReport + abstract Builder resizeMode(Optional resizeMode); + + /** Clears the value of resizeMode field. */ + @ExcludeFromGeneratedCoverageReport + @CanIgnoreReturnValue + public Builder clearResizeMode() { + return resizeMode(Optional.empty()); + } + + /** + * Setter for resizeMode given a known enum. + * + *

resizeMode: Resize mode of the image input for video generation. + */ + @CanIgnoreReturnValue + public Builder resizeMode(ImageResizeMode.Known knownType) { + return resizeMode(new ImageResizeMode(knownType)); + } + + /** + * Setter for resizeMode given a string. + * + *

resizeMode: Resize mode of the image input for video generation. + */ + @CanIgnoreReturnValue + public Builder resizeMode(String resizeMode) { + return resizeMode(new ImageResizeMode(resizeMode)); + } + public abstract GenerateVideosConfig build(); } diff --git a/src/main/java/com/google/genai/types/ImageResizeMode.java b/src/main/java/com/google/genai/types/ImageResizeMode.java new file mode 100644 index 00000000000..aff4502fa7f --- /dev/null +++ b/src/main/java/com/google/genai/types/ImageResizeMode.java @@ -0,0 +1,116 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Auto-generated code. Do not edit. + +package com.google.genai.types; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; +import com.google.common.base.Ascii; +import java.util.Objects; + +/** Resize mode for the image input for video generation. */ +public class ImageResizeMode { + + /** Enum representing the known values for ImageResizeMode. */ + public enum Known { + /** + * Crop the image to fit the correct aspect ratio (so we lose parts of the image in the + * process). + */ + CROP, + + /** + * Pad the image to fit the correct aspect ratio (so we don't lose any parts of the image in the + * process). + */ + PAD, + + IMAGE_RESIZE_MODE_UNSPECIFIED + } + + private Known imageResizeModeEnum; + private final String value; + + @JsonCreator + public ImageResizeMode(String value) { + this.value = value; + for (Known imageResizeModeEnum : Known.values()) { + if (Ascii.equalsIgnoreCase(imageResizeModeEnum.toString(), value)) { + this.imageResizeModeEnum = imageResizeModeEnum; + break; + } + } + if (this.imageResizeModeEnum == null) { + this.imageResizeModeEnum = Known.IMAGE_RESIZE_MODE_UNSPECIFIED; + } + } + + public ImageResizeMode(Known knownValue) { + this.imageResizeModeEnum = knownValue; + this.value = knownValue.toString(); + } + + @ExcludeFromGeneratedCoverageReport + @Override + @JsonValue + public String toString() { + return this.value; + } + + @ExcludeFromGeneratedCoverageReport + @SuppressWarnings("PatternMatchingInstanceof") + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null) { + return false; + } + + if (!(o instanceof ImageResizeMode)) { + return false; + } + + ImageResizeMode other = (ImageResizeMode) o; + + if (this.imageResizeModeEnum != Known.IMAGE_RESIZE_MODE_UNSPECIFIED + && other.imageResizeModeEnum != Known.IMAGE_RESIZE_MODE_UNSPECIFIED) { + return this.imageResizeModeEnum == other.imageResizeModeEnum; + } else if (this.imageResizeModeEnum == Known.IMAGE_RESIZE_MODE_UNSPECIFIED + && other.imageResizeModeEnum == Known.IMAGE_RESIZE_MODE_UNSPECIFIED) { + return this.value.equals(other.value); + } + return false; + } + + @ExcludeFromGeneratedCoverageReport + @Override + public int hashCode() { + if (this.imageResizeModeEnum != Known.IMAGE_RESIZE_MODE_UNSPECIFIED) { + return this.imageResizeModeEnum.hashCode(); + } else { + return Objects.hashCode(this.value); + } + } + + @ExcludeFromGeneratedCoverageReport + public Known knownEnum() { + return this.imageResizeModeEnum; + } +}