DefaultExtractorsFactory.java 源代码


package com.mbridge.msdk.playercommon.exoplayer2.extractor;

import com.mbridge.msdk.playercommon.exoplayer2.extractor.amr.AmrExtractor;
import com.mbridge.msdk.playercommon.exoplayer2.extractor.flv.FlvExtractor;
import com.mbridge.msdk.playercommon.exoplayer2.extractor.mkv.MatroskaExtractor;
import com.mbridge.msdk.playercommon.exoplayer2.extractor.mp3.Mp3Extractor;
import com.mbridge.msdk.playercommon.exoplayer2.extractor.mp4.FragmentedMp4Extractor;
import com.mbridge.msdk.playercommon.exoplayer2.extractor.mp4.Mp4Extractor;
import com.mbridge.msdk.playercommon.exoplayer2.extractor.ogg.OggExtractor;
import com.mbridge.msdk.playercommon.exoplayer2.extractor.ts.Ac3Extractor;
import com.mbridge.msdk.playercommon.exoplayer2.extractor.ts.AdtsExtractor;
import com.mbridge.msdk.playercommon.exoplayer2.extractor.ts.PsExtractor;
import com.mbridge.msdk.playercommon.exoplayer2.extractor.ts.TsExtractor;
import com.mbridge.msdk.playercommon.exoplayer2.extractor.wav.WavExtractor;
import java.lang.reflect.Constructor;

public final class DefaultExtractorsFactory implements ExtractorsFactory {
    private static final Constructor<? extends Extractor> FLAC_EXTRACTOR_CONSTRUCTOR;
    private int fragmentedMp4Flags;
    private int matroskaFlags;
    private int mp3Flags;
    private int mp4Flags;
    private int tsFlags;
    private int tsMode = 1;

    static {
        Constructor<? extends Extractor> constructor;
        try {
            constructor = Class.forName("com.mbridge.msdk.playercommon.exoplayer2.ext.flac.FlacExtractor").asSubclass(Extractor.class).getConstructor(new Class[0]);
        } catch (ClassNotFoundException unused) {
            constructor = null;
        } catch (Exception e6) {
            throw new RuntimeException("Error instantiating FLAC extension", e6);
        }
        FLAC_EXTRACTOR_CONSTRUCTOR = constructor;
    }

    @Override
    public final synchronized Extractor[] createExtractors() {
        int i6;
        Extractor[] extractorArr;
        Constructor<? extends Extractor> constructor = FLAC_EXTRACTOR_CONSTRUCTOR;
        if (constructor == null) {
            i6 = 12;
        } else {
            i6 = 13;
        }
        extractorArr = new Extractor[i6];
        extractorArr[0] = new MatroskaExtractor(this.matroskaFlags);
        extractorArr[1] = new FragmentedMp4Extractor(this.fragmentedMp4Flags);
        extractorArr[2] = new Mp4Extractor(this.mp4Flags);
        extractorArr[3] = new Mp3Extractor(this.mp3Flags);
        extractorArr[4] = new AdtsExtractor();
        extractorArr[5] = new Ac3Extractor();
        extractorArr[6] = new TsExtractor(this.tsMode, this.tsFlags);
        extractorArr[7] = new FlvExtractor();
        extractorArr[8] = new OggExtractor();
        extractorArr[9] = new PsExtractor();
        extractorArr[10] = new WavExtractor();
        extractorArr[11] = new AmrExtractor();
        if (constructor != null) {
            try {
                extractorArr[12] = constructor.newInstance(new Object[0]);
            } catch (Exception e6) {
                throw new IllegalStateException("Unexpected error creating FLAC extractor", e6);
            }
        }
        return extractorArr;
    }

    public final synchronized DefaultExtractorsFactory setFragmentedMp4ExtractorFlags(int i6) {
        this.fragmentedMp4Flags = i6;
        return this;
    }

    public final synchronized DefaultExtractorsFactory setMatroskaExtractorFlags(int i6) {
        this.matroskaFlags = i6;
        return this;
    }

    public final synchronized DefaultExtractorsFactory setMp3ExtractorFlags(int i6) {
        this.mp3Flags = i6;
        return this;
    }

    public final synchronized DefaultExtractorsFactory setMp4ExtractorFlags(int i6) {
        this.mp4Flags = i6;
        return this;
    }

    public final synchronized DefaultExtractorsFactory setTsExtractorFlags(int i6) {
        this.tsFlags = i6;
        return this;
    }

    public final synchronized DefaultExtractorsFactory setTsExtractorMode(int i6) {
        this.tsMode = i6;
        return this;
    }
}