From e089fcb3d99a03cc1ecb7786b8ef58966c25ac4d Mon Sep 17 00:00:00 2001 From: Matthew Tang Date: Fri, 24 Apr 2026 11:37:11 -0700 Subject: [PATCH] feat: Add ImageResizeMode for GenerateVideos PiperOrigin-RevId: 905140128 --- src/main/java/com/google/genai/Models.java | 11 ++ .../genai/types/GenerateVideosConfig.java | 42 +++++++ .../google/genai/types/ImageResizeMode.java | 116 ++++++++++++++++++ 3 files changed, 169 insertions(+) create mode 100644 src/main/java/com/google/genai/types/ImageResizeMode.java diff --git a/src/main/java/com/google/genai/Models.java b/src/main/java/com/google/genai/Models.java index 5ae65101e7d..a6fb051345d 100644 --- a/src/main/java/com/google/genai/Models.java +++ b/src/main/java/com/google/genai/Models.java @@ -2615,6 +2615,10 @@ ObjectNode generateVideosConfigToMldev( Common.getValueByPath(fromObject, new String[] {"webhookConfig"})); } + if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"resizeMode"}))) { + throw new IllegalArgumentException("resizeMode parameter is not supported in Gemini API."); + } + return toObject; } @@ -2761,6 +2765,13 @@ ObjectNode generateVideosConfigToVertex( "webhookConfig parameter is not supported in Gemini Enterprise Agent Platform."); } + 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 b25ed468100..b40b56e3c62 100644 --- a/src/main/java/com/google/genai/types/GenerateVideosConfig.java +++ b/src/main/java/com/google/genai/types/GenerateVideosConfig.java @@ -131,6 +131,10 @@ public abstract class GenerateVideosConfig extends JsonSerializable { @JsonProperty("webhookConfig") public abstract Optional webhookConfig(); + /** 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() { @@ -592,6 +596,44 @@ public Builder clearWebhookConfig() { return webhookConfig(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; + } +}