Class FlacFrameReader

    • Method Detail

      • checkAndReadFrameHeader

        public static boolean checkAndReadFrameHeader​(ParsableByteArray data,
                                                      FlacStreamMetadata flacStreamMetadata,
                                                      int frameStartMarker,
                                                      FlacFrameReader.SampleNumberHolder sampleNumberHolder)
        Checks whether the given FLAC frame header is valid and, if so, reads it and writes the frame first sample number in sampleNumberHolder.

        If the header is valid, the position of data is moved to the byte following it. Otherwise, there is no guarantee on the position.

        Parameters:
        data - The array to read the data from, whose position must correspond to the frame header.
        flacStreamMetadata - The stream metadata.
        frameStartMarker - The frame start marker of the stream.
        sampleNumberHolder - The holder used to contain the sample number.
        Returns:
        Whether the frame header is valid.
      • checkFrameHeaderFromPeek

        public static boolean checkFrameHeaderFromPeek​(ExtractorInput input,
                                                       FlacStreamMetadata flacStreamMetadata,
                                                       int frameStartMarker,
                                                       FlacFrameReader.SampleNumberHolder sampleNumberHolder)
                                                throws IOException
        Checks whether the given FLAC frame header is valid and, if so, writes the frame first sample number in sampleNumberHolder.

        The input peek position is left unchanged.

        Parameters:
        input - The input to get the data from, whose peek position must correspond to the frame header.
        flacStreamMetadata - The stream metadata.
        frameStartMarker - The frame start marker of the stream.
        sampleNumberHolder - The holder used to contain the sample number.
        Returns:
        Whether the frame header is valid.
        Throws:
        IOException
      • getFirstSampleNumber

        public static long getFirstSampleNumber​(ExtractorInput input,
                                                FlacStreamMetadata flacStreamMetadata)
                                         throws IOException
        Returns the number of the first sample in the given frame.

        The read position of input is left unchanged.

        If no exception is thrown, the peek position is aligned with the read position. Otherwise, there is no guarantee on the peek position.

        Parameters:
        input - Input stream to get the sample number from (starting from the read position).
        Returns:
        The frame first sample number.
        Throws:
        ParserException - If an error occurs parsing the sample number.
        IOException - If peeking from the input fails.
      • readFrameBlockSizeSamplesFromKey

        public static int readFrameBlockSizeSamplesFromKey​(ParsableByteArray data,
                                                           int blockSizeKey)
        Reads the given block size.
        Parameters:
        data - The array to read the data from, whose position must correspond to the block size bits.
        blockSizeKey - The key in the block size lookup table.
        Returns:
        The block size in samples, or -1 if the blockSizeKey is invalid.