# Id3Decoder

Artifact: [androidx.media3:media3-extractor](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/extractor/metadata/id3/Id3Decoder.java+class:androidx.media3.extractor.metadata.id3.Id3Decoder)

*** ** * ** ***


```
@UnstableApi
class Id3Decoder : SimpleMetadataDecoder
```

<br />

|---|---|---|
| [kotlin.Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html) |||
| ↳ | [androidx.media3.extractor.metadata.SimpleMetadataDecoder](https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/SimpleMetadataDecoder) ||
|   | ↳ | [androidx.media3.extractor.metadata.id3.Id3Decoder](https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder) |

*** ** * ** ***

Decodes ID3 tags.

## Summary

| ### Nested types |
|---|
| `interface https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder.FramePredicate` A predicate for determining whether individual frames should be decoded. |

| ### Constants |
|---|---|
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder#ID3_HEADER_LENGTH() = 10` Length of an ID3 tag header. |
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder#ID3_TAG() = 4801587` The first three bytes of a well formed ID3 tag header. |
| `const https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder.FramePredicate!` | `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder#NO_ARTWORK_PREDICATE()` A predicate that indicates artwork frames should not be decoded. |
| `const https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder.FramePredicate!` | `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder#NO_FRAMES_PREDICATE()` A predicate that indicates no frames should be decoded. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder#Id3Decoder()()` |
| `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder#Id3Decoder(androidx.media3.extractor.metadata.id3.Id3Decoder.FramePredicate)(framePredicate: https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder.FramePredicate?)` |

| ### Public functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Metadata?` | `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder#decode(byte[],int)(data: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte/index.html>!, size: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Decodes ID3 tags. |
| `java-static https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder#isSupportedMajorVersion(int)(majorVersion: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Returns whether the given major version number is supported by `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder`. |

| ### Protected functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Metadata?` | `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder#decode(androidx.media3.extractor.metadata.MetadataInputBuffer,java.nio.ByteBuffer)(inputBuffer: https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/MetadataInputBuffer!, buffer: https://developer.android.com/reference/java/nio/ByteBuffer.html!)` Called by `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/SimpleMetadataDecoder#decode(androidx.media3.extractor.metadata.MetadataInputBuffer)` after input buffer validation has been performed. |

### Inherited functions

From [androidx.media3.extractor.metadata.SimpleMetadataDecoder](https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/SimpleMetadataDecoder) `https://developer.android.com/reference/kotlin/androidx/media3/common/Metadata?` `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/SimpleMetadataDecoder#decode(androidx.media3.extractor.metadata.MetadataInputBuffer)(inputBuffer: https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/MetadataInputBuffer!)`

Decodes a `https://developer.android.com/reference/kotlin/androidx/media3/common/Metadata` element from the provided input buffer.

## Constants

### ID3_HEADER_LENGTH

```
const val ID3_HEADER_LENGTH = 10: Int
```

Length of an ID3 tag header.

### ID3_TAG

```
const val ID3_TAG = 4801587: Int
```

The first three bytes of a well formed ID3 tag header.

### NO_ARTWORK_PREDICATE

```
const val NO_ARTWORK_PREDICATE: Id3Decoder.FramePredicate!
```

A predicate that indicates artwork frames should not be decoded.

### NO_FRAMES_PREDICATE

```
const val NO_FRAMES_PREDICATE: Id3Decoder.FramePredicate!
```

A predicate that indicates no frames should be decoded.

## Public constructors

### Id3Decoder

```
Id3Decoder()
```

### Id3Decoder

```
Id3Decoder(framePredicate: Id3Decoder.FramePredicate?)
```

| Parameters |
|---|---|
| `framePredicate: https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder.FramePredicate?` | Determines which frames are decoded. May be null to decode all frames. |

## Public functions

### decode

```
fun decode(data: ByteArray<Byte>!, size: Int): Metadata?
```

Decodes ID3 tags.

| Parameters |
|---|---|
| `data: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte/index.html>!` | The bytes to decode ID3 tags from. |
| `size: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | Amount of bytes in `data` to read. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Metadata?` | A `https://developer.android.com/reference/kotlin/androidx/media3/common/Metadata` object containing the decoded ID3 tags, or null if the data could not be decoded. |

### isSupportedMajorVersion

```
java-static fun isSupportedMajorVersion(majorVersion: Int): Boolean
```

Returns whether the given major version number is supported by `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/id3/Id3Decoder`.

| Parameters |
|---|---|
| `majorVersion: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The ID3v2 major version number. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether the major version is supported (ID3v2.2, ID3v2.3, or ID3v2.4). |

## Protected functions

### decode

```
protected fun decode(inputBuffer: MetadataInputBuffer!, buffer: ByteBuffer!): Metadata?
```

Called by `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/SimpleMetadataDecoder#decode(androidx.media3.extractor.metadata.MetadataInputBuffer)` after input buffer validation has been performed.

| Parameters |
|---|---|
| `inputBuffer: https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/MetadataInputBuffer!` | The input buffer to decode. |
| `buffer: https://developer.android.com/reference/java/nio/ByteBuffer.html!` | The input buffer's `https://developer.android.com/reference/kotlin/androidx/media3/decoder/DecoderInputBuffer#data()`, for convenience. Validation by `https://developer.android.com/reference/kotlin/androidx/media3/extractor/metadata/SimpleMetadataDecoder#decode(androidx.media3.extractor.metadata.MetadataInputBuffer)` guarantees that `https://developer.android.com/reference/java/nio/ByteBuffer.html#hasArray()`, `https://developer.android.com/reference/java/nio/Buffer.html#position()` and `https://developer.android.com/reference/java/nio/ByteBuffer.html#arrayOffset()` are `true`, `0` and `0` respectively. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Metadata?` | The decoded metadata object, or `null` if the metadata could not be decoded. |