public interface

Allocator

 androidx.media3.exoplayer.upstream.Allocator

Subclasses:

DefaultAllocator

Gradle dependencies

compile group: 'androidx.media3', name: 'media3-exoplayer', version: '1.5.0-alpha01'

  • groupId: androidx.media3
  • artifactId: media3-exoplayer
  • version: 1.5.0-alpha01

Artifact androidx.media3:media3-exoplayer:1.5.0-alpha01 it located at Google repository (https://maven.google.com/)

Overview

A source of allocations.

Summary

Methods
public Allocationallocate()

Obtain an Allocation.

public intgetIndividualAllocationLength()

Returns the length of each individual Allocation.

public intgetTotalBytesAllocated()

Returns the total number of bytes currently allocated.

public voidrelease(Allocation allocation)

Releases an Allocation back to the allocator.

public voidrelease(Allocator.AllocationNode allocationNode)

Releases all Allocations in the chain starting at the given Allocator.AllocationNode.

public voidtrim()

Hints to the allocator that it should make a best effort to release any excess Allocations.

Methods

public Allocation allocate()

Obtain an Allocation.

When the caller has finished with the Allocation, it should be returned by calling Allocator.release(Allocation).

Returns:

The Allocation.

public void release(Allocation allocation)

Releases an Allocation back to the allocator.

Parameters:

allocation: The Allocation being released.

public void release(Allocator.AllocationNode allocationNode)

Releases all Allocations in the chain starting at the given Allocator.AllocationNode.

Implementations must not make memory allocations.

public void trim()

Hints to the allocator that it should make a best effort to release any excess Allocations.

public int getTotalBytesAllocated()

Returns the total number of bytes currently allocated.

public int getIndividualAllocationLength()

Returns the length of each individual Allocation.

Source

/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package androidx.media3.exoplayer.upstream;

import androidx.annotation.Nullable;
import androidx.media3.common.util.UnstableApi;

/** A source of allocations. */
@UnstableApi
public interface Allocator {

  /** A node in a chain of {@link Allocation Allocations}. */
  interface AllocationNode {

    /** Returns the {@link Allocation} associated to this chain node. */
    Allocation getAllocation();

    /** Returns the next chain node, or {@code null} if this is the last node in the chain. */
    @Nullable
    AllocationNode next();
  }

  /**
   * Obtain an {@link Allocation}.
   *
   * <p>When the caller has finished with the {@link Allocation}, it should be returned by calling
   * {@link #release(Allocation)}.
   *
   * @return The {@link Allocation}.
   */
  Allocation allocate();

  /**
   * Releases an {@link Allocation} back to the allocator.
   *
   * @param allocation The {@link Allocation} being released.
   */
  void release(Allocation allocation);

  /**
   * Releases all {@link Allocation Allocations} in the chain starting at the given {@link
   * AllocationNode}.
   *
   * <p>Implementations must not make memory allocations.
   */
  void release(AllocationNode allocationNode);

  /**
   * Hints to the allocator that it should make a best effort to release any excess {@link
   * Allocation Allocations}.
   */
  void trim();

  /** Returns the total number of bytes currently allocated. */
  int getTotalBytesAllocated();

  /** Returns the length of each individual {@link Allocation}. */
  int getIndividualAllocationLength();
}