.class public Lorg/webrtc/DefaultVideoDecoderFactory; .super Ljava/lang/Object; .source "DefaultVideoDecoderFactory.java" # interfaces .implements Lorg/webrtc/VideoDecoderFactory; # instance fields .field private final hardwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; .field private final platformSoftwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; .field private final softwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; # direct methods .method public constructor (Lorg/webrtc/EglBase$Context;)V .locals 1 .line 28 invoke-direct {p0}, Ljava/lang/Object;->()V .line 22 new-instance v0, Lorg/webrtc/SoftwareVideoDecoderFactory; invoke-direct {v0}, Lorg/webrtc/SoftwareVideoDecoderFactory;->()V iput-object v0, p0, Lorg/webrtc/DefaultVideoDecoderFactory;->softwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; .line 29 new-instance v0, Lorg/webrtc/HardwareVideoDecoderFactory; invoke-direct {v0, p1}, Lorg/webrtc/HardwareVideoDecoderFactory;->(Lorg/webrtc/EglBase$Context;)V iput-object v0, p0, Lorg/webrtc/DefaultVideoDecoderFactory;->hardwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; .line 30 new-instance v0, Lorg/webrtc/PlatformSoftwareVideoDecoderFactory; invoke-direct {v0, p1}, Lorg/webrtc/PlatformSoftwareVideoDecoderFactory;->(Lorg/webrtc/EglBase$Context;)V iput-object v0, p0, Lorg/webrtc/DefaultVideoDecoderFactory;->platformSoftwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; return-void .end method .method constructor (Lorg/webrtc/VideoDecoderFactory;)V .locals 1 .line 36 invoke-direct {p0}, Ljava/lang/Object;->()V .line 22 new-instance v0, Lorg/webrtc/SoftwareVideoDecoderFactory; invoke-direct {v0}, Lorg/webrtc/SoftwareVideoDecoderFactory;->()V iput-object v0, p0, Lorg/webrtc/DefaultVideoDecoderFactory;->softwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; iput-object p1, p0, Lorg/webrtc/DefaultVideoDecoderFactory;->hardwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; const/4 p1, 0x0 iput-object p1, p0, Lorg/webrtc/DefaultVideoDecoderFactory;->platformSoftwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; return-void .end method # virtual methods .method public createDecoder(Lorg/webrtc/VideoCodecInfo;)Lorg/webrtc/VideoDecoder; .locals 2 iget-object v0, p0, Lorg/webrtc/DefaultVideoDecoderFactory;->softwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; .line 43 invoke-interface {v0, p1}, Lorg/webrtc/VideoDecoderFactory;->createDecoder(Lorg/webrtc/VideoCodecInfo;)Lorg/webrtc/VideoDecoder; move-result-object v0 iget-object v1, p0, Lorg/webrtc/DefaultVideoDecoderFactory;->hardwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; .line 44 invoke-interface {v1, p1}, Lorg/webrtc/VideoDecoderFactory;->createDecoder(Lorg/webrtc/VideoCodecInfo;)Lorg/webrtc/VideoDecoder; move-result-object v1 if-nez v0, :cond_0 iget-object p0, p0, Lorg/webrtc/DefaultVideoDecoderFactory;->platformSoftwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; if-eqz p0, :cond_0 .line 46 invoke-interface {p0, p1}, Lorg/webrtc/VideoDecoderFactory;->createDecoder(Lorg/webrtc/VideoCodecInfo;)Lorg/webrtc/VideoDecoder; move-result-object v0 :cond_0 if-eqz v1, :cond_1 if-eqz v0, :cond_1 .line 50 new-instance p0, Lorg/webrtc/VideoDecoderFallback; invoke-direct {p0, v0, v1}, Lorg/webrtc/VideoDecoderFallback;->(Lorg/webrtc/VideoDecoder;Lorg/webrtc/VideoDecoder;)V return-object p0 :cond_1 if-eqz v1, :cond_2 goto :goto_0 :cond_2 move-object v1, v0 :goto_0 return-object v1 .end method .method public getSupportedCodecs()[Lorg/webrtc/VideoCodecInfo; .locals 2 .line 58 new-instance v0, Ljava/util/LinkedHashSet; invoke-direct {v0}, Ljava/util/LinkedHashSet;->()V iget-object v1, p0, Lorg/webrtc/DefaultVideoDecoderFactory;->softwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; .line 60 invoke-interface {v1}, Lorg/webrtc/VideoDecoderFactory;->getSupportedCodecs()[Lorg/webrtc/VideoCodecInfo; move-result-object v1 invoke-static {v1}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List; move-result-object v1 invoke-virtual {v0, v1}, Ljava/util/LinkedHashSet;->addAll(Ljava/util/Collection;)Z iget-object v1, p0, Lorg/webrtc/DefaultVideoDecoderFactory;->hardwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; .line 61 invoke-interface {v1}, Lorg/webrtc/VideoDecoderFactory;->getSupportedCodecs()[Lorg/webrtc/VideoCodecInfo; move-result-object v1 invoke-static {v1}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List; move-result-object v1 invoke-virtual {v0, v1}, Ljava/util/LinkedHashSet;->addAll(Ljava/util/Collection;)Z iget-object p0, p0, Lorg/webrtc/DefaultVideoDecoderFactory;->platformSoftwareVideoDecoderFactory:Lorg/webrtc/VideoDecoderFactory; if-eqz p0, :cond_0 .line 64 invoke-interface {p0}, Lorg/webrtc/VideoDecoderFactory;->getSupportedCodecs()[Lorg/webrtc/VideoCodecInfo; move-result-object p0 invoke-static {p0}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List; move-result-object p0 .line 63 invoke-virtual {v0, p0}, Ljava/util/LinkedHashSet;->addAll(Ljava/util/Collection;)Z .line 67 :cond_0 invoke-virtual {v0}, Ljava/util/LinkedHashSet;->size()I move-result p0 new-array p0, p0, [Lorg/webrtc/VideoCodecInfo; invoke-virtual {v0, p0}, Ljava/util/LinkedHashSet;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; move-result-object p0 check-cast p0, [Lorg/webrtc/VideoCodecInfo; return-object p0 .end method