Search in sources :

Example 1 with UnseekableSeeker

use of com.google.android.exoplayer2.extractor.mp3.Seeker.UnseekableSeeker in project ExoPlayer by google.

the class Mp3Extractor method computeSeeker.

private Seeker computeSeeker(ExtractorInput input) throws IOException {
    // Read past any seek frame and set the seeker based on metadata or a seek frame. Metadata
    // takes priority as it can provide greater precision.
    Seeker seekFrameSeeker = maybeReadSeekFrame(input);
    Seeker metadataSeeker = maybeHandleSeekMetadata(metadata, input.getPosition());
    if (disableSeeking) {
        return new UnseekableSeeker();
    }
    @Nullable Seeker resultSeeker = null;
    if ((flags & FLAG_ENABLE_INDEX_SEEKING) != 0) {
        long durationUs;
        long dataEndPosition = C.POSITION_UNSET;
        if (metadataSeeker != null) {
            durationUs = metadataSeeker.getDurationUs();
            dataEndPosition = metadataSeeker.getDataEndPosition();
        } else if (seekFrameSeeker != null) {
            durationUs = seekFrameSeeker.getDurationUs();
            dataEndPosition = seekFrameSeeker.getDataEndPosition();
        } else {
            durationUs = getId3TlenUs(metadata);
        }
        resultSeeker = new IndexSeeker(durationUs, /* dataStartPosition= */
        input.getPosition(), dataEndPosition);
    } else if (metadataSeeker != null) {
        resultSeeker = metadataSeeker;
    } else if (seekFrameSeeker != null) {
        resultSeeker = seekFrameSeeker;
    }
    if (resultSeeker == null || (!resultSeeker.isSeekable() && (flags & FLAG_ENABLE_CONSTANT_BITRATE_SEEKING) != 0)) {
        resultSeeker = getConstantBitrateSeeker(input, (flags & FLAG_ENABLE_CONSTANT_BITRATE_SEEKING_ALWAYS) != 0);
    }
    return resultSeeker;
}
Also used : UnseekableSeeker(com.google.android.exoplayer2.extractor.mp3.Seeker.UnseekableSeeker) UnseekableSeeker(com.google.android.exoplayer2.extractor.mp3.Seeker.UnseekableSeeker) Nullable(androidx.annotation.Nullable)

Aggregations

Nullable (androidx.annotation.Nullable)1 UnseekableSeeker (com.google.android.exoplayer2.extractor.mp3.Seeker.UnseekableSeeker)1