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 17676c0d82a4601f4279163743f692d42e434eb8..8e27967023b2db2799fecac5206ef97d328e5307 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; |
@@ -134,34 +135,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 { |
magjed_webrtc
2017/04/20 13:53:30
Why was this change necessary?
oprypin_webrtc
2017/04/20 15:46:15
I really don't know. It comes from here: https://c
magjed_webrtc
2017/04/21 08:23:09
I don't like this change, so if it works without,
oprypin_webrtc
2017/04/24 10:08:06
Works without. Reverted.
|
+ 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, |