package androidx.media3.exoplayer.image;

import android.graphics.Bitmap;
import android.net.Uri;
import androidx.annotation.Nullable;
import androidx.media3.common.Format;
import androidx.media3.common.MimeTypes;
import androidx.media3.common.util.Assertions;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.exoplayer.RendererCapabilities;
import androidx.media3.exoplayer.image.ImageDecoder;
import com.google.common.util.concurrent.c0;
import com.google.common.util.concurrent.w;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.Objects;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ExecutionException;
import s1.f;

/* JADX INFO: loaded from: classes.dex */
@UnstableApi
public final class ExternallyLoadedImageDecoder implements ImageDecoder {
    private final BitmapResolver bitmapResolver;
    private final f inputBuffer;
    private final ImageOutputBuffer outputBuffer;

    @Nullable
    private w pendingDecode;
    private long pendingDecodeTimeUs;
    private boolean pendingEndOfStream;

    public interface BitmapResolver {
        w resolve(ExternalImageRequest externalImageRequest);
    }

    public static final class ExternalImageRequest {
        public final Uri uri;

        public ExternalImageRequest(Uri uri) {
            this.uri = uri;
        }
    }

    public static final class Factory implements ImageDecoder.Factory {
        private final BitmapResolver bitmapResolver;

        public Factory(BitmapResolver bitmapResolver) {
            this.bitmapResolver = bitmapResolver;
        }

        @Override // androidx.media3.exoplayer.image.ImageDecoder.Factory
        public int supportsFormat(Format format) {
            return RendererCapabilities.create(Objects.equals(format.sampleMimeType, MimeTypes.APPLICATION_EXTERNALLY_LOADED_IMAGE) ? 4 : MimeTypes.isImage(format.sampleMimeType) ? 1 : 0);
        }

        @Override // androidx.media3.exoplayer.image.ImageDecoder.Factory
        public ExternallyLoadedImageDecoder createImageDecoder() {
            return new ExternallyLoadedImageDecoder(this.bitmapResolver);
        }
    }

    private void resetState() {
        w wVar = this.pendingDecode;
        if (wVar != null) {
            wVar.cancel(false);
            this.pendingDecode = null;
        }
        this.pendingEndOfStream = false;
        this.inputBuffer.clear();
        this.outputBuffer.release();
    }

    @Override // androidx.media3.exoplayer.image.ImageDecoder, s1.e
    @Nullable
    public f dequeueInputBuffer() {
        if (this.pendingDecode == null) {
            return this.inputBuffer;
        }
        return null;
    }

    @Override // androidx.media3.exoplayer.image.ImageDecoder, s1.e
    public void flush() {
        resetState();
    }

    @Override // androidx.media3.exoplayer.image.ImageDecoder
    public String getName() {
        return "externallyLoadedImageDecoder";
    }

    @Override // androidx.media3.exoplayer.image.ImageDecoder, s1.e
    public void release() {
        resetState();
    }

    @Override // androidx.media3.exoplayer.image.ImageDecoder, s1.e
    public void setOutputStartTimeUs(long j10) {
    }

    private ExternallyLoadedImageDecoder(BitmapResolver bitmapResolver) {
        this.bitmapResolver = bitmapResolver;
        this.inputBuffer = new f(1);
        this.outputBuffer = new ImageOutputBuffer() { // from class: androidx.media3.exoplayer.image.ExternallyLoadedImageDecoder.1
            @Override // s1.g
            public void release() {
                clear();
            }
        };
    }

    @Override // androidx.media3.exoplayer.image.ImageDecoder, s1.e, androidx.media3.exoplayer.image.ImageDecoder
    @Nullable
    public ImageOutputBuffer dequeueOutputBuffer() throws ImageDecoderException {
        if (this.pendingEndOfStream) {
            this.outputBuffer.addFlag(4);
            this.pendingEndOfStream = false;
            return this.outputBuffer;
        }
        w wVar = this.pendingDecode;
        if (wVar != null) {
            try {
                if (wVar.isDone()) {
                    try {
                        this.outputBuffer.bitmap = (Bitmap) c0.j(this.pendingDecode);
                        ImageOutputBuffer imageOutputBuffer = this.outputBuffer;
                        imageOutputBuffer.timeUs = this.pendingDecodeTimeUs;
                        return imageOutputBuffer;
                    } catch (CancellationException e10) {
                        throw new ImageDecoderException(e10);
                    } catch (ExecutionException e11) {
                        throw new ImageDecoderException(e11.getCause());
                    }
                }
            } finally {
                this.pendingDecode = null;
            }
        }
        return null;
    }

    @Override // androidx.media3.exoplayer.image.ImageDecoder, s1.e
    public void queueInputBuffer(f fVar) {
        if (fVar.isEndOfStream()) {
            this.pendingEndOfStream = true;
            fVar.clear();
            return;
        }
        ByteBuffer byteBuffer = (ByteBuffer) Assertions.checkNotNull(fVar.data);
        Assertions.checkState(byteBuffer.hasArray());
        this.pendingDecode = this.bitmapResolver.resolve(new ExternalImageRequest(Uri.parse(new String(byteBuffer.array(), byteBuffer.arrayOffset(), byteBuffer.remaining(), StandardCharsets.UTF_8))));
        this.pendingDecodeTimeUs = fVar.timeUs;
        fVar.clear();
    }
}
