Skip to content

Commit 6fdcb13

Browse files
authored
fix(transcoder): use duration instead of float for args (GoogleCloudPlatform#6578)
Fixes 197546828 > It's a good idea to open an issue first for discussion. - [ ] I have followed [Sample Format Guide](https://github.com/GoogleCloudPlatform/java-docs-samples/blob/main/SAMPLE_FORMAT.md) - [ ] `pom.xml` parent set to latest `shared-configuration` - [ ] Appropriate changes to README are included in PR - [ ] API's need to be enabled to test (tell us) - [ ] Environment Variables need to be set (ask us to set them) - [X] **Tests** pass: `mvn clean verify` **required** - [X] **Lint** passes: `mvn -P lint checkstyle:check` **required** - [ ] **Static Analysis**: `mvn -P lint clean compile pmd:cpd-check spotbugs:check` **advisory only** - [X] Please **merge** this PR for me once it is approved.
1 parent d16a1be commit 6fdcb13

File tree

2 files changed

+23
-55
lines changed

2 files changed

+23
-55
lines changed

media/transcoder/src/main/java/com/example/transcoder/CreateJobWithConcatenatedInputs.java

+18-54
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@
3232
import com.google.cloud.video.transcoder.v1.VideoStream;
3333
import com.google.protobuf.Duration;
3434
import java.io.IOException;
35-
import java.math.BigDecimal;
36-
import java.text.DecimalFormat;
3735

3836
public class CreateJobWithConcatenatedInputs {
3937

@@ -42,56 +40,38 @@ public static void main(String[] args) throws IOException {
4240
String projectId = "my-project-id";
4341
String location = "us-central1";
4442
String inputUri1 = "gs://my-bucket/my-video-file1";
45-
Float startTimeOffset1 = 0.0f;
46-
Float endTimeOffset1 = 8.1f;
43+
Duration startTimeInput1 = Duration.newBuilder().setSeconds(0).setNanos(0).build();
44+
Duration endTimeInput1 = Duration.newBuilder().setSeconds(8).setNanos(100000000).build();
4745
String inputUri2 = "gs://my-bucket/my-video-file2";
48-
Float startTimeOffset2 = 3.5f;
49-
Float endTimeOffset2 = 15f;
46+
Duration startTimeInput2 = Duration.newBuilder().setSeconds(3).setNanos(500000000).build();
47+
Duration endTimeInput2 = Duration.newBuilder().setSeconds(15).setNanos(0).build();
5048
String outputUri = "gs://my-bucket/my-output-folder/";
5149

5250
createJobWithConcatenatedInputs(
5351
projectId,
5452
location,
5553
inputUri1,
56-
startTimeOffset1,
57-
endTimeOffset1,
54+
startTimeInput1,
55+
endTimeInput1,
5856
inputUri2,
59-
startTimeOffset2,
60-
endTimeOffset2,
57+
startTimeInput2,
58+
endTimeInput2,
6159
outputUri);
6260
}
6361

64-
public static int toNanos(Float timeOffset) {
65-
DecimalFormat df = new DecimalFormat(".####");
66-
BigDecimal toNanos = new BigDecimal("1000000000");
67-
BigDecimal bd = new BigDecimal(df.format(timeOffset));
68-
BigDecimal fractionalPart = bd.remainder(BigDecimal.ONE);
69-
return fractionalPart.multiply(toNanos).intValue();
70-
}
71-
7262
// Creates a job from an ad-hoc configuration that concatenates two input videos.
7363
public static void createJobWithConcatenatedInputs(
7464
String projectId,
7565
String location,
7666
String inputUri1,
77-
Float startTimeOffset1,
78-
Float endTimeOffset1,
67+
Duration startTimeInput1,
68+
Duration endTimeInput1,
7969
String inputUri2,
80-
Float startTimeOffset2,
81-
Float endTimeOffset2,
70+
Duration startTimeInput2,
71+
Duration endTimeInput2,
8272
String outputUri)
8373
throws IOException {
8474

85-
int startTimeOffset1Sec = (int) Math.floor(startTimeOffset1);
86-
int startTimeOffset1NanoSec = toNanos(startTimeOffset1);
87-
int endTimeOffset1Sec = (int) Math.floor(endTimeOffset1);
88-
int endTimeOffset1NanoSec = toNanos(endTimeOffset1);
89-
90-
int startTimeOffset2Sec = (int) Math.floor(startTimeOffset2);
91-
int startTimeOffset2NanoSec = toNanos(startTimeOffset2);
92-
int endTimeOffset2Sec = (int) Math.floor(endTimeOffset2);
93-
int endTimeOffset2NanoSec = toNanos(endTimeOffset2);
94-
9575
// Initialize client that will be used to send requests. This client only needs to be created
9676
// once, and can be reused for multiple requests.
9777
try (TranscoderServiceClient transcoderServiceClient = TranscoderServiceClient.create()) {
@@ -130,36 +110,20 @@ public static void createJobWithConcatenatedInputs(
130110
.addElementaryStreams("audio_stream0")
131111
.build())
132112
.addEditList(
133-
0,
113+
0, // Index in the edit list
134114
EditAtom.newBuilder()
135115
.setKey("atom1")
136116
.addInputs("input1")
137-
.setStartTimeOffset(
138-
Duration.newBuilder()
139-
.setSeconds(startTimeOffset1Sec)
140-
.setNanos(startTimeOffset1NanoSec)
141-
.build())
142-
.setEndTimeOffset(
143-
Duration.newBuilder()
144-
.setSeconds(endTimeOffset1Sec)
145-
.setNanos(endTimeOffset1NanoSec)
146-
.build())
117+
.setStartTimeOffset(startTimeInput1)
118+
.setEndTimeOffset(endTimeInput1)
147119
.build())
148120
.addEditList(
149-
1,
121+
1, // Index in the edit list
150122
EditAtom.newBuilder()
151123
.setKey("atom2")
152124
.addInputs("input2")
153-
.setStartTimeOffset(
154-
Duration.newBuilder()
155-
.setSeconds(startTimeOffset2Sec)
156-
.setNanos(startTimeOffset2NanoSec)
157-
.build())
158-
.setEndTimeOffset(
159-
Duration.newBuilder()
160-
.setSeconds(endTimeOffset2Sec)
161-
.setNanos(endTimeOffset2NanoSec)
162-
.build())
125+
.setStartTimeOffset(startTimeInput2)
126+
.setEndTimeOffset(endTimeInput2)
163127
.build())
164128
.build();
165129

media/transcoder/src/test/java/com/example/transcoder/CreateJobWithConcatenatedInputsTest.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.google.cloud.storage.Storage;
3030
import com.google.cloud.storage.StorageClass;
3131
import com.google.cloud.storage.StorageOptions;
32+
import com.google.protobuf.Duration;
3233
import java.io.ByteArrayOutputStream;
3334
import java.io.IOException;
3435
import java.io.PrintStream;
@@ -127,7 +128,10 @@ public void beforeTest() throws IOException {
127128
public void test_CreateJobWithConcatenatedInputs() throws Exception {
128129
String jobName = String.format("projects/%s/locations/%s/jobs/", PROJECT_NUMBER, LOCATION);
129130
CreateJobWithConcatenatedInputs.createJobWithConcatenatedInputs(
130-
PROJECT_ID, LOCATION, INPUT_1_URI, 0f, 8.1f, INPUT_2_URI, 3.5f, 15f, OUTPUT_URI_FOR_CONCAT);
131+
PROJECT_ID, LOCATION, INPUT_1_URI, Duration.newBuilder().setSeconds(0).setNanos(0).build(),
132+
Duration.newBuilder().setSeconds(8).setNanos(100000000).build(), INPUT_2_URI,
133+
Duration.newBuilder().setSeconds(3).setNanos(500000000).build(),
134+
Duration.newBuilder().setSeconds(15).setNanos(0).build(), OUTPUT_URI_FOR_CONCAT);
131135
String output = bout.toString();
132136
assertThat(output, containsString(jobName));
133137
String[] arr = output.split("/");

0 commit comments

Comments
 (0)