Chromium Code Reviews| 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, |