public final class

IcyInfo

extends java.lang.Object

implements Metadata.Entry

 java.lang.Object

↳androidx.media3.extractor.metadata.icy.IcyInfo

Gradle dependencies

compile group: 'androidx.media3', name: 'media3-extractor', version: '1.0.0-alpha03'

  • groupId: androidx.media3
  • artifactId: media3-extractor
  • version: 1.0.0-alpha03

Artifact androidx.media3:media3-extractor:1.0.0-alpha03 it located at Google repository (https://maven.google.com/)

Overview

ICY in-stream information.

Summary

Fields
public static final <any>CREATOR

public final byte[]rawMetadata

The complete metadata bytes used to construct this IcyInfo.

public final java.lang.Stringtitle

The stream title if present and decodable, or null.

public final java.lang.Stringurl

The stream URL if present and decodable, or null.

Constructors
publicIcyInfo(byte[] rawMetadata[], java.lang.String title, java.lang.String url)

Construct a new IcyInfo from the source metadata, and optionally a StreamTitle and StreamUrl that have been extracted.

Methods
public intdescribeContents()

public booleanequals(java.lang.Object obj)

public inthashCode()

public voidpopulateMediaMetadata(MediaMetadata.Builder builder)

public java.lang.StringtoString()

public voidwriteToParcel(Parcel dest, int flags)

from java.lang.Objectclone, finalize, getClass, notify, notifyAll, wait, wait, wait

Fields

public final byte[] rawMetadata

The complete metadata bytes used to construct this IcyInfo.

public final java.lang.String title

The stream title if present and decodable, or null.

public final java.lang.String url

The stream URL if present and decodable, or null.

public static final <any> CREATOR

Constructors

public IcyInfo(byte[] rawMetadata[], java.lang.String title, java.lang.String url)

Construct a new IcyInfo from the source metadata, and optionally a StreamTitle and StreamUrl that have been extracted.

Parameters:

rawMetadata: See IcyInfo.rawMetadata.
title: See IcyInfo.title.
url: See IcyInfo.url.

Methods

public void populateMediaMetadata(MediaMetadata.Builder builder)

public boolean equals(java.lang.Object obj)

public int hashCode()

public java.lang.String toString()

public void writeToParcel(Parcel dest, int flags)

public int describeContents()

Source

/*
 * Copyright (C) 2018 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.extractor.metadata.icy;

import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.Nullable;
import androidx.media3.common.MediaMetadata;
import androidx.media3.common.Metadata;
import androidx.media3.common.util.Assertions;
import androidx.media3.common.util.UnstableApi;
import java.util.Arrays;

/** ICY in-stream information. */
@UnstableApi
public final class IcyInfo implements Metadata.Entry {

  /** The complete metadata bytes used to construct this IcyInfo. */
  public final byte[] rawMetadata;
  /** The stream title if present and decodable, or {@code null}. */
  @Nullable public final String title;
  /** The stream URL if present and decodable, or {@code null}. */
  @Nullable public final String url;

  /**
   * Construct a new IcyInfo from the source metadata, and optionally a StreamTitle and StreamUrl
   * that have been extracted.
   *
   * @param rawMetadata See {@link #rawMetadata}.
   * @param title See {@link #title}.
   * @param url See {@link #url}.
   */
  public IcyInfo(byte[] rawMetadata, @Nullable String title, @Nullable String url) {
    this.rawMetadata = rawMetadata;
    this.title = title;
    this.url = url;
  }

  /* package */ IcyInfo(Parcel in) {
    rawMetadata = Assertions.checkNotNull(in.createByteArray());
    title = in.readString();
    url = in.readString();
  }

  @Override
  public void populateMediaMetadata(MediaMetadata.Builder builder) {
    if (title != null) {
      builder.setTitle(title);
    }
  }

  @Override
  public boolean equals(@Nullable Object obj) {
    if (this == obj) {
      return true;
    }
    if (obj == null || getClass() != obj.getClass()) {
      return false;
    }
    IcyInfo other = (IcyInfo) obj;
    // title & url are derived from rawMetadata, so no need to include them in the comparison.
    return Arrays.equals(rawMetadata, other.rawMetadata);
  }

  @Override
  public int hashCode() {
    // title & url are derived from rawMetadata, so no need to include them in the hash.
    return Arrays.hashCode(rawMetadata);
  }

  @Override
  public String toString() {
    return String.format(
        "ICY: title=\"%s\", url=\"%s\", rawMetadata.length=\"%s\"", title, url, rawMetadata.length);
  }

  // Parcelable implementation.

  @Override
  public void writeToParcel(Parcel dest, int flags) {
    dest.writeByteArray(rawMetadata);
    dest.writeString(title);
    dest.writeString(url);
  }

  @Override
  public int describeContents() {
    return 0;
  }

  public static final Parcelable.Creator<IcyInfo> CREATOR =
      new Parcelable.Creator<IcyInfo>() {

        @Override
        public IcyInfo createFromParcel(Parcel in) {
          return new IcyInfo(in);
        }

        @Override
        public IcyInfo[] newArray(int size) {
          return new IcyInfo[size];
        }
      };
}