diff options
| author | 2020-08-10 11:49:07 -0700 | |
|---|---|---|
| committer | 2020-08-11 09:56:46 -0700 | |
| commit | 4ccf29836e76a6d70f33d2b39da8f37780c42790 (patch) | |
| tree | c93f2d70912c48290a6f9295c737003f0785d179 | |
| parent | 4d05f28d5666c8e999bdaaff23c19673833426a3 (diff) | |
TranscodingApi: Update job status upon receiving callback.
Bug: 160260102
Test: Unit test.
Change-Id: Ib3727889a102f64d76794703e085e73feeabe34e
| -rw-r--r-- | media/java/android/media/MediaTranscodeManager.java | 32 | ||||
| -rw-r--r-- | media/tests/MediaTranscodingTest/src/com/android/mediatranscodingtest/MediaTranscodeManagerTest.java | 11 |
2 files changed, 38 insertions, 5 deletions
diff --git a/media/java/android/media/MediaTranscodeManager.java b/media/java/android/media/MediaTranscodeManager.java index 5d4404036102..e1bff03f6833 100644 --- a/media/java/android/media/MediaTranscodeManager.java +++ b/media/java/android/media/MediaTranscodeManager.java @@ -244,7 +244,7 @@ public final class MediaTranscodeManager { } // Updates the job progress. - job.setJobProgress(newProgress); + job.updateProgress(newProgress); // Notifies client the progress update. if (job.mProgressUpdateExecutor != null && job.mProgressUpdateListener != null) { @@ -254,6 +254,21 @@ public final class MediaTranscodeManager { } } + private void updateStatus(int jobId, int status) { + synchronized (mPendingTranscodingJobs) { + final TranscodingJob job = mPendingTranscodingJobs.get(jobId); + + if (job == null) { + // This should not happen in reality. + Log.e(TAG, "Job " + jobId + " is not in PendingJobs"); + return; + } + + // Updates the job status. + job.updateStatus(status); + } + } + // Just forwards all the events to the event handler. private ITranscodingClientCallback mTranscodingClientCallback = new ITranscodingClientCallback.Stub() { @@ -285,17 +300,17 @@ public final class MediaTranscodeManager { @Override public void onTranscodingStarted(int jobId) throws RemoteException { - + updateStatus(jobId, TranscodingJob.STATUS_RUNNING); } @Override public void onTranscodingPaused(int jobId) throws RemoteException { - + updateStatus(jobId, TranscodingJob.STATUS_PAUSED); } @Override public void onTranscodingResumed(int jobId) throws RemoteException { - + updateStatus(jobId, TranscodingJob.STATUS_RUNNING); } @Override @@ -683,11 +698,14 @@ public final class MediaTranscodeManager { public static final int STATUS_RUNNING = 2; /** The job is finished. */ public static final int STATUS_FINISHED = 3; + /** The job is paused. */ + public static final int STATUS_PAUSED = 4; @IntDef(prefix = { "STATUS_" }, value = { STATUS_PENDING, STATUS_RUNNING, STATUS_FINISHED, + STATUS_PAUSED, }) @Retention(RetentionPolicy.SOURCE) public @interface Status {} @@ -843,9 +861,13 @@ public final class MediaTranscodeManager { return mResult; } - private synchronized void setJobProgress(int newProgress) { + private synchronized void updateProgress(int newProgress) { mProgress = newProgress; } + + private synchronized void updateStatus(int newStatus) { + mStatus = newStatus; + } } /** diff --git a/media/tests/MediaTranscodingTest/src/com/android/mediatranscodingtest/MediaTranscodeManagerTest.java b/media/tests/MediaTranscodingTest/src/com/android/mediatranscodingtest/MediaTranscodeManagerTest.java index 8e4153078174..8fe10888cab6 100644 --- a/media/tests/MediaTranscodingTest/src/com/android/mediatranscodingtest/MediaTranscodeManagerTest.java +++ b/media/tests/MediaTranscodingTest/src/com/android/mediatranscodingtest/MediaTranscodeManagerTest.java @@ -33,6 +33,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; @@ -238,6 +239,7 @@ public class MediaTranscodeManagerTest Log.d(TAG, "Starting: testMediaTranscodeManager"); Semaphore transcodeCompleteSemaphore = new Semaphore(0); + final CountDownLatch statusLatch = new CountDownLatch(1); // Create a file Uri: file:///data/user/0/com.android.mediatranscodingtest/cache/temp.mp4 // The full path of this file is: @@ -276,12 +278,21 @@ public class MediaTranscodeManagerTest public void onProgressUpdate(int newProgress) { assertTrue("Invalid proress update", newProgress > mPreviousProgress); assertTrue("Invalid proress update", newProgress <= 100); + if (newProgress > 0) { + statusLatch.countDown(); + } mPreviousProgress = newProgress; progressUpdateCount.getAndIncrement(); Log.i(TAG, "Get progress update " + newProgress); } }); + try { + statusLatch.await(); + // The transcoding should not be finished yet as the clip is long. + assertTrue("Invalid status", job.getStatus() == TranscodingJob.STATUS_RUNNING); + } catch (InterruptedException e) { } + Log.d(TAG, "testMediaTranscodeManager - Waiting for transcode to cancel."); boolean finishedOnTime = transcodeCompleteSemaphore.tryAcquire( TRANSCODE_TIMEOUT_SECONDS, TimeUnit.SECONDS); |