package v4lk.lwbd.decoders.processing.jflac;

/**
 * libFLAC - Free Lossless Audio Codec library
 * Copyright (C) 2000,2001,2002,2003  Josh Coalson
 * <p>
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 * <p>
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 * <p>
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA  02111-1307, USA.
 */

public class Constants {

    /**
     * The maximum number of audio channels.
     */
    public static final int MAX_CHANNELS = 8;

    /**
     * The maximum frame block size.
     */
    public static final int MAX_BLOCK_SIZE = 65535;

    /**
     * The maximum Rice partition order permitted by the format.
     */
    public static final int MAX_RICE_PARTITION_ORDER = 15;

    /**
     * independent channels.
     */
    public static final int CHANNEL_ASSIGNMENT_INDEPENDENT = 0;
    /**
     * left+side stereo.
     */
    public static final int CHANNEL_ASSIGNMENT_LEFT_SIDE = 1;
    /**
     * right+side stereo.
     */
    public static final int CHANNEL_ASSIGNMENT_RIGHT_SIDE = 2;
    /**
     * mid+side stereo.
     */
    public static final int CHANNEL_ASSIGNMENT_MID_SIDE = 3;

    /**
     * FLAC Stream Sync string.
     */
    public static final byte[] STREAM_SYNC_STRING = new byte[]{(byte) 'f', (byte) 'L', (byte) 'a', (byte) 'C'};


        /*
    boolean format_sample_rate_is_valid(int sample_rate) {
        if (sample_rate == 0
            || sample_rate > MAX_SAMPLE_RATE
            || (sample_rate >= (1 << 16) && !(sample_rate % 1000 == 0 || sample_rate % 10 == 0))) {
            return false;
        } else
            return true;
    }
    */

    /*
     * These routines are private to libFLAC
     */
        /*
    int format_get_max_rice_partition_order(int blocksize, int predictor_order) {
        return format_get_max_rice_partition_order_from_blocksize_limited_max_and_predictor_order(
            format_get_max_rice_partition_order_from_blocksize(blocksize),
            blocksize,
            predictor_order);
    }

    int format_get_max_rice_partition_order_from_blocksize(int blocksize) {
        int max_rice_partition_order = 0;
        while ((blocksize & 1) == 0) {
            max_rice_partition_order++;
            blocksize >>= 1;
        }
        return Math.min(MAX_RICE_PARTITION_ORDER, max_rice_partition_order);
    }

    int format_get_max_rice_partition_order_from_blocksize_limited_max_and_predictor_order(
        int limit,
        int blocksize,
        int predictor_order) {
        int max_rice_partition_order = limit;

        while (max_rice_partition_order > 0 && (blocksize >> max_rice_partition_order) <= predictor_order)
            max_rice_partition_order--;

        return max_rice_partition_order;
    }
    */
}
