Rabbit-R1/switch port/java/sources/androidx/media3/exoplayer/video/PlaceholderSurface.java
2024-05-21 17:08:36 -04:00

176 lines
6.2 KiB
Java

package androidx.media3.exoplayer.video;
import android.content.Context;
import android.graphics.SurfaceTexture;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
import android.view.Surface;
import androidx.media3.common.util.Assertions;
import androidx.media3.common.util.EGLSurfaceTexture;
import androidx.media3.common.util.GlUtil;
import androidx.media3.common.util.Log;
/* loaded from: classes2.dex */
public final class PlaceholderSurface extends Surface {
private static final String TAG = "PlaceholderSurface";
private static int secureMode;
private static boolean secureModeInitialized;
public final boolean secure;
private final PlaceholderSurfaceThread thread;
private boolean threadReleased;
public static synchronized boolean isSecureSupported(Context context) {
boolean z;
synchronized (PlaceholderSurface.class) {
if (!secureModeInitialized) {
secureMode = getSecureMode(context);
secureModeInitialized = true;
}
z = secureMode != 0;
}
return z;
}
public static PlaceholderSurface newInstanceV17(Context context, boolean z) {
Assertions.checkState(!z || isSecureSupported(context));
return new PlaceholderSurfaceThread().init(z ? secureMode : 0);
}
private PlaceholderSurface(PlaceholderSurfaceThread placeholderSurfaceThread, SurfaceTexture surfaceTexture, boolean z) {
super(surfaceTexture);
this.thread = placeholderSurfaceThread;
this.secure = z;
}
@Override // android.view.Surface
public void release() {
super.release();
synchronized (this.thread) {
if (!this.threadReleased) {
this.thread.release();
this.threadReleased = true;
}
}
}
private static int getSecureMode(Context context) {
if (GlUtil.isProtectedContentExtensionSupported(context)) {
return GlUtil.isSurfacelessContextExtensionSupported() ? 1 : 2;
}
return 0;
}
/* JADX INFO: Access modifiers changed from: private */
/* loaded from: classes2.dex */
public static class PlaceholderSurfaceThread extends HandlerThread implements Handler.Callback {
private static final int MSG_INIT = 1;
private static final int MSG_RELEASE = 2;
private EGLSurfaceTexture eglSurfaceTexture;
private Handler handler;
private Error initError;
private RuntimeException initException;
private PlaceholderSurface surface;
public PlaceholderSurfaceThread() {
super("ExoPlayer:PlaceholderSurface");
}
public PlaceholderSurface init(int i) {
boolean z;
start();
this.handler = new Handler(getLooper(), this);
this.eglSurfaceTexture = new EGLSurfaceTexture(this.handler);
synchronized (this) {
z = false;
this.handler.obtainMessage(1, i, 0).sendToTarget();
while (this.surface == null && this.initException == null && this.initError == null) {
try {
wait();
} catch (InterruptedException unused) {
z = true;
}
}
}
if (z) {
Thread.currentThread().interrupt();
}
RuntimeException runtimeException = this.initException;
if (runtimeException != null) {
throw runtimeException;
}
Error error = this.initError;
if (error != null) {
throw error;
}
return (PlaceholderSurface) Assertions.checkNotNull(this.surface);
}
public void release() {
Assertions.checkNotNull(this.handler);
this.handler.sendEmptyMessage(2);
}
@Override // android.os.Handler.Callback
public boolean handleMessage(Message message) {
int i = message.what;
try {
if (i != 1) {
if (i != 2) {
return true;
}
try {
releaseInternal();
} finally {
try {
return true;
} finally {
}
}
return true;
}
try {
initInternal(message.arg1);
synchronized (this) {
notify();
}
} catch (GlUtil.GlException e) {
Log.e(PlaceholderSurface.TAG, "Failed to initialize placeholder surface", e);
this.initException = new IllegalStateException(e);
synchronized (this) {
notify();
}
} catch (Error e2) {
Log.e(PlaceholderSurface.TAG, "Failed to initialize placeholder surface", e2);
this.initError = e2;
synchronized (this) {
notify();
}
} catch (RuntimeException e3) {
Log.e(PlaceholderSurface.TAG, "Failed to initialize placeholder surface", e3);
this.initException = e3;
synchronized (this) {
notify();
}
}
return true;
} catch (Throwable th) {
synchronized (this) {
notify();
throw th;
}
}
}
private void initInternal(int i) throws GlUtil.GlException {
Assertions.checkNotNull(this.eglSurfaceTexture);
this.eglSurfaceTexture.init(i);
this.surface = new PlaceholderSurface(this, this.eglSurfaceTexture.getSurfaceTexture(), i != 0);
}
private void releaseInternal() {
Assertions.checkNotNull(this.eglSurfaceTexture);
this.eglSurfaceTexture.release();
}
}
}