2021-06-27 20:44:35 +00:00
package org.webrtc ;
import android.view.SurfaceHolder ;
2021-11-08 18:25:28 +00:00
import h0.c.k0 ;
2021-06-27 20:44:35 +00:00
import java.util.concurrent.CountDownLatch ;
import org.webrtc.EglBase ;
import org.webrtc.RendererCommon ;
2022-03-02 20:59:20 +00:00
/* loaded from: classes3.dex */
2021-06-27 20:44:35 +00:00
public class SurfaceEglRenderer extends EglRenderer implements SurfaceHolder . Callback {
private static final String TAG = " SurfaceEglRenderer " ;
private int frameRotation ;
private boolean isFirstFrameRendered ;
private boolean isRenderingPaused ;
private final Object layoutLock = new Object ( ) ;
private RendererCommon . RendererEvents rendererEvents ;
private int rotatedFrameHeight ;
private int rotatedFrameWidth ;
public SurfaceEglRenderer ( String str ) {
super ( str ) ;
}
private void logD ( String str ) {
2021-08-09 22:50:01 +00:00
Logging . d ( TAG , this . name + " : " + str ) ;
2021-06-27 20:44:35 +00:00
}
private void updateFrameDimensionsAndReportEvents ( VideoFrame videoFrame ) {
synchronized ( this . layoutLock ) {
if ( ! this . isRenderingPaused ) {
if ( ! this . isFirstFrameRendered ) {
this . isFirstFrameRendered = true ;
logD ( " Reporting first rendered frame. " ) ;
RendererCommon . RendererEvents rendererEvents = this . rendererEvents ;
if ( rendererEvents ! = null ) {
rendererEvents . onFirstFrameRendered ( ) ;
}
}
if ( ! ( this . rotatedFrameWidth = = videoFrame . getRotatedWidth ( ) & & this . rotatedFrameHeight = = videoFrame . getRotatedHeight ( ) & & this . frameRotation = = videoFrame . getRotation ( ) ) ) {
logD ( " Reporting frame resolution changed to " + videoFrame . getBuffer ( ) . getWidth ( ) + " x " + videoFrame . getBuffer ( ) . getHeight ( ) + " with rotation " + videoFrame . getRotation ( ) ) ;
RendererCommon . RendererEvents rendererEvents2 = this . rendererEvents ;
if ( rendererEvents2 ! = null ) {
rendererEvents2 . onFrameResolutionChanged ( videoFrame . getBuffer ( ) . getWidth ( ) , videoFrame . getBuffer ( ) . getHeight ( ) , videoFrame . getRotation ( ) ) ;
}
this . rotatedFrameWidth = videoFrame . getRotatedWidth ( ) ;
this . rotatedFrameHeight = videoFrame . getRotatedHeight ( ) ;
this . frameRotation = videoFrame . getRotation ( ) ;
}
}
}
}
@Override // org.webrtc.EglRenderer
public void disableFpsReduction ( ) {
synchronized ( this . layoutLock ) {
this . isRenderingPaused = false ;
}
super . disableFpsReduction ( ) ;
}
public void init ( EglBase . Context context , RendererCommon . RendererEvents rendererEvents , int [ ] iArr , RendererCommon . GlDrawer glDrawer ) {
ThreadUtils . checkIsOnMainThread ( ) ;
this . rendererEvents = rendererEvents ;
synchronized ( this . layoutLock ) {
this . isFirstFrameRendered = false ;
this . rotatedFrameWidth = 0 ;
this . rotatedFrameHeight = 0 ;
this . frameRotation = 0 ;
}
super . init ( context , iArr , glDrawer ) ;
}
@Override // org.webrtc.EglRenderer
public void init ( EglBase . Context context , int [ ] iArr , RendererCommon . GlDrawer glDrawer ) {
init ( context , ( RendererCommon . RendererEvents ) null , iArr , glDrawer ) ;
}
@Override // org.webrtc.EglRenderer, org.webrtc.VideoSink
public void onFrame ( VideoFrame videoFrame ) {
updateFrameDimensionsAndReportEvents ( videoFrame ) ;
super . onFrame ( videoFrame ) ;
}
@Override // org.webrtc.EglRenderer
public void pauseVideo ( ) {
synchronized ( this . layoutLock ) {
this . isRenderingPaused = true ;
}
super . pauseVideo ( ) ;
}
@Override // org.webrtc.EglRenderer
public void setFpsReduction ( float f ) {
synchronized ( this . layoutLock ) {
this . isRenderingPaused = f = = 0 . 0f ;
}
super . setFpsReduction ( f ) ;
}
@Override // android.view.SurfaceHolder.Callback
public void surfaceChanged ( SurfaceHolder surfaceHolder , int i , int i2 , int i3 ) {
ThreadUtils . checkIsOnMainThread ( ) ;
logD ( " surfaceChanged: format: " + i + " size: " + i2 + " x " + i3 ) ;
}
@Override // android.view.SurfaceHolder.Callback
public void surfaceCreated ( SurfaceHolder surfaceHolder ) {
ThreadUtils . checkIsOnMainThread ( ) ;
createEglSurface ( surfaceHolder . getSurface ( ) ) ;
}
@Override // android.view.SurfaceHolder.Callback
public void surfaceDestroyed ( SurfaceHolder surfaceHolder ) {
ThreadUtils . checkIsOnMainThread ( ) ;
CountDownLatch countDownLatch = new CountDownLatch ( 1 ) ;
releaseEglSurface ( new k0 ( countDownLatch ) ) ;
ThreadUtils . awaitUninterruptibly ( countDownLatch ) ;
}
}