diff -Naur audiere/configure.in audiere.tpg/configure.in --- audiere/configure.in 2004-11-07 23:41:37.000000000 +0000 +++ audiere.tpg/configure.in 2008-06-03 18:13:32.000000000 +0000 @@ -66,7 +66,7 @@ AC_MSG_ERROR(could not find pthread library)) dnl Look for FLAC -AC_CHECK_LIB(FLAC, FLAC__seekable_stream_decoder_process_single, +AC_CHECK_LIB(FLAC, FLAC__stream_decoder_process_single, LIBS="-lFLAC -lm $LIBS" EXTRA_LIBS="-lFLAC -lm $EXTRA_LIBS" HAVE_FLAC=true diff -Naur audiere/src/debug.h audiere.tpg/src/debug.h --- audiere/src/debug.h 2004-04-09 09:33:50.000000000 +0000 +++ audiere.tpg/src/debug.h 2008-06-03 18:38:53.000000000 +0000 @@ -60,7 +60,8 @@ #define ADR_IF_DEBUG if (true) #ifdef _MSC_VER - #define ADR_ASSERT(condition, label) if (!(condition)) { __asm int 3 } + #include + #define ADR_ASSERT(condition, label) if (!(condition)) { __debugbreak(); } #else // assume x86 gcc #define ADR_ASSERT(condition, label) assert(condition && label); #endif diff -Naur audiere/src/input_flac.cpp audiere.tpg/src/input_flac.cpp --- audiere/src/input_flac.cpp 2003-10-23 03:41:17.000000000 +0000 +++ audiere.tpg/src/input_flac.cpp 2008-06-03 18:39:53.000000000 +0000 @@ -19,8 +19,8 @@ FLACInputStream::~FLACInputStream() { if (m_decoder) { - FLAC__seekable_stream_decoder_finish(m_decoder); - FLAC__seekable_stream_decoder_delete(m_decoder); + FLAC__stream_decoder_finish(m_decoder); + FLAC__stream_decoder_delete(m_decoder); m_decoder = 0; } } @@ -31,19 +31,19 @@ m_file = file; // initialize the decoder - m_decoder = FLAC__seekable_stream_decoder_new(); + m_decoder = FLAC__stream_decoder_new(); if (!m_decoder) { m_file = 0; return false; } - +/* #define SET_CALLBACK(name) \ - FLAC__seekable_stream_decoder_set_##name##_callback( \ + FLAC__stream_decoder_set_##name##_callback( \ m_decoder, \ name##_callback) // set callbacks - FLAC__seekable_stream_decoder_set_client_data (m_decoder, this); + FLAC__stream_decoder_set_client_data (m_decoder, this); SET_CALLBACK(read); SET_CALLBACK(seek); SET_CALLBACK(tell); @@ -52,39 +52,50 @@ SET_CALLBACK(write); SET_CALLBACK(metadata); SET_CALLBACK(error); - - FLAC__SeekableStreamDecoderState state = - FLAC__seekable_stream_decoder_init(m_decoder); - if (state != FLAC__SEEKABLE_STREAM_DECODER_OK) { - FLAC__seekable_stream_decoder_finish(m_decoder); - FLAC__seekable_stream_decoder_delete(m_decoder); +*/ + FLAC__StreamDecoderInitStatus state = FLAC__stream_decoder_init_stream( + m_decoder, + read_callback, + seek_callback, + tell_callback, + length_callback, + eof_callback, + write_callback, + metadata_callback, + error_callback, + this + ); + + if (state != FLAC__STREAM_DECODER_INIT_STATUS_OK) { + FLAC__stream_decoder_finish(m_decoder); + FLAC__stream_decoder_delete(m_decoder); m_decoder = 0; m_file = 0; return false; } // make sure we have metadata before we return! - if (!FLAC__seekable_stream_decoder_process_until_end_of_metadata(m_decoder)) { - FLAC__seekable_stream_decoder_finish(m_decoder); - FLAC__seekable_stream_decoder_delete(m_decoder); + if (!FLAC__stream_decoder_process_until_end_of_metadata(m_decoder)) { + FLAC__stream_decoder_finish(m_decoder); + FLAC__stream_decoder_delete(m_decoder); m_decoder = 0; m_file = 0; return false; } // process one frame so we can do something! - if (!FLAC__seekable_stream_decoder_process_single(m_decoder)) { - FLAC__seekable_stream_decoder_finish(m_decoder); - FLAC__seekable_stream_decoder_delete(m_decoder); + if (!FLAC__stream_decoder_process_single(m_decoder)) { + FLAC__stream_decoder_finish(m_decoder); + FLAC__stream_decoder_delete(m_decoder); m_decoder = 0; m_file = 0; return false; } // get info about the flac file - m_channel_count = FLAC__seekable_stream_decoder_get_channels(m_decoder); - m_sample_rate = FLAC__seekable_stream_decoder_get_sample_rate(m_decoder); - int bps = FLAC__seekable_stream_decoder_get_bits_per_sample(m_decoder); + m_channel_count = FLAC__stream_decoder_get_channels(m_decoder); + m_sample_rate = FLAC__stream_decoder_get_sample_rate(m_decoder); + int bps = FLAC__stream_decoder_get_bits_per_sample(m_decoder); if (bps == 16) { m_sample_format = SF_S16; } else if (bps == 8) { @@ -120,7 +131,7 @@ // if the buffer is empty, ask FLAC to fill it p if (m_buffer.getSize() < frame_size) { - if (!FLAC__seekable_stream_decoder_process_single(m_decoder)) { + if (!FLAC__stream_decoder_process_single(m_decoder)) { return frames_read; } @@ -147,7 +158,7 @@ void FLACInputStream::reset() { m_file->seek(0, File::BEGIN); - FLAC__seekable_stream_decoder_seek_absolute(m_decoder, 0); + FLAC__stream_decoder_seek_absolute(m_decoder, 0); m_position = 0; m_buffer.clear(); } @@ -167,7 +178,7 @@ void FLACInputStream::setPosition(int position) { - if (FLAC__seekable_stream_decoder_seek_absolute(m_decoder, position)) { + if (FLAC__stream_decoder_seek_absolute(m_decoder, position)) { m_position = position; } } @@ -218,56 +229,58 @@ } - FLAC__SeekableStreamDecoderReadStatus FLACInputStream::read_callback( - const FLAC__SeekableStreamDecoder* decoder, + FLAC__StreamDecoderReadStatus FLACInputStream::read_callback( + const FLAC__StreamDecoder* decoder, FLAC__byte buffer[], - unsigned *bytes, + size_t *bytes, void* client_data) { *bytes = getFile(client_data)->read(buffer, *bytes); if (*bytes == 0) { - return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR; + // was: FLAC__STREAM_DECODER_READ_STATUS_ERROR + return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM; } else { - return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK; + // was: FLAC__STREAM_DECODER_READ_STATUS_OK + return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; } } - FLAC__SeekableStreamDecoderSeekStatus FLACInputStream::seek_callback( - const FLAC__SeekableStreamDecoder* decoder, + FLAC__StreamDecoderSeekStatus FLACInputStream::seek_callback( + const FLAC__StreamDecoder* decoder, FLAC__uint64 absolute_byte_offset, void* client_data) { if (getFile(client_data)->seek(static_cast(absolute_byte_offset), File::BEGIN)) { - return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK; + return FLAC__STREAM_DECODER_SEEK_STATUS_OK; } else { - return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR; + return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; } } - FLAC__SeekableStreamDecoderTellStatus FLACInputStream::tell_callback( - const FLAC__SeekableStreamDecoder* decoder, + FLAC__StreamDecoderTellStatus FLACInputStream::tell_callback( + const FLAC__StreamDecoder* decoder, FLAC__uint64* absolute_byte_offset, void* client_data) { *absolute_byte_offset = getFile(client_data)->tell(); - return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK; + return FLAC__STREAM_DECODER_TELL_STATUS_OK; } - FLAC__SeekableStreamDecoderLengthStatus FLACInputStream::length_callback( - const FLAC__SeekableStreamDecoder* decoder, + FLAC__StreamDecoderLengthStatus FLACInputStream::length_callback( + const FLAC__StreamDecoder* decoder, FLAC__uint64* stream_length, void* client_data) { *stream_length = GetFileLength(getFile(client_data)); - return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK; + return FLAC__STREAM_DECODER_LENGTH_STATUS_OK; } FLAC__bool FLACInputStream::eof_callback( - const FLAC__SeekableStreamDecoder* decoder, + const FLAC__StreamDecoder* decoder, void* client_data) { File* file = getFile(client_data); @@ -276,7 +289,7 @@ FLAC__StreamDecoderWriteStatus FLACInputStream::write_callback( - const FLAC__SeekableStreamDecoder* decoder, + const FLAC__StreamDecoder* decoder, const FLAC__Frame* frame, const FLAC__int32* const buffer[], void* client_data) @@ -286,7 +299,7 @@ void FLACInputStream::metadata_callback( - const FLAC__SeekableStreamDecoder* decoder, + const FLAC__StreamDecoder* decoder, const FLAC__StreamMetadata *metadata, void* client_data) { @@ -298,7 +311,7 @@ void FLACInputStream::error_callback( - const FLAC__SeekableStreamDecoder* decoder, + const FLAC__StreamDecoder* decoder, FLAC__StreamDecoderErrorStatus status, void* client_data) { diff -Naur audiere/src/input_flac.h audiere.tpg/src/input_flac.h --- audiere/src/input_flac.h 2003-07-01 18:45:44.000000000 +0000 +++ audiere.tpg/src/input_flac.h 2008-06-03 18:42:04.000000000 +0000 @@ -2,7 +2,7 @@ #define INPUT_FLAC_H -#include +#include #include "audiere.h" #include "basic_source.h" #include "utility.h" @@ -34,37 +34,37 @@ const FLAC__Frame* frame, const FLAC__int32* const buffer[]); - static FLAC__SeekableStreamDecoderReadStatus read_callback( - const FLAC__SeekableStreamDecoder* decoder, + static FLAC__StreamDecoderReadStatus read_callback( + const FLAC__StreamDecoder* decoder, FLAC__byte buffer[], - unsigned* bytes, + size_t* bytes, void* client_data); - static FLAC__SeekableStreamDecoderSeekStatus seek_callback( - const FLAC__SeekableStreamDecoder* decoder, + static FLAC__StreamDecoderSeekStatus seek_callback( + const FLAC__StreamDecoder* decoder, FLAC__uint64 absolute_byte_offset, void* client_data); - static FLAC__SeekableStreamDecoderTellStatus tell_callback( - const FLAC__SeekableStreamDecoder* decoder, + static FLAC__StreamDecoderTellStatus tell_callback( + const FLAC__StreamDecoder* decoder, FLAC__uint64* absolute_byte_offset, void* client_data); - static FLAC__SeekableStreamDecoderLengthStatus length_callback( - const FLAC__SeekableStreamDecoder* decoder, + static FLAC__StreamDecoderLengthStatus length_callback( + const FLAC__StreamDecoder* decoder, FLAC__uint64* stream_length, void* client_data); static FLAC__bool eof_callback( - const FLAC__SeekableStreamDecoder* decoder, + const FLAC__StreamDecoder* decoder, void* client_data); static FLAC__StreamDecoderWriteStatus write_callback( - const FLAC__SeekableStreamDecoder* decoder, + const FLAC__StreamDecoder* decoder, const FLAC__Frame* frame, const FLAC__int32* const buffer[], void* client_data); static void metadata_callback( - const FLAC__SeekableStreamDecoder* decoder, + const FLAC__StreamDecoder* decoder, const FLAC__StreamMetadata* metadata, void* client_data); static void error_callback( - const FLAC__SeekableStreamDecoder* decoder, + const FLAC__StreamDecoder* decoder, FLAC__StreamDecoderErrorStatus status, void* client_data); @@ -74,7 +74,7 @@ FilePtr m_file; - FLAC__SeekableStreamDecoder* m_decoder; + FLAC__StreamDecoder* m_decoder; /** * This is the buffer used to combine the different channels from FLAC diff -Naur audiere/src/mci_device.h audiere.tpg/src/mci_device.h --- audiere/src/mci_device.h 2004-07-30 02:30:47.000000000 +0000 +++ audiere.tpg/src/mci_device.h 2008-06-03 18:43:02.000000000 +0000 @@ -41,7 +41,11 @@ 0, 0, 0, 0, NULL, NULL, GetModuleHandle(NULL), NULL); if (m_window) { + #if defined(_M_X64) + SetWindowLongPtr(m_window, GWLP_USERDATA, reinterpret_cast(this)); + #else SetWindowLong(m_window, GWL_USERDATA, reinterpret_cast(this)); + #endif } else { ADR_LOG("MCI notification window creation failed"); } @@ -96,7 +100,13 @@ static LRESULT CALLBACK notifyWindowProc(HWND window, UINT msg, WPARAM wparam, LPARAM lparam) { switch (msg) { case MM_MCINOTIFY: { + #if defined(_M_X64) + MCIDevice* This = reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA) + ); + #else MCIDevice* This = reinterpret_cast(GetWindowLong(window, GWL_USERDATA)); + #endif if (This) { This->notify(wparam); }