Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37569174
en ru br
Репозитории ALT
S:7.5-alt1
5.1: 2.8.3-alt1
4.1: 2.4.1-alt0.M41.1
4.0: 2.0.2-alt1
3.0: 0.9-alt0.7beta24.1
www.altlinux.org/Changes

Другие репозитории
Upstream:2.3.1

Группа :: Звук
Пакет: ardour

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: ardour-2.0beta11.1+flac-1.1.3.patch
Скачать


diff -urN ardour-2.0beta11.1.orig/libs/libsndfile/configure ardour-2.0beta11.1/libs/libsndfile/configure
--- ardour-2.0beta11.1.orig/libs/libsndfile/configure	2006-12-18 15:01:38 +0200
+++ ardour-2.0beta11.1/libs/libsndfile/configure	2007-02-19 16:47:26 +0200
@@ -12365,9 +12365,9 @@
 done
 
 	if test x$ac_cv_header_FLAC_all_h = xyes ; then
-		echo "$as_me:$LINENO: checking for FLAC__seekable_stream_encoder_set_tell_callback in -lFLAC" >&5
-echo $ECHO_N "checking for FLAC__seekable_stream_encoder_set_tell_callback in -lFLAC... $ECHO_C" >&6
-if test "${ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback+set}" = set; then
+		echo "$as_me:$LINENO: checking for FLAC__stream_encoder_init_stream in -lFLAC" >&5
+echo $ECHO_N "checking for FLAC__stream_encoder_init_stream in -lFLAC... $ECHO_C" >&6
+if test "${ac_cv_lib_FLAC_FLAC__stream_encoder_init_stream+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -12385,11 +12385,11 @@
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char FLAC__seekable_stream_encoder_set_tell_callback ();
+char FLAC__stream_encoder_init_stream ();
 int
 main ()
 {
-FLAC__seekable_stream_encoder_set_tell_callback ();
+FLAC__stream_encoder_init_stream ();
   ;
   return 0;
 }
@@ -12416,20 +12416,20 @@
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback=yes
+  ac_cv_lib_FLAC_FLAC__stream_encoder_init_stream=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback=no
+ac_cv_lib_FLAC_FLAC__stream_encoder_init_stream=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback" >&5
-echo "${ECHO_T}$ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback" >&6
-if test $ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_lib_FLAC_FLAC__stream_encoder_init_stream" >&5
+echo "${ECHO_T}$ac_cv_lib_FLAC_FLAC__stream_encoder_init_stream" >&6
+if test $ac_cv_lib_FLAC_FLAC__stream_encoder_init_stream = yes; then
   HAVE_FLAC_1_1_1="yes"
 fi
 
diff -urN ardour-2.0beta11.1.orig/libs/libsndfile/src/flac.c ardour-2.0beta11.1/libs/libsndfile/src/flac.c
--- ardour-2.0beta11.1.orig/libs/libsndfile/src/flac.c	2006-08-30 23:50:11 +0300
+++ ardour-2.0beta11.1/libs/libsndfile/src/flac.c	2007-02-19 16:48:29 +0200
@@ -46,6 +46,13 @@
 #include	"sfendian.h"
 #include	"float_cast.h"
 
+/* FLAC 1.1.3 has FLAC_API_VERSION_CURRENT == 8 */
+#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT < 8
+#define LEGACY_FLAC
+#else
+#undef LEGACY_FLAC
+#endif
+
 /*------------------------------------------------------------------------------
 ** Private static functions.
 */
@@ -60,8 +67,14 @@
 } PFLAC_PCM ;
 
 typedef struct
-{	FLAC__SeekableStreamDecoder *fsd ;
+{
+#ifdef LEGACY_FLAC
+	FLAC__SeekableStreamDecoder *fsd ;
 	FLAC__SeekableStreamEncoder *fse ;
+#else
+	FLAC__StreamDecoder *fsd ;
+	FLAC__StreamEncoder *fse ;
+#endif
 	PFLAC_PCM pcmtype ;
 	void* ptr ;
 	unsigned pos, len, remain ;
@@ -108,6 +121,7 @@
 static int flac_command (SF_PRIVATE *psf, int command, void *data, int datasize) ;
 
 /* Decoder Callbacks */
+#ifdef LEGACY_FLAC
 static FLAC__SeekableStreamDecoderReadStatus sf_flac_read_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__byte buffer [], unsigned *bytes, void *client_data) ;
 static FLAC__SeekableStreamDecoderSeekStatus sf_flac_seek_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) ;
 static FLAC__SeekableStreamDecoderTellStatus sf_flac_tell_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ;
@@ -116,13 +130,29 @@
 static FLAC__StreamDecoderWriteStatus sf_flac_write_callback (const FLAC__SeekableStreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer [], void *client_data) ;
 static void sf_flac_meta_callback (const FLAC__SeekableStreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) ;
 static void sf_flac_error_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) ;
+#else
+static FLAC__StreamDecoderReadStatus sf_flac_read_callback (const FLAC__StreamDecoder *decoder, FLAC__byte buffer [], size_t *bytes, void *client_data) ;
+static FLAC__StreamDecoderSeekStatus sf_flac_seek_callback (const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) ;
+static FLAC__StreamDecoderTellStatus sf_flac_tell_callback (const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ;
+static FLAC__StreamDecoderLengthStatus sf_flac_length_callback (const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) ;
+static FLAC__bool sf_flac_eof_callback (const FLAC__StreamDecoder *decoder, void *client_data) ;
+static FLAC__StreamDecoderWriteStatus sf_flac_write_callback (const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer [], void *client_data) ;
+static void sf_flac_meta_callback (const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) ;
+static void sf_flac_error_callback (const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) ;
+#endif
 
 /* Encoder Callbacks */
+#ifdef LEGACY_FLAC
 static FLAC__SeekableStreamEncoderSeekStatus sf_flac_enc_seek_callback (const FLAC__SeekableStreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data) ;
 #ifdef HAVE_FLAC_1_1_1
 static FLAC__SeekableStreamEncoderTellStatus sf_flac_enc_tell_callback (const FLAC__SeekableStreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ;
 #endif
 static FLAC__StreamEncoderWriteStatus sf_flac_enc_write_callback (const FLAC__SeekableStreamEncoder *encoder, const FLAC__byte buffer [], unsigned bytes, unsigned samples, unsigned current_frame, void *client_data) ;
+#else
+static FLAC__StreamEncoderSeekStatus sf_flac_enc_seek_callback (const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data) ;
+static FLAC__StreamEncoderTellStatus sf_flac_enc_tell_callback (const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ;
+static FLAC__StreamEncoderWriteStatus sf_flac_enc_write_callback (const FLAC__StreamEncoder *encoder, const FLAC__byte buffer [], size_t bytes, unsigned samples, unsigned current_frame, void *client_data) ;
+#endif
 
 static const int legal_sample_rates [] =
 {	8000, 16000, 22050, 24000, 32000, 44100, 48000, 96000
@@ -283,51 +313,99 @@
 } /* flac_buffer_copy */
 
 
+#ifdef LEGACY_FLAC
 static FLAC__SeekableStreamDecoderReadStatus
 sf_flac_read_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__byte buffer [], unsigned *bytes, void *client_data)
+#else
+static FLAC__StreamDecoderReadStatus
+sf_flac_read_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__byte buffer [], size_t *bytes, void *client_data)
+#endif
 {	SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
 
 	*bytes = psf_fread (buffer, 1, *bytes, psf) ;
 	if (*bytes > 0 && psf->error == 0)
+#ifdef LEGACY_FLAC
 		return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK ;
 
     return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR ;
+#else
+		return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE ;
+
+    return FLAC__STREAM_DECODER_READ_STATUS_ABORT ;
+#endif
 } /* sf_flac_read_callback */
 
+#ifdef LEGACY_FLAC
 static FLAC__SeekableStreamDecoderSeekStatus
 sf_flac_seek_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__uint64 absolute_byte_offset, void *client_data)
+#else
+static FLAC__StreamDecoderSeekStatus
+sf_flac_seek_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__uint64 absolute_byte_offset, void *client_data)
+#endif
 {	SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
 
 	psf_fseek (psf, absolute_byte_offset, SEEK_SET) ;
 	if (psf->error)
+#ifdef LEGACY_FLAC
 		return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR ;
 
 	return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK ;
+#else
+		return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR ;
+
+	return FLAC__STREAM_DECODER_SEEK_STATUS_OK ;
+#endif
 } /* sf_flac_seek_callback */
 
+#ifdef LEGACY_FLAC
 static FLAC__SeekableStreamDecoderTellStatus
 sf_flac_tell_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__uint64 *absolute_byte_offset, void *client_data)
+#else
+static FLAC__StreamDecoderTellStatus
+sf_flac_tell_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__uint64 *absolute_byte_offset, void *client_data)
+#endif
 {	SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
 
 	*absolute_byte_offset = psf_ftell (psf) ;
 	if (psf->error)
+#ifdef LEGACY_FLAC
 		return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR ;
 
 	return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK ;
+#else
+		return FLAC__STREAM_DECODER_TELL_STATUS_ERROR ;
+
+	return FLAC__STREAM_DECODER_TELL_STATUS_OK ;
+#endif
 } /* sf_flac_tell_callback */
 
+#ifdef LEGACY_FLAC
 static FLAC__SeekableStreamDecoderLengthStatus
 sf_flac_length_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__uint64 *stream_length, void *client_data)
+#else
+static FLAC__StreamDecoderLengthStatus
+sf_flac_length_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__uint64 *stream_length, void *client_data)
+#endif
 {	SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
 
 	if ((*stream_length = psf->filelength) == 0)
+#ifdef LEGACY_FLAC
 		return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR ;
 
 	return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK ;
+#else
+		return FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR ;
+
+	return FLAC__STREAM_DECODER_LENGTH_STATUS_OK ;
+#endif
 } /* sf_flac_length_callback */
 
 static FLAC__bool
+#ifdef LEGACY_FLAC
 sf_flac_eof_callback (const FLAC__SeekableStreamDecoder *UNUSED (decoder), void *client_data)
+#else
+sf_flac_eof_callback (const FLAC__StreamDecoder *UNUSED (decoder), void *client_data)
+#endif
 {	SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
 
 	if (psf_ftell (psf) == psf->filelength)
@@ -337,7 +415,11 @@
 } /* sf_flac_eof_callback */
 
 static FLAC__StreamDecoderWriteStatus
+#ifdef LEGACY_FLAC
 sf_flac_write_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), const FLAC__Frame *frame, const FLAC__int32 * const buffer [], void *client_data)
+#else
+sf_flac_write_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC__Frame *frame, const FLAC__int32 * const buffer [], void *client_data)
+#endif
 {	SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
 	FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
 
@@ -353,7 +435,11 @@
 } /* sf_flac_write_callback */
 
 static void
+#ifdef LEGACY_FLAC
 sf_flac_meta_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), const FLAC__StreamMetadata *metadata, void *client_data)
+#else
+sf_flac_meta_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC__StreamMetadata *metadata, void *client_data)
+#endif
 {	SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
 
 	switch (metadata->type)
@@ -387,7 +473,11 @@
 } /* sf_flac_meta_callback */
 
 static void
+#ifdef LEGACY_FLAC
 sf_flac_error_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__StreamDecoderErrorStatus status, void *client_data)
+#else
+sf_flac_error_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__StreamDecoderErrorStatus status, void *client_data)
+#endif
 {	SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
 
 	psf_log_printf (psf, "ERROR : %s\n", FLAC__StreamDecoderErrorStatusString [status]) ;
@@ -407,17 +497,29 @@
 	return ;
 } /* sf_flac_error_callback */
 
+#ifdef LEGACY_FLAC
 static FLAC__SeekableStreamEncoderSeekStatus
 sf_flac_enc_seek_callback (const FLAC__SeekableStreamEncoder * UNUSED (encoder), FLAC__uint64 absolute_byte_offset, void *client_data)
+#else
+static FLAC__StreamEncoderSeekStatus
+sf_flac_enc_seek_callback (const FLAC__StreamEncoder * UNUSED (encoder), FLAC__uint64 absolute_byte_offset, void *client_data)
+#endif
 {	SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
 
 	psf_fseek (psf, absolute_byte_offset, SEEK_SET) ;
 	if (psf->error)
+#ifdef LEGACY_FLAC
 		return FLAC__SEEKABLE_STREAM_ENCODER_SEEK_STATUS_ERROR ;
 
     return FLAC__SEEKABLE_STREAM_ENCODER_SEEK_STATUS_OK ;
+#else
+		return FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR ;
+
+    return FLAC__STREAM_ENCODER_SEEK_STATUS_OK ;
+#endif
 } /* sf_flac_enc_seek_callback */
 
+#ifdef LEGACY_FLAC
 #ifdef HAVE_FLAC_1_1_1
 static FLAC__SeekableStreamEncoderTellStatus
 sf_flac_enc_tell_callback (const FLAC__SeekableStreamEncoder *UNUSED (encoder), FLAC__uint64 *absolute_byte_offset, void *client_data)
@@ -430,9 +532,25 @@
 	return FLAC__SEEKABLE_STREAM_ENCODER_TELL_STATUS_OK ;
 } /* sf_flac_enc_tell_callback */
 #endif
+#else
+static FLAC__StreamEncoderTellStatus
+sf_flac_enc_tell_callback (const FLAC__StreamEncoder *UNUSED (encoder), FLAC__uint64 *absolute_byte_offset, void *client_data)
+{	SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
+
+	*absolute_byte_offset = psf_ftell (psf) ;
+	if (psf->error)
+		return FLAC__STREAM_ENCODER_TELL_STATUS_ERROR ;
+
+	return FLAC__STREAM_ENCODER_TELL_STATUS_OK ;
+} /* sf_flac_enc_tell_callback */
+#endif
 
 static FLAC__StreamEncoderWriteStatus
+#ifdef LEGACY_FLAC
 sf_flac_enc_write_callback (const FLAC__SeekableStreamEncoder * UNUSED (encoder), const FLAC__byte buffer [], unsigned bytes, unsigned UNUSED (samples), unsigned UNUSED (current_frame), void *client_data)
+#else
+sf_flac_enc_write_callback (const FLAC__StreamEncoder * UNUSED (encoder), const FLAC__byte buffer [], size_t bytes, unsigned UNUSED (samples), unsigned UNUSED (current_frame), void *client_data)
+#endif
 {	SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
 
 	if (psf_fwrite (buffer, 1, bytes, psf) == bytes && psf->error == 0)
@@ -509,15 +627,27 @@
 		return 0 ;
 
 	if (psf->mode == SFM_WRITE)
-	{	FLAC__seekable_stream_encoder_finish (pflac->fse) ;
+	{
+#ifdef LEGACY_FLAC
+		FLAC__seekable_stream_encoder_finish (pflac->fse) ;
 		FLAC__seekable_stream_encoder_delete (pflac->fse) ;
+#else
+		FLAC__stream_encoder_finish (pflac->fse) ;
+		FLAC__stream_encoder_delete (pflac->fse) ;
+#endif
 		if (pflac->encbuffer)
 			free (pflac->encbuffer) ;
 		} ;
 
 	if (psf->mode == SFM_READ)
-	{	FLAC__seekable_stream_decoder_finish (pflac->fsd) ;
+	{
+#ifdef LEGACY_FLAC
+		FLAC__seekable_stream_decoder_finish (pflac->fsd) ;
 		FLAC__seekable_stream_decoder_delete (pflac->fsd) ;
+#else
+		FLAC__stream_decoder_finish (pflac->fsd) ;
+		FLAC__stream_decoder_delete (pflac->fsd) ;
+#endif
 		} ;
 
 	for (k = 0 ; k < ARRAY_LEN (pflac->rbuffer) ; k++)
@@ -546,17 +676,6 @@
 		return SFE_FLAC_BAD_SAMPLE_RATE ;
 
 	psf_fseek (psf, 0, SEEK_SET) ;
-	if ((pflac->fse = FLAC__seekable_stream_encoder_new ()) == NULL)
-		return SFE_FLAC_NEW_DECODER ;
-	FLAC__seekable_stream_encoder_set_write_callback (pflac->fse, sf_flac_enc_write_callback) ;
-	FLAC__seekable_stream_encoder_set_seek_callback (pflac->fse, sf_flac_enc_seek_callback) ;
-
-#ifdef HAVE_FLAC_1_1_1
-	FLAC__seekable_stream_encoder_set_tell_callback (pflac->fse, sf_flac_enc_tell_callback) ;
-#endif
-	FLAC__seekable_stream_encoder_set_client_data (pflac->fse, psf) ;
-	FLAC__seekable_stream_encoder_set_channels (pflac->fse, psf->sf.channels) ;
-	FLAC__seekable_stream_encoder_set_sample_rate (pflac->fse, psf->sf.samplerate) ;
 
 	switch (psf->sf.format & SF_FORMAT_SUBMASK)
 	{	case SF_FORMAT_PCM_S8 :
@@ -574,12 +693,36 @@
 			break ;
 		} ;
 
+#ifdef LEGACY_FLAC
+	if ((pflac->fse = FLAC__seekable_stream_encoder_new ()) == NULL)
+		return SFE_FLAC_NEW_DECODER ;
+	FLAC__seekable_stream_encoder_set_write_callback (pflac->fse, sf_flac_enc_write_callback) ;
+	FLAC__seekable_stream_encoder_set_seek_callback (pflac->fse, sf_flac_enc_seek_callback) ;
+
+#ifdef HAVE_FLAC_1_1_1
+	FLAC__seekable_stream_encoder_set_tell_callback (pflac->fse, sf_flac_enc_tell_callback) ;
+#endif
+	FLAC__seekable_stream_encoder_set_client_data (pflac->fse, psf) ;
+	FLAC__seekable_stream_encoder_set_channels (pflac->fse, psf->sf.channels) ;
+	FLAC__seekable_stream_encoder_set_sample_rate (pflac->fse, psf->sf.samplerate) ;
 	FLAC__seekable_stream_encoder_set_bits_per_sample (pflac->fse, bps) ;
 
 	if ((bps = FLAC__seekable_stream_encoder_init (pflac->fse)) != FLAC__SEEKABLE_STREAM_DECODER_OK)
 	{	psf_log_printf (psf, "Error : FLAC encoder init returned error : %s\n", FLAC__seekable_stream_encoder_get_resolved_state_string (pflac->fse)) ;
 		return SFE_FLAC_INIT_DECODER ;
 		} ;
+#else
+	if ((pflac->fse = FLAC__stream_encoder_new ()) == NULL)
+		return SFE_FLAC_NEW_DECODER ;
+	FLAC__stream_encoder_set_channels (pflac->fse, psf->sf.channels) ;
+	FLAC__stream_encoder_set_sample_rate (pflac->fse, psf->sf.samplerate) ;
+	FLAC__stream_encoder_set_bits_per_sample (pflac->fse, bps) ;
+
+	if ((bps = FLAC__stream_encoder_init_stream (pflac->fse, sf_flac_enc_write_callback, sf_flac_enc_seek_callback, sf_flac_enc_tell_callback, NULL, psf)) != FLAC__STREAM_DECODER_INIT_STATUS_OK)
+	{	psf_log_printf (psf, "Error : FLAC encoder init returned error : %s\n", FLAC__StreamEncoderInitStatusString[bps]) ;
+		return SFE_FLAC_INIT_DECODER ;
+		} ;
+#endif
 
 	if (psf->error == 0)
 		psf->dataoffset = psf_ftell (psf) ;
@@ -593,6 +736,7 @@
 {	FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
 
 	psf_fseek (psf, 0, SEEK_SET) ;
+#ifdef LEGACY_FLAC
 	if ((pflac->fsd = FLAC__seekable_stream_decoder_new ()) == NULL)
 		return SFE_FLAC_NEW_DECODER ;
 
@@ -610,9 +754,22 @@
 		return SFE_FLAC_INIT_DECODER ;
 
 	FLAC__seekable_stream_decoder_process_until_end_of_metadata (pflac->fsd) ;
+#else
+	if ((pflac->fsd = FLAC__stream_decoder_new ()) == NULL)
+		return SFE_FLAC_NEW_DECODER ;
+
+	if (FLAC__stream_decoder_init_stream (pflac->fsd, sf_flac_read_callback, sf_flac_seek_callback, sf_flac_tell_callback, sf_flac_length_callback, sf_flac_eof_callback, sf_flac_write_callback, sf_flac_meta_callback, sf_flac_error_callback, psf) != FLAC__STREAM_DECODER_INIT_STATUS_OK)
+		return SFE_FLAC_INIT_DECODER ;
+
+	FLAC__stream_decoder_process_until_end_of_metadata (pflac->fsd) ;
+#endif
 	if (psf->error == 0)
 	{	FLAC__uint64 position ;
+#ifdef LEGACY_FLAC
 		FLAC__seekable_stream_decoder_get_decode_position (pflac->fsd, &position) ;
+#else
+		FLAC__stream_decoder_get_decode_position (pflac->fsd, &position) ;
+#endif
 		psf->dataoffset = position ;
 		} ;
 
@@ -676,10 +833,18 @@
 		flac_buffer_copy (psf) ;
 
 	while (pflac->pos < pflac->len)
-	{	if (FLAC__seekable_stream_decoder_process_single (pflac->fsd) == 0)
+	{
+#ifdef LEGACY_FLAC
+		if (FLAC__seekable_stream_decoder_process_single (pflac->fsd) == 0)
 			break ;
 		if (FLAC__seekable_stream_decoder_get_state (pflac->fsd) != FLAC__SEEKABLE_STREAM_DECODER_OK)
 			break ;
+#else
+		if (FLAC__stream_decoder_process_single (pflac->fsd) == 0)
+			break ;
+		if (FLAC__stream_decoder_get_state (pflac->fsd) >= FLAC__STREAM_DECODER_END_OF_STREAM)
+			break ;
+#endif
 		} ;
 
 	pflac->ptr = NULL ;
@@ -795,7 +960,11 @@
 	while (len > 0)
 	{	writecount = (len >= bufferlen) ? bufferlen : (int) len ;
 		convert (ptr + total, buffer, writecount) ;
+#ifdef LEGACY_FLAC
 		if (FLAC__seekable_stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
+#else
+		if (FLAC__stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
+#endif
 			thiswrite = writecount ;
 		else
 			break ;
@@ -837,7 +1006,11 @@
 	while (len > 0)
 	{	writecount = (len >= bufferlen) ? bufferlen : (int) len ;
 		convert (ptr + total, buffer, writecount) ;
+#ifdef LEGACY_FLAC
 		if (FLAC__seekable_stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
+#else
+		if (FLAC__stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
+#endif
 			thiswrite = writecount ;
 		else
 			break ;
@@ -879,7 +1052,11 @@
 	while (len > 0)
 	{	writecount = (len >= bufferlen) ? bufferlen : (int) len ;
 		convert (ptr + total, buffer, writecount, psf->norm_float) ;
+#ifdef LEGACY_FLAC
 		if (FLAC__seekable_stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
+#else
+		if (FLAC__stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
+#endif
 			thiswrite = writecount ;
 		else
 			break ;
@@ -1011,7 +1188,11 @@
 	while (len > 0)
 	{	writecount = (len >= bufferlen) ? bufferlen : (int) len ;
 		convert (ptr + total, buffer, writecount, psf->norm_double) ;
+#ifdef LEGACY_FLAC
 		if (FLAC__seekable_stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
+#else
+		if (FLAC__stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
+#endif
 			thiswrite = writecount ;
 		else
 			break ;
@@ -1131,10 +1312,17 @@
 
 	if (psf->mode == SFM_READ)
 	{	FLAC__uint64 position ;
+#ifdef LEGACY_FLAC
 		if (FLAC__seekable_stream_decoder_seek_absolute (pflac->fsd, offset))
 		{	FLAC__seekable_stream_decoder_get_decode_position (pflac->fsd, &position) ;
 			return offset ;
 			} ;
+#else
+		if (FLAC__stream_decoder_seek_absolute (pflac->fsd, offset))
+		{	FLAC__stream_decoder_get_decode_position (pflac->fsd, &position) ;
+			return offset ;
+			} ;
+#endif
 
 		return ((sf_count_t) -1) ;
 		} ;
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin