From 58f565b3ba3ce77ed425d8edbb7a2c0d5229eb3a Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Thu, 26 Mar 2009 11:19:21 -0500
Subject: vorbis-tools: ADD

---
 abs/extra-testing/vorbis-tools/ChangeLog           |  10 +
 abs/extra-testing/vorbis-tools/PKGBUILD            |  25 ++
 abs/extra-testing/vorbis-tools/curl.patch          |  10 +
 .../vorbis-tools-1.1.1-flac_gt_1.1.3_support.patch | 500 +++++++++++++++++++++
 4 files changed, 545 insertions(+)
 create mode 100644 abs/extra-testing/vorbis-tools/ChangeLog
 create mode 100644 abs/extra-testing/vorbis-tools/PKGBUILD
 create mode 100644 abs/extra-testing/vorbis-tools/curl.patch
 create mode 100644 abs/extra-testing/vorbis-tools/vorbis-tools-1.1.1-flac_gt_1.1.3_support.patch

diff --git a/abs/extra-testing/vorbis-tools/ChangeLog b/abs/extra-testing/vorbis-tools/ChangeLog
new file mode 100644
index 0000000..b4f8311
--- /dev/null
+++ b/abs/extra-testing/vorbis-tools/ChangeLog
@@ -0,0 +1,10 @@
+2008-03-15 Travis Willard <travis@archlinux.org>
+
+	* 1.2.0-3
+	Removed explicit /usr/man usage
+
+2008-03-15 Travis Willard <travis@archlinux.org>
+
+	* 1.2.0-1
+	New upstream release.
+	Added ChangeLog
diff --git a/abs/extra-testing/vorbis-tools/PKGBUILD b/abs/extra-testing/vorbis-tools/PKGBUILD
new file mode 100644
index 0000000..4428e6a
--- /dev/null
+++ b/abs/extra-testing/vorbis-tools/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: Travis Willard <travis@archlinux.org>
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Committer: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=vorbis-tools
+pkgver=1.2.0
+pkgrel=3
+pkgdesc="Extra tools for Ogg-Vorbis"
+arch=(i686 x86_64)
+url='http://www.xiph.org/vorbis/'
+license=('GPL')
+depends=('libao' 'libvorbis' 'curl>=7.16.2' 'flac>=1.1.4')
+source=(http://downloads.xiph.org/releases/vorbis/$pkgname-$pkgver.tar.gz)
+md5sums=('df976d24e51ef3d87cd462edf747bf9a')
+
+build() 
+{
+  cd $startdir/src/$pkgname-$pkgver
+  autoconf
+  ./configure --prefix=/usr --without-speex 
+  make || return 1
+  make DESTDIR=$startdir/pkg install
+}
+
diff --git a/abs/extra-testing/vorbis-tools/curl.patch b/abs/extra-testing/vorbis-tools/curl.patch
new file mode 100644
index 0000000..2aabebe
--- /dev/null
+++ b/abs/extra-testing/vorbis-tools/curl.patch
@@ -0,0 +1,10 @@
+--- vorbis-tools-1.1.1/ogg123/http_transport.c.orig	2006-12-09 16:34:44.000000000 +1100
++++ vorbis-tools-1.1.1/ogg123/http_transport.c	2006-12-09 16:39:46.000000000 +1100
+@@ -116,7 +116,6 @@
+   if (inputOpts.ProxyTunnel)
+     curl_easy_setopt (handle, CURLOPT_HTTPPROXYTUNNEL, inputOpts.ProxyTunnel);
+   */
+-  curl_easy_setopt(handle, CURLOPT_MUTE, 1);
+   curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, private->error);
+   curl_easy_setopt(handle, CURLOPT_PROGRESSFUNCTION, progress_callback);
+   curl_easy_setopt(handle, CURLOPT_PROGRESSDATA, private);
diff --git a/abs/extra-testing/vorbis-tools/vorbis-tools-1.1.1-flac_gt_1.1.3_support.patch b/abs/extra-testing/vorbis-tools/vorbis-tools-1.1.1-flac_gt_1.1.3_support.patch
new file mode 100644
index 0000000..19f8e33
--- /dev/null
+++ b/abs/extra-testing/vorbis-tools/vorbis-tools-1.1.1-flac_gt_1.1.3_support.patch
@@ -0,0 +1,500 @@
+Add support for libFLAC-1.1.3. Original patch from Josh Coalson:
+http://lists.xiph.org/pipermail/vorbis-dev/2006-October/018561.html
+This patch updates that to build against svn trunk, and includes
+automatic detection of libFLAC version in ./configure.
+Tested against libFLAC versions 1.1.2 and 1.1.3. 
+
+--- old/vorbis-tools-1.1.1/configure.ac	2005-06-27 10:25:51.000000000 +0100
++++ vorbis-tools-1.1.1/configure.ac	2007-04-07 17:26:15.000000000 +0100
+@@ -169,17 +169,33 @@
+ 
+ FLAC_LIBS=""
+ if test "x$build_flac" = xyes; then
++
+   AC_CHECK_LIB(m,log,FLAC_LIBS="-lm")
+-  AC_CHECK_LIB(FLAC, [FLAC__stream_decoder_process_single],
+-    [have_libFLAC=yes; FLAC_LIBS="-lFLAC $FLAC_LIBS"],
+-    AC_MSG_WARN([libFLAC missing])
+-    have_libFLAC=no, [$FLAC_LIBS]
+-  )
+-  AC_CHECK_LIB(OggFLAC, [OggFLAC__stream_decoder_new],
+-    [FLAC_LIBS="-lOggFLAC $FLAC_LIBS $OGG_LIBS"],
+-    AC_MSG_WARN([libOggFLAC missing])
+-    have_libFLAC=no, [$FLAC_LIBS $OGG_LIBS]
+-  )
++
++  dnl First check for libFLAC-1.1.3 or later. As of libFLAC 1.1.3,
++  dnl OggFLAC functionality has been rolled into libFLAC rather
++  dnl than being in a separate libOggFLAC library.
++
++  AC_CHECK_LIB(FLAC, [FLAC__stream_decoder_init_ogg_stream],
++    have_libFLAC=yes, have_libFLAC=no, [$FLAC_LIBS $OGG_LIBS])
++
++  if test "x$have_libFLAC" = xyes; then
++    FLAC_LIBS="-lFLAC $FLAC_LIBS $OGG_LIBS"
++  else
++    dnl Check for libFLAC prior to 1.1.3
++    AC_CHECK_LIB(FLAC, [FLAC__stream_decoder_process_single],
++      [have_libFLAC=yes; FLAC_LIBS="-lFLAC $FLAC_LIBS"],
++      AC_MSG_WARN([libFLAC missing])
++      have_libFLAC=no, [$FLAC_LIBS]
++    )
++
++    AC_CHECK_LIB(OggFLAC, [OggFLAC__stream_decoder_new],
++      [FLAC_LIBS="-lOggFLAC $FLAC_LIBS $OGG_LIBS"],
++      AC_MSG_WARN([libOggFLAC missing])
++      have_libFLAC=no, [$FLAC_LIBS $OGG_LIBS]
++    )
++  fi
++
+   AC_CHECK_HEADER(FLAC/stream_decoder.h,,
+     AC_MSG_WARN(libFLAC headers missing)
+     have_libFLAC=no,[ ])
+--- old/vorbis-tools-1.1.1/ogg123/flac_format.c	2005-06-03 11:15:09.000000000 +0100
++++ vorbis-tools-1.1.1/ogg123/flac_format.c	2007-04-07 17:25:14.000000000 +0100
+@@ -20,18 +20,26 @@
+ #include <string.h>
+ #include <sys/types.h>
+ #include <math.h>
+-#include <FLAC/metadata.h>
++#include <FLAC/all.h>
+ #include <ao/ao.h>
+ #include "audio.h"
+ #include "format.h"
+ #include "i18n.h"
++#if !defined(FLAC_API_VERSION_CURRENT) || (FLAC_API_VERSION_CURRENT < 8)
++#define NEED_EASYFLAC 1
++#endif
++#if NEED_EASYFLAC
+ #include "easyflac.h"
++#endif
+ #include "vorbis_comments.h"
+ 
+-#define DEFAULT_FLAC_FRAME_SIZE 4608
+-
+ typedef struct {
++#if NEED_EASYFLAC
+   EasyFLAC__StreamDecoder *decoder;
++#else
++  FLAC__StreamDecoder *decoder;
++  int is_oggflac;
++#endif
+   short channels;
+   int rate;
+   int bits_per_sample;
+@@ -67,10 +75,18 @@
+ 
+ 
+ /* Private functions declarations */
+-FLAC__StreamDecoderReadStatus easyflac_read_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data);
+-FLAC__StreamDecoderWriteStatus easyflac_write_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
+-void easyflac_metadata_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
+-void easyflac_error_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
++#if NEED_EASYFLAC
++static FLAC__StreamDecoderReadStatus easyflac_read_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data);
++static FLAC__StreamDecoderWriteStatus easyflac_write_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
++static void easyflac_metadata_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
++static void easyflac_error_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
++#else
++static FLAC__StreamDecoderReadStatus read_callback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data);
++static FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
++static void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
++static void error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
++static FLAC__bool eof_callback(const FLAC__StreamDecoder *decoder, void *client_data);
++#endif
+ 
+ void resize_buffer(flac_private_t *flac, int newchannels, int newsamples);
+ /*void copy_comments (vorbis_comment *v_comments, FLAC__StreamMetadata_VorbisComment *f_comments);*/
+@@ -155,6 +171,7 @@
+   private->buf_start = 0;
+   
+   /* Setup FLAC decoder */
++#if NEED_EASYFLAC
+   if (oggflac_can_decode(source)) {
+     decoder->format = &oggflac_format;
+     private->decoder = EasyFLAC__stream_decoder_new(1);
+@@ -172,13 +189,40 @@
+   EasyFLAC__set_metadata_respond(private->decoder, FLAC__METADATA_TYPE_STREAMINFO);
+   EasyFLAC__set_metadata_respond(private->decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT);
+   EasyFLAC__init(private->decoder);
++#else
++  if (oggflac_can_decode(source)) {
++    private->is_oggflac = 1;
++    decoder->format = &oggflac_format;
++  } else {
++    private->is_oggflac = 0;
++    decoder->format = &flac_format;
++  }
++  private->decoder = FLAC__stream_decoder_new();
++
++  FLAC__stream_decoder_set_md5_checking(private->decoder, false);
++  FLAC__stream_decoder_set_metadata_respond(private->decoder, FLAC__METADATA_TYPE_STREAMINFO);
++  FLAC__stream_decoder_set_metadata_respond(private->decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT);
++  /*FLAC__stream_decoder_init(private->decoder);*/
++  if(private->is_oggflac)
++    FLAC__stream_decoder_init_ogg_stream(private->decoder, read_callback, /*seek_callback=*/0, /*tell_callback=*/0, /*length_callback=*/0, eof_callback, write_callback, metadata_callback, error_callback, decoder);
++  else
++    FLAC__stream_decoder_init_stream(private->decoder, read_callback, /*seek_callback=*/0, /*tell_callback=*/0, /*length_callback=*/0, eof_callback, write_callback, metadata_callback, error_callback, decoder);
++#endif
+   
+   /* Callback will set the total samples and sample rate */
++#if NEED_EASYFLAC
+   EasyFLAC__process_until_end_of_metadata(private->decoder);
++#else
++  FLAC__stream_decoder_process_until_end_of_metadata(private->decoder);
++#endif
+ 
+   /* Callback will set the number of channels and resize the 
+      audio buffer */
++#if NEED_EASYFLAC
+   EasyFLAC__process_single(private->decoder);
++#else
++  FLAC__stream_decoder_process_single(private->decoder);
++#endif
+ 
+   /* FLAC API returns signed samples on all streams */
+   decoder->actual_fmt.signed_sample = 1;
+@@ -241,11 +285,19 @@
+       realsamples += copy;
+     }
+     else if (!priv->eos) {
++#if NEED_EASYFLAC
+       ret = EasyFLAC__process_single(priv->decoder);
+       if (!ret ||
+ 	  EasyFLAC__get_state(priv->decoder)
+ 	  == FLAC__STREAM_DECODER_END_OF_STREAM)
+ 	priv->eos = 1;  /* Bail out! */
++#else
++      ret = FLAC__stream_decoder_process_single(priv->decoder);
++      if (!ret ||
++	  FLAC__stream_decoder_get_state(priv->decoder)
++	  == FLAC__STREAM_DECODER_END_OF_STREAM)
++	priv->eos = 1;  /* Bail out! */
++#endif
+     } else
+       break;
+   }
+@@ -311,8 +363,13 @@
+     free(priv->buf[i]);
+   
+   free(priv->buf);
++#if NEED_EASYFLAC
+   EasyFLAC__finish(priv->decoder);
+   EasyFLAC__stream_decoder_delete(priv->decoder);
++#else
++  FLAC__stream_decoder_finish(priv->decoder);
++  FLAC__stream_decoder_delete(priv->decoder);
++#endif
+ 
+   free(decoder->private);
+   free(decoder);
+@@ -342,7 +399,11 @@
+ 
+ 
+ 
++#if NEED_EASYFLAC
+ FLAC__StreamDecoderReadStatus easyflac_read_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data)
++#else
++FLAC__StreamDecoderReadStatus read_callback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
++#endif
+ {
+   decoder_t *e_decoder = client_data;
+   flac_private_t *priv = e_decoder->private;
+@@ -363,7 +424,11 @@
+ }
+ 
+ 
++#if NEED_EASYFLAC
+ FLAC__StreamDecoderWriteStatus easyflac_write_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
++#else
++FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
++#endif
+ {
+   decoder_t *e_decoder = client_data;
+   flac_private_t *priv = e_decoder->private;
+@@ -389,7 +454,11 @@
+ }
+ 
+ 
++#if NEED_EASYFLAC
+ void easyflac_metadata_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
++#else
++void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
++#endif
+ {
+   decoder_t *e_decoder = client_data;
+   flac_private_t *priv = e_decoder->private;
+@@ -409,12 +478,26 @@
+ }
+ 
+ 
++#if NEED_EASYFLAC
+ void easyflac_error_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
++#else
++void error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
++#endif
+ {
+ 
+ 
+ }
+ 
++#if !NEED_EASYFLAC
++FLAC__bool eof_callback(const FLAC__StreamDecoder *decoder, void *client_data)
++{
++  decoder_t *e_decoder = client_data;
++  flac_private_t *priv = e_decoder->private;
++
++  return priv->eos;
++}
++#endif
++
+ 
+ void resize_buffer(flac_private_t *flac, int newchannels, int newsamples)
+ {
+@@ -457,7 +540,11 @@
+     
+ 
+   
++#if NEED_EASYFLAC
+   if (EasyFLAC__is_oggflac(priv->decoder))
++#else
++  if (priv->is_oggflac)
++#endif
+     cb->printf_metadata(decoder->callback_arg, 2,
+ 			_("Ogg FLAC stream: %d bits, %d channel, %ld Hz"),
+ 			priv->bits_per_sample,
+--- old/vorbis-tools-1.1.1/ogg123/easyflac.c	2005-06-03 11:15:09.000000000 +0100
++++ vorbis-tools-1.1.1/ogg123/easyflac.c	2007-04-07 17:25:26.000000000 +0100
+@@ -33,10 +33,12 @@
+  *
+  */
+ 
++#include <FLAC/export.h>
++#if !defined(FLAC_API_VERSION_CURRENT) || (FLAC_API_VERSION_CURRENT < 8)
++
+ #include <stdlib.h>
+ #include "easyflac.h"
+ 
+-
+ FLAC__bool EasyFLAC__is_oggflac(EasyFLAC__StreamDecoder *decoder)
+ {
+ 	return decoder->is_oggflac;
+@@ -373,3 +375,5 @@
+ 	else
+ 		return FLAC__stream_decoder_process_until_end_of_stream(decoder->flac);
+ }
++
++#endif
+--- old/vorbis-tools-1.1.1/oggenc/flac.c	2005-06-03 11:15:10.000000000 +0100
++++ vorbis-tools-1.1.1/oggenc/flac.c	2007-04-07 18:17:27.000000000 +0100
+@@ -20,15 +20,25 @@
+ #include "platform.h"
+ #include "resample.h"
+ 
+-#define DEFAULT_FLAC_FRAME_SIZE 4608
++#if !defined(FLAC_API_VERSION_CURRENT) || (FLAC_API_VERSION_CURRENT < 8)
++#define NEED_EASYFLAC 1
++#endif
++
++#if NEED_EASYFLAC
++static FLAC__StreamDecoderReadStatus easyflac_read_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data);
++static FLAC__StreamDecoderWriteStatus easyflac_write_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
++static void easyflac_metadata_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
++static void easyflac_error_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
++#else
++static FLAC__StreamDecoderReadStatus read_callback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data);
++static FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
++static void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
++static void error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
++static FLAC__bool eof_callback(const FLAC__StreamDecoder *decoder, void *client_data);
++#endif
+ 
+-FLAC__StreamDecoderReadStatus easyflac_read_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data);
+-FLAC__StreamDecoderWriteStatus easyflac_write_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
+-void easyflac_metadata_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
+-void easyflac_error_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
+-
+-void resize_buffer(flacfile *flac, int newchannels, int newsamples);
+-void copy_comments (vorbis_comment *v_comments, FLAC__StreamMetadata_VorbisComment *f_comments);
++static void resize_buffer(flacfile *flac, int newchannels, int newsamples);
++static void copy_comments (vorbis_comment *v_comments, FLAC__StreamMetadata_VorbisComment *f_comments);
+ 
+ 
+ int flac_id(unsigned char *buf, int len)
+@@ -76,6 +86,7 @@
+ 	flac->in = in;
+ 
+ 	/* Setup FLAC decoder */
++#if NEED_EASYFLAC
+ 	flac->decoder = EasyFLAC__stream_decoder_new(oggflac_id(oldbuf, buflen));
+ 	EasyFLAC__set_client_data(flac->decoder, flac);
+ 	EasyFLAC__set_read_callback(flac->decoder, &easyflac_read_callback);
+@@ -85,14 +96,32 @@
+ 	EasyFLAC__set_metadata_respond(flac->decoder, FLAC__METADATA_TYPE_STREAMINFO);
+ 	EasyFLAC__set_metadata_respond(flac->decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT);
+ 	EasyFLAC__init(flac->decoder);
++#else
++    flac->decoder = FLAC__stream_decoder_new();
++    FLAC__stream_decoder_set_md5_checking(flac->decoder, false);
++    FLAC__stream_decoder_set_metadata_respond(flac->decoder, FLAC__METADATA_TYPE_STREAMINFO);
++    FLAC__stream_decoder_set_metadata_respond(flac->decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT);
++    if(oggflac_id(oldbuf, buflen))
++        FLAC__stream_decoder_init_ogg_stream(flac->decoder, read_callback, /*seek_callback=*/0, /*tell_callback=*/0, /*length_callback=*/0, eof_callback, write_callback, metadata_callback, error_callback, flac);
++    else
++        FLAC__stream_decoder_init_stream(flac->decoder, read_callback, /*seek_callback=*/0, /*tell_callback=*/0, /*length_callback=*/0, eof_callback, write_callback, metadata_callback, error_callback, flac);
++#endif
+ 	
+ 	/* Callback will set the total samples and sample rate */
++#if NEED_EASYFLAC
+ 	EasyFLAC__process_until_end_of_metadata(flac->decoder);
++#else
++    FLAC__stream_decoder_process_until_end_of_metadata(flac->decoder);
++#endif
+ 
+ 	/* Callback will set the number of channels and resize the 
+ 	   audio buffer */
++#if NEED_EASYFLAC
+ 	EasyFLAC__process_single(flac->decoder);
+-	
++#else
++    FLAC__stream_decoder_process_single(flac->decoder);
++#endif
++
+ 	/* Copy format info for caller */
+ 	opt->rate = flac->rate;
+ 	opt->channels = flac->channels;
+@@ -133,11 +162,19 @@
+ 		}
+ 		else if (!flac->eos)
+ 		{
++#if NEED_EASYFLAC
+ 			ret = EasyFLAC__process_single(flac->decoder);
+ 			if (!ret ||
+ 			    EasyFLAC__get_state(flac->decoder)
+ 			    == FLAC__STREAM_DECODER_END_OF_STREAM)
+ 				flac->eos = 1;  /* Bail out! */
++#else
++            ret = FLAC__stream_decoder_process_single(flac->decoder);
++            if (!ret ||
++                FLAC__stream_decoder_get_state(flac->decoder)
++                == FLAC__STREAM_DECODER_END_OF_STREAM)
++                flac->eos = 1;  /* Bail out! */
++#endif
+ 		} else
+ 			break;
+ 	}
+@@ -157,13 +194,22 @@
+ 	free(flac->buf);
+ 	free(flac->oldbuf);
+ 	free(flac->comments);
++#if NEED_EASYFLAC
+ 	EasyFLAC__finish(flac->decoder);
+ 	EasyFLAC__stream_decoder_delete(flac->decoder);
++#else
++    FLAC__stream_decoder_finish(flac->decoder);
++    FLAC__stream_decoder_delete(flac->decoder);
++#endif
+ 	free(flac);
+ }
+ 
+ 
++#if NEED_EASYFLAC
+ FLAC__StreamDecoderReadStatus easyflac_read_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data)
++#else
++FLAC__StreamDecoderReadStatus read_callback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
++#endif
+ {
+ 	flacfile *flac = (flacfile *) client_data;
+ 	int i = 0;
+@@ -200,7 +246,11 @@
+ 	return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;	 
+ }
+ 
++#if NEED_EASYFLAC
+ FLAC__StreamDecoderWriteStatus easyflac_write_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
++#else
++FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
++#endif
+ {
+ 	flacfile *flac = (flacfile *) client_data;
+ 	int samples = frame->header.blocksize;
+@@ -221,7 +271,11 @@
+ 	return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
+ }
+ 
++#if NEED_EASYFLAC
+ void easyflac_metadata_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
++#else
++void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
++#endif
+ {
+ 	flacfile *flac = (flacfile *) client_data;
+ 
+@@ -240,11 +294,24 @@
+ 	}
+ }
+ 
++#if NEED_EASYFLAC
+ void easyflac_error_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
++#else
++void error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
++#endif
+ {
+-	flacfile *flac = (flacfile *) client_data;
++    flacfile *flac = (flacfile *) client_data;
++
++}
++
++#if !NEED_EASYFLAC
++FLAC__bool eof_callback(const FLAC__StreamDecoder *decoder, void *client_data)
++{
++    flacfile *flac = (flacfile *) client_data;
+ 
++    return feof(flac->in)? true : false;
+ }
++#endif
+ 
+ 
+ void resize_buffer(flacfile *flac, int newchannels, int newsamples)
+--- old/vorbis-tools-1.1.1/oggenc/easyflac.c	2005-06-03 11:15:10.000000000 +0100
++++ vorbis-tools-1.1.1/oggenc/easyflac.c	2007-04-07 17:25:56.000000000 +0100
+@@ -33,6 +33,9 @@
+  *
+  */
+ 
++#include <FLAC/export.h>
++#if !defined(FLAC_API_VERSION_CURRENT) || (FLAC_API_VERSION_CURRENT < 8)
++
+ #include <stdlib.h>
+ #include "easyflac.h"
+ 
+@@ -373,3 +376,5 @@
+ 	else
+ 		return FLAC__stream_decoder_process_until_end_of_stream(decoder->flac);
+ }
++
++#endif
+--- old/vorbis-tools-1.1.1/oggenc/flac.h	2005-06-03 11:15:10.000000000 +0100
++++ vorbis-tools-1.1.1/oggenc/flac.h	2007-04-07 17:31:53.000000000 +0100
+@@ -5,10 +5,21 @@
+ #include "encode.h"
+ #include "audio.h"
+ #include <stdio.h>
++#include <FLAC/stream_decoder.h>
++#if !defined(FLAC_API_VERSION_CURRENT) || (FLAC_API_VERSION_CURRENT < 8)
++#define NEED_EASYFLAC 1
++#endif
++#if NEED_EASYFLAC
++#include <OggFLAC/stream_decoder.h>
+ #include "easyflac.h"
++#endif
+ 
+ typedef struct {
++#if NEED_EASYFLAC
+ 	EasyFLAC__StreamDecoder *decoder;
++#else
++	FLAC__StreamDecoder *decoder;
++#endif
+ 	short channels;
+ 	int rate;
+ 	long totalsamples; /* per channel, of course */
-- 
cgit v0.12

