Transcoding: Change to use string path instead of fd.
Bug: 145628554
Test: unit test
Change-Id: I321ecf75e770b4500fc3015a5d161e3b48ea5678
diff --git a/media/libmediatranscoding/TranscodingClientManager.cpp b/media/libmediatranscoding/TranscodingClientManager.cpp
index de9dd76..ce3ac13 100644
--- a/media/libmediatranscoding/TranscodingClientManager.cpp
+++ b/media/libmediatranscoding/TranscodingClientManager.cpp
@@ -112,7 +112,7 @@
return Status::fromServiceSpecificError(IMediaTranscodingService::ERROR_DISCONNECTED);
}
- if (in_request.fileName.empty()) {
+ if (in_request.sourceFilePath.empty() || in_request.destinationFilePath.empty()) {
// This is the only error we check for now.
return Status::ok();
}
diff --git a/media/libmediatranscoding/aidl/android/media/TranscodingRequestParcel.aidl b/media/libmediatranscoding/aidl/android/media/TranscodingRequestParcel.aidl
index 14e7399..fb0b918 100644
--- a/media/libmediatranscoding/aidl/android/media/TranscodingRequestParcel.aidl
+++ b/media/libmediatranscoding/aidl/android/media/TranscodingRequestParcel.aidl
@@ -28,9 +28,14 @@
//TODO(hkuang): Implement the parcelable.
parcelable TranscodingRequestParcel {
/**
- * Name of file to be transcoded.
+ * The absolute file path of the source file.
*/
- @utf8InCpp String fileName;
+ @utf8InCpp String sourceFilePath;
+
+ /**
+ * The absolute file path of the destination file.
+ */
+ @utf8InCpp String destinationFilePath;
/**
* Type of the transcoding.
@@ -46,16 +51,6 @@
@nullable TranscodingVideoTrackFormat requestedVideoTrackFormat;
/**
- * Input source file descriptor.
- */
- @nullable ParcelFileDescriptor inFd;
-
- /**
- * Output transcoded file descriptor.
- */
- @nullable ParcelFileDescriptor outFd;
-
- /**
* Priority of this transcoding. Service will schedule the transcoding based on the priority.
*/
TranscodingJobPriority priority;
diff --git a/media/libmediatranscoding/include/media/TranscodingRequest.h b/media/libmediatranscoding/include/media/TranscodingRequest.h
index 1337af3..25236bd 100644
--- a/media/libmediatranscoding/include/media/TranscodingRequest.h
+++ b/media/libmediatranscoding/include/media/TranscodingRequest.h
@@ -35,11 +35,9 @@
private:
void setTo(const TranscodingRequestParcel& parcel) {
- fileName = parcel.fileName;
+ sourceFilePath = parcel.sourceFilePath;
+ destinationFilePath = parcel.destinationFilePath;
transcodingType = parcel.transcodingType;
- // TODO: determine if the fds need dup
- inFd.set(dup(parcel.inFd.get()));
- outFd.set(dup(parcel.outFd.get()));
priority = parcel.priority;
requestUpdate = parcel.requestUpdate;
}
diff --git a/media/libmediatranscoding/tests/TranscodingClientManager_tests.cpp b/media/libmediatranscoding/tests/TranscodingClientManager_tests.cpp
index d9504ca..0ae8035 100644
--- a/media/libmediatranscoding/tests/TranscodingClientManager_tests.cpp
+++ b/media/libmediatranscoding/tests/TranscodingClientManager_tests.cpp
@@ -133,7 +133,7 @@
// This is the secret name we'll check, to test error propagation from
// the scheduler back to client.
- if (request.fileName == "bad_file") {
+ if (request.sourceFilePath == "bad_source_file") {
return false;
}
@@ -346,33 +346,37 @@
// Test jobId assignment.
TranscodingRequestParcel request;
- request.fileName = "test_file_0";
+ request.sourceFilePath = "test_source_file_0";
+ request.destinationFilePath = "test_desintaion_file_0";
TranscodingJobParcel job;
bool result;
EXPECT_TRUE(mClient1->submitRequest(request, &job, &result).isOk());
EXPECT_TRUE(result);
EXPECT_EQ(job.jobId, JOB(0));
- request.fileName = "test_file_1";
+ request.sourceFilePath = "test_source_file_1";
+ request.destinationFilePath = "test_desintaion_file_1";
EXPECT_TRUE(mClient1->submitRequest(request, &job, &result).isOk());
EXPECT_TRUE(result);
EXPECT_EQ(job.jobId, JOB(1));
- request.fileName = "test_file_2";
+ request.sourceFilePath = "test_source_file_2";
+ request.destinationFilePath = "test_desintaion_file_2";
EXPECT_TRUE(mClient1->submitRequest(request, &job, &result).isOk());
EXPECT_TRUE(result);
EXPECT_EQ(job.jobId, JOB(2));
- // Test submit bad request (no valid fileName) fails.
+ // Test submit bad request (no valid sourceFilePath) fails.
TranscodingRequestParcel badRequest;
- badRequest.fileName = "bad_file";
+ badRequest.sourceFilePath = "bad_source_file";
+ badRequest.destinationFilePath = "bad_destination_file";
EXPECT_TRUE(mClient1->submitRequest(badRequest, &job, &result).isOk());
EXPECT_FALSE(result);
// Test get jobs by id.
EXPECT_TRUE(mClient1->getJobWithId(JOB(2), &job, &result).isOk());
EXPECT_EQ(job.jobId, JOB(2));
- EXPECT_EQ(job.request.fileName, "test_file_2");
+ EXPECT_EQ(job.request.sourceFilePath, "test_source_file_2");
EXPECT_TRUE(result);
// Test get jobs by invalid id fails.
@@ -417,7 +421,8 @@
addMultipleClients();
TranscodingRequestParcel request;
- request.fileName = "test_file_name";
+ request.sourceFilePath = "test_source_file_name";
+ request.destinationFilePath = "test_destination_file_name";
TranscodingJobParcel job;
bool result;
EXPECT_TRUE(mClient1->submitRequest(request, &job, &result).isOk());
@@ -461,12 +466,14 @@
TranscodingJobParcel job;
bool result;
- request.fileName = "test_file_0";
+ request.sourceFilePath = "test_source_file_0";
+ request.destinationFilePath = "test_destination_file_0";
request.priority = TranscodingJobPriority::kUnspecified;
EXPECT_TRUE(client->submitRequest(request, &job, &result).isOk() && result);
EXPECT_EQ(job.jobId, JOB(0));
- request.fileName = "test_file_1";
+ request.sourceFilePath = "test_source_file_1";
+ request.destinationFilePath = "test_destination_file_1";
request.priority = TranscodingJobPriority::kNormal;
EXPECT_TRUE(client->submitRequest(request, &job, &result).isOk() && result);
EXPECT_EQ(job.jobId, JOB(1));
@@ -476,7 +483,8 @@
EXPECT_TRUE(status.isOk());
// Test submit new request after unregister, should fail with ERROR_DISCONNECTED.
- request.fileName = "test_file_2";
+ request.sourceFilePath = "test_source_file_2";
+ request.destinationFilePath = "test_destination_file_2";
request.priority = TranscodingJobPriority::kNormal;
status = client->submitRequest(request, &job, &result);
EXPECT_FALSE(status.isOk());