RCVideoOutStreamImpl.smali
.class public Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;
.super Lcn/rongcloud/rtc/center/stream/RCOutputStreamImpl;
.source "RCVideoOutStreamImpl.java"
# interfaces
.implements Lcn/rongcloud/rtc/api/stream/RCRTCVideoOutputStream;
.implements Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource$IRCVideoConsumer;
.implements Lcn/rongcloud/rtc/webrtc/ILocalVideoStreamResource;
.implements Lcn/rongcloud/rtc/core/CapturerObserver;
# static fields
.field private static final TAG:Ljava/lang/String; = "RCVideoOutStreamImpl"
# instance fields
.field private handler:Landroid/os/Handler;
.field protected mStreamType:Lcn/rongcloud/rtc/base/RCRTCStreamType;
.field protected mTextureView:Lcn/rongcloud/rtc/api/stream/RCRTCTextureView;
.field protected mVideoObserver:Lcn/rongcloud/rtc/core/CapturerObserver;
.field protected mVideoView:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;
.field private source:Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource;
.field protected videoStreamConfig:Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;
.field private yuvConverter:Lcn/rongcloud/rtc/core/YuvConverter;
# direct methods
.method public constructor <init>(Ljava/lang/String;Ljava/lang/String;)V
.registers 5
.line 1
sget-object v0, Lcn/rongcloud/rtc/base/RCRTCMediaType;->VIDEO:Lcn/rongcloud/rtc/base/RCRTCMediaType;
invoke-static {p2, p1}, Lcn/rongcloud/rtc/center/stream/RCStreamImpl;->makeStreamId(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-direct {p0, p1, v0, v1}, Lcn/rongcloud/rtc/center/stream/RCOutputStreamImpl;-><init>(Ljava/lang/String;Lcn/rongcloud/rtc/base/RCRTCMediaType;Ljava/lang/String;)V
.line 2
sget-object p1, Lcn/rongcloud/rtc/base/RCRTCStreamType;->NORMAL:Lcn/rongcloud/rtc/base/RCRTCStreamType;
iput-object p1, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mStreamType:Lcn/rongcloud/rtc/base/RCRTCStreamType;
.line 3
invoke-static {}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig$Builder;->create()Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig$Builder;
move-result-object p1
invoke-virtual {p1}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig$Builder;->build()Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;
move-result-object p1
iput-object p1, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->videoStreamConfig:Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;
.line 4
invoke-virtual {p0, p2}, Lcn/rongcloud/rtc/center/stream/RCStreamImpl;->setUserId(Ljava/lang/String;)V
return-void
.end method
.method private declared-synchronized onBindingSink()V
.registers 6
monitor-enter p0
.line 1
:try_start_1
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCStreamImpl;->track:Lcn/rongcloud/rtc/core/MediaStreamTrack;
if-eqz v0, :cond_4c
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCStreamImpl;->track:Lcn/rongcloud/rtc/core/MediaStreamTrack;
instance-of v0, v0, Lcn/rongcloud/rtc/core/VideoTrack;
if-eqz v0, :cond_4c
.line 2
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoView:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;
if-eqz v0, :cond_3c
.line 3
sget-object v0, Lcn/rongcloud/rtc/utils/ReportUtil$TAG;->SETLOCALRENDERVIEW:Lcn/rongcloud/rtc/utils/ReportUtil$TAG;
const-string v1, "trackId|viewIdentity"
const/4 v2, 0x2
new-array v2, v2, [Ljava/lang/Object;
const/4 v3, 0x0
iget-object v4, p0, Lcn/rongcloud/rtc/center/stream/RCStreamImpl;->track:Lcn/rongcloud/rtc/core/MediaStreamTrack;
invoke-virtual {v4}, Lcn/rongcloud/rtc/core/MediaStreamTrack;->id()Ljava/lang/String;
move-result-object v4
aput-object v4, v2, v3
const/4 v3, 0x1
iget-object v4, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoView:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;
invoke-virtual {v4}, Ljava/lang/Object;->hashCode()I
move-result v4
invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v4
aput-object v4, v2, v3
invoke-static {v0, v1, v2}, Lcn/rongcloud/rtc/utils/ReportUtil;->appTask(Lcn/rongcloud/rtc/utils/ReportUtil$TAG;Ljava/lang/String;[Ljava/lang/Object;)V
.line 4
invoke-static {}, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->getInstance()Lcn/rongcloud/rtc/engine/RTCEngineImpl;
move-result-object v0
new-instance v1, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl$3;
invoke-direct {v1, p0}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl$3;-><init>(Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;)V
invoke-virtual {v0, v1}, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->postUIThread(Ljava/lang/Runnable;)V
goto :goto_4c
.line 5
:cond_3c
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mTextureView:Lcn/rongcloud/rtc/api/stream/RCRTCTextureView;
if-eqz v0, :cond_4c
.line 6
invoke-static {}, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->getInstance()Lcn/rongcloud/rtc/engine/RTCEngineImpl;
move-result-object v0
new-instance v1, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl$4;
invoke-direct {v1, p0}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl$4;-><init>(Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;)V
invoke-virtual {v0, v1}, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->postUIThread(Ljava/lang/Runnable;)V
:try_end_4c
.catchall {:try_start_1 .. :try_end_4c} :catchall_4e
.line 7
:cond_4c
:goto_4c
monitor-exit p0
return-void
:catchall_4e
move-exception v0
monitor-exit p0
throw v0
.end method
.method private declared-synchronized onUnbindingSink()V
.registers 4
monitor-enter p0
.line 1
:try_start_1
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCStreamImpl;->track:Lcn/rongcloud/rtc/core/MediaStreamTrack;
if-eqz v0, :cond_2f
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCStreamImpl;->track:Lcn/rongcloud/rtc/core/MediaStreamTrack;
instance-of v0, v0, Lcn/rongcloud/rtc/core/VideoTrack;
if-eqz v0, :cond_2f
.line 2
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoView:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;
if-eqz v0, :cond_1d
.line 3
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoView:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;
.line 4
invoke-static {}, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->getInstance()Lcn/rongcloud/rtc/engine/RTCEngineImpl;
move-result-object v1
new-instance v2, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl$1;
invoke-direct {v2, p0, v0}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl$1;-><init>(Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;)V
invoke-virtual {v1, v2}, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->postUIThread(Ljava/lang/Runnable;)V
.line 5
:cond_1d
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mTextureView:Lcn/rongcloud/rtc/api/stream/RCRTCTextureView;
if-eqz v0, :cond_2f
.line 6
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mTextureView:Lcn/rongcloud/rtc/api/stream/RCRTCTextureView;
.line 7
invoke-static {}, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->getInstance()Lcn/rongcloud/rtc/engine/RTCEngineImpl;
move-result-object v1
new-instance v2, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl$2;
invoke-direct {v2, p0, v0}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl$2;-><init>(Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;Lcn/rongcloud/rtc/api/stream/RCRTCTextureView;)V
invoke-virtual {v1, v2}, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->postUIThread(Ljava/lang/Runnable;)V
:try_end_2f
.catchall {:try_start_1 .. :try_end_2f} :catchall_31
.line 8
:cond_2f
monitor-exit p0
return-void
:catchall_31
move-exception v0
monitor-exit p0
throw v0
.end method
# virtual methods
.method public getHeight()I
.registers 2
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->videoStreamConfig:Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;
invoke-interface {v0}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;->getVideoResolution()Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoResolution;
move-result-object v0
invoke-virtual {v0}, Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoResolution;->getHeight()I
move-result v0
return v0
.end method
.method public getMaxBitrate()I
.registers 3
.line 1
invoke-virtual {p0}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->getVideoFps()Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoFps;
move-result-object v0
invoke-virtual {v0}, Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoFps;->getMultiplier()F
move-result v0
iget-object v1, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->videoStreamConfig:Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;
invoke-interface {v1}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;->getVideoResolution()Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoResolution;
move-result-object v1
invoke-virtual {v1}, Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoResolution;->getMaxBitRate()I
move-result v1
int-to-float v1, v1
mul-float v0, v0, v1
float-to-int v0, v0
return v0
.end method
.method public getMinBitrate()I
.registers 3
.line 1
invoke-virtual {p0}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->getVideoFps()Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoFps;
move-result-object v0
invoke-virtual {v0}, Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoFps;->getMultiplier()F
move-result v0
iget-object v1, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->videoStreamConfig:Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;
invoke-interface {v1}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;->getVideoResolution()Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoResolution;
move-result-object v1
invoke-virtual {v1}, Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoResolution;->getMinBitRate()I
move-result v1
int-to-float v1, v1
mul-float v0, v0, v1
float-to-int v0, v0
return v0
.end method
.method public getStreamType()Lcn/rongcloud/rtc/base/RCRTCStreamType;
.registers 2
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mStreamType:Lcn/rongcloud/rtc/base/RCRTCStreamType;
return-object v0
.end method
.method public getVideoConfig()Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;
.registers 2
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->videoStreamConfig:Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;
return-object v0
.end method
.method public getVideoFps()Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoFps;
.registers 2
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->videoStreamConfig:Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;
invoke-interface {v0}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;->getVideoFps()Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoFps;
move-result-object v0
return-object v0
.end method
.method public declared-synchronized getVideoView()Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;
.registers 2
monitor-enter p0
.line 1
:try_start_1
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoView:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;
:try_end_3
.catchall {:try_start_1 .. :try_end_3} :catchall_5
monitor-exit p0
return-object v0
:catchall_5
move-exception v0
monitor-exit p0
throw v0
.end method
.method public getWidth()I
.registers 2
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->videoStreamConfig:Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;
invoke-interface {v0}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;->getVideoResolution()Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoResolution;
move-result-object v0
invoke-virtual {v0}, Lcn/rongcloud/rtc/base/RCRTCParamsType$RCRTCVideoResolution;->getWidth()I
move-result v0
return v0
.end method
.method public isPreserved()Z
.registers 2
const/4 v0, 0x0
return v0
.end method
.method public isScreencast()Z
.registers 2
const/4 v0, 0x0
return v0
.end method
.method public onCapturerStarted(Z)V
.registers 3
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoObserver:Lcn/rongcloud/rtc/core/CapturerObserver;
if-eqz v0, :cond_7
.line 2
invoke-interface {v0, p1}, Lcn/rongcloud/rtc/core/CapturerObserver;->onCapturerStarted(Z)V
:cond_7
return-void
.end method
.method public onCapturerStopped()V
.registers 2
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoObserver:Lcn/rongcloud/rtc/core/CapturerObserver;
if-eqz v0, :cond_7
.line 2
invoke-interface {v0}, Lcn/rongcloud/rtc/core/CapturerObserver;->onCapturerStopped()V
:cond_7
return-void
.end method
.method public onFrameCaptured(Lcn/rongcloud/rtc/core/VideoFrame;)V
.registers 3
.line 1
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoObserver:Lcn/rongcloud/rtc/core/CapturerObserver;
if-eqz v0, :cond_7
.line 2
invoke-interface {v0, p1}, Lcn/rongcloud/rtc/core/CapturerObserver;->onFrameCaptured(Lcn/rongcloud/rtc/core/VideoFrame;)V
:cond_7
return-void
.end method
.method public release()V
.registers 3
.line 1
invoke-super {p0}, Lcn/rongcloud/rtc/center/stream/RCOutputStreamImpl;->release()V
const/4 v0, 0x0
.line 2
iput-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoObserver:Lcn/rongcloud/rtc/core/CapturerObserver;
.line 3
iget-object v1, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->handler:Landroid/os/Handler;
if-eqz v1, :cond_11
.line 4
invoke-virtual {v1}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
move-result-object v1
invoke-virtual {v1}, Landroid/os/Looper;->quit()V
.line 5
:cond_11
iput-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->handler:Landroid/os/Handler;
.line 6
iget-object v1, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->yuvConverter:Lcn/rongcloud/rtc/core/YuvConverter;
if-eqz v1, :cond_1a
.line 7
invoke-virtual {v1}, Lcn/rongcloud/rtc/core/YuvConverter;->release()V
.line 8
:cond_1a
iput-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->yuvConverter:Lcn/rongcloud/rtc/core/YuvConverter;
.line 9
iget-object v1, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoView:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;
if-eqz v1, :cond_23
.line 10
invoke-virtual {v1}, Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;->release()V
.line 11
:cond_23
iput-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoView:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;
.line 12
iget-object v1, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->source:Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource;
if-eqz v1, :cond_2c
.line 13
invoke-interface {v1}, Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource;->onDispose()V
.line 14
:cond_2c
iput-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->source:Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource;
return-void
.end method
.method public declared-synchronized setSource(Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource;)V
.registers 2
monitor-enter p0
.line 1
:try_start_1
iput-object p1, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->source:Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource;
if-eqz p1, :cond_8
.line 2
invoke-interface {p1, p0}, Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource;->onInit(Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource$IRCVideoConsumer;)V
:try_end_8
.catchall {:try_start_1 .. :try_end_8} :catchall_a
.line 3
:cond_8
monitor-exit p0
return-void
:catchall_a
move-exception p1
monitor-exit p0
throw p1
.end method
.method public setTextureView(Lcn/rongcloud/rtc/api/stream/RCRTCTextureView;)V
.registers 2
.line 1
invoke-direct {p0}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->onUnbindingSink()V
.line 2
iput-object p1, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mTextureView:Lcn/rongcloud/rtc/api/stream/RCRTCTextureView;
.line 3
invoke-direct {p0}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->onBindingSink()V
return-void
.end method
.method public setTrack(Lcn/rongcloud/rtc/core/MediaStreamTrack;)V
.registers 3
.line 1
invoke-super {p0, p1}, Lcn/rongcloud/rtc/center/stream/RCStreamImpl;->setTrack(Lcn/rongcloud/rtc/core/MediaStreamTrack;)V
if-eqz p1, :cond_15
.line 2
instance-of v0, p1, Lcn/rongcloud/rtc/core/VideoTrack;
if-eqz v0, :cond_15
.line 3
check-cast p1, Lcn/rongcloud/rtc/core/VideoTrack;
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoTrack;->getVideoSource()Lcn/rongcloud/rtc/core/VideoSource;
move-result-object p1
.line 4
invoke-virtual {p1}, Lcn/rongcloud/rtc/core/VideoSource;->getCapturerObserver()Lcn/rongcloud/rtc/core/CapturerObserver;
move-result-object p1
iput-object p1, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoObserver:Lcn/rongcloud/rtc/core/CapturerObserver;
.line 5
:cond_15
invoke-direct {p0}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->onBindingSink()V
return-void
.end method
.method public setVideoConfig(Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;)V
.registers 6
if-nez p1, :cond_3
return-void
.line 1
:cond_3
sget-object v0, Lcn/rongcloud/rtc/utils/ReportUtil$TAG;->RTCVIDEOCONFIG:Lcn/rongcloud/rtc/utils/ReportUtil$TAG;
const/4 v1, 0x1
new-array v1, v1, [Ljava/lang/Object;
const/4 v2, 0x0
move-object v3, p1
check-cast v3, Lcn/rongcloud/rtc/center/config/RCVideoConfigImpl;
invoke-virtual {v3}, Lcn/rongcloud/rtc/center/config/RCVideoConfigImpl;->formatLogString()Ljava/lang/String;
move-result-object v3
aput-object v3, v1, v2
const-string v2, "config"
invoke-static {v0, v2, v1}, Lcn/rongcloud/rtc/utils/ReportUtil;->libStatus(Lcn/rongcloud/rtc/utils/ReportUtil$TAG;Ljava/lang/String;[Ljava/lang/Object;)V
.line 2
iput-object p1, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->videoStreamConfig:Lcn/rongcloud/rtc/api/stream/RCRTCVideoStreamConfig;
return-void
.end method
.method public setVideoFrameListener(Lcn/rongcloud/rtc/api/callback/IRCRTCVideoOutputFrameListener;)V
.registers 2
return-void
.end method
.method public declared-synchronized setVideoView(Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;)V
.registers 2
monitor-enter p0
.line 1
:try_start_1
invoke-direct {p0}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->onUnbindingSink()V
.line 2
iput-object p1, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoView:Lcn/rongcloud/rtc/api/stream/RCRTCVideoView;
.line 3
invoke-direct {p0}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->onBindingSink()V
:try_end_9
.catchall {:try_start_1 .. :try_end_9} :catchall_b
.line 4
monitor-exit p0
return-void
:catchall_b
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized start()V
.registers 2
monitor-enter p0
.line 1
:try_start_1
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->source:Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource;
if-eqz v0, :cond_a
.line 2
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->source:Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource;
invoke-interface {v0}, Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource;->onStart()V
:try_end_a
.catchall {:try_start_1 .. :try_end_a} :catchall_c
.line 3
:cond_a
monitor-exit p0
return-void
:catchall_c
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized stop()V
.registers 2
monitor-enter p0
.line 1
:try_start_1
invoke-super {p0}, Lcn/rongcloud/rtc/center/stream/RCOutputStreamImpl;->stop()V
.line 2
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->source:Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource;
if-eqz v0, :cond_d
.line 3
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->source:Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource;
invoke-interface {v0}, Lcn/rongcloud/rtc/api/callback/IRCRTCVideoSource;->onStop()V
:try_end_d
.catchall {:try_start_1 .. :try_end_d} :catchall_f
.line 4
:cond_d
monitor-exit p0
return-void
:catchall_f
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized writeTexture(III[FIJ)V
.registers 19
move-object v1, p0
monitor-enter p0
.line 1
:try_start_2
iget-object v0, v1, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoObserver:Lcn/rongcloud/rtc/core/CapturerObserver;
if-nez v0, :cond_10
const-string v0, "RCVideoOutStreamImpl"
const-string/jumbo v2, "videoObserver is null"
.line 2
invoke-static {v0, v2}, Lcn/rongcloud/rtc/utils/FinLog;->e(Ljava/lang/String;Ljava/lang/String;)V
:try_end_e
.catchall {:try_start_2 .. :try_end_e} :catchall_6d
.line 3
monitor-exit p0
return-void
.line 4
:cond_10
:try_start_10
iget-object v0, v1, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->handler:Landroid/os/Handler;
if-eqz v0, :cond_18
iget-object v0, v1, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->yuvConverter:Lcn/rongcloud/rtc/core/YuvConverter;
if-nez v0, :cond_47
.line 5
:cond_18
new-instance v0, Landroid/os/HandlerThread;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "Thread_"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0}, Lcn/rongcloud/rtc/center/stream/RCStreamImpl;->getTag()Ljava/lang/String;
move-result-object v3
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-direct {v0, v2}, Landroid/os/HandlerThread;-><init>(Ljava/lang/String;)V
.line 6
invoke-virtual {v0}, Landroid/os/HandlerThread;->start()V
.line 7
new-instance v2, Landroid/os/Handler;
invoke-virtual {v0}, Landroid/os/HandlerThread;->getLooper()Landroid/os/Looper;
move-result-object v0
invoke-direct {v2, v0}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V
iput-object v2, v1, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->handler:Landroid/os/Handler;
.line 8
new-instance v0, Lcn/rongcloud/rtc/core/YuvConverter;
invoke-direct {v0}, Lcn/rongcloud/rtc/core/YuvConverter;-><init>()V
iput-object v0, v1, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->yuvConverter:Lcn/rongcloud/rtc/core/YuvConverter;
.line 9
:cond_47
new-instance v0, Lcn/rongcloud/rtc/core/TextureBufferImpl;
sget-object v5, Lcn/rongcloud/rtc/core/VideoFrame$TextureBuffer$Type;->OES:Lcn/rongcloud/rtc/core/VideoFrame$TextureBuffer$Type;
.line 10
invoke-static {p4}, Lcn/rongcloud/rtc/core/RendererCommon;->convertMatrixToAndroidGraphicsMatrix([F)Landroid/graphics/Matrix;
move-result-object v7
iget-object v8, v1, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->handler:Landroid/os/Handler;
iget-object v9, v1, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->yuvConverter:Lcn/rongcloud/rtc/core/YuvConverter;
new-instance v10, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl$5;
invoke-direct {v10, p0}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl$5;-><init>(Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;)V
move-object v2, v0
move v3, p1
move v4, p2
move v6, p3
invoke-direct/range {v2 .. v10}, Lcn/rongcloud/rtc/core/TextureBufferImpl;-><init>(IILcn/rongcloud/rtc/core/VideoFrame$TextureBuffer$Type;ILandroid/graphics/Matrix;Landroid/os/Handler;Lcn/rongcloud/rtc/core/YuvConverter;Ljava/lang/Runnable;)V
.line 11
new-instance v2, Lcn/rongcloud/rtc/core/VideoFrame;
move/from16 v3, p5
move-wide/from16 v4, p6
invoke-direct {v2, v0, v3, v4, v5}, Lcn/rongcloud/rtc/core/VideoFrame;-><init>(Lcn/rongcloud/rtc/core/VideoFrame$Buffer;IJ)V
.line 12
invoke-virtual {p0, v2}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->onFrameCaptured(Lcn/rongcloud/rtc/core/VideoFrame;)V
:try_end_6b
.catchall {:try_start_10 .. :try_end_6b} :catchall_6d
.line 13
monitor-exit p0
return-void
:catchall_6d
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized writeYuvData([BIII)V
.registers 7
monitor-enter p0
.line 1
:try_start_1
iget-object v0, p0, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->mVideoObserver:Lcn/rongcloud/rtc/core/CapturerObserver;
if-nez v0, :cond_f
const-string p1, "RCVideoOutStreamImpl"
const-string/jumbo p2, "videoObserver is null"
.line 2
invoke-static {p1, p2}, Lcn/rongcloud/rtc/utils/FinLog;->e(Ljava/lang/String;Ljava/lang/String;)V
:try_end_d
.catchall {:try_start_1 .. :try_end_d} :catchall_2d
.line 3
monitor-exit p0
return-void
.line 4
:cond_f
:try_start_f
new-instance v0, Lcn/rongcloud/rtc/core/NV21Buffer;
new-instance v1, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl$6;
invoke-direct {v1, p0}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl$6;-><init>(Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;)V
invoke-direct {v0, p1, p2, p3, v1}, Lcn/rongcloud/rtc/core/NV21Buffer;-><init>([BIILjava/lang/Runnable;)V
.line 5
sget-object p1, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide p2
invoke-virtual {p1, p2, p3}, Ljava/util/concurrent/TimeUnit;->toNanos(J)J
move-result-wide p1
.line 6
new-instance p3, Lcn/rongcloud/rtc/core/VideoFrame;
invoke-direct {p3, v0, p4, p1, p2}, Lcn/rongcloud/rtc/core/VideoFrame;-><init>(Lcn/rongcloud/rtc/core/VideoFrame$Buffer;IJ)V
.line 7
invoke-virtual {p0, p3}, Lcn/rongcloud/rtc/center/stream/RCVideoOutStreamImpl;->onFrameCaptured(Lcn/rongcloud/rtc/core/VideoFrame;)V
:try_end_2b
.catchall {:try_start_f .. :try_end_2b} :catchall_2d
.line 8
monitor-exit p0
return-void
:catchall_2d
move-exception p1
monitor-exit p0
throw p1
.end method