ALT Linux Bugzilla
– Attachment 1810 Details for
Bug 10864
flac >= 1.1.3
New bug
|
Search
|
[?]
|
Help
Register
|
Log In
[x]
|
Forgot Password
Login:
[x]
|
EN
|
RU
[patch]
TiMidity++-2.13.2+flac-1.1.3.patch
TiMidity++-2.13.2+flac-1.1.3.patch (text/plain), 10.98 KB, created by
led
on 2007-02-19 15:04:51 MSK
(
hide
)
Description:
TiMidity++-2.13.2+flac-1.1.3.patch
Filename:
MIME Type:
Creator:
led
Created:
2007-02-19 15:04:51 MSK
Size:
10.98 KB
patch
obsolete
>diff -urN TiMidity++-2.13.2.orig/configure.in TiMidity++-2.13.2/configure.in >--- TiMidity++-2.13.2.orig/configure.in 2004-10-03 15:39:52 +0300 >+++ TiMidity++-2.13.2/configure.in 2007-02-19 13:06:42 +0200 >@@ -1216,11 +1216,39 @@ > EXTRACT_CPPFLAGS(CPPFLAGS,CFLAGS,$LIBFLAC_CFLAGS) > LIBS="$LIBS $LIBFLAC_LIBS" > ]) >- AM_PATH_LIBOGGFLAC([ >- EXTRADEFS="$EXTRADEFS -DAU_OGGFLAC" >- EXTRACT_CPPFLAGS(CPPFLAGS,CFLAGS,$LIBOGGFLAC_CFLAGS) >- LIBS="$LIBS $LIBOGGFLAC_LIBS" >- ]) >+ # in FLAC-1.1.3, libOggFLAC was merged into libFLAC >+ # FLAC_API_VERSION_CURRENT first appears in FLAC-1.1.3 >+ AC_MSG_CHECKING(for legacy libFLAC (<1.1.13)) >+ ac_save_LIBS="$LIBS" >+ LIBS= >+ AC_TRY_RUN([ >+ #include <FLAC/export.h> >+ int main () { return FLAC_API_VERSION_CURRENT<8; } >+ ],legacy_flac=no,legacy_flac=yes,legacy_flac=no) >+ AC_MSG_RESULT($legacy_flac) >+ LIBS="$ac_save_LIBS" >+ if test "x$legacy_flac" = xyes; then >+ AM_PATH_LIBOGGFLAC([ >+ EXTRADEFS="$EXTRADEFS -DAU_OGGFLAC" >+ EXTRACT_CPPFLAGS(CPPFLAGS,CFLAGS,$LIBOGGFLAC_CFLAGS) >+ LIBS="$LIBS $LIBOGGFLAC_LIBS" >+ ]) >+ else >+ >+ AC_MSG_CHECKING(for Ogg support in libFLAC ) >+ ac_save_LIBS="$LIBS" >+ LIBS="-lFLAC -lm -logg" >+ AC_TRY_RUN([ >+ #include <FLAC/export.h> >+ int main () { return !FLAC_API_SUPPORTS_OGG_FLAC; } >+ ],ogg_flac=yes,ogg_flac=yes,ogg_flac=no) >+ AC_MSG_RESULT($ogg_flac) >+ LIBS="$ac_save_LIBS" >+ if test "x$ogg_flac" = xyes; then >+ LIBS="$LIBS -logg" >+ CFLAGS="$CFLAGS -DAU_OGGFLAC" >+ fi >+ fi > else > AC_MSG_RESULT(no) > fi >diff -urN TiMidity++-2.13.2.orig/timidity/flac_a.c TiMidity++-2.13.2/timidity/flac_a.c >--- TiMidity++-2.13.2.orig/timidity/flac_a.c 2004-05-23 07:35:44 +0300 >+++ TiMidity++-2.13.2/timidity/flac_a.c 2007-02-19 13:06:55 +0200 >@@ -38,14 +38,22 @@ > > #if defined(AU_FLAC_DLL) || defined(AU_OGGFLAC_DLL) > #include <windows.h> >-#define FLAC__EXPORT_H /* don't include "OggFLAC/export.h" */ >-#define FLAC_API >-#define OggFLAC__EXPORT_H /* don't include "FLAC/export.h" */ >-#define OggFLAC_API >+#include <FLAC/export.h> /* need export.h to figure out API version from FLAC_API_VERSION_CURRENT */ >+#undef FLAC_API >+#undef OggFLAC_API > #endif > > #include <FLAC/all.h> >-#ifdef AU_OGGFLAC >+ >+/* by LEGACY_FLAC we mean before FLAC 1.1.3 */ >+/* in FLAC 1.1.3, libOggFLAC is merged into libFLAC and all encoding layers are merged into the stream encoder */ >+#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT < 8 >+#define LEGACY_FLAC >+#else >+#undef LEGACY_FLAC >+#endif >+ >+#if defined(LEGACY_FLAC) && defined(AU_OGGFLAC) > #include <OggFLAC/stream_encoder.h> > #endif > >@@ -100,17 +108,21 @@ > unsigned long out_bytes; > union { > FLAC__StreamEncoderState flac; >+#ifdef LEGACY_FLAC > FLAC__SeekableStreamEncoderState s_flac; > #ifdef AU_OGGFLAC > OggFLAC__StreamEncoderState ogg; > #endif >+#endif > } state; > union { > union { > FLAC__StreamEncoder *stream; >+#ifdef LEGACY_FLAC > FLAC__SeekableStreamEncoder *s_stream; >+#endif > } flac; >-#ifdef AU_OGGFLAC >+#if defined(LEGACY_FLAC) && defined(AU_OGGFLAC) > union { > OggFLAC__StreamEncoder *stream; > } ogg; >@@ -158,7 +170,7 @@ > static long serial_number = 0; > FLAC_ctx *flac_ctx = NULL; > >-#ifdef AU_OGGFLAC >+#if defined(LEGACY_FLAC) && defined(AU_OGGFLAC) > static FLAC__StreamEncoderWriteStatus > ogg_stream_encoder_write_callback(const OggFLAC__StreamEncoder *encoder, > const FLAC__byte buffer[], >@@ -168,8 +180,13 @@ > static FLAC__StreamEncoderWriteStatus > flac_stream_encoder_write_callback(const FLAC__StreamEncoder *encoder, > const FLAC__byte buffer[], >+#ifdef LEGACY_FLAC > unsigned bytes, unsigned samples, >+#else >+ size_t bytes, unsigned samples, >+#endif > unsigned current_frame, void *client_data); >+#ifdef LEGACY_FLAC > static void flac_stream_encoder_metadata_callback(const FLAC__StreamEncoder *encoder, > const FLAC__StreamMetadata *metadata, > void *client_data); >@@ -181,6 +198,7 @@ > static void flac_seekable_stream_encoder_metadata_callback(const FLAC__SeekableStreamEncoder *encoder, > const FLAC__StreamMetadata *metadata, > void *client_data); >+#endif > > /* preset */ > void flac_set_compression_level(int compression_level) >@@ -281,7 +299,11 @@ > #ifdef AU_OGGFLAC > void flac_set_option_oggflac(int isogg) > { >+#ifdef LEGACY_FLAC > flac_options.isogg = isogg; >+#else >+ flac_options.isogg = (FLAC_API_SUPPORTS_OGG_FLAC && isogg); >+#endif > } > #endif > >@@ -295,6 +317,7 @@ > dpm.fd = -1; > > if (ctx != NULL) { >+#ifdef LEGACY_FLAC > #ifdef AU_OGGFLAC > if (flac_options.isogg) { > if (ctx->encoder.ogg.stream) { >@@ -317,6 +340,12 @@ > FLAC__stream_encoder_delete(ctx->encoder.flac.stream); > } > } >+#else >+ if (ctx->encoder.flac.stream) { >+ FLAC__stream_encoder_finish(ctx->encoder.flac.stream); >+ FLAC__stream_encoder_delete(ctx->encoder.flac.stream); >+ } >+#endif > free(ctx); > flac_ctx = NULL; > } >@@ -329,6 +358,9 @@ > FLAC__StreamMetadata padding; > FLAC__StreamMetadata *metadata[4]; > int num_metadata = 0; >+#ifndef LEGACY_FLAC >+ FLAC__StreamEncoderInitStatus init_status; >+#endif > > FLAC_ctx *ctx; > >@@ -371,6 +403,7 @@ > metadata[num_metadata++] = &padding; > } > >+#ifdef LEGACY_FLAC > #ifdef AU_OGGFLAC > if (flac_options.isogg) { > if ((ctx->encoder.ogg.stream = OggFLAC__stream_encoder_new()) == NULL) { >@@ -542,6 +575,67 @@ > return -1; > } > } >+#else /* !LEGACY_FLAC */ >+ if ((ctx->encoder.flac.stream = FLAC__stream_encoder_new()) == NULL) { >+ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "cannot create FLAC stream"); >+ flac_session_close(); >+ return -1; >+ } >+ >+#ifdef AU_OGGFLAC >+ if (flac_options.isogg) { >+ /* set sequential number for serial */ >+ serial_number++; >+ if (serial_number == 1) { >+ srand(time(NULL)); >+ serial_number = rand(); >+ } >+ FLAC__stream_encoder_set_ogg_serial_number(ctx->encoder.flac.stream, serial_number); >+ } >+#endif /* AU_OGGFLAC */ >+ FLAC__stream_encoder_set_channels(ctx->encoder.flac.stream, nch); >+ /* 16bps only */ >+ FLAC__stream_encoder_set_bits_per_sample(ctx->encoder.flac.stream, 16); >+ >+ FLAC__stream_encoder_set_verify(ctx->encoder.flac.stream, flac_options.verify); >+ >+ if (!FLAC__format_sample_rate_is_valid(dpm.rate)) { >+ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "invalid sampling rate %d", dpm.rate); >+ flac_session_close(); >+ return -1; >+ } >+ FLAC__stream_encoder_set_sample_rate(ctx->encoder.flac.stream, dpm.rate); >+ >+ FLAC__stream_encoder_set_qlp_coeff_precision(ctx->encoder.flac.stream, flac_options.qlp_coeff_precision); >+ /* expensive! */ >+ FLAC__stream_encoder_set_do_qlp_coeff_prec_search(ctx->encoder.flac.stream, flac_options.qlp_coeff_precision_search); >+ >+ if (nch == 2) { >+ FLAC__stream_encoder_set_do_mid_side_stereo(ctx->encoder.flac.stream, flac_options.mid_side); >+ FLAC__stream_encoder_set_loose_mid_side_stereo(ctx->encoder.flac.stream, flac_options.adaptive_mid_side); >+ } >+ >+ FLAC__stream_encoder_set_max_lpc_order(ctx->encoder.flac.stream, flac_options.max_lpc_order); >+ FLAC__stream_encoder_set_min_residual_partition_order(ctx->encoder.flac.stream, flac_options.min_residual_partition_order); >+ FLAC__stream_encoder_set_max_residual_partition_order(ctx->encoder.flac.stream, flac_options.max_residual_partition_order); >+ >+ FLAC__stream_encoder_set_blocksize(ctx->encoder.flac.stream, flac_options.blocksize); >+ >+ if (0 < num_metadata) >+ FLAC__stream_encoder_set_metadata(ctx->encoder.flac.stream, metadata, num_metadata); >+ >+#ifdef AU_OGGFLAC >+ if (flac_options.isogg) >+ init_status = FLAC__stream_encoder_init_ogg_stream(ctx->encoder.flac.stream, NULL, flac_stream_encoder_write_callback, NULL, NULL, NULL, ctx); >+ else >+#endif >+ init_status = FLAC__stream_encoder_init_stream(ctx->encoder.flac.stream, flac_stream_encoder_write_callback, NULL, NULL, NULL, ctx); >+ if (init_status != FLAC__STREAM_ENCODER_INIT_STATUS_OK) { >+ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "cannot create FLAC encoder (init status: %s)", FLAC__StreamEncoderInitStatusString[init_status]); >+ flac_session_close(); >+ return -1; >+ } >+#endif > > return 0; > } >@@ -638,7 +732,7 @@ > return 0; > } > >-#ifdef AU_OGGFLAC >+#if defined(LEGACY_FLAC) && defined(AU_OGGFLAC) > static FLAC__StreamEncoderWriteStatus > ogg_stream_encoder_write_callback(const OggFLAC__StreamEncoder *encoder, > const FLAC__byte buffer[], >@@ -658,7 +752,11 @@ > static FLAC__StreamEncoderWriteStatus > flac_stream_encoder_write_callback(const FLAC__StreamEncoder *encoder, > const FLAC__byte buffer[], >+#ifdef LEGACY_FLAC > unsigned bytes, unsigned samples, >+#else >+ size_t bytes, unsigned samples, >+#endif > unsigned current_frame, void *client_data) > { > FLAC_ctx *ctx = (FLAC_ctx *)client_data; >@@ -670,6 +768,7 @@ > else > return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR; > } >+#ifdef LEGACY_FLAC > static void flac_stream_encoder_metadata_callback(const FLAC__StreamEncoder *encoder, > const FLAC__StreamMetadata *metadata, > void *client_data) >@@ -695,6 +794,7 @@ > void *client_data) > { > } >+#endif > > static int output_data(char *buf, int32 nbytes) > { >@@ -723,6 +823,7 @@ > oggbuf[i] = *s++; > } > >+#ifdef LEGACY_FLAC > #ifdef AU_OGGFLAC > if (flac_options.isogg) { > ctx->state.ogg = OggFLAC__stream_encoder_get_state(ctx->encoder.ogg.stream); >@@ -793,6 +894,29 @@ > return -1; > } > } >+#else /* !LEGACY_FLAC */ >+ ctx->state.flac = FLAC__stream_encoder_get_state(ctx->encoder.flac.stream); >+ if (ctx->state.flac != FLAC__STREAM_ENCODER_OK) { >+ if (ctx->state.flac == FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR | >+ FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA) { >+ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "FLAC stream verify error (%s)", >+ FLAC__StreamDecoderStateString[FLAC__stream_encoder_get_verify_decoder_state(ctx->encoder.flac.stream)]); >+ } >+ else { >+ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "cannot encode FLAC stream (%s)", >+ FLAC__StreamEncoderStateString[ctx->state.flac]); >+ } >+ flac_session_close(); >+ return -1; >+ } >+ >+ if (!FLAC__stream_encoder_process_interleaved(ctx->encoder.flac.stream, oggbuf, >+ nbytes / nch / 2 )) { >+ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "cannot encode FLAC stream"); >+ flac_session_close(); >+ return -1; >+ } >+#endif > ctx->in_bytes += nbytes; > > free(oggbuf); >@@ -813,6 +937,7 @@ > return; > } > >+#ifdef LEGACY_FLAC > if (flac_options.isogg) { > #ifdef AU_OGGFLAC > if ((ctx->state.ogg = OggFLAC__stream_encoder_get_state(ctx->encoder.ogg.stream)) != OggFLAC__STREAM_ENCODER_OK) { >@@ -838,6 +963,13 @@ > /* fall through */ > } > } >+#else /* !LEGACY_FLAC */ >+ if ((ctx->state.flac = FLAC__stream_encoder_get_state(ctx->encoder.flac.stream)) != FLAC__STREAM_ENCODER_OK) { >+ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "FLAC stream encoder is invalid (%s)", >+ FLAC__StreamEncoderStateString[ctx->state.flac]); >+ /* fall through */ >+ } >+#endif > > ctl->cmsg(CMSG_INFO, VERB_NORMAL, "Wrote %lu/%lu bytes(%g%% compressed)", > ctx->out_bytes, ctx->in_bytes, ((double)ctx->out_bytes / (double)ctx->in_bytes) * 100.);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 10864
: 1810