FlacMetadataReader


@UnstableApi
class FlacMetadataReader


Reads and peeks FLAC stream metadata elements according to the FLAC format specification.

Summary

Public functions

java-static Boolean

Peeks the FLAC stream marker.

java-static Int

Returns the frame start marker, consisting of the 2 first bytes of the first frame.

java-static Metadata?
peekId3Metadata(input: ExtractorInput!, parseData: Boolean)

Peeks ID3 Data.

java-static Metadata?
readId3Metadata(input: ExtractorInput!, parseData: Boolean)

Reads ID3 Data.

java-static Boolean

Reads one FLAC metadata block.

java-static FlacStreamMetadata.SeekTable!

Reads a FLAC seek table metadata block.

java-static Unit

Reads the FLAC stream marker.

Public functions

checkAndPeekStreamMarker

java-static fun checkAndPeekStreamMarker(input: ExtractorInput!): Boolean

Peeks the FLAC stream marker.

Parameters
input: ExtractorInput!

Input stream to peek the stream marker from.

Returns
Boolean

Whether the data peeked is the FLAC stream marker.

Throws
java.io.IOException

If peeking from the input fails. In this case, the peek position is left unchanged.

getFrameStartMarker

java-static fun getFrameStartMarker(input: ExtractorInput!): Int

Returns the frame start marker, consisting of the 2 first bytes of the first frame.

The read position of input is left unchanged and the peek position is aligned with the read position.

Parameters
input: ExtractorInput!

Input stream to get the start marker from (starting from the read position).

Returns
Int

The frame start marker (which must be the same for all the frames in the stream).

Throws
androidx.media3.common.ParserException

If an error occurs parsing the frame start marker.

java.io.IOException

If peeking from the input fails.

peekId3Metadata

java-static fun peekId3Metadata(input: ExtractorInput!, parseData: Boolean): Metadata?

Peeks ID3 Data.

Parameters
input: ExtractorInput!

Input stream to peek the ID3 data from.

parseData: Boolean

Whether to parse the ID3 frames.

Returns
Metadata?

The parsed ID3 data, or null if there is no such data or if parseData is false.

Throws
java.io.IOException

If peeking from the input fails. In this case, there is no guarantee on the peek position.

readId3Metadata

java-static fun readId3Metadata(input: ExtractorInput!, parseData: Boolean): Metadata?

Reads ID3 Data.

If no exception is thrown, the peek position of input is aligned with the read position.

Parameters
input: ExtractorInput!

Input stream to read the ID3 data from.

parseData: Boolean

Whether to parse the ID3 frames.

Returns
Metadata?

The parsed ID3 data, or null if there is no such data or if parseData is false.

Throws
java.io.IOException

If reading from the input fails. In this case, the read position is left unchanged and there is no guarantee on the peek position.

readMetadataBlock

java-static fun readMetadataBlock(
    input: ExtractorInput!,
    metadataHolder: FlacMetadataReader.FlacStreamMetadataHolder!
): Boolean

Reads one FLAC metadata block.

If no exception is thrown, the peek position of input is aligned with the read position.

Parameters
input: ExtractorInput!

Input stream to read the metadata block from (header included).

metadataHolder: FlacMetadataReader.FlacStreamMetadataHolder!

A holder for the metadata read. If the stream info block (which must be the first metadata block) is read, the holder contains a new instance representing the stream info data. If the block read is a Vorbis comment block or a picture block, the holder contains a copy of the existing stream metadata with the corresponding metadata added. Otherwise, the metadata in the holder is unchanged.

Returns
Boolean

Whether the block read is the last metadata block.

Throws
java.lang.IllegalArgumentException

If the block read is not a stream info block and the metadata in metadataHolder is null. In this case, the read position will be at the start of a metadata block and there is no guarantee on the peek position.

java.io.IOException

If reading from the input fails. In this case, the read position will be at the start of a metadata block and there is no guarantee on the peek position.

readSeekTableMetadataBlock

java-static fun readSeekTableMetadataBlock(data: ParsableByteArray!): FlacStreamMetadata.SeekTable!

Reads a FLAC seek table metadata block.

The position of data is moved to the byte following the seek table metadata block (placeholder points included).

Parameters
data: ParsableByteArray!

The array to read the data from, whose position must correspond to the seek table metadata block (header included).

Returns
FlacStreamMetadata.SeekTable!

The seek table, without the placeholder points.

readStreamMarker

java-static fun readStreamMarker(input: ExtractorInput!): Unit

Reads the FLAC stream marker.

Parameters
input: ExtractorInput!

Input stream to read the stream marker from.

Throws
androidx.media3.common.ParserException

If an error occurs parsing the stream marker. In this case, the position of input is advanced by STREAM_MARKER_SIZE bytes.

java.io.IOException

If reading from the input fails. In this case, the position is left unchanged.