Class FlacMetadataReader

    • Method Detail

      • peekId3Metadata

        @Nullable
        public static Metadata peekId3Metadata​(ExtractorInput input,
                                               boolean parseData)
                                        throws IOException
        Peeks ID3 Data.
        Parameters:
        input - Input stream to peek the ID3 data from.
        parseData - Whether to parse the ID3 frames.
        Returns:
        The parsed ID3 data, or null if there is no such data or if parseData is false.
        Throws:
        IOException - If peeking from the input fails. In this case, there is no guarantee on the peek position.
      • checkAndPeekStreamMarker

        public static boolean checkAndPeekStreamMarker​(ExtractorInput input)
                                                throws IOException
        Peeks the FLAC stream marker.
        Parameters:
        input - Input stream to peek the stream marker from.
        Returns:
        Whether the data peeked is the FLAC stream marker.
        Throws:
        IOException - If peeking from the input fails. In this case, the peek position is left unchanged.
      • readId3Metadata

        @Nullable
        public static Metadata readId3Metadata​(ExtractorInput input,
                                               boolean parseData)
                                        throws IOException
        Reads ID3 Data.

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

        Parameters:
        input - Input stream to read the ID3 data from.
        parseData - Whether to parse the ID3 frames.
        Returns:
        The parsed ID3 data, or null if there is no such data or if parseData is false.
        Throws:
        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.
      • readStreamMarker

        public static void readStreamMarker​(ExtractorInput input)
                                     throws IOException
        Reads the FLAC stream marker.
        Parameters:
        input - Input stream to read the stream marker from.
        Throws:
        ParserException - If an error occurs parsing the stream marker. In this case, the position of input is advanced by FlacConstants.STREAM_MARKER_SIZE bytes.
        IOException - If reading from the input fails. In this case, the position is left unchanged.
      • readMetadataBlock

        public static boolean readMetadataBlock​(ExtractorInput input,
                                                FlacMetadataReader.FlacStreamMetadataHolder metadataHolder)
                                         throws IOException
        Reads one FLAC metadata block.

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

        Parameters:
        input - Input stream to read the metadata block from (header included).
        metadataHolder - 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:
        Whether the block read is the last metadata block.
        Throws:
        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.
        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

        public static FlacStreamMetadata.SeekTable readSeekTableMetadataBlock​(ParsableByteArray data)
        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 - The array to read the data from, whose position must correspond to the seek table metadata block (header included).
        Returns:
        The seek table, without the placeholder points.
      • getFrameStartMarker

        public static int getFrameStartMarker​(ExtractorInput input)
                                       throws IOException
        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 - Input stream to get the start marker from (starting from the read position).
        Returns:
        The frame start marker (which must be the same for all the frames in the stream).
        Throws:
        ParserException - If an error occurs parsing the frame start marker.
        IOException - If peeking from the input fails.