| 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,
|
|
|