RCRTCVideoView.smali
.class public Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;
.super Landroid/view/SurfaceView;
.source "RCRTCVideoView.java"
# interfaces
.implements Landroid/view/SurfaceHolder$Callback;
.implements Lcn/rongcloud/rtc/core/VideoSink;
.implements Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$OnSizeChangedListener;,
Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$Size;
}
.end annotation
# static fields
.field private static final TAG:Ljava/lang/String; = "SurfaceViewRenderer"
# instance fields
.field private volatile allowRenderer:Ljava/util/concurrent/atomic/AtomicBoolean;
.field private final eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
.field private enableFixedSize:Z
.field private frameRotation:I
.field private isFirstFrameRendered:Z
.field private isLocal:Z
.field private final layoutLock:Ljava/lang/Object;
.field private needCallback:Z
.field private onSizeChangedListener:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$OnSizeChangedListener;
.field private rendererEvents:Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;
.field private final resourceName:Ljava/lang/String;
.field public rotatedFrameHeight:I
.field public rotatedFrameWidth:I
.field private surfaceHeight:I
.field private surfaceWidth:I
.field private final threshold:D
.field private userId:Ljava/lang/String;
.field private final videoLayoutMeasure:Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;
# direct methods
.method public constructor <init>(Landroid/content/Context;)V
.registers 5
.line 1
invoke-direct {p0, p1}, Landroid/view/SurfaceView;-><init>(Landroid/content/Context;)V
.line 2
new-instance p1, Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;
invoke-direct {p1}, Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;-><init>()V
iput-object p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->videoLayoutMeasure:Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;
const-wide/high16 v0, 0x4020000000000000L # 8.0
.line 3
iput-wide v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->threshold:D
.line 4
new-instance p1, Ljava/lang/Object;
invoke-direct {p1}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->layoutLock:Ljava/lang/Object;
const/4 p1, 0x1
.line 5
iput-boolean p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->enableFixedSize:Z
.line 6
iput-boolean p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->needCallback:Z
.line 7
new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-direct {v0, p1}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>(Z)V
iput-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->allowRenderer:Ljava/util/concurrent/atomic/AtomicBoolean;
const/4 v0, 0x0
.line 8
iput-boolean v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->isLocal:Z
.line 9
sget-object v1, Lcn/rongcloud/rtc/utils/ReportUtil$TAG;->INITVIDEOVIEW:Lcn/rongcloud/rtc/utils/ReportUtil$TAG;
new-array p1, p1, [Ljava/lang/Object;
invoke-virtual {p0}, Ljava/lang/Object;->hashCode()I
move-result v2
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
aput-object v2, p1, v0
const-string v0, "identity"
invoke-static {v1, v0, p1}, Lcn/rongcloud/rtc/utils/ReportUtil;->appStatus(Lcn/rongcloud/rtc/utils/ReportUtil$TAG;Ljava/lang/String;[Ljava/lang/Object;)V
.line 10
invoke-direct {p0}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->getResourceName()Ljava/lang/String;
move-result-object p1
iput-object p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->resourceName:Ljava/lang/String;
.line 11
new-instance p1, Lcn/rongcloud/rtc/core/EglRenderer;
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->resourceName:Ljava/lang/String;
invoke-direct {p1, v0}, Lcn/rongcloud/rtc/core/EglRenderer;-><init>(Ljava/lang/String;)V
iput-object p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
.line 12
invoke-virtual {p0}, Landroid/view/SurfaceView;->getHolder()Landroid/view/SurfaceHolder;
move-result-object p1
invoke-interface {p1, p0}, Landroid/view/SurfaceHolder;->addCallback(Landroid/view/SurfaceHolder$Callback;)V
return-void
.end method
.method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
.registers 5
.line 13
invoke-direct {p0, p1, p2}, Landroid/view/SurfaceView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
.line 14
new-instance p1, Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;
invoke-direct {p1}, Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;-><init>()V
iput-object p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->videoLayoutMeasure:Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;
const-wide/high16 p1, 0x4020000000000000L # 8.0
.line 15
iput-wide p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->threshold:D
.line 16
new-instance p1, Ljava/lang/Object;
invoke-direct {p1}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->layoutLock:Ljava/lang/Object;
const/4 p1, 0x1
.line 17
iput-boolean p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->enableFixedSize:Z
.line 18
iput-boolean p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->needCallback:Z
.line 19
new-instance p2, Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-direct {p2, p1}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>(Z)V
iput-object p2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->allowRenderer:Ljava/util/concurrent/atomic/AtomicBoolean;
const/4 p2, 0x0
.line 20
iput-boolean p2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->isLocal:Z
.line 21
sget-object v0, Lcn/rongcloud/rtc/utils/ReportUtil$TAG;->INITVIDEOVIEW:Lcn/rongcloud/rtc/utils/ReportUtil$TAG;
new-array p1, p1, [Ljava/lang/Object;
invoke-virtual {p0}, Ljava/lang/Object;->hashCode()I
move-result v1
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v1
aput-object v1, p1, p2
const-string p2, "identity"
invoke-static {v0, p2, p1}, Lcn/rongcloud/rtc/utils/ReportUtil;->appStatus(Lcn/rongcloud/rtc/utils/ReportUtil$TAG;Ljava/lang/String;[Ljava/lang/Object;)V
.line 22
invoke-direct {p0}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->getResourceName()Ljava/lang/String;
move-result-object p1
iput-object p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->resourceName:Ljava/lang/String;
.line 23
new-instance p1, Lcn/rongcloud/rtc/core/EglRenderer;
iget-object p2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->resourceName:Ljava/lang/String;
invoke-direct {p1, p2}, Lcn/rongcloud/rtc/core/EglRenderer;-><init>(Ljava/lang/String;)V
iput-object p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
.line 24
invoke-virtual {p0}, Landroid/view/SurfaceView;->getHolder()Landroid/view/SurfaceHolder;
move-result-object p1
invoke-interface {p1, p0}, Landroid/view/SurfaceHolder;->addCallback(Landroid/view/SurfaceHolder$Callback;)V
return-void
.end method
.method static synthetic access$000(Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;)Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;
.registers 1
.line 1
iget-object p0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rendererEvents:Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;
return-object p0
.end method
.method static synthetic access$100(Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;)V
.registers 1
.line 1
invoke-direct {p0}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->updateSurfaceSize()V
return-void
.end method
.method static synthetic access$200(Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;)Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$OnSizeChangedListener;
.registers 1
.line 1
iget-object p0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->onSizeChangedListener:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$OnSizeChangedListener;
return-object p0
.end method
.method private getResourceName()Ljava/lang/String;
.registers 4
.line 1
:try_start_0
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p0}, Landroid/view/SurfaceView;->getResources()Landroid/content/res/Resources;
move-result-object v1
invoke-virtual {p0}, Landroid/view/SurfaceView;->getId()I
move-result v2
invoke-virtual {v1, v2}, Landroid/content/res/Resources;->getResourceEntryName(I)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v1, ": "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
:try_end_1d
.catch Landroid/content/res/Resources$NotFoundException; {:try_start_0 .. :try_end_1d} :catch_1e
return-object v0
:catch_1e
const-string v0, ""
return-object v0
.end method
.method private logD(Ljava/lang/String;)V
.registers 4
.line 1
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
iget-object v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->resourceName:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
const-string v0, "SurfaceViewRenderer"
invoke-static {v0, p1}, Lcn/rongcloud/rtc/core/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
return-void
.end method
.method private postOrRun(Ljava/lang/Runnable;)V
.registers 4
.line 1
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v0
invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper;
move-result-object v1
invoke-virtual {v1}, Landroid/os/Looper;->getThread()Ljava/lang/Thread;
move-result-object v1
if-ne v0, v1, :cond_12
.line 2
invoke-interface {p1}, Ljava/lang/Runnable;->run()V
goto :goto_15
.line 3
:cond_12
invoke-virtual {p0, p1}, Landroid/view/SurfaceView;->post(Ljava/lang/Runnable;)Z
:goto_15
return-void
.end method
.method private updateFrameDimensionsAndReportEvents(Lcn/rongcloud/rtc/core/VideoFrame;)V
.registers 9
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->layoutLock:Ljava/lang/Object;
monitor-enter v0
.line 2
:try_start_3
iget-boolean v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->isFirstFrameRendered:Z
if-nez v1, :cond_2b
const/4 v1, 0x1
.line 3
iput-boolean v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->isFirstFrameRendered:Z
const-string v1, "SurfaceViewRenderer"
.line 4
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "Reporting first rendered frame for user:: "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v3, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->userId:Ljava/lang/String;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lcn/rongcloud/rtc/utils/FinLog;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 5
iget-object v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rendererEvents:Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;
if-eqz v1, :cond_2b
.line 6
iget-object v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rendererEvents:Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;
invoke-interface {v1}, Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;->onFirstFrameRendered()V
.line 7
:cond_2b
iget v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameWidth:I
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getRotatedWidth()I
move-result v2
if-ne v1, v2, :cond_3b
iget v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameHeight:I
.line 8
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getRotatedHeight()I
move-result v2
if-eq v1, v2, :cond_fc
:cond_3b
const-string v1, "SurfaceViewRenderer"
.line 9
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "Reporting frame resolution changed to "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 10
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getBuffer()Lcn/rongcloud/rtc/core/VideoFrame$Buffer;
move-result-object v3
invoke-interface {v3}, Lcn/rongcloud/rtc/core/VideoFrame$Buffer;->getWidth()I
move-result v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string/jumbo v3, "x"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 11
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getBuffer()Lcn/rongcloud/rtc/core/VideoFrame$Buffer;
move-result-object v3
invoke-interface {v3}, Lcn/rongcloud/rtc/core/VideoFrame$Buffer;->getHeight()I
move-result v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v3, " with rotation "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 12
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getRotation()I
move-result v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
.line 13
invoke-static {v1, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 14
iget-object v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rendererEvents:Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;
if-eqz v1, :cond_93
.line 15
iget-object v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rendererEvents:Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;
.line 16
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getBuffer()Lcn/rongcloud/rtc/core/VideoFrame$Buffer;
move-result-object v2
invoke-interface {v2}, Lcn/rongcloud/rtc/core/VideoFrame$Buffer;->getWidth()I
move-result v2
.line 17
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getBuffer()Lcn/rongcloud/rtc/core/VideoFrame$Buffer;
move-result-object v3
invoke-interface {v3}, Lcn/rongcloud/rtc/core/VideoFrame$Buffer;->getHeight()I
move-result v3
.line 18
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getRotation()I
move-result v4
.line 19
invoke-interface {v1, v2, v3, v4}, Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;->onFrameResolutionChanged(III)V
.line 20
:cond_93
iget v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameWidth:I
if-eqz v1, :cond_e2
iget v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameHeight:I
if-eqz v1, :cond_e2
iget-object v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->onSizeChangedListener:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$OnSizeChangedListener;
:try_end_9d
.catchall {:try_start_3 .. :try_end_9d} :catchall_fe
if-eqz v1, :cond_e2
.line 21
:try_start_9f
iget v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameWidth:I
int-to-double v1, v1
iget v3, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameHeight:I
int-to-double v3, v3
.line 22
invoke-static {v1, v2, v3, v4}, Lcn/rongcloud/rtc/utils/RongRTCUtils;->div(DD)D
move-result-wide v1
.line 23
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getRotatedWidth()I
move-result v3
int-to-double v3, v3
.line 24
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getRotatedHeight()I
move-result v5
int-to-double v5, v5
.line 25
invoke-static {v3, v4, v5, v6}, Lcn/rongcloud/rtc/utils/RongRTCUtils;->div(DD)D
move-result-wide v3
cmpl-double v5, v1, v3
if-eqz v5, :cond_e2
cmpl-double v5, v1, v3
if-lez v5, :cond_c1
sub-double/2addr v1, v3
goto :goto_c3
:cond_c1
sub-double v1, v3, v1
.line 26
:goto_c3
invoke-static {v1, v2}, Lcn/rongcloud/rtc/utils/RongRTCUtils;->formatDouble4(D)D
.line 27
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getRotatedHeight()I
move-result v1
int-to-double v1, v1
const-wide/high16 v3, 0x4020000000000000L # 8.0
invoke-static {v3, v4, v1, v2}, Lcn/rongcloud/rtc/utils/RongRTCUtils;->div(DD)D
move-result-wide v1
.line 28
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getRotatedWidth()I
move-result v5
int-to-double v5, v5
invoke-static {v3, v4, v5, v6}, Lcn/rongcloud/rtc/utils/RongRTCUtils;->div(DD)D
move-result-wide v3
.line 29
invoke-static {v3, v4, v1, v2}, Ljava/lang/Math;->max(DD)D
:try_end_dd
.catch Ljava/lang/Exception; {:try_start_9f .. :try_end_dd} :catch_de
.catchall {:try_start_9f .. :try_end_dd} :catchall_fe
goto :goto_e2
:catch_de
move-exception v1
.line 30
:try_start_df
invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
.line 31
:cond_e2
:goto_e2
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getRotatedWidth()I
move-result v1
iput v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameWidth:I
.line 32
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getRotatedHeight()I
move-result v1
iput v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameHeight:I
.line 33
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoFrame;->getRotation()I
move-result v1
iput v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->frameRotation:I
.line 34
new-instance v1, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$4;
invoke-direct {v1, p0, p1}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$4;-><init>(Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;Lcn/rongcloud/rtc/core/VideoFrame;)V
invoke-virtual {p0, v1}, Landroid/view/SurfaceView;->post(Ljava/lang/Runnable;)Z
.line 35
:cond_fc
monitor-exit v0
return-void
:catchall_fe
move-exception p1
monitor-exit v0
:try_end_100
.catchall {:try_start_df .. :try_end_100} :catchall_fe
throw p1
.end method
.method private updateSurfaceSize()V
.registers 8
.line 1
invoke-static {}, Lcn/rongcloud/rtc/core/ThreadUtils;->checkIsOnMainThread()V
.line 2
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->layoutLock:Ljava/lang/Object;
monitor-enter v0
.line 3
:try_start_6
iget-boolean v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->enableFixedSize:Z
if-eqz v1, :cond_cd
iget v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameWidth:I
if-eqz v1, :cond_cd
iget v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameHeight:I
if-eqz v1, :cond_cd
.line 4
invoke-virtual {p0}, Landroid/view/SurfaceView;->getWidth()I
move-result v1
if-eqz v1, :cond_cd
.line 5
invoke-virtual {p0}, Landroid/view/SurfaceView;->getHeight()I
move-result v1
if-eqz v1, :cond_cd
.line 6
invoke-virtual {p0}, Landroid/view/SurfaceView;->getWidth()I
move-result v1
int-to-float v1, v1
invoke-virtual {p0}, Landroid/view/SurfaceView;->getHeight()I
move-result v2
int-to-float v2, v2
div-float/2addr v1, v2
.line 7
iget v2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameWidth:I
int-to-float v2, v2
iget v3, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameHeight:I
int-to-float v3, v3
div-float/2addr v2, v3
cmpl-float v2, v2, v1
if-lez v2, :cond_3d
.line 8
iget v2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameHeight:I
int-to-float v2, v2
mul-float v2, v2, v1
float-to-int v1, v2
.line 9
iget v2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameHeight:I
goto :goto_47
.line 10
:cond_3d
iget v2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameWidth:I
.line 11
iget v3, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameWidth:I
int-to-float v3, v3
div-float/2addr v3, v1
float-to-int v1, v3
move v6, v2
move v2, v1
move v1, v6
.line 12
:goto_47
invoke-virtual {p0}, Landroid/view/SurfaceView;->getWidth()I
move-result v3
invoke-static {v3, v1}, Ljava/lang/Math;->min(II)I
move-result v1
.line 13
invoke-virtual {p0}, Landroid/view/SurfaceView;->getHeight()I
move-result v3
invoke-static {v3, v2}, Ljava/lang/Math;->min(II)I
move-result v2
const-string v3, "SurfaceViewRenderer"
.line 14
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
const-string v5, "updateSurfaceSize. Layout size: "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 15
invoke-virtual {p0}, Landroid/view/SurfaceView;->getWidth()I
move-result v5
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string/jumbo v5, "x"
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 16
invoke-virtual {p0}, Landroid/view/SurfaceView;->getHeight()I
move-result v5
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v5, ", frame size: "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v5, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameWidth:I
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string/jumbo v5, "x"
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v5, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameHeight:I
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v5, ", requested surface size: "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string/jumbo v5, "x"
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v5, ", old surface size: "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v5, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->surfaceWidth:I
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string/jumbo v5, "x"
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v5, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->surfaceHeight:I
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
.line 17
invoke-static {v3, v4}, Lcn/rongcloud/rtc/utils/FinLog;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 18
iget v3, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->surfaceWidth:I
if-ne v1, v3, :cond_c1
iget v3, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->surfaceHeight:I
if-eq v2, v3, :cond_d9
.line 19
:cond_c1
iput v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->surfaceWidth:I
.line 20
iput v2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->surfaceHeight:I
.line 21
invoke-virtual {p0}, Landroid/view/SurfaceView;->getHolder()Landroid/view/SurfaceHolder;
move-result-object v3
invoke-interface {v3, v1, v2}, Landroid/view/SurfaceHolder;->setFixedSize(II)V
goto :goto_d9
:cond_cd
const/4 v1, 0x0
.line 22
iput v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->surfaceHeight:I
iput v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->surfaceWidth:I
.line 23
invoke-virtual {p0}, Landroid/view/SurfaceView;->getHolder()Landroid/view/SurfaceHolder;
move-result-object v1
invoke-interface {v1}, Landroid/view/SurfaceHolder;->setSizeFromLayout()V
.line 24
:cond_d9
:goto_d9
monitor-exit v0
return-void
:catchall_db
move-exception v1
monitor-exit v0
:try_end_dd
.catchall {:try_start_6 .. :try_end_dd} :catchall_db
throw v1
.end method
# virtual methods
.method public addFrameListener(Lcn/rongcloud/rtc/core/EglRenderer$FrameListener;F)V
.registers 4
.line 2
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
invoke-virtual {v0, p1, p2}, Lcn/rongcloud/rtc/core/EglRenderer;->addFrameListener(Lcn/rongcloud/rtc/core/EglRenderer$FrameListener;F)V
return-void
.end method
.method public addFrameListener(Lcn/rongcloud/rtc/core/EglRenderer$FrameListener;FLcn/rongcloud/rtc/core/RendererCommon$GlDrawer;)V
.registers 5
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
invoke-virtual {v0, p1, p2, p3}, Lcn/rongcloud/rtc/core/EglRenderer;->addFrameListener(Lcn/rongcloud/rtc/core/EglRenderer$FrameListener;FLcn/rongcloud/rtc/core/RendererCommon$GlDrawer;)V
return-void
.end method
.method public clearScreen()V
.registers 2
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
invoke-virtual {v0}, Lcn/rongcloud/rtc/core/EglRenderer;->clearImage()V
return-void
.end method
.method public disableFpsReduction()V
.registers 2
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
invoke-virtual {v0}, Lcn/rongcloud/rtc/core/EglRenderer;->disableFpsReduction()V
return-void
.end method
.method public getScalingType()Lcn/rongcloud/rtc/core/RendererCommon$ScalingType;
.registers 2
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->videoLayoutMeasure:Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;
invoke-virtual {v0}, Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;->getActualScalingType()Lcn/rongcloud/rtc/core/RendererCommon$ScalingType;
move-result-object v0
return-object v0
.end method
.method public getSize()Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$Size;
.registers 4
.line 1
new-instance v0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$Size;
iget v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameWidth:I
iget v2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameHeight:I
invoke-direct {v0, p0, v1, v2}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$Size;-><init>(Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;II)V
return-object v0
.end method
.method public init(Lcn/rongcloud/rtc/core/EglBase$Context;Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;)V
.registers 5
.line 3
sget-object v0, Lcn/rongcloud/rtc/core/EglBase;->CONFIG_PLAIN:[I
new-instance v1, Lcn/rongcloud/rtc/core/GlRectDrawer;
invoke-direct {v1}, Lcn/rongcloud/rtc/core/GlRectDrawer;-><init>()V
invoke-virtual {p0, p1, p2, v0, v1}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->init(Lcn/rongcloud/rtc/core/EglBase$Context;Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;[ILcn/rongcloud/rtc/core/RendererCommon$GlDrawer;)V
return-void
.end method
.method public init(Lcn/rongcloud/rtc/core/EglBase$Context;Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;Ljava/lang/String;)V
.registers 5
.line 1
iput-object p3, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->userId:Ljava/lang/String;
.line 2
sget-object p3, Lcn/rongcloud/rtc/core/EglBase;->CONFIG_PLAIN:[I
new-instance v0, Lcn/rongcloud/rtc/core/GlRectDrawer;
invoke-direct {v0}, Lcn/rongcloud/rtc/core/GlRectDrawer;-><init>()V
invoke-virtual {p0, p1, p2, p3, v0}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->init(Lcn/rongcloud/rtc/core/EglBase$Context;Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;[ILcn/rongcloud/rtc/core/RendererCommon$GlDrawer;)V
return-void
.end method
.method public init(Lcn/rongcloud/rtc/core/EglBase$Context;Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;[ILcn/rongcloud/rtc/core/RendererCommon$GlDrawer;)V
.registers 6
.line 4
invoke-static {}, Lcn/rongcloud/rtc/core/ThreadUtils;->checkIsOnMainThread()V
.line 5
iput-object p2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rendererEvents:Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;
.line 6
iget-object p2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->layoutLock:Ljava/lang/Object;
monitor-enter p2
const/4 v0, 0x0
.line 7
:try_start_9
iput v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameWidth:I
.line 8
iput v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameHeight:I
.line 9
iput v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->frameRotation:I
.line 10
monitor-exit p2
:try_end_10
.catchall {:try_start_9 .. :try_end_10} :catchall_25
.line 11
iget-object p2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
new-instance v0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$1;
invoke-direct {v0, p0}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$1;-><init>(Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;)V
invoke-virtual {p2, v0}, Lcn/rongcloud/rtc/core/EglRenderer;->setCreateEglCallback(Lcn/rongcloud/rtc/core/CreateEglCallback;)V
.line 12
:try_start_1a
iget-object p2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
invoke-virtual {p2, p1, p3, p4}, Lcn/rongcloud/rtc/core/EglRenderer;->init(Lcn/rongcloud/rtc/core/EglBase$Context;[ILcn/rongcloud/rtc/core/RendererCommon$GlDrawer;)V
:try_end_1f
.catch Ljava/lang/Exception; {:try_start_1a .. :try_end_1f} :catch_20
goto :goto_24
:catch_20
move-exception p1
.line 13
invoke-virtual {p1}, Ljava/lang/Exception;->printStackTrace()V
:goto_24
return-void
:catchall_25
move-exception p1
.line 14
:try_start_26
monitor-exit p2
:try_end_27
.catchall {:try_start_26 .. :try_end_27} :catchall_25
throw p1
.end method
.method public onCreateEglFailed(Ljava/lang/Exception;)V
.registers 3
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rendererEvents:Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;
if-eqz v0, :cond_7
.line 2
invoke-interface {v0, p1}, Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;->onCreateEglFailed(Ljava/lang/Exception;)V
:cond_7
return-void
.end method
.method public onFirstFrameRendered()V
.registers 2
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rendererEvents:Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;
if-eqz v0, :cond_7
.line 2
invoke-interface {v0}, Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;->onFirstFrameRendered()V
:cond_7
return-void
.end method
.method public onFrame(Lcn/rongcloud/rtc/core/VideoFrame;)V
.registers 3
.line 1
invoke-direct {p0, p1}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->updateFrameDimensionsAndReportEvents(Lcn/rongcloud/rtc/core/VideoFrame;)V
.line 2
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
invoke-virtual {v0, p1}, Lcn/rongcloud/rtc/core/EglRenderer;->onFrame(Lcn/rongcloud/rtc/core/VideoFrame;)V
return-void
.end method
.method public onFrameResolutionChanged(III)V
.registers 6
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rendererEvents:Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;
if-eqz v0, :cond_7
.line 2
invoke-interface {v0, p1, p2, p3}, Lcn/rongcloud/rtc/core/RendererCommon$RendererEvents;->onFrameResolutionChanged(III)V
:cond_7
const/16 v0, 0xb4
if-eqz p3, :cond_f
if-eq p3, v0, :cond_f
move v1, p2
goto :goto_10
:cond_f
move v1, p1
:goto_10
if-eqz p3, :cond_15
if-eq p3, v0, :cond_15
goto :goto_16
:cond_15
move p1, p2
.line 3
:goto_16
new-instance p2, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$3;
invoke-direct {p2, p0, v1, p1}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$3;-><init>(Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;II)V
invoke-direct {p0, p2}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->postOrRun(Ljava/lang/Runnable;)V
return-void
.end method
.method protected onLayout(ZIIII)V
.registers 6
.line 1
invoke-static {}, Lcn/rongcloud/rtc/core/ThreadUtils;->checkIsOnMainThread()V
.line 2
iget-object p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
sub-int/2addr p4, p2
int-to-float p2, p4
sub-int/2addr p5, p3
int-to-float p3, p5
div-float/2addr p2, p3
invoke-virtual {p1, p2}, Lcn/rongcloud/rtc/core/EglRenderer;->setLayoutAspectRatio(F)V
.line 3
invoke-direct {p0}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->updateSurfaceSize()V
return-void
.end method
.method protected onMeasure(II)V
.registers 7
.line 1
invoke-static {}, Lcn/rongcloud/rtc/core/ThreadUtils;->checkIsOnMainThread()V
.line 2
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->layoutLock:Ljava/lang/Object;
monitor-enter v0
.line 3
:try_start_6
iget-object v1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->videoLayoutMeasure:Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;
iget v2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameWidth:I
iget v3, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameHeight:I
.line 4
invoke-virtual {v1, p1, p2, v2, v3}, Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;->measure(IIII)Landroid/graphics/Point;
move-result-object p1
.line 5
monitor-exit v0
:try_end_11
.catchall {:try_start_6 .. :try_end_11} :catchall_34
.line 6
iget p2, p1, Landroid/graphics/Point;->x:I
iget p1, p1, Landroid/graphics/Point;->y:I
invoke-virtual {p0, p2, p1}, Landroid/view/SurfaceView;->setMeasuredDimension(II)V
.line 7
iget p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameHeight:I
if-eqz p1, :cond_33
iget p2, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->rotatedFrameWidth:I
if-eqz p2, :cond_33
iget-boolean v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->needCallback:Z
if-eqz v0, :cond_33
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->onSizeChangedListener:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$OnSizeChangedListener;
if-eqz v0, :cond_33
.line 8
new-instance v1, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$Size;
invoke-direct {v1, p0, p2, p1}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$Size;-><init>(Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;II)V
invoke-interface {v0, v1}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$OnSizeChangedListener;->onChanged(Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$Size;)V
const/4 p1, 0x0
.line 9
iput-boolean p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->needCallback:Z
:cond_33
return-void
:catchall_34
move-exception p1
.line 10
:try_start_35
monitor-exit v0
:try_end_36
.catchall {:try_start_35 .. :try_end_36} :catchall_34
throw p1
.end method
.method public pauseVideo()V
.registers 2
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
invoke-virtual {v0}, Lcn/rongcloud/rtc/core/EglRenderer;->pauseVideo()V
return-void
.end method
.method public release()V
.registers 2
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
invoke-virtual {v0}, Lcn/rongcloud/rtc/core/EglRenderer;->release()V
return-void
.end method
.method public removeFrameListener(Lcn/rongcloud/rtc/core/EglRenderer$FrameListener;)V
.registers 3
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
invoke-virtual {v0, p1}, Lcn/rongcloud/rtc/core/EglRenderer;->removeFrameListener(Lcn/rongcloud/rtc/core/EglRenderer$FrameListener;)V
return-void
.end method
.method public setAllowRenderer(Z)V
.registers 3
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->allowRenderer:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0, p1}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
return-void
.end method
.method public setEnableHardwareScalar(Z)V
.registers 2
.line 1
invoke-static {}, Lcn/rongcloud/rtc/core/ThreadUtils;->checkIsOnMainThread()V
.line 2
iput-boolean p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->enableFixedSize:Z
.line 3
invoke-direct {p0}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->updateSurfaceSize()V
return-void
.end method
.method public setFpsReduction(F)V
.registers 3
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
invoke-virtual {v0, p1}, Lcn/rongcloud/rtc/core/EglRenderer;->setFpsReduction(F)V
return-void
.end method
.method public setIsLocal(Z)V
.registers 2
.line 1
iput-boolean p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->isLocal:Z
return-void
.end method
.method public setMirror(Z)V
.registers 3
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
invoke-virtual {v0, p1}, Lcn/rongcloud/rtc/core/EglRenderer;->setMirror(Z)V
return-void
.end method
.method public setOnSizeChangedListener(Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$OnSizeChangedListener;)V
.registers 2
.line 1
iput-object p1, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->onSizeChangedListener:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$OnSizeChangedListener;
return-void
.end method
.method public setScalingType(Lcn/rongcloud/rtc/core/RendererCommon$ScalingType;)V
.registers 3
.line 1
invoke-static {}, Lcn/rongcloud/rtc/core/ThreadUtils;->checkIsOnMainThread()V
.line 2
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->videoLayoutMeasure:Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;
invoke-virtual {v0, p1}, Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;->setScalingType(Lcn/rongcloud/rtc/core/RendererCommon$ScalingType;)V
return-void
.end method
.method public setScalingType(Lcn/rongcloud/rtc/core/RendererCommon$ScalingType;Lcn/rongcloud/rtc/core/RendererCommon$ScalingType;)V
.registers 4
.line 3
invoke-static {}, Lcn/rongcloud/rtc/core/ThreadUtils;->checkIsOnMainThread()V
.line 4
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->videoLayoutMeasure:Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;
invoke-virtual {v0, p1, p2}, Lcn/rongcloud/rtc/core/RendererCommon$VideoLayoutMeasure;->setScalingType(Lcn/rongcloud/rtc/core/RendererCommon$ScalingType;Lcn/rongcloud/rtc/core/RendererCommon$ScalingType;)V
return-void
.end method
.method public surfaceChanged(Landroid/view/SurfaceHolder;III)V
.registers 6
.line 1
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
const-string v0, "surfaceChanged: format: "
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string p2, " size: "
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string/jumbo p2, "x"
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, p4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
const-string p2, "SurfaceViewRenderer"
invoke-static {p2, p1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
return-void
.end method
.method public surfaceCreated(Landroid/view/SurfaceHolder;)V
.registers 6
.line 1
sget-object v0, Lcn/rongcloud/rtc/utils/ReportUtil$TAG;->CREATEVIDEOVIEW:Lcn/rongcloud/rtc/utils/ReportUtil$TAG;
const/4 v1, 0x1
new-array v1, v1, [Ljava/lang/Object;
invoke-virtual {p0}, Ljava/lang/Object;->hashCode()I
move-result v2
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
const/4 v3, 0x0
aput-object v2, v1, v3
const-string v2, "identity"
invoke-static {v0, v2, v1}, Lcn/rongcloud/rtc/utils/ReportUtil;->appStatus(Lcn/rongcloud/rtc/utils/ReportUtil$TAG;Ljava/lang/String;[Ljava/lang/Object;)V
.line 2
invoke-static {}, Lcn/rongcloud/rtc/core/ThreadUtils;->checkIsOnMainThread()V
.line 3
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
invoke-interface {p1}, Landroid/view/SurfaceHolder;->getSurface()Landroid/view/Surface;
move-result-object p1
invoke-virtual {v0, p1}, Lcn/rongcloud/rtc/core/EglRenderer;->createEglSurface(Landroid/view/Surface;)V
.line 4
iput v3, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->surfaceHeight:I
iput v3, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->surfaceWidth:I
.line 5
invoke-direct {p0}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->updateSurfaceSize()V
return-void
.end method
.method public surfaceDestroyed(Landroid/view/SurfaceHolder;)V
.registers 6
.line 1
sget-object p1, Lcn/rongcloud/rtc/utils/ReportUtil$TAG;->DESTROYVIDEOVIEW:Lcn/rongcloud/rtc/utils/ReportUtil$TAG;
const/4 v0, 0x1
new-array v1, v0, [Ljava/lang/Object;
invoke-virtual {p0}, Ljava/lang/Object;->hashCode()I
move-result v2
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
const/4 v3, 0x0
aput-object v2, v1, v3
const-string v2, "identity"
invoke-static {p1, v2, v1}, Lcn/rongcloud/rtc/utils/ReportUtil;->appStatus(Lcn/rongcloud/rtc/utils/ReportUtil$TAG;Ljava/lang/String;[Ljava/lang/Object;)V
.line 2
new-instance p1, Ljava/util/concurrent/CountDownLatch;
invoke-direct {p1, v0}, Ljava/util/concurrent/CountDownLatch;-><init>(I)V
.line 3
iget-object v0, p0, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->eglRenderer:Lcn/rongcloud/rtc/core/EglRenderer;
new-instance v1, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$2;
invoke-direct {v1, p0, p1}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView$2;-><init>(Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;Ljava/util/concurrent/CountDownLatch;)V
invoke-virtual {v0, v1}, Lcn/rongcloud/rtc/core/EglRenderer;->releaseEglSurface(Ljava/lang/Runnable;)V
.line 4
invoke-static {p1}, Lcn/rongcloud/rtc/core/ThreadUtils;->awaitUninterruptibly(Ljava/util/concurrent/CountDownLatch;)V
return-void
.end method