Mercurial > hg > xmms-sid
changeset 833:c0e892fa914a
Begin moving libSIDPlay2-FP stuff to a separete module by removing the
relevant parts from the libSIDPlay2 backend interface.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 08 Nov 2012 20:45:28 +0200 |
parents | b158abe91a75 |
children | a7ee5dc23e78 |
files | src/xs_sidplay2.cc |
diffstat | 1 files changed, 12 insertions(+), 84 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xs_sidplay2.cc Thu Nov 08 20:44:55 2012 +0200 +++ b/src/xs_sidplay2.cc Thu Nov 08 20:45:28 2012 +0200 @@ -1,7 +1,7 @@ /* XMMS-SID - SIDPlay input plugin for X MultiMedia System (XMMS) - libSIDPlay v2 and libSIDPlay v2-FP support + libSIDPlay v2 support Programmed and designed by Matti 'ccr' Hamalainen <ccr@tnsp.org> (C) Copyright 1999-2012 Tecnic Software productions (TNSP) @@ -28,22 +28,15 @@ #include "xs_slsup.h" #include "xs_config.h" - -#ifdef HAVE_SIDPLAY2_FP -# include <sidplayfp/sidplay2.h> -# include <sidplayfp/SidTuneMod.h> -# include <sidplayfp/event.h> +#include <sidplay/sidplay2.h> +#if G_BYTE_ORDER == G_BIG_ENDIAN +# define SID2_NATIVE_UNSIGNED SID2_BIG_UNSIGNED +# define SID2_NATIVE_SIGNED SID2_BIG_SIGNED +#elif G_BYTE_ORDER == G_LITTLE_ENDIAN +# define SID2_NATIVE_UNSIGNED SID2_LITTLE_UNSIGNED +# define SID2_NATIVE_SIGNED SID2_LITTLE_SIGNED #else -# include <sidplay/sidplay2.h> -# if G_BYTE_ORDER == G_BIG_ENDIAN -# define SID2_NATIVE_UNSIGNED SID2_BIG_UNSIGNED -# define SID2_NATIVE_SIGNED SID2_BIG_SIGNED -# elif G_BYTE_ORDER == G_LITTLE_ENDIAN -# define SID2_NATIVE_UNSIGNED SID2_LITTLE_UNSIGNED -# define SID2_NATIVE_SIGNED SID2_LITTLE_SIGNED -# else -# error Unsupported endianess! -# endif +# error Unsupported endianess! #endif @@ -59,20 +52,11 @@ #ifdef HAVE_RESID_BUILDER -# ifdef HAVE_SIDPLAY2_FP -# include <sidplayfp/builders/residfp.h> -# include <sidplayfp/builders/resid.h> -# else -# include <sidplay/builders/resid.h> -# endif +# include <sidplay/builders/resid.h> #endif #ifdef HAVE_HARDSID_BUILDER -# ifdef HAVE_SIDPLAY2_FP -# include <sidplayfp/builders/hardsid.h> -# else -# include <sidplay/builders/hardsid.h> -# endif +# include <sidplay/builders/hardsid.h> #endif @@ -124,11 +108,9 @@ gboolean xs_sidplay2_init(XSEngineState * state) { XSSIDPlay2 *engine; -#ifndef HAVE_SIDPLAY2_FP sid_filter_t tmpFilter; xs_sid_filter_t *f; gint i; -#endif assert(state); /* Allocate internal structures */ @@ -183,30 +165,19 @@ /* Audio parameters sanity checking and setup */ -#ifdef HAVE_SIDPLAY2_FP - state->audioBitsPerSample = XS_RES_16BIT; - engine->config.samplingMethod = SID2_RESAMPLE_INTERPOLATE; -#else engine->config.precision = state->audioBitsPerSample; -#endif - engine->config.frequency = state->audioFrequency; switch (state->audioBitsPerSample) { -#ifndef HAVE_SIDPLAY2_FP case XS_RES_8BIT: state->audioFormat = FMT_U8; engine->config.sampleFormat = SID2_LITTLE_UNSIGNED; break; -#endif case XS_RES_16BIT: default: -#ifdef HAVE_SIDPLAY2_FP - state->audioFormat = FMT_S16_NE; -#else switch (state->audioFormat) { case FMT_U16_LE: @@ -234,11 +205,9 @@ engine->config.sampleFormat = SID2_NATIVE_SIGNED; break; } -#endif break; } -#if !defined(HAVE_SIDPLAY2_FP) /* Convert filter */ f = &(xs_cfg.sid2Filter); XSDEBUG("using filter '%s', %d points\n", f->name, f->npoints); @@ -255,7 +224,6 @@ tmpFilter.cutoff[i][0] = f->points[i].x; tmpFilter.cutoff[i][1] = f->points[i].y; } -#endif /* Initialize builder object */ XSDEBUG("init builder #%i, maxsids=%i\n", xs_cfg.sid2Builder, (engine->emu.info()).maxsids); @@ -272,27 +240,6 @@ if (!*rs) return FALSE; rs->create((engine->emu.info()).maxsids); if (!*rs) return FALSE; -#ifdef HAVE_SIDPLAY2_FP - rs->bias(0.0f); -#endif - } - } - break; -#endif - -#ifdef HAVE_RESID_FP_BUILDER - case XS_BLD_RESID_FP: - { - ReSIDfpBuilder *rs = new ReSIDfpBuilder("ReSID builder FP!"); - if (rs) - { - engine->config.sidEmulation = rs; - if (!*rs) return FALSE; - rs->create((engine->emu.info()).maxsids); - if (!*rs) return FALSE; - - rs->filter6581Curve(0.0); - rs->filter8580Curve(0.0); } } break; @@ -327,7 +274,7 @@ return FALSE; } -#ifdef HAVE_SIDPLAY2_FP +#if 0 // Setup filter engine->config.sidEmulation->filter(xs_cfg.emulateFilters); if (!*(engine->config.sidEmulation)) @@ -367,7 +314,6 @@ } -#ifndef HAVE_SIDPLAY2_FP if (xs_cfg.sid2OptLevel < 0 || xs_cfg.sid2OptLevel > SID2_MAX_OPTIMISATION) { xs_error("Invalid sid2OptLevel=%d, falling back to %d.\n", @@ -376,7 +322,6 @@ xs_cfg.sid2OptLevel = SID2_DEFAULT_OPTIMISATION; } engine->config.optimisation = xs_cfg.sid2OptLevel; -#endif engine->config.sidDefault = xs_cfg.mos8580 ? SID2_MOS8580 : SID2_MOS6581; engine->config.sidModel = xs_cfg.forceModel ? engine->config.sidDefault : SID2_MODEL_CORRECT; @@ -444,18 +389,7 @@ if (!engine) return 0; -#if 1 -#ifdef HAVE_SIDPLAY2_FP - int nsamples = audioBufSize / sizeof(short); - return engine->emu.play((short *) audioBuffer, nsamples) * sizeof(short); -#else return engine->emu.play(audioBuffer, audioBufSize); -#endif -#else - int nsamples = audioBufSize / sizeof(short); - fprintf(stderr, "%p, %d -> %d\n", audioBuffer, audioBufSize, nsamples); - return 0; -#endif } @@ -497,13 +431,7 @@ #ifdef HAVE_HARDSID_BUILDER if (xs_cfg.sid2Builder == XS_BLD_HARDSID) { -#ifdef HSID_SID2_COM - IfPtr<HardSIDBuilder> hs(engine->config.sidEmulation); - if (hs) - hs->flush(); -#else ((HardSIDBuilder *) engine->config.sidEmulation)->flush(); -#endif } #endif }