Index: webrtc/sdk/android/api/org/webrtc/VideoFileRenderer.java |
diff --git a/webrtc/sdk/android/api/org/webrtc/VideoFileRenderer.java b/webrtc/sdk/android/api/org/webrtc/VideoFileRenderer.java |
index 02a4a3fd0f37488434935c966d18b1b2f7158628..380d063108e271aaf6ec254d61b571c98218d69f 100644 |
--- a/webrtc/sdk/android/api/org/webrtc/VideoFileRenderer.java |
+++ b/webrtc/sdk/android/api/org/webrtc/VideoFileRenderer.java |
@@ -12,6 +12,7 @@ package org.webrtc; |
import android.os.Handler; |
import android.os.HandlerThread; |
+import android.os.Looper; |
import java.io.FileOutputStream; |
import java.io.IOException; |
import java.nio.ByteBuffer; |
@@ -130,34 +131,36 @@ public class VideoFileRenderer implements VideoRenderer.Callbacks { |
*/ |
public void release() { |
final CountDownLatch cleanupBarrier = new CountDownLatch(1); |
+ final Looper renderLooper = renderThreadHandler.getLooper(); |
renderThreadHandler.post(new Runnable() { |
@Override |
public void run() { |
yuvConverter.release(); |
eglBase.release(); |
- renderThread.quit(); |
+ try { |
+ for (ByteBuffer buffer : rawFrames) { |
+ videoOutFile.write("FRAME\n".getBytes()); |
+ |
+ byte[] data = new byte[outputFrameSize]; |
+ buffer.get(data); |
+ |
+ videoOutFile.write(data); |
+ |
+ nativeFreeNativeByteBuffer(buffer); |
+ } |
+ videoOutFile.close(); |
+ Logging.d(TAG, |
+ "Video written to disk as " + outputFileName + ". Number frames are " |
+ + rawFrames.size() + " and the dimension of the frames are " + outputFileWidth |
+ + "x" + outputFileHeight + "."); |
+ } catch (IOException e) { |
+ Logging.e(TAG, "Error writing video to disk", e); |
+ } |
+ renderLooper.quit(); |
cleanupBarrier.countDown(); |
} |
}); |
ThreadUtils.awaitUninterruptibly(cleanupBarrier); |
- try { |
- for (ByteBuffer buffer : rawFrames) { |
- videoOutFile.write("FRAME\n".getBytes()); |
- |
- byte[] data = new byte[outputFrameSize]; |
- buffer.get(data); |
- |
- videoOutFile.write(data); |
- |
- nativeFreeNativeByteBuffer(buffer); |
- } |
- videoOutFile.close(); |
- Logging.d(TAG, "Video written to disk as " + outputFileName + ". Number frames are " |
- + rawFrames.size() + " and the dimension of the frames are " + outputFileWidth + "x" |
- + outputFileHeight + "."); |
- } catch (IOException e) { |
- Logging.e(TAG, "Error writing video to disk", e); |
- } |
} |
public static native void nativeI420Scale(ByteBuffer srcY, int strideY, ByteBuffer srcU, |