.class public final Lcom/google/android/exoplayer2/video/spherical/SceneRenderer; .super Ljava/lang/Object; .source "SourceFile" # instance fields .field public volatile defaultStereoMode:I .field public final frameAvailable:Ljava/util/concurrent/atomic/AtomicBoolean; .field public final frameRotationQueue:Lcom/google/android/exoplayer2/video/spherical/FrameRotationQueue; .field public lastStereoMode:I .field public final projectionQueue:Lcom/google/android/exoplayer2/util/TimedValueQueue; .field public final projectionRenderer:Lcom/google/android/exoplayer2/video/spherical/ProjectionRenderer; .field public final resetRotationAtNextFrame:Ljava/util/concurrent/atomic/AtomicBoolean; .field public final rotationMatrix:[F .field public final sampleTimestampQueue:Lcom/google/android/exoplayer2/util/TimedValueQueue; .field public surfaceTexture:Landroid/graphics/SurfaceTexture; .field public final tempMatrix:[F .field public textureId:I # direct methods .method public static synthetic $r8$lambda$_DXYx5AUskH1JbhOOBU0nDoBYVw(Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;Landroid/graphics/SurfaceTexture;)V .locals 0 .line 0 invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->lambda$init$0(Landroid/graphics/SurfaceTexture;)V return-void .end method .method public constructor ()V .locals 2 .line 59 invoke-direct {p0}, Ljava/lang/Object;->()V .line 60 new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean; invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->()V iput-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->frameAvailable:Ljava/util/concurrent/atomic/AtomicBoolean; .line 61 new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean; const/4 v1, 0x1 invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->(Z)V iput-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->resetRotationAtNextFrame:Ljava/util/concurrent/atomic/AtomicBoolean; .line 62 new-instance v0, Lcom/google/android/exoplayer2/video/spherical/ProjectionRenderer; invoke-direct {v0}, Lcom/google/android/exoplayer2/video/spherical/ProjectionRenderer;->()V iput-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->projectionRenderer:Lcom/google/android/exoplayer2/video/spherical/ProjectionRenderer; .line 63 new-instance v0, Lcom/google/android/exoplayer2/video/spherical/FrameRotationQueue; invoke-direct {v0}, Lcom/google/android/exoplayer2/video/spherical/FrameRotationQueue;->()V iput-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->frameRotationQueue:Lcom/google/android/exoplayer2/video/spherical/FrameRotationQueue; .line 64 new-instance v0, Lcom/google/android/exoplayer2/util/TimedValueQueue; invoke-direct {v0}, Lcom/google/android/exoplayer2/util/TimedValueQueue;->()V iput-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->sampleTimestampQueue:Lcom/google/android/exoplayer2/util/TimedValueQueue; .line 65 new-instance v0, Lcom/google/android/exoplayer2/util/TimedValueQueue; invoke-direct {v0}, Lcom/google/android/exoplayer2/util/TimedValueQueue;->()V iput-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->projectionQueue:Lcom/google/android/exoplayer2/util/TimedValueQueue; const/16 v0, 0x10 new-array v1, v0, [F iput-object v1, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->rotationMatrix:[F new-array v0, v0, [F iput-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->tempMatrix:[F const/4 v0, 0x0 iput v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->defaultStereoMode:I const/4 v0, -0x1 iput v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->lastStereoMode:I return-void .end method # virtual methods .method public drawFrame([FZ)V .locals 7 const/16 v0, 0x4000 .line 109 invoke-static {v0}, Landroid/opengl/GLES20;->glClear(I)V .line 110 invoke-static {}, Lcom/google/android/exoplayer2/util/GlUtil;->checkGlError()V iget-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->frameAvailable:Ljava/util/concurrent/atomic/AtomicBoolean; const/4 v1, 0x1 const/4 v2, 0x0 .line 112 invoke-virtual {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z move-result v0 if-eqz v0, :cond_2 iget-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->surfaceTexture:Landroid/graphics/SurfaceTexture; .line 113 invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v0 check-cast v0, Landroid/graphics/SurfaceTexture; invoke-virtual {v0}, Landroid/graphics/SurfaceTexture;->updateTexImage()V .line 114 invoke-static {}, Lcom/google/android/exoplayer2/util/GlUtil;->checkGlError()V iget-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->resetRotationAtNextFrame:Ljava/util/concurrent/atomic/AtomicBoolean; .line 115 invoke-virtual {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z move-result v0 if-eqz v0, :cond_0 iget-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->rotationMatrix:[F .line 116 invoke-static {v0, v2}, Landroid/opengl/Matrix;->setIdentityM([FI)V :cond_0 iget-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->surfaceTexture:Landroid/graphics/SurfaceTexture; .line 118 invoke-virtual {v0}, Landroid/graphics/SurfaceTexture;->getTimestamp()J move-result-wide v0 iget-object v2, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->sampleTimestampQueue:Lcom/google/android/exoplayer2/util/TimedValueQueue; .line 119 invoke-virtual {v2, v0, v1}, Lcom/google/android/exoplayer2/util/TimedValueQueue;->poll(J)Ljava/lang/Object; move-result-object v2 check-cast v2, Ljava/lang/Long; if-eqz v2, :cond_1 iget-object v3, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->frameRotationQueue:Lcom/google/android/exoplayer2/video/spherical/FrameRotationQueue; iget-object v4, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->rotationMatrix:[F .line 121 invoke-virtual {v2}, Ljava/lang/Long;->longValue()J move-result-wide v5 invoke-virtual {v3, v4, v5, v6}, Lcom/google/android/exoplayer2/video/spherical/FrameRotationQueue;->pollRotationMatrix([FJ)Z :cond_1 iget-object v2, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->projectionQueue:Lcom/google/android/exoplayer2/util/TimedValueQueue; .line 123 invoke-virtual {v2, v0, v1}, Lcom/google/android/exoplayer2/util/TimedValueQueue;->pollFloor(J)Ljava/lang/Object; move-result-object v0 invoke-static {v0}, Lcom/amazonaws/handlers/HandlerChainFactory$$ExternalSyntheticThrowCCEIfNotNull0;->m(Ljava/lang/Object;)V :cond_2 iget-object v1, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->tempMatrix:[F const/4 v2, 0x0 const/4 v4, 0x0 iget-object v5, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->rotationMatrix:[F const/4 v6, 0x0 move-object v3, p1 .line 128 invoke-static/range {v1 .. v6}, Landroid/opengl/Matrix;->multiplyMM([FI[FI[FI)V iget-object p1, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->projectionRenderer:Lcom/google/android/exoplayer2/video/spherical/ProjectionRenderer; iget v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->textureId:I iget-object v1, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->tempMatrix:[F .line 129 invoke-virtual {p1, v0, v1, p2}, Lcom/google/android/exoplayer2/video/spherical/ProjectionRenderer;->draw(I[FZ)V return-void .end method .method public init()Landroid/graphics/SurfaceTexture; .locals 2 const/high16 v0, 0x3f000000 # 0.5f const/high16 v1, 0x3f800000 # 1.0f .line 87 invoke-static {v0, v0, v0, v1}, Landroid/opengl/GLES20;->glClearColor(FFFF)V .line 88 invoke-static {}, Lcom/google/android/exoplayer2/util/GlUtil;->checkGlError()V iget-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->projectionRenderer:Lcom/google/android/exoplayer2/video/spherical/ProjectionRenderer; .line 90 invoke-virtual {v0}, Lcom/google/android/exoplayer2/video/spherical/ProjectionRenderer;->init()V .line 91 invoke-static {}, Lcom/google/android/exoplayer2/util/GlUtil;->checkGlError()V .line 93 invoke-static {}, Lcom/google/android/exoplayer2/util/GlUtil;->createExternalTexture()I move-result v0 iput v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->textureId:I .line 94 new-instance v0, Landroid/graphics/SurfaceTexture; iget v1, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->textureId:I invoke-direct {v0, v1}, Landroid/graphics/SurfaceTexture;->(I)V iput-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->surfaceTexture:Landroid/graphics/SurfaceTexture; .line 95 new-instance v1, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer$$ExternalSyntheticLambda0; invoke-direct {v1, p0}, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer$$ExternalSyntheticLambda0;->(Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;)V invoke-virtual {v0, v1}, Landroid/graphics/SurfaceTexture;->setOnFrameAvailableListener(Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;)V iget-object v0, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->surfaceTexture:Landroid/graphics/SurfaceTexture; return-object v0 .end method .method public final synthetic lambda$init$0(Landroid/graphics/SurfaceTexture;)V .locals 1 iget-object p1, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->frameAvailable:Ljava/util/concurrent/atomic/AtomicBoolean; const/4 v0, 0x1 .line 95 invoke-virtual {p1, v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V return-void .end method .method public setDefaultStereoMode(I)V .locals 0 iput p1, p0, Lcom/google/android/exoplayer2/video/spherical/SceneRenderer;->defaultStereoMode:I return-void .end method