diff --git a/audio/libdca/Makefile b/audio/libdca/Makefile index 611f48e7987..3440d19d7d8 100644 --- a/audio/libdca/Makefile +++ b/audio/libdca/Makefile @@ -1,14 +1,16 @@ -# $OpenBSD: Makefile,v 1.5 2010/10/18 16:52:45 espie Exp $ +# $OpenBSD: Makefile,v 1.6 2012/05/15 16:17:27 ajacoutot Exp $ + +COMMENT= free DTS Coherent Acoustics decoder -COMMENT= free library for decoding DTS Coherent Acoustics streams V= 0.0.5 DISTNAME= libdca-${V} -REVISION= 1 +REVISION= 2 EXTRACT_SUFX= .tar.bz2 -SHARED_LIBS= dca 0.0 CATEGORIES= audio MASTER_SITES= http://download.videolan.org/pub/videolan/libdca/${V}/ +SHARED_LIBS= dca 0.0 + HOMEPAGE= http://www.videolan.org/developers/libdca.html # GPLv2 @@ -17,10 +19,9 @@ PERMIT_DISTFILES_FTP= Yes PERMIT_PACKAGE_CDROM= Yes PERMIT_PACKAGE_FTP= Yes -WANTLIB += c m ossaudio +WANTLIB= c m ossaudio USE_LIBTOOL= Yes -USE_GROFF = Yes -CONFIGURE_STYLE=gnu +CONFIGURE_STYLE= gnu .include diff --git a/audio/libdca/patches/patch-libdca_bitstream_c b/audio/libdca/patches/patch-libdca_bitstream_c new file mode 100644 index 00000000000..692b531d867 --- /dev/null +++ b/audio/libdca/patches/patch-libdca_bitstream_c @@ -0,0 +1,43 @@ +$OpenBSD: patch-libdca_bitstream_c,v 1.1 2012/05/15 16:17:27 ajacoutot Exp $ + +Fix random crashes caused by invalid 32-bit shifts on 32-bit values. + +--- libdca/bitstream.c.orig Mon May 14 22:43:16 2012 ++++ libdca/bitstream.c Mon May 14 22:43:23 2012 +@@ -25,6 +25,7 @@ + + #include "config.h" + ++#include + #include + + #include "dca.h" +@@ -46,7 +47,7 @@ void dca_bitstream_init (dca_state_t * state, uint8_t + state->bigendian_mode = bigendian_mode; + bitstream_get (state, align * 8); + } +-#include ++ + static inline void bitstream_fill_current (dca_state_t * state) + { + uint32_t tmp; +@@ -76,12 +77,14 @@ static inline void bitstream_fill_current (dca_state_t + + uint32_t dca_bitstream_get_bh (dca_state_t * state, uint32_t num_bits) + { +- uint32_t result; ++ uint32_t result = 0; + +- num_bits -= state->bits_left; +- +- result = ((state->current_word << (32 - state->bits_left)) >> +- (32 - state->bits_left)); ++ if (state->bits_left) ++ { ++ num_bits -= state->bits_left; ++ result = ((state->current_word << (32 - state->bits_left)) >> ++ (32 - state->bits_left)); ++ } + + if ( !state->word_mode && num_bits > 28 ) { + bitstream_fill_current (state); diff --git a/audio/libdca/patches/patch-libdca_parse_c b/audio/libdca/patches/patch-libdca_parse_c new file mode 100644 index 00000000000..290cd011522 --- /dev/null +++ b/audio/libdca/patches/patch-libdca_parse_c @@ -0,0 +1,168 @@ +$OpenBSD: patch-libdca_parse_c,v 1.1 2012/05/15 16:17:27 ajacoutot Exp $ + +- Mark tables as static constants. +- Change output normalisation factor from 3/2 to sqrt(2). +- Sanity check for subframes and prim_channels to avoid crashes with invalid streams. +- Avoid crashing with invalid frames setting a bitalloc_huffman component to 7. + +--- libdca/parse.c.orig Mon May 14 22:44:48 2012 ++++ libdca/parse.c Mon May 14 22:44:53 2012 +@@ -59,12 +59,11 @@ void * memalign (size_t align, size_t size); + static int decode_blockcode (int code, int levels, int *values); + + static void qmf_32_subbands (dca_state_t * state, int chans, +- double samples_in[32][8], sample_t *samples_out, +- double rScale, sample_t bias); ++ double samples_in[32][8], sample_t *samples_out); + + static void lfe_interpolation_fir (int nDecimationSelect, int nNumDeciSample, + double *samples_in, sample_t *samples_out, +- double rScale, sample_t bias ); ++ sample_t bias); + + static void pre_calc_cosmod( dca_state_t * state ); + +@@ -123,7 +122,9 @@ static int syncinfo (dca_state_t * state, int * flags, + bitstream_get (state, 1); + + *frame_length = (bitstream_get (state, 7) + 1) * 32; ++ if (*frame_length < 6 * 32) return 0; + frame_size = bitstream_get (state, 14) + 1; ++ if (frame_size < 96) return 0; + if (!state->word_mode) frame_size = frame_size * 8 / 14 * 2; + + /* Audio channel arrangement */ +@@ -304,8 +305,15 @@ int dca_frame (dca_state_t * state, uint8_t * buf, int + + /* Primary audio coding header */ + state->subframes = bitstream_get (state, 4) + 1; ++ ++ if (state->subframes > DCA_SUBFRAMES_MAX) ++ state->subframes = DCA_SUBFRAMES_MAX; ++ + state->prim_channels = bitstream_get (state, 3) + 1; + ++ if (state->prim_channels > DCA_PRIM_CHANNELS_MAX) ++ state->prim_channels = DCA_PRIM_CHANNELS_MAX; ++ + #ifdef DEBUG + fprintf (stderr, "subframes: %i\n", state->subframes); + fprintf (stderr, "prim channels: %i\n", state->prim_channels); +@@ -356,7 +364,10 @@ int dca_frame (dca_state_t * state, uint8_t * buf, int + for (i = 0; i < state->prim_channels; i++) + { + state->bitalloc_huffman[i] = bitstream_get (state, 3); +- /* if (state->bitalloc_huffman[i] == 7) bailout */ ++ /* There might be a way not to trash the whole frame, but for ++ * now we must bail out or we will buffer overflow later. */ ++ if (state->bitalloc_huffman[i] == 7) ++ return 1; + #ifdef DEBUG + fprintf (stderr, "bit allocation quantizer: %i\n", + state->bitalloc_huffman[i]); +@@ -533,6 +544,7 @@ static int dca_subframe_header (dca_state_t * state) + k < state->vq_start_subband[j] && + state->bitalloc[j][k] > 0) + { ++ /* tmode cannot overflow since transient_huffman[j] < 4 */ + state->transition_mode[j][k] = InverseQ (state, + tmode[state->transient_huffman[j]]); + } +@@ -548,7 +560,7 @@ static int dca_subframe_header (dca_state_t * state) + /* Scale factors */ + for (j = 0; j < state->prim_channels; j++) + { +- int *scale_table; ++ const int *scale_table; + int scale_sum; + + for (k = 0; k < state->subband_activity[j]; k++) +@@ -761,7 +773,7 @@ static int dca_subsubframe (dca_state_t * state) + int k, l; + int subsubframe = state->current_subsubframe; + +- double *quant_step_table; ++ const double *quant_step_table; + + /* FIXME */ + double subband_samples[DCA_PRIM_CHANNELS_MAX][DCA_SUBBANDS][8]; +@@ -981,14 +993,7 @@ static int dca_subsubframe (dca_state_t * state) + /* 32 subbands QMF */ + for (k = 0; k < state->prim_channels; k++) + { +- /*static double pcm_to_float[8] = +- {32768.0, 32768.0, 524288.0, 524288.0, 0, 8388608.0, 8388608.0};*/ +- +- qmf_32_subbands (state, k, +- subband_samples[k], +- &state->samples[256*k], +- /*WTF ???*/ 32768.0*3/2/*pcm_to_float[state->source_pcm_res]*/, +- 0/*state->bias*/); ++ qmf_32_subbands (state, k, subband_samples[k], &state->samples[256*k]); + } + + /* Down/Up mixing */ +@@ -1000,6 +1005,10 @@ static int dca_subsubframe (dca_state_t * state) + { + dca_downmix (state->samples, state->amode, state->output, state->bias, + state->clev, state->slev); ++ } else if (state->bias) ++ { ++ for ( k = 0; k < 256*state->prim_channels; k++ ) ++ state->samples[k] += state->bias; + } + + /* Generate LFE samples for this subsubframe FIXME!!! */ +@@ -1011,8 +1020,7 @@ static int dca_subsubframe (dca_state_t * state) + lfe_interpolation_fir (state->lfe, 2 * state->lfe, + state->lfe_data + lfe_samples + + 2 * state->lfe * subsubframe, +- &state->samples[256*i_channels], +- 8388608.0, state->bias); ++ &state->samples[256*i_channels], state->bias); + /* Outputs 20bits pcm samples */ + } + +@@ -1142,10 +1150,10 @@ static void pre_calc_cosmod( dca_state_t * state ) + } + + static void qmf_32_subbands (dca_state_t * state, int chans, +- double samples_in[32][8], sample_t *samples_out, +- double scale, sample_t bias) ++ double samples_in[32][8], sample_t *samples_out) + { +- double *prCoeff; ++ static const double scale = 1.4142135623730951 /* sqrt(2) */ * 32768.0; ++ const double *prCoeff; + int i, j, k; + double raXin[32]; + +@@ -1211,7 +1219,7 @@ static void qmf_32_subbands (dca_state_t * state, int + + /* Create 32 PCM output samples */ + for (i=0;i<32;i++) +- samples_out[nChIndex++] = subband_fir_hist2[i] / scale + bias; ++ samples_out[nChIndex++] = subband_fir_hist2[i] / scale; + + /* Update working arrays */ + for (i=511;i>=32;i--) +@@ -1225,7 +1233,7 @@ static void qmf_32_subbands (dca_state_t * state, int + + static void lfe_interpolation_fir (int nDecimationSelect, int nNumDeciSample, + double *samples_in, sample_t *samples_out, +- double scale, sample_t bias) ++ sample_t bias) + { + /* samples_in: An array holding decimated samples. + * Samples in current subframe starts from samples_in[0], +@@ -1235,8 +1243,9 @@ static void lfe_interpolation_fir (int nDecimationSele + * samples_out: An array holding interpolated samples + */ + ++ static const double scale = 8388608.0; + int nDeciFactor, k, J; +- double *prCoeff; ++ const double *prCoeff; + + int NumFIRCoef = 512; /* Number of FIR coefficients */ + int nInterpIndex = 0; /* Index to the interpolated samples */ diff --git a/audio/libdca/patches/patch-libdca_tables_fir_h b/audio/libdca/patches/patch-libdca_tables_fir_h new file mode 100644 index 00000000000..289b1a61c33 --- /dev/null +++ b/audio/libdca/patches/patch-libdca_tables_fir_h @@ -0,0 +1,42 @@ +$OpenBSD: patch-libdca_tables_fir_h,v 1.1 2012/05/15 16:17:27 ajacoutot Exp $ + +Mark tables as static constants. + +--- libdca/tables_fir.h.orig Mon May 14 22:50:58 2012 ++++ libdca/tables_fir.h Mon May 14 22:51:17 2012 +@@ -21,7 +21,7 @@ + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +-double fir_32bands_perfect[] = ++static const double fir_32bands_perfect[] = + { + +1.135985195E-010, + -6.022448247E-007, +@@ -537,7 +537,7 @@ double fir_32bands_perfect[] = + -1.135985195E-010 + }; + +-double fir_32bands_nonperfect[] = ++static const double fir_32bands_nonperfect[] = + { + -1.390191784E-007, + -1.693738625E-007, +@@ -1053,7 +1053,7 @@ double fir_32bands_nonperfect[] = + +1.390191784E-007 + }; + +-double lfe_fir_64[] = ++static const double lfe_fir_64[] = + { + 2.6584343868307770E-004, + 8.1793652498163280E-005, +@@ -1569,7 +1569,7 @@ double lfe_fir_64[] = + 2.6584343868307770E-004 + }; + +-double lfe_fir_128[] = ++static const double lfe_fir_128[] = + { + 0.00053168571, + 0.00016358691, diff --git a/audio/libdca/patches/patch-libdca_tables_huffman_h b/audio/libdca/patches/patch-libdca_tables_huffman_h new file mode 100644 index 00000000000..a279741cf06 --- /dev/null +++ b/audio/libdca/patches/patch-libdca_tables_huffman_h @@ -0,0 +1,583 @@ +$OpenBSD: patch-libdca_tables_huffman_h,v 1.1 2012/05/15 16:17:27 ajacoutot Exp $ + +Mark tables as static constants. + +--- libdca/tables_huffman.h.orig Mon May 14 22:51:30 2012 ++++ libdca/tables_huffman.h Mon May 14 22:51:35 2012 +@@ -29,7 +29,7 @@ typedef struct huff_entry_s + + } huff_entry_t; + +-huff_entry_t bitalloc_a_12[] = ++static const huff_entry_t bitalloc_a_12[] = + { + { 1, 0, 1}, { 2, 2, 2}, { 3, 6, 3}, { 4, 14, 4}, + { 5, 30, 5}, { 6, 62, 6}, { 8, 255, 7}, { 8, 254, 8}, +@@ -37,7 +37,7 @@ huff_entry_t bitalloc_a_12[] = + { 0, 0, 0} + }; + +-huff_entry_t bitalloc_b_12[] = ++static const huff_entry_t bitalloc_b_12[] = + { + { 1, 1, 1}, { 2, 0, 2}, { 3, 2, 3}, { 5, 15, 4}, + { 5, 12, 5}, { 6, 29, 6}, { 7, 57, 7}, { 7, 56, 8}, +@@ -45,7 +45,7 @@ huff_entry_t bitalloc_b_12[] = + { 0, 0, 0} + }; + +-huff_entry_t bitalloc_c_12[] = ++static const huff_entry_t bitalloc_c_12[] = + { + { 2, 0, 1}, { 3, 7, 2}, { 3, 5, 3}, { 3, 4, 4}, + { 3, 2, 5}, { 4, 13, 6}, { 4, 12, 7}, { 4, 6, 8}, +@@ -53,7 +53,7 @@ huff_entry_t bitalloc_c_12[] = + { 0, 0, 0} + }; + +-huff_entry_t bitalloc_d_12[] = ++static const huff_entry_t bitalloc_d_12[] = + { + { 2, 3, 1}, { 2, 2, 2}, { 2, 0, 3}, { 3, 2, 4}, + { 4, 6, 5}, { 5, 14, 6}, { 6, 30, 7}, { 7, 62, 8}, +@@ -61,7 +61,7 @@ huff_entry_t bitalloc_d_12[] = + { 0, 0, 0} + }; + +-huff_entry_t bitalloc_e_12[] = ++static const huff_entry_t bitalloc_e_12[] = + { + { 1, 1, 1}, { 2, 0, 2}, { 3, 2, 3}, { 4, 6, 4}, + { 5, 14, 5}, { 7, 63, 6}, { 7, 61, 7}, { 8, 124, 8}, +@@ -69,7 +69,7 @@ huff_entry_t bitalloc_e_12[] = + { 0, 0, 0} + }; + +-huff_entry_t *bitalloc_12[] = ++static const huff_entry_t *const bitalloc_12[] = + { + bitalloc_a_12, + bitalloc_b_12, +@@ -78,7 +78,7 @@ huff_entry_t *bitalloc_12[] = + bitalloc_e_12 + }; + +-huff_entry_t scales_a_129[] = ++static const huff_entry_t scales_a_129[] = + { + { 2, 1, 0}, { 3, 6, 1}, { 3, 5, -1}, { 3, 0, 2}, + { 4, 15, -2}, { 4, 8, 3}, { 4, 3, -3}, { 5, 28, 4}, +@@ -115,7 +115,7 @@ huff_entry_t scales_a_129[] = + {14, 15024,-64}, { 0, 0, 0} + }; + +-huff_entry_t scales_b_129[] = ++static const huff_entry_t scales_b_129[] = + { + { 3, 3, 0}, { 3, 2, 1}, { 3, 1, -1}, { 4, 15, 2}, + { 4, 14, -2}, { 4, 12, 3}, { 4, 11, -3}, { 4, 10, 4}, +@@ -152,7 +152,7 @@ huff_entry_t scales_b_129[] = + {15, 3936,-64}, { 0, 0, 0} + }; + +-huff_entry_t scales_c_129[] = ++static const huff_entry_t scales_c_129[] = + { + { 3, 4, 0}, { 3, 1, 1}, { 3, 0, -1}, { 4, 13, 2}, + { 4, 12, -2}, { 4, 7, 3}, { 4, 6, -3}, { 5, 31, 4}, +@@ -189,7 +189,7 @@ huff_entry_t scales_c_129[] = + {15, 20944,-64}, { 0, 0, 0} + }; + +-huff_entry_t scales_d_129[] = ++static const huff_entry_t scales_d_129[] = + { + { 2, 0, 0}, { 3, 5, 1}, { 3, 4, -1}, { 4, 15, 2}, + { 4, 14, -2}, { 4, 7, 3}, { 4, 6, -3}, { 5, 26, 4}, +@@ -226,7 +226,7 @@ huff_entry_t scales_d_129[] = + {15, 28516,-64}, { 0, 0, 0} + }; + +-huff_entry_t scales_e_129[] = ++static const huff_entry_t scales_e_129[] = + { + { 4, 14, 0}, { 4, 11, 1}, { 4, 10, -1}, { 4, 7, 2}, + { 4, 6, -2}, { 4, 3, 3}, { 4, 2, -3}, { 5, 31, 4}, +@@ -263,7 +263,7 @@ huff_entry_t scales_e_129[] = + {16, 57172,-64}, { 0, 0, 0} + }; + +-huff_entry_t *scales_129[] = ++static const huff_entry_t *const scales_129[] = + { + scales_a_129, + scales_b_129, +@@ -272,36 +272,36 @@ huff_entry_t *scales_129[] = + scales_e_129 + }; + +-huff_entry_t bitalloc_a_3[] = ++static const huff_entry_t bitalloc_a_3[] = + { + { 1, 0, 0}, { 2, 2, 1}, { 2, 3, -1}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_a_4[] = ++static const huff_entry_t bitalloc_a_4[] = + { + { 1, 0, 0}, { 2, 2, 1}, { 3, 6, 2}, { 3, 7, 3}, + { 0, 0, 0} + }; + +-huff_entry_t bitalloc_b_4[] = ++static const huff_entry_t bitalloc_b_4[] = + { + { 2, 2, 0}, { 3, 6, 1}, { 3, 7, 2}, { 1, 0, 3}, + { 0, 0, 0} + }; + +-huff_entry_t bitalloc_c_4[] = ++static const huff_entry_t bitalloc_c_4[] = + { + { 3, 6, 0}, { 3, 7, 1}, { 1, 0, 2}, { 2, 2, 3}, + { 0, 0, 0} + }; + +-huff_entry_t bitalloc_d_4[] = ++static const huff_entry_t bitalloc_d_4[] = + { + { 2, 0, 0}, { 2, 1, 1}, { 2, 2, 2}, { 2, 3, 3}, + { 0, 0, 0} + }; + +-huff_entry_t *tmode[] = ++static const huff_entry_t *const tmode[] = + { + bitalloc_a_4, + bitalloc_b_4, +@@ -309,64 +309,64 @@ huff_entry_t *tmode[] = + bitalloc_d_4 + }; + +-huff_entry_t bitalloc_a_5[] = ++static const huff_entry_t bitalloc_a_5[] = + { + { 1, 0, 0}, { 2, 2, 1}, { 3, 6, -1}, { 4, 14, 2}, + { 4, 15, -2}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_b_5[] = ++static const huff_entry_t bitalloc_b_5[] = + { + { 2, 2, 0}, { 2, 0, 1}, { 2, 1, -1}, { 3, 6, 2}, + { 3, 7, -2}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_c_5[] = ++static const huff_entry_t bitalloc_c_5[] = + { + { 1, 0, 0}, { 3, 4, 1}, { 3, 5, -1}, { 3, 6, 2}, + { 3, 7, -2}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_a_7[] = ++static const huff_entry_t bitalloc_a_7[] = + { + { 1, 0, 0}, { 3, 6, 1}, { 3, 5, -1}, { 3, 4, 2}, + { 4, 14, -2}, { 5, 31, 3}, { 5, 30, -3}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_b_7[] = ++static const huff_entry_t bitalloc_b_7[] = + { + { 2, 3, 0}, { 2, 1, 1}, { 2, 0, -1}, { 3, 4, 2}, + { 4, 11, -2}, { 5, 21, 3}, { 5, 20, -3}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_c_7[] = ++static const huff_entry_t bitalloc_c_7[] = + { + { 2, 3, 0}, { 2, 2, 1}, { 2, 1, -1}, { 4, 3, 2}, + { 4, 2, -2}, { 4, 1, 3}, { 4, 0, -3}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_a_9[] = ++static const huff_entry_t bitalloc_a_9[] = + { + { 1, 0, 0}, { 3, 7, 1}, { 3, 5, -1}, { 4, 13, 2}, + { 4, 9, -2}, { 4, 8, 3}, { 5, 25, -3}, { 6, 49, 4}, + { 6, 48, -4}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_b_9[] = ++static const huff_entry_t bitalloc_b_9[] = + { + { 2, 2, 0}, { 2, 0, 1}, { 3, 7, -1}, { 3, 3, 2}, + { 3, 2, -2}, { 5, 27, 3}, { 5, 26, -3}, { 5, 25, 4}, + { 5, 24, -4}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_c_9[] = ++static const huff_entry_t bitalloc_c_9[] = + { + { 2, 2, 0}, { 2, 0, 1}, { 3, 7, -1}, { 3, 6, 2}, + { 3, 2, -2}, { 4, 6, 3}, { 5, 15, -3}, { 6, 29, 4}, + { 6, 28, -4}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_a_13[] = ++static const huff_entry_t bitalloc_a_13[] = + { + { 1, 0, 0}, { 3, 4, 1}, { 4, 15, -1}, { 4, 13, 2}, + { 4, 12, -2}, { 4, 10, 3}, { 5, 29, -3}, { 5, 22, 4}, +@@ -374,7 +374,7 @@ huff_entry_t bitalloc_a_13[] = + { 7, 112, -6}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_b_13[] = ++static const huff_entry_t bitalloc_b_13[] = + { + { 2, 0, 0}, { 3, 6, 1}, { 3, 5, -1}, { 3, 2, 2}, + { 4, 15, -2}, { 4, 9, 3}, { 4, 7, -3}, { 4, 6, 4}, +@@ -382,7 +382,7 @@ huff_entry_t bitalloc_b_13[] = + { 6, 56, -6}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_c_13[] = ++static const huff_entry_t bitalloc_c_13[] = + { + { 3, 5, 0}, { 3, 4, 1}, { 3, 3, -1}, { 3, 2, 2}, + { 3, 0, -2}, { 4, 15, 3}, { 4, 14, -3}, { 4, 12, 4}, +@@ -390,7 +390,7 @@ huff_entry_t bitalloc_c_13[] = + { 5, 4, -6}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_a_17[] = ++static const huff_entry_t bitalloc_a_17[] = + { + { 2, 1, 0}, { 3, 7, 1}, { 3, 6, -1}, { 3, 4, 2}, + { 3, 1, -2}, { 4, 11, 3}, { 4, 10, -3}, { 4, 0, 4}, +@@ -399,7 +399,7 @@ huff_entry_t bitalloc_a_17[] = + {12, 340, -8}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_b_17[] = ++static const huff_entry_t bitalloc_b_17[] = + { + { 2, 0, 0}, { 3, 6, 1}, { 3, 5, -1}, { 3, 2, 2}, + { 4, 15, -2}, { 4, 9, 3}, { 4, 8, -3}, { 5, 29, 4}, +@@ -408,7 +408,7 @@ huff_entry_t bitalloc_b_17[] = + { 8, 124, -8}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_c_17[] = ++static const huff_entry_t bitalloc_c_17[] = + { + { 3, 6, 0}, { 3, 4, 1}, { 3, 3, -1}, { 3, 0, 2}, + { 4, 15, -2}, { 4, 11, 3}, { 4, 10, -3}, { 4, 4, 4}, +@@ -417,7 +417,7 @@ huff_entry_t bitalloc_c_17[] = + { 7, 44, -8}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_d_17[] = ++static const huff_entry_t bitalloc_d_17[] = + { + { 1, 0, 0}, { 3, 7, 1}, { 3, 6, -1}, { 4, 11, 2}, + { 4, 10, -2}, { 5, 19, 3}, { 5, 18, -3}, { 6, 35, 4}, +@@ -426,7 +426,7 @@ huff_entry_t bitalloc_d_17[] = + { 9, 256, -8}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_e_17[] = ++static const huff_entry_t bitalloc_e_17[] = + { + { 1, 0, 0}, { 3, 5, 1}, { 3, 4, -1}, { 4, 12, 2}, + { 5, 31, -2}, { 5, 28, 3}, { 5, 27, -3}, { 6, 60, 4}, +@@ -435,7 +435,7 @@ huff_entry_t bitalloc_e_17[] = + { 8, 232, -8}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_f_17[] = ++static const huff_entry_t bitalloc_f_17[] = + { + { 3, 6, 0}, { 3, 5, 1}, { 3, 4, -1}, { 3, 2, 2}, + { 3, 1, -2}, { 4, 15, 3}, { 4, 14, -3}, { 4, 6, 4}, +@@ -444,7 +444,7 @@ huff_entry_t bitalloc_f_17[] = + { 8, 4, -8}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_g_17[] = ++static const huff_entry_t bitalloc_g_17[] = + { + { 2, 2, 0}, { 3, 7, 1}, { 3, 6, -1}, { 3, 1, 2}, + { 3, 0, -2}, { 4, 5, 3}, { 4, 4, -3}, { 5, 14, 4}, +@@ -453,7 +453,7 @@ huff_entry_t bitalloc_g_17[] = + { 8, 96, -8}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_a_25[] = ++static const huff_entry_t bitalloc_a_25[] = + { + { 3, 6, 0}, { 3, 4, 1}, { 3, 3, -1}, { 3, 1, 2}, + { 3, 0, -2}, { 4, 15, 3}, { 4, 14, -3}, { 4, 5, 4}, +@@ -464,7 +464,7 @@ huff_entry_t bitalloc_a_25[] = + {14, 10324,-12}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_b_25[] = ++static const huff_entry_t bitalloc_b_25[] = + { + { 3, 5, 0}, { 3, 2, 1}, { 3, 1, -1}, { 4, 15, 2}, + { 4, 14, -2}, { 4, 9, 3}, { 4, 8, -3}, { 4, 6, 4}, +@@ -475,7 +475,7 @@ huff_entry_t bitalloc_b_25[] = + { 9, 28,-12}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_c_25[] = ++static const huff_entry_t bitalloc_c_25[] = + { + { 3, 1, 0}, { 4, 15, 1}, { 4, 14, -1}, { 4, 12, 2}, + { 4, 11, -2}, { 4, 9, 3}, { 4, 8, -3}, { 4, 6, 4}, +@@ -486,7 +486,7 @@ huff_entry_t bitalloc_c_25[] = + { 8, 76,-12}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_d_25[] = ++static const huff_entry_t bitalloc_d_25[] = + { + { 2, 2, 0}, { 3, 7, 1}, { 3, 6, -1}, { 3, 1, 2}, + { 3, 0, -2}, { 4, 5, 3}, { 4, 4, -3}, { 5, 13, 4}, +@@ -497,7 +497,7 @@ huff_entry_t bitalloc_d_25[] = + {12, 1920,-12}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_e_25[] = ++static const huff_entry_t bitalloc_e_25[] = + { + { 2, 3, 0}, { 3, 3, 1}, { 3, 2, -1}, { 4, 11, 2}, + { 4, 10, -2}, { 4, 1, 3}, { 4, 0, -3}, { 5, 17, 4}, +@@ -508,7 +508,7 @@ huff_entry_t bitalloc_e_25[] = + { 8, 60,-12}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_f_25[] = ++static const huff_entry_t bitalloc_f_25[] = + { + { 3, 1, 0}, { 3, 0, 1}, { 4, 15, -1}, { 4, 14, 2}, + { 4, 13, -2}, { 4, 11, 3}, { 4, 10, -3}, { 4, 8, 4}, +@@ -519,7 +519,7 @@ huff_entry_t bitalloc_f_25[] = + {10, 804,-12}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_g_25[] = ++static const huff_entry_t bitalloc_g_25[] = + { + { 2, 1, 0}, { 3, 6, 1}, { 3, 5, -1}, { 3, 0, 2}, + { 4, 15, -2}, { 4, 8, 3}, { 4, 3, -3}, { 5, 28, 4}, +@@ -530,7 +530,7 @@ huff_entry_t bitalloc_g_25[] = + {10, 936,-12}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_a_33[] = ++static const huff_entry_t bitalloc_a_33[] = + { + { 3, 2, 0}, { 3, 1, 1}, { 3, 0, -1}, { 4, 14, 2}, + { 4, 13, -2}, { 4, 12, 3}, { 4, 11, -3}, { 4, 9, 4}, +@@ -543,7 +543,7 @@ huff_entry_t bitalloc_a_33[] = + {13, 5504,-16}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_b_33[] = ++static const huff_entry_t bitalloc_b_33[] = + { + { 3, 1, 0}, { 4, 15, 1}, { 4, 14, -1}, { 4, 11, 2}, + { 4, 10, -2}, { 4, 8, 3}, { 4, 7, -3}, { 4, 4, 4}, +@@ -556,7 +556,7 @@ huff_entry_t bitalloc_b_33[] = + {10, 780,-16}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_c_33[] = ++static const huff_entry_t bitalloc_c_33[] = + { + { 4, 13, 0}, { 4, 11, 1}, { 4, 10, -1}, { 4, 8, 2}, + { 4, 7, -2}, { 4, 4, 3}, { 4, 3, -3}, { 4, 2, 4}, +@@ -569,7 +569,7 @@ huff_entry_t bitalloc_c_33[] = + { 9, 204,-16}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_d_33[] = ++static const huff_entry_t bitalloc_d_33[] = + { + { 2, 1, 0}, { 3, 6, 1}, { 3, 5, -1}, { 3, 0, 2}, + { 4, 15, -2}, { 4, 8, 3}, { 4, 3, -3}, { 5, 28, 4}, +@@ -582,7 +582,7 @@ huff_entry_t bitalloc_d_33[] = + {14, 15096,-16}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_e_33[] = ++static const huff_entry_t bitalloc_e_33[] = + { + { 2, 2, 0}, { 3, 2, 1}, { 3, 1, -1}, { 4, 12, 2}, + { 4, 7, -2}, { 4, 0, 3}, { 5, 31, -3}, { 5, 27, 4}, +@@ -595,7 +595,7 @@ huff_entry_t bitalloc_e_33[] = + { 9, 456,-16}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_f_33[] = ++static const huff_entry_t bitalloc_f_33[] = + { + { 4, 13, 0}, { 4, 12, 1}, { 4, 11, -1}, { 4, 9, 2}, + { 4, 8, -2}, { 4, 7, 3}, { 4, 6, -3}, { 4, 4, 4}, +@@ -608,7 +608,7 @@ huff_entry_t bitalloc_f_33[] = + {11, 1828,-16}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_g_33[] = ++static const huff_entry_t bitalloc_g_33[] = + { + { 3, 6, 0}, { 3, 3, 1}, { 3, 2, -1}, { 4, 15, 2}, + { 4, 14, -2}, { 4, 9, 3}, { 4, 8, -3}, { 4, 1, 4}, +@@ -621,7 +621,7 @@ huff_entry_t bitalloc_g_33[] = + {10, 644,-16}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_a_65[] = ++static const huff_entry_t bitalloc_a_65[] = + { + { 4, 6, 0}, { 4, 5, 1}, { 4, 4, -1}, { 4, 2, 2}, + { 4, 1, -2}, { 4, 0, 3}, { 5, 31, -3}, { 5, 29, 4}, +@@ -642,7 +642,7 @@ huff_entry_t bitalloc_a_65[] = + {16, 40540,-32}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_b_65[] = ++static const huff_entry_t bitalloc_b_65[] = + { + { 4, 4, 0}, { 4, 2, 1}, { 4, 1, -1}, { 5, 30, 2}, + { 5, 29, -2}, { 5, 26, 3}, { 5, 25, -3}, { 5, 23, 4}, +@@ -663,7 +663,7 @@ huff_entry_t bitalloc_b_65[] = + {12, 2700,-32}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_c_65[] = ++static const huff_entry_t bitalloc_c_65[] = + { + { 5, 28, 0}, { 5, 25, 1}, { 5, 24, -1}, { 5, 23, 2}, + { 5, 22, -2}, { 5, 19, 3}, { 5, 18, -3}, { 5, 16, 4}, +@@ -684,7 +684,7 @@ huff_entry_t bitalloc_c_65[] = + {11, 1116,-32}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_d_65[] = ++static const huff_entry_t bitalloc_d_65[] = + { + { 3, 4, 0}, { 3, 1, 1}, { 3, 0, -1}, { 4, 13, 2}, + { 4, 12, -2}, { 4, 7, 3}, { 4, 6, -3}, { 5, 31, 4}, +@@ -705,7 +705,7 @@ huff_entry_t bitalloc_d_65[] = + {15, 28848,-32}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_e_65[] = ++static const huff_entry_t bitalloc_e_65[] = + { + { 3, 4, 0}, { 3, 0, 1}, { 4, 15, -1}, { 4, 7, 2}, + { 4, 6, -2}, { 5, 29, 3}, { 5, 28, -3}, { 5, 23, 4}, +@@ -726,7 +726,7 @@ huff_entry_t bitalloc_e_65[] = + {10, 812,-32}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_f_65[] = ++static const huff_entry_t bitalloc_f_65[] = + { + { 3, 6, 0}, { 3, 3, 1}, { 3, 2, -1}, { 4, 15, 2}, + { 4, 14, -2}, { 4, 9, 3}, { 4, 8, -3}, { 4, 1, 4}, +@@ -747,7 +747,7 @@ huff_entry_t bitalloc_f_65[] = + {14, 4064,-32}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_g_65[] = ++static const huff_entry_t bitalloc_g_65[] = + { + { 4, 14, 0}, { 4, 11, 1}, { 4, 10, -1}, { 4, 8, 2}, + { 4, 6, -2}, { 4, 4, 3}, { 4, 3, -3}, { 4, 0, 4}, +@@ -768,7 +768,7 @@ huff_entry_t bitalloc_g_65[] = + {11, 268,-32}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_a_129[] = ++static const huff_entry_t bitalloc_a_129[] = + { + { 4, 8, 0}, { 4, 10, 1}, { 4, 9, -1}, { 4, 0, 2}, + { 5, 31, -2}, { 5, 24, 3}, { 5, 23, -3}, { 5, 12, 4}, +@@ -805,7 +805,7 @@ huff_entry_t bitalloc_a_129[] = + {11, 1632,-64}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_b_129[] = ++static const huff_entry_t bitalloc_b_129[] = + { + { 5, 10, 0}, { 5, 7, 1}, { 5, 6, -1}, { 5, 4, 2}, + { 5, 3, -2}, { 5, 0, 3}, { 6, 63, -3}, { 6, 60, 4}, +@@ -842,7 +842,7 @@ huff_entry_t bitalloc_b_129[] = + {14, 10716,-64}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_c_129[] = ++static const huff_entry_t bitalloc_c_129[] = + { + { 6, 58, 0}, { 6, 55, 1}, { 6, 54, -1}, { 6, 52, 2}, + { 6, 51, -2}, { 6, 49, 3}, { 6, 48, -3}, { 6, 46, 4}, +@@ -879,7 +879,7 @@ huff_entry_t bitalloc_c_129[] = + {13, 3676,-64}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_d_129[] = ++static const huff_entry_t bitalloc_d_129[] = + { + { 4, 9, 0}, { 4, 6, 1}, { 4, 5, -1}, { 4, 2, 2}, + { 4, 1, -2}, { 5, 30, 3}, { 5, 29, -3}, { 5, 26, 4}, +@@ -916,7 +916,7 @@ huff_entry_t bitalloc_d_129[] = + {16, 42392,-64}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_e_129[] = ++static const huff_entry_t bitalloc_e_129[] = + { + { 5, 12, 0}, { 5, 11, 1}, { 5, 10, -1}, { 5, 9, 2}, + { 5, 8, -2}, { 5, 7, 3}, { 5, 6, -3}, { 5, 4, 4}, +@@ -953,7 +953,7 @@ huff_entry_t bitalloc_e_129[] = + {16, 41276,-64}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_f_129[] = ++static const huff_entry_t bitalloc_f_129[] = + { + { 6, 56, 0}, { 6, 55, 1}, { 6, 54, -1}, { 6, 52, 2}, + { 6, 51, -2}, { 6, 50, 3}, { 6, 49, -3}, { 6, 48, 4}, +@@ -990,7 +990,7 @@ huff_entry_t bitalloc_f_129[] = + {15, 30252,-64}, { 0, 0, 0} + }; + +-huff_entry_t bitalloc_g_129[] = ++static const huff_entry_t bitalloc_g_129[] = + { + { 4, 0, 0}, { 5, 29, 1}, { 5, 28, -1}, { 5, 25, 2}, + { 5, 24, -2}, { 5, 21, 3}, { 5, 20, -3}, { 5, 17, 4}, +@@ -1027,7 +1027,7 @@ huff_entry_t bitalloc_g_129[] = + {13, 7712,-64}, { 0, 0, 0} + }; + +-huff_entry_t *bitalloc_select[11][8] = ++static const huff_entry_t *const bitalloc_select[11][8] = + { + { 0 }, + { bitalloc_a_3, 0 }, +@@ -1047,7 +1047,7 @@ huff_entry_t *bitalloc_select[11][8] = + bitalloc_e_129, bitalloc_f_129, bitalloc_g_129, 0 }, + }; + +-static int InverseQ( dca_state_t * state, huff_entry_t * huff ) ++static int InverseQ( dca_state_t * state, const huff_entry_t * huff ) + { + int value = 0; + int length = 0, j; diff --git a/audio/libdca/patches/patch-libdca_tables_quantization_h b/audio/libdca/patches/patch-libdca_tables_quantization_h new file mode 100644 index 00000000000..023c25f2be0 --- /dev/null +++ b/audio/libdca/patches/patch-libdca_tables_quantization_h @@ -0,0 +1,60 @@ +$OpenBSD: patch-libdca_tables_quantization_h,v 1.1 2012/05/15 16:17:27 ajacoutot Exp $ + +Mark tables as static constants. + +--- libdca/tables_quantization.h.orig Mon May 14 22:52:00 2012 ++++ libdca/tables_quantization.h Mon May 14 22:52:06 2012 +@@ -21,7 +21,7 @@ + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +-int scale_factor_quant6[] = ++static const int scale_factor_quant6[] = + { + 1, 2, 2, 3, 3, 4, 6, 7, + 10, 12, 16, 20, 26, 34, 44, 56, +@@ -33,7 +33,7 @@ int scale_factor_quant6[] = + 1819701, 2344229, 3019952, 3890451, 5011872, 6456542, 8317638, 0 + }; + +-int scale_factor_quant7[] = ++static const int scale_factor_quant7[] = + { + 1, 1, 2, 2, 2, 2, 3, 3, + 3, 4, 4, 5, 6, 7, 7, 8, +@@ -54,7 +54,7 @@ int scale_factor_quant7[] = + }; + + /* 20bits unsigned fractional binary codes */ +-int lossy_quant[] = ++static const int lossy_quant[] = + { + 0, 6710886, 4194304, 3355443, 2474639, 2097152, 1761608, 1426063, + 796918, 461373, 251658, 146801, 79692, 46137, 27263, 16777, +@@ -62,7 +62,7 @@ int lossy_quant[] = + 84, 42, 21, 0, 0, 0, 0, 0 + }; + +-double lossy_quant_d[] = ++static const double lossy_quant_d[] = + { + 0, 1.6, 1.0, 0.8, 0.59, 0.50, 0.42, 0.34, + 0.19, 0.11, 0.06, 0.035, 0.019, 0.011, 0.0065, 0.0040, +@@ -71,7 +71,7 @@ double lossy_quant_d[] = + }; + + /* 20bits unsigned fractional binary codes */ +-int lossless_quant[] = ++static const int lossless_quant[] = + { + 0, 4194304, 2097152, 1384120, 1048576, 696254, 524288, 348127, + 262144, 131072, 65431, 33026, 16450, 8208, 4100, 2049, +@@ -79,7 +79,7 @@ int lossless_quant[] = + 4, 2, 1, 0, 0, 0, 0, 0 + }; + +-double lossless_quant_d[] = ++static const double lossless_quant_d[] = + { + 0, 1.0, 0.5, 0.33, 0.25, 0.166, 0.125, + 0.083, 0.0625, 0.03125, 0.0156, 7.874E-3, 3.922E-3, 1.957E-3,