$NetBSD: patch-ab,v 1.1 2007/01/09 23:19:26 wiz Exp $

--- src/inputPlugins/_flac_common.h.orig	2006-10-10 23:56:55.000000000 +0000
+++ src/inputPlugins/_flac_common.h
@@ -30,7 +30,114 @@
 #include "../inputStream.h"
 #include "../outputBuffer.h"
 #include "../decode.h"
-#include <FLAC/seekable_stream_decoder.h>
+#include <FLAC/export.h>
+#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT <= 7
+#  include <FLAC/seekable_stream_decoder.h>
+#  define flac_decoder           FLAC__SeekableStreamDecoder
+#  define flac_new(x)            FLAC__seekable_stream_decoder_new(x)
+
+#  define flac_ogg_init(a,b,c,d,e,f,g,h,i,j) (0)
+
+#  define flac_get_decode_position(x,y) \
+                 FLAC__seekable_stream_decoder_get_decode_position(x,y)
+#  define flac_get_state(x)      FLAC__seekable_stream_decoder_get_state(x)
+#  define flac_process_single(x) FLAC__seekable_stream_decoder_process_single(x)
+#  define flac_process_metadata(x) \
+                 FLAC__seekable_stream_decoder_process_until_end_of_metadata(x)
+#  define flac_seek_absolute(x,y) \
+                 FLAC__seekable_stream_decoder_seek_absolute(x,y)
+#  define flac_finish(x)         FLAC__seekable_stream_decoder_finish(x)
+#  define flac_delete(x)         FLAC__seekable_stream_decoder_delete(x)
+
+#  define flac_decoder_eof       FLAC__SEEKABLE_STREAM_DECODER_END_OF_STREAM
+
+#  define flac_read_status       FLAC__SeekableStreamDecoderReadStatus
+#  define flac_read_status_continue \
+                                 FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK
+#  define flac_read_status_eof   FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK
+#  define flac_read_status_abort \
+                               FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR
+
+#  define flac_seek_status       FLAC__SeekableStreamDecoderSeekStatus
+#  define flac_seek_status_ok    FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK
+#  define flac_seek_status_error FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR
+
+#  define flac_tell_status         FLAC__SeekableStreamDecoderTellStatus
+#  define flac_tell_status_ok      FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK
+#  define flac_tell_status_error \
+                                FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR
+#  define flac_tell_status_unsupported \
+                                FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR
+
+#  define flac_length_status       FLAC__SeekableStreamDecoderLengthStatus
+#  define flac_length_status_ok  FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK
+#  define flac_length_status_error \
+                              FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR
+#  define flac_length_status_unsupported \
+                              FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR
+
+#  ifdef HAVE_OGGFLAC
+#    include <OggFLAC/seekable_stream_decoder.h>
+#  endif
+#else /* FLAC_API_VERSION_CURRENT >= 7 */
+
+   /* OggFLAC support is handled by our flac_plugin already, and
+    * thus we *can* always have it if libFLAC was compiled with it */
+#  ifndef HAVE_OGGFLAC
+#    define HAVE_OGGFLAC 1
+#  endif
+#  include "_ogg_common.h"
+#  undef HAVE_OGGFLAC /* we don't need this defined anymore */
+
+#  include <FLAC/stream_decoder.h>
+#  define flac_decoder           FLAC__StreamDecoder
+#  define flac_new(x)            FLAC__stream_decoder_new(x)
+
+#  define flac_init(a,b,c,d,e,f,g,h,i,j) \
+        (FLAC__stream_decoder_init_stream(a,b,c,d,e,f,g,h,i,j) \
+         == FLAC__STREAM_DECODER_INIT_STATUS_OK)
+#  define flac_ogg_init(a,b,c,d,e,f,g,h,i,j) \
+        (FLAC__stream_decoder_init_ogg_stream(a,b,c,d,e,f,g,h,i,j) \
+         == FLAC__STREAM_DECODER_INIT_STATUS_OK)
+
+#  define flac_get_decode_position(x,y) \
+                 FLAC__stream_decoder_get_decode_position(x,y)
+#  define flac_get_state(x)      FLAC__stream_decoder_get_state(x)
+#  define flac_process_single(x) FLAC__stream_decoder_process_single(x)
+#  define flac_process_metadata(x) \
+                          FLAC__stream_decoder_process_until_end_of_metadata(x)
+#  define flac_seek_absolute(x,y)  FLAC__stream_decoder_seek_absolute(x,y)
+#  define flac_finish(x)         FLAC__stream_decoder_finish(x)
+#  define flac_delete(x)         FLAC__stream_decoder_delete(x)
+
+#  define flac_decoder_eof       FLAC__STREAM_DECODER_END_OF_STREAM
+
+#  define flac_read_status       FLAC__StreamDecoderReadStatus
+#  define flac_read_status_continue \
+                                 FLAC__STREAM_DECODER_READ_STATUS_CONTINUE
+#  define flac_read_status_eof   FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM
+#  define flac_read_status_abort FLAC__STREAM_DECODER_READ_STATUS_ABORT
+
+#  define flac_seek_status       FLAC__StreamDecoderSeekStatus
+#  define flac_seek_status_ok    FLAC__STREAM_DECODER_SEEK_STATUS_OK
+#  define flac_seek_status_error FLAC__STREAM_DECODER_SEEK_STATUS_ERROR
+#  define flac_seek_status_unsupported \
+                                 FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED
+
+#  define flac_tell_status         FLAC__StreamDecoderTellStatus
+#  define flac_tell_status_ok      FLAC__STREAM_DECODER_TELL_STATUS_OK
+#  define flac_tell_status_error   FLAC__STREAM_DECODER_TELL_STATUS_ERROR
+#  define flac_tell_status_unsupported \
+                                   FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED
+
+#  define flac_length_status       FLAC__StreamDecoderLengthStatus
+#  define flac_length_status_ok    FLAC__STREAM_DECODER_LENGTH_STATUS_OK
+#  define flac_length_status_error FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR
+#  define flac_length_status_unsupported \
+                                 FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED
+
+#endif /* FLAC_API_VERSION_CURRENT >= 7 */
+
 #include <FLAC/metadata.h>
 
 #define FLAC_CHUNK_SIZE 4080
