add missing null pointer check in MediaCodec.release()

When the MediaCodec failed to initialize, the native_codec pointer can
be null and releasing it would cause a SEGFAULT in native code.
This commit is contained in:
Julian Winkler
2024-10-22 18:05:09 +02:00
parent 5eb750b253
commit bcdf3eb3ce

View File

@@ -18,7 +18,6 @@ public class MediaCodec {
private long native_codec; private long native_codec;
private boolean outputFormatSet = false; private boolean outputFormatSet = false;
private MediaFormat mediaFormat; private MediaFormat mediaFormat;
private boolean isReleased = false;
private Queue<Integer> freeOutputBuffers; private Queue<Integer> freeOutputBuffers;
private Queue<Integer> queuedInputBuffers; private Queue<Integer> queuedInputBuffers;
@@ -148,8 +147,9 @@ public class MediaCodec {
public void release() { public void release() {
System.out.println("MediaCodec.release(): codecName=" + codecName); System.out.println("MediaCodec.release(): codecName=" + codecName);
native_release(native_codec); if (native_codec != 0)
isReleased = true; native_release(native_codec);
native_codec = 0;
} }
@Override @Override
@@ -158,9 +158,7 @@ public class MediaCodec {
try { try {
super.finalize(); super.finalize();
} finally { } finally {
if (!isReleased) { release();
release();
}
} }
} }