Merge "transcoding: Add forClientUid in TranscodingRequest."
This commit is contained in:
@@ -4399,6 +4399,8 @@ package android.media {
|
||||
}
|
||||
|
||||
public static final class MediaTranscodeManager.TranscodingRequest {
|
||||
method public int getClientPid();
|
||||
method public int getClientUid();
|
||||
method @NonNull public android.net.Uri getDestinationUri();
|
||||
method public int getPriority();
|
||||
method @NonNull public android.net.Uri getSourceUri();
|
||||
@@ -4409,6 +4411,8 @@ package android.media {
|
||||
public static final class MediaTranscodeManager.TranscodingRequest.Builder {
|
||||
ctor public MediaTranscodeManager.TranscodingRequest.Builder();
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest build();
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setClientPid(int);
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setClientUid(int);
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setDestinationUri(@NonNull android.net.Uri);
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setPriority(int);
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setSourceUri(@NonNull android.net.Uri);
|
||||
|
||||
@@ -1852,6 +1852,8 @@ package android.media {
|
||||
}
|
||||
|
||||
public static final class MediaTranscodeManager.TranscodingRequest {
|
||||
method public int getClientPid();
|
||||
method public int getClientUid();
|
||||
method @NonNull public android.net.Uri getDestinationUri();
|
||||
method public int getPriority();
|
||||
method @NonNull public android.net.Uri getSourceUri();
|
||||
@@ -1862,6 +1864,8 @@ package android.media {
|
||||
public static final class MediaTranscodeManager.TranscodingRequest.Builder {
|
||||
ctor public MediaTranscodeManager.TranscodingRequest.Builder();
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest build();
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setClientPid(int);
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setClientUid(int);
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setDestinationUri(@NonNull android.net.Uri);
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setPriority(int);
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setSourceUri(@NonNull android.net.Uri);
|
||||
|
||||
@@ -83,13 +83,13 @@ import java.util.concurrent.Executors;
|
||||
|
||||
<pre class=prettyprint>
|
||||
TranscodingRequest request =
|
||||
new TranscodingRequest.Builder()
|
||||
.setSourceUri(srcUri)
|
||||
.setDestinationUri(dstUri)
|
||||
.setType(MediaTranscodeManager.TRANSCODING_TYPE_VIDEO)
|
||||
.setPriority(REALTIME)
|
||||
.setVideoTrackFormat(videoFormat)
|
||||
.build();
|
||||
new TranscodingRequest.Builder()
|
||||
.setSourceUri(srcUri)
|
||||
.setDestinationUri(dstUri)
|
||||
.setType(MediaTranscodeManager.TRANSCODING_TYPE_VIDEO)
|
||||
.setPriority(REALTIME)
|
||||
.setVideoTrackFormat(videoFormat)
|
||||
.build();
|
||||
}</pre>
|
||||
|
||||
TODO(hkuang): Add architecture diagram showing the transcoding service and api.
|
||||
@@ -498,6 +498,20 @@ public final class MediaTranscodeManager {
|
||||
/** Uri of the destination media file. */
|
||||
private @NonNull Uri mDestinationUri;
|
||||
|
||||
/**
|
||||
* The UID of the client that the TranscodingRequest is for. Only privileged caller could
|
||||
* set this Uid as only they could do the transcoding on behalf of the client.
|
||||
* -1 means not available.
|
||||
*/
|
||||
private int mClientUid = -1;
|
||||
|
||||
/**
|
||||
* The Pid of the client that the TranscodingRequest is for. Only privileged caller could
|
||||
* set this Uid as only they could do the transcoding on behalf of the client.
|
||||
* -1 means not available.
|
||||
*/
|
||||
private int mClientPid = -1;
|
||||
|
||||
/** Type of the transcoding. */
|
||||
private @TranscodingType int mType = TRANSCODING_TYPE_UNKNOWN;
|
||||
|
||||
@@ -534,6 +548,8 @@ public final class MediaTranscodeManager {
|
||||
private TranscodingRequest(Builder b) {
|
||||
mSourceUri = b.mSourceUri;
|
||||
mDestinationUri = b.mDestinationUri;
|
||||
mClientUid = b.mClientUid;
|
||||
mClientPid = b.mClientPid;
|
||||
mPriority = b.mPriority;
|
||||
mType = b.mType;
|
||||
mVideoTrackFormat = b.mVideoTrackFormat;
|
||||
@@ -554,6 +570,16 @@ public final class MediaTranscodeManager {
|
||||
return mSourceUri;
|
||||
}
|
||||
|
||||
/** Return the UID of the client that this request is for. -1 means not available. */
|
||||
public int getClientUid() {
|
||||
return mClientUid;
|
||||
}
|
||||
|
||||
/** Return the PID of the client that this request is for. -1 means not available. */
|
||||
public int getClientPid() {
|
||||
return mClientPid;
|
||||
}
|
||||
|
||||
/** Return destination uri of the transcoding. */
|
||||
@NonNull
|
||||
public Uri getDestinationUri() {
|
||||
@@ -592,6 +618,8 @@ public final class MediaTranscodeManager {
|
||||
parcel.transcodingType = mType;
|
||||
parcel.sourceFilePath = mSourceUri.toString();
|
||||
parcel.destinationFilePath = mDestinationUri.toString();
|
||||
parcel.clientUid = mClientUid;
|
||||
parcel.clientPid = mClientPid;
|
||||
parcel.requestedVideoTrackFormat = convertToVideoTrackFormat(mVideoTrackFormat);
|
||||
if (mTestConfig != null) {
|
||||
parcel.isForTesting = true;
|
||||
@@ -667,6 +695,8 @@ public final class MediaTranscodeManager {
|
||||
public static final class Builder {
|
||||
private @NonNull Uri mSourceUri;
|
||||
private @NonNull Uri mDestinationUri;
|
||||
private int mClientUid = -1;
|
||||
private int mClientPid = -1;
|
||||
private @TranscodingType int mType = TRANSCODING_TYPE_UNKNOWN;
|
||||
private @TranscodingPriority int mPriority = PRIORITY_UNKNOWN;
|
||||
private @Nullable MediaFormat mVideoTrackFormat;
|
||||
@@ -709,6 +739,38 @@ public final class MediaTranscodeManager {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify the UID of the client that this request is for.
|
||||
* @param uid client Uid.
|
||||
* @return The same builder instance.
|
||||
* @throws IllegalArgumentException if uid is invalid.
|
||||
* TODO(hkuang): Check the permission if it is allowed.
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setClientUid(int uid) {
|
||||
if (uid <= 0) {
|
||||
throw new IllegalArgumentException("Invalid Uid");
|
||||
}
|
||||
mClientUid = uid;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify the PID of the client that this request is for.
|
||||
* @param pid client Pid.
|
||||
* @return The same builder instance.
|
||||
* @throws IllegalArgumentException if pid is invalid.
|
||||
* TODO(hkuang): Check the permission if it is allowed.
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setClientPid(int pid) {
|
||||
if (pid <= 0) {
|
||||
throw new IllegalArgumentException("Invalid pid");
|
||||
}
|
||||
mClientPid = pid;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies the priority of the transcoding.
|
||||
*
|
||||
@@ -1275,6 +1337,8 @@ public final class MediaTranscodeManager {
|
||||
// Converts the request to TranscodingRequestParcel.
|
||||
TranscodingRequestParcel requestParcel = transcodingRequest.writeToParcel();
|
||||
|
||||
Log.i(TAG, "Getting transcoding request " + transcodingRequest.getSourceUri());
|
||||
|
||||
// Submits the request to MediaTranscoding service.
|
||||
try {
|
||||
TranscodingJobParcel jobParcel = new TranscodingJobParcel();
|
||||
|
||||
@@ -202,6 +202,42 @@ public class MediaTranscodeManagerTest
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify that setting invalid pid will throw exception.
|
||||
*/
|
||||
@Test
|
||||
public void testCreateTranscodingWithInvalidClientPid() throws Exception {
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
TranscodingRequest request =
|
||||
new TranscodingRequest.Builder()
|
||||
.setSourceUri(mSourceHEVCVideoUri)
|
||||
.setDestinationUri(mDestinationUri)
|
||||
.setType(MediaTranscodeManager.TRANSCODING_TYPE_VIDEO)
|
||||
.setPriority(MediaTranscodeManager.PRIORITY_REALTIME)
|
||||
.setClientPid(-1)
|
||||
.setVideoTrackFormat(createMediaFormat())
|
||||
.build();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify that setting invalid uid will throw exception.
|
||||
*/
|
||||
@Test
|
||||
public void testCreateTranscodingWithInvalidClientUid() throws Exception {
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
TranscodingRequest request =
|
||||
new TranscodingRequest.Builder()
|
||||
.setSourceUri(mSourceHEVCVideoUri)
|
||||
.setDestinationUri(mDestinationUri)
|
||||
.setType(MediaTranscodeManager.TRANSCODING_TYPE_VIDEO)
|
||||
.setPriority(MediaTranscodeManager.PRIORITY_REALTIME)
|
||||
.setClientUid(-1)
|
||||
.setVideoTrackFormat(createMediaFormat())
|
||||
.build();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify that setting null source uri will throw exception.
|
||||
*/
|
||||
@@ -425,16 +461,24 @@ public class MediaTranscodeManagerTest
|
||||
MediaFormat videoTrackFormat = resolver.resolveVideoFormat();
|
||||
assertNotNull(videoTrackFormat);
|
||||
|
||||
int pid = android.os.Process.myPid();
|
||||
int uid = android.os.Process.myUid();
|
||||
|
||||
TranscodingRequest request =
|
||||
new TranscodingRequest.Builder()
|
||||
.setSourceUri(mSourceHEVCVideoUri)
|
||||
.setDestinationUri(destinationUri)
|
||||
.setType(MediaTranscodeManager.TRANSCODING_TYPE_VIDEO)
|
||||
.setClientPid(pid)
|
||||
.setClientUid(uid)
|
||||
.setPriority(MediaTranscodeManager.PRIORITY_REALTIME)
|
||||
.setVideoTrackFormat(videoTrackFormat)
|
||||
.build();
|
||||
Executor listenerExecutor = Executors.newSingleThreadExecutor();
|
||||
|
||||
assertEquals(pid, request.getClientPid());
|
||||
assertEquals(uid, request.getClientUid());
|
||||
|
||||
Log.i(TAG, "transcoding to " + videoTrackFormat);
|
||||
|
||||
TranscodingJob job = mMediaTranscodeManager.enqueueRequest(request, listenerExecutor,
|
||||
|
||||
@@ -4339,6 +4339,8 @@ package android.media {
|
||||
}
|
||||
|
||||
public static final class MediaTranscodeManager.TranscodingRequest {
|
||||
method public int getClientPid();
|
||||
method public int getClientUid();
|
||||
method @NonNull public android.net.Uri getDestinationUri();
|
||||
method public int getPriority();
|
||||
method @NonNull public android.net.Uri getSourceUri();
|
||||
@@ -4349,6 +4351,8 @@ package android.media {
|
||||
public static final class MediaTranscodeManager.TranscodingRequest.Builder {
|
||||
ctor public MediaTranscodeManager.TranscodingRequest.Builder();
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest build();
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setClientPid(int);
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setClientUid(int);
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setDestinationUri(@NonNull android.net.Uri);
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setPriority(int);
|
||||
method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setSourceUri(@NonNull android.net.Uri);
|
||||
|
||||
Reference in New Issue
Block a user