Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(215)

Unified Diff: webrtc/api/android/java/src/org/webrtc/VideoFileRenderer.java

Issue 2440703002: Android VideoFileRenderer: Wait for posted frames in release() (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/api/android/java/src/org/webrtc/VideoFileRenderer.java
diff --git a/webrtc/api/android/java/src/org/webrtc/VideoFileRenderer.java b/webrtc/api/android/java/src/org/webrtc/VideoFileRenderer.java
index 613ed1aaaf5f337845dc3c96dbfa64063cf11d78..1ad3a5936eba8c92f7353796e28728f9466d2c9a 100644
--- a/webrtc/api/android/java/src/org/webrtc/VideoFileRenderer.java
+++ b/webrtc/api/android/java/src/org/webrtc/VideoFileRenderer.java
@@ -11,10 +11,10 @@ package org.webrtc;
import android.os.Handler;
import android.os.HandlerThread;
-
-import java.nio.ByteBuffer;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.concurrent.CountDownLatch;
/**
* Can be used to save the video frames to file.
@@ -121,8 +121,12 @@ public class VideoFileRenderer implements VideoRenderer.Callbacks {
}
}
+ /**
+ * Release all resources. All already posted frames will be rendered first.
+ */
public void release() {
- ThreadUtils.invokeAtFrontUninterruptibly(renderThreadHandler, new Runnable() {
+ final CountDownLatch cleanupBarrier = new CountDownLatch(1);
+ renderThreadHandler.post(new Runnable() {
@Override
public void run() {
try {
@@ -133,8 +137,10 @@ public class VideoFileRenderer implements VideoRenderer.Callbacks {
yuvConverter.release();
eglBase.release();
renderThread.quit();
+ cleanupBarrier.countDown();
}
});
+ ThreadUtils.awaitUninterruptibly(cleanupBarrier);
}
public static native void nativeI420Scale(ByteBuffer srcY, int strideY, ByteBuffer srcU,
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698