Skip to content

Commit e089fcb

Browse files
matthew29tangcopybara-github
authored andcommitted
feat: Add ImageResizeMode for GenerateVideos
PiperOrigin-RevId: 905140128
1 parent d762b6e commit e089fcb

3 files changed

Lines changed: 169 additions & 0 deletions

File tree

src/main/java/com/google/genai/Models.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2615,6 +2615,10 @@ ObjectNode generateVideosConfigToMldev(
26152615
Common.getValueByPath(fromObject, new String[] {"webhookConfig"}));
26162616
}
26172617

2618+
if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"resizeMode"}))) {
2619+
throw new IllegalArgumentException("resizeMode parameter is not supported in Gemini API.");
2620+
}
2621+
26182622
return toObject;
26192623
}
26202624

@@ -2761,6 +2765,13 @@ ObjectNode generateVideosConfigToVertex(
27612765
"webhookConfig parameter is not supported in Gemini Enterprise Agent Platform.");
27622766
}
27632767

2768+
if (Common.getValueByPath(fromObject, new String[] {"resizeMode"}) != null) {
2769+
Common.setValueByPath(
2770+
parentObject,
2771+
new String[] {"parameters", "resizeMode"},
2772+
Common.getValueByPath(fromObject, new String[] {"resizeMode"}));
2773+
}
2774+
27642775
return toObject;
27652776
}
27662777

src/main/java/com/google/genai/types/GenerateVideosConfig.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ public abstract class GenerateVideosConfig extends JsonSerializable {
131131
@JsonProperty("webhookConfig")
132132
public abstract Optional<WebhookConfig> webhookConfig();
133133

134+
/** Resize mode of the image input for video generation. */
135+
@JsonProperty("resizeMode")
136+
public abstract Optional<ImageResizeMode> resizeMode();
137+
134138
/** Instantiates a builder for GenerateVideosConfig. */
135139
@ExcludeFromGeneratedCoverageReport
136140
public static Builder builder() {
@@ -592,6 +596,44 @@ public Builder clearWebhookConfig() {
592596
return webhookConfig(Optional.empty());
593597
}
594598

599+
/**
600+
* Setter for resizeMode.
601+
*
602+
* <p>resizeMode: Resize mode of the image input for video generation.
603+
*/
604+
@JsonProperty("resizeMode")
605+
public abstract Builder resizeMode(ImageResizeMode resizeMode);
606+
607+
@ExcludeFromGeneratedCoverageReport
608+
abstract Builder resizeMode(Optional<ImageResizeMode> resizeMode);
609+
610+
/** Clears the value of resizeMode field. */
611+
@ExcludeFromGeneratedCoverageReport
612+
@CanIgnoreReturnValue
613+
public Builder clearResizeMode() {
614+
return resizeMode(Optional.empty());
615+
}
616+
617+
/**
618+
* Setter for resizeMode given a known enum.
619+
*
620+
* <p>resizeMode: Resize mode of the image input for video generation.
621+
*/
622+
@CanIgnoreReturnValue
623+
public Builder resizeMode(ImageResizeMode.Known knownType) {
624+
return resizeMode(new ImageResizeMode(knownType));
625+
}
626+
627+
/**
628+
* Setter for resizeMode given a string.
629+
*
630+
* <p>resizeMode: Resize mode of the image input for video generation.
631+
*/
632+
@CanIgnoreReturnValue
633+
public Builder resizeMode(String resizeMode) {
634+
return resizeMode(new ImageResizeMode(resizeMode));
635+
}
636+
595637
public abstract GenerateVideosConfig build();
596638
}
597639

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
/*
2+
* Copyright 2025 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
// Auto-generated code. Do not edit.
18+
19+
package com.google.genai.types;
20+
21+
import com.fasterxml.jackson.annotation.JsonCreator;
22+
import com.fasterxml.jackson.annotation.JsonValue;
23+
import com.google.common.base.Ascii;
24+
import java.util.Objects;
25+
26+
/** Resize mode for the image input for video generation. */
27+
public class ImageResizeMode {
28+
29+
/** Enum representing the known values for ImageResizeMode. */
30+
public enum Known {
31+
/**
32+
* Crop the image to fit the correct aspect ratio (so we lose parts of the image in the
33+
* process).
34+
*/
35+
CROP,
36+
37+
/**
38+
* Pad the image to fit the correct aspect ratio (so we don't lose any parts of the image in the
39+
* process).
40+
*/
41+
PAD,
42+
43+
IMAGE_RESIZE_MODE_UNSPECIFIED
44+
}
45+
46+
private Known imageResizeModeEnum;
47+
private final String value;
48+
49+
@JsonCreator
50+
public ImageResizeMode(String value) {
51+
this.value = value;
52+
for (Known imageResizeModeEnum : Known.values()) {
53+
if (Ascii.equalsIgnoreCase(imageResizeModeEnum.toString(), value)) {
54+
this.imageResizeModeEnum = imageResizeModeEnum;
55+
break;
56+
}
57+
}
58+
if (this.imageResizeModeEnum == null) {
59+
this.imageResizeModeEnum = Known.IMAGE_RESIZE_MODE_UNSPECIFIED;
60+
}
61+
}
62+
63+
public ImageResizeMode(Known knownValue) {
64+
this.imageResizeModeEnum = knownValue;
65+
this.value = knownValue.toString();
66+
}
67+
68+
@ExcludeFromGeneratedCoverageReport
69+
@Override
70+
@JsonValue
71+
public String toString() {
72+
return this.value;
73+
}
74+
75+
@ExcludeFromGeneratedCoverageReport
76+
@SuppressWarnings("PatternMatchingInstanceof")
77+
@Override
78+
public boolean equals(Object o) {
79+
if (this == o) {
80+
return true;
81+
}
82+
if (o == null) {
83+
return false;
84+
}
85+
86+
if (!(o instanceof ImageResizeMode)) {
87+
return false;
88+
}
89+
90+
ImageResizeMode other = (ImageResizeMode) o;
91+
92+
if (this.imageResizeModeEnum != Known.IMAGE_RESIZE_MODE_UNSPECIFIED
93+
&& other.imageResizeModeEnum != Known.IMAGE_RESIZE_MODE_UNSPECIFIED) {
94+
return this.imageResizeModeEnum == other.imageResizeModeEnum;
95+
} else if (this.imageResizeModeEnum == Known.IMAGE_RESIZE_MODE_UNSPECIFIED
96+
&& other.imageResizeModeEnum == Known.IMAGE_RESIZE_MODE_UNSPECIFIED) {
97+
return this.value.equals(other.value);
98+
}
99+
return false;
100+
}
101+
102+
@ExcludeFromGeneratedCoverageReport
103+
@Override
104+
public int hashCode() {
105+
if (this.imageResizeModeEnum != Known.IMAGE_RESIZE_MODE_UNSPECIFIED) {
106+
return this.imageResizeModeEnum.hashCode();
107+
} else {
108+
return Objects.hashCode(this.value);
109+
}
110+
}
111+
112+
@ExcludeFromGeneratedCoverageReport
113+
public Known knownEnum() {
114+
return this.imageResizeModeEnum;
115+
}
116+
}

0 commit comments

Comments
 (0)