Search in sources :

Example 1 with Util

use of com.google.android.exoplayer2.util.Util in project ExoPlayer by google.

the class DefaultTrackSelector method getViewportFilteredTrackIndices.

// Viewport size util methods.
private static List<Integer> getViewportFilteredTrackIndices(TrackGroup group, int viewportWidth, int viewportHeight, boolean orientationMayChange) {
    // Initially include all indices.
    ArrayList<Integer> selectedTrackIndices = new ArrayList<>(group.length);
    for (int i = 0; i < group.length; i++) {
        selectedTrackIndices.add(i);
    }
    if (viewportWidth == Integer.MAX_VALUE || viewportHeight == Integer.MAX_VALUE) {
        // Viewport dimensions not set. Return the full set of indices.
        return selectedTrackIndices;
    }
    int maxVideoPixelsToRetain = Integer.MAX_VALUE;
    for (int i = 0; i < group.length; i++) {
        Format format = group.getFormat(i);
        // We'll discard formats of higher resolution.
        if (format.width > 0 && format.height > 0) {
            Point maxVideoSizeInViewport = getMaxVideoSizeInViewport(orientationMayChange, viewportWidth, viewportHeight, format.width, format.height);
            int videoPixels = format.width * format.height;
            if (format.width >= (int) (maxVideoSizeInViewport.x * FRACTION_TO_CONSIDER_FULLSCREEN) && format.height >= (int) (maxVideoSizeInViewport.y * FRACTION_TO_CONSIDER_FULLSCREEN) && videoPixels < maxVideoPixelsToRetain) {
                maxVideoPixelsToRetain = videoPixels;
            }
        }
    }
    // filter out formats with unknown dimensions, since we have some whose dimensions are known.
    if (maxVideoPixelsToRetain != Integer.MAX_VALUE) {
        for (int i = selectedTrackIndices.size() - 1; i >= 0; i--) {
            Format format = group.getFormat(selectedTrackIndices.get(i));
            int pixelCount = format.getPixelCount();
            if (pixelCount == Format.NO_VALUE || pixelCount > maxVideoPixelsToRetain) {
                selectedTrackIndices.remove(i);
            }
        }
    }
    return selectedTrackIndices;
}
Also used : Format(com.google.android.exoplayer2.Format) ArrayList(java.util.ArrayList) Point(android.graphics.Point) Point(android.graphics.Point)

Aggregations

Point (android.graphics.Point)1 Format (com.google.android.exoplayer2.Format)1 ArrayList (java.util.ArrayList)1