# HG changeset patch # User Matti Hamalainen # Date 1352130668 -7200 # Node ID d9d769b5dbe2da5dd69edb9997908e8f4afc3740 # Parent c8be6b069eec52356c4649084ba3ad5272817e85 Remove oversampling support. diff -r c8be6b069eec -r d9d769b5dbe2 src/xmms-sid.c --- a/src/xmms-sid.c Mon Nov 05 17:26:43 2012 +0200 +++ b/src/xmms-sid.c Mon Nov 05 17:51:08 2012 +0200 @@ -105,20 +105,10 @@ if (xs_cfg.audioFrequency < 8000) xs_cfg.audioFrequency = 8000; - if (xs_cfg.oversampleFactor < XS_MIN_OVERSAMPLE) - xs_cfg.oversampleFactor = XS_MIN_OVERSAMPLE; - else if (xs_cfg.oversampleFactor > XS_MAX_OVERSAMPLE) - xs_cfg.oversampleFactor = XS_MAX_OVERSAMPLE; - - if (xs_cfg.audioChannels != XS_CHN_MONO) - xs_cfg.oversampleEnable = FALSE; - xs_status.audioFrequency = xs_cfg.audioFrequency; xs_status.audioBitsPerSample = xs_cfg.audioBitsPerSample; xs_status.audioChannels = xs_cfg.audioChannels; xs_status.audioFormat = -1; - xs_status.oversampleEnable = xs_cfg.oversampleEnable; - xs_status.oversampleFactor = xs_cfg.oversampleFactor; /* Try to initialize emulator engine */ xs_init_emu_engine(&xs_cfg.playerEngine, &xs_status); @@ -127,7 +117,6 @@ xs_cfg.audioFrequency = xs_status.audioFrequency; xs_cfg.audioBitsPerSample = xs_status.audioBitsPerSample; xs_cfg.audioChannels = xs_status.audioChannels; - xs_cfg.oversampleEnable = xs_status.oversampleEnable; XS_MUTEX_UNLOCK(xs_status); XS_MUTEX_UNLOCK(xs_cfg); @@ -243,7 +232,7 @@ xs_tuneinfo_t *myTune; gboolean audioOpen = FALSE, doPlay = FALSE, isFound = FALSE; gint audioGot, songLength, i; - gchar *audioBuffer = NULL, *oversampleBuffer = NULL, *tmpTitle; + gchar *audioBuffer = NULL, *tmpTitle; (void) argPointer; @@ -263,14 +252,6 @@ goto xs_err_exit; } - if (myStatus.oversampleEnable) { - oversampleBuffer = (gchar *) g_malloc(XS_AUDIOBUF_SIZE * myStatus.oversampleFactor); - if (oversampleBuffer == NULL) { - xs_error("Couldn't allocate memory for audio oversampling buffer!\n"); - goto xs_err_exit; - } - } - /* * Main player loop: while not stopped, loop here - play subtunes */ @@ -387,29 +368,8 @@ * Play the subtune */ while (xs_status.isPlaying && myStatus.isPlaying && (xs_status.currSong == myStatus.currSong)) { - /* Render audio data */ - if (myStatus.oversampleEnable) { - /* Perform oversampled rendering */ - audioGot = myStatus.sidPlayer->plrFillBuffer( - &myStatus, - oversampleBuffer, - (XS_AUDIOBUF_SIZE * myStatus.oversampleFactor)); - - audioGot /= myStatus.oversampleFactor; - - /* Execute rate-conversion with filtering */ - if (xs_filter_rateconv(audioBuffer, oversampleBuffer, - myStatus.audioFormat, myStatus.oversampleFactor, audioGot) < 0) { - xs_error("Oversampling rate-conversion pass failed.\n"); - XS_MUTEX_LOCK(xs_status); - xs_status.isError = TRUE; - XS_MUTEX_UNLOCK(xs_status); - goto xs_err_exit; - } - } else { - audioGot = myStatus.sidPlayer->plrFillBuffer( - &myStatus, audioBuffer, XS_AUDIOBUF_SIZE); - } + audioGot = myStatus.sidPlayer->plrFillBuffer( + &myStatus, audioBuffer, XS_AUDIOBUF_SIZE); /* I <3 visualice/haujobb */ xs_plugin_ip.add_vis_pcm( @@ -471,7 +431,6 @@ } g_free(audioBuffer); - g_free(oversampleBuffer); /* Set playing status to false (stopped), thus when * XMMS next calls xs_get_time(), it can return appropriate diff -r c8be6b069eec -r d9d769b5dbe2 src/xmms-sid.h --- a/src/xmms-sid.h Mon Nov 05 17:26:43 2012 +0200 +++ b/src/xmms-sid.h Mon Nov 05 17:51:08 2012 +0200 @@ -93,11 +93,6 @@ #define XS_SIDPLAY2_NFPOINTS (0x800) #define XS_SIDPLAY2_FMAX (24000) -/* Limits for oversampling - */ -#define XS_MIN_OVERSAMPLE (2) -#define XS_MAX_OVERSAMPLE (8) - /* Macros for mutexes and threads. These exist to be able to * easily change from pthreads to glib threads, etc, if necessary. diff -r c8be6b069eec -r d9d769b5dbe2 src/xs_config.c --- a/src/xs_config.c Mon Nov 05 17:26:43 2012 +0200 +++ b/src/xs_config.c Mon Nov 05 17:51:08 2012 +0200 @@ -107,9 +107,6 @@ { CTYPE_INT, &xs_cfg.sid2OptLevel, "sid2OptLevel" }, { CTYPE_INT, &xs_cfg.sid2NFilterPresets, "sid2NFilterPresets" }, -{ CTYPE_BOOL, &xs_cfg.oversampleEnable, "oversampleEnable" }, -{ CTYPE_INT, &xs_cfg.oversampleFactor, "oversampleFactor" }, - { CTYPE_BOOL, &xs_cfg.playMaxTimeEnable, "playMaxTimeEnable" }, { CTYPE_BOOL, &xs_cfg.playMaxTimeUnknown, "playMaxTimeUnknown" }, { CTYPE_INT, &xs_cfg.playMaxTime, "playMaxTime" }, @@ -145,8 +142,6 @@ { WTYPE_BGROUP, CTYPE_INT, "cfg_chn_stereo", &xs_cfg.audioChannels, XS_CHN_STEREO }, { WTYPE_BGROUP, CTYPE_INT, "cfg_chn_autopan", &xs_cfg.audioChannels, XS_CHN_AUTOPAN }, { WTYPE_COMBO, CTYPE_INT, "cfg_samplerate", &xs_cfg.audioFrequency, XS_AUDIO_FREQ }, -{ WTYPE_BUTTON, CTYPE_BOOL, "cfg_oversample", &xs_cfg.oversampleEnable, 0 }, -{ WTYPE_SPIN, CTYPE_INT, "cfg_oversample_factor",&xs_cfg.oversampleFactor, 0 }, { WTYPE_BGROUP, CTYPE_INT, "cfg_emu_sidplay1", &xs_cfg.playerEngine, XS_ENG_SIDPLAY1 }, { WTYPE_BGROUP, CTYPE_INT, "cfg_emu_sidplay2", &xs_cfg.playerEngine, XS_ENG_SIDPLAY2 }, @@ -256,9 +251,6 @@ #endif #endif - xs_cfg.oversampleEnable = FALSE; - xs_cfg.oversampleFactor = XS_MIN_OVERSAMPLE; - xs_cfg.playMaxTimeEnable = FALSE; xs_cfg.playMaxTimeUnknown = FALSE; xs_cfg.playMaxTime = 150; @@ -1278,16 +1270,6 @@ } -void xs_cfg_oversample_toggled(GtkToggleButton * togglebutton, gpointer user_data) -{ - gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active; - - (void) user_data; - - gtk_widget_set_sensitive(LUW("cfg_oversample_box"), isActive); -} - - void xs_cfg_mintime_enable_toggled(GtkToggleButton * togglebutton, gpointer user_data) { gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active; @@ -1451,7 +1433,6 @@ xs_cfg_emu_filters_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_emu_filters")), NULL); xs_cfg_emu_sidplay1_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_emu_sidplay1")), NULL); xs_cfg_emu_sidplay2_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_emu_sidplay2")), NULL); - xs_cfg_oversample_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_oversample")), NULL); xs_cfg_mintime_enable_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_mintime_enable")), NULL); xs_cfg_maxtime_enable_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_maxtime_enable")), NULL); xs_cfg_sldb_enable_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_sld_enable")), NULL); diff -r c8be6b069eec -r d9d769b5dbe2 src/xs_config.h --- a/src/xs_config.h Mon Nov 05 17:26:43 2012 +0200 +++ b/src/xs_config.h Mon Nov 05 17:51:08 2012 +0200 @@ -97,9 +97,6 @@ gint audioChannels; gint audioFrequency; - gboolean oversampleEnable; - gint oversampleFactor; /* Factor of oversampling */ - /* Emulation settings */ gboolean mos8580; /* TRUE = 8580, FALSE = 6581 */ gboolean forceModel; diff -r c8be6b069eec -r d9d769b5dbe2 src/xs_genui.h --- a/src/xs_genui.h Mon Nov 05 17:26:43 2012 +0200 +++ b/src/xs_genui.h Mon Nov 05 17:51:08 2012 +0200 @@ -7,10 +7,6 @@ gpointer user_data); void -xs_cfg_oversample_toggled (GtkToggleButton *togglebutton, - gpointer user_data); - -void xs_cfg_emu_sidplay1_toggled (GtkToggleButton *togglebutton, gpointer user_data); diff -r c8be6b069eec -r d9d769b5dbe2 src/xs_player.h --- a/src/xs_player.h Mon Nov 05 17:26:43 2012 +0200 +++ b/src/xs_player.h Mon Nov 05 17:51:08 2012 +0200 @@ -28,13 +28,9 @@ typedef struct xs_status_t { gint audioFrequency, /* Audio settings */ audioChannels, - audioBitsPerSample, - oversampleFactor; /* Factor of oversampling */ + audioBitsPerSample; AFormat audioFormat; - gboolean oversampleEnable; /* TRUE after sidEngine initialization, - if xs_cfg.oversampleEnable == TRUE and - emulation backend supports oversampling. - */ + void *sidEngine; /* SID-emulation internal engine data */ xs_engine_t *sidPlayer; /* Selected player engine */ gboolean isError, diff -r c8be6b069eec -r d9d769b5dbe2 src/xs_sidplay1.cc --- a/src/xs_sidplay1.cc Mon Nov 05 17:26:43 2012 +0200 +++ b/src/xs_sidplay1.cc Mon Nov 05 17:51:08 2012 +0200 @@ -158,16 +158,8 @@ myEngine->currConfig.bitsPerSample = myStatus->audioBitsPerSample; tmpFreq = myStatus->audioFrequency; - if (myStatus->oversampleEnable) { - if ((tmpFreq * myStatus->oversampleFactor) > SIDPLAY1_MAX_FREQ) { - myStatus->oversampleEnable = FALSE; - } else { - tmpFreq = (tmpFreq * myStatus->oversampleFactor); - } - } else { - if (tmpFreq > SIDPLAY1_MAX_FREQ) - tmpFreq = SIDPLAY1_MAX_FREQ; - } + if (tmpFreq > SIDPLAY1_MAX_FREQ) + tmpFreq = SIDPLAY1_MAX_FREQ; myEngine->currConfig.frequency = tmpFreq; diff -r c8be6b069eec -r d9d769b5dbe2 src/xs_sidplay2.cc --- a/src/xs_sidplay2.cc Mon Nov 05 17:26:43 2012 +0200 +++ b/src/xs_sidplay2.cc Mon Nov 05 17:51:08 2012 +0200 @@ -123,7 +123,7 @@ */ gboolean xs_sidplay2_init(xs_status_t * myStatus) { - gint tmpFreq, i; + gint i; xs_sidplay2_t *myEngine; sid_filter_t tmpFilter; xs_sid_filter_t *f; @@ -187,19 +187,16 @@ /* Audio parameters sanity checking and setup */ - tmpFreq = myStatus->audioFrequency; #ifndef HAVE_SIDPLAY2_FP myEngine->currConfig.precision = myStatus->audioBitsPerSample; - if (myStatus->oversampleEnable) - tmpFreq = (tmpFreq * myStatus->oversampleFactor); - #else myStatus->audioBitsPerSample = XS_RES_16BIT; myEngine->currConfig.samplingMethod = SID2_RESAMPLE_INTERPOLATE; #endif - myEngine->currConfig.frequency = tmpFreq; + myEngine->currConfig.frequency = myStatus->audioFrequency; + switch (myStatus->audioBitsPerSample) { case XS_RES_8BIT: diff -r c8be6b069eec -r d9d769b5dbe2 src/xs_support.c --- a/src/xs_support.c Mon Nov 05 17:26:43 2012 +0200 +++ b/src/xs_support.c Mon Nov 05 17:51:08 2012 +0200 @@ -208,65 +208,3 @@ while (str[*pos] && isdigit(str[*pos])) (*pos)++; } - - -/* Let's do some preprocessor magic :) */ -#define XS_FVAR(T, P, K) g ## K ## int ## P *sp_ ## T ## P , *dp_ ## T ## P - -#define XS_FILTER1(T, P, K, Q) \ - dataSize /= sizeof(g ## K ## int ## P); \ - sp_ ## T ## P = (g ## K ## int ## P *) srcBuf; \ - dp_ ## T ## P = (g ## K ## int ## P *) destBuf; \ - while (dataSize-- > 0) { \ - for (tmp = 0, i = 0; i < oversampleFactor; i++) \ - tmp += (gint32) ((gint ## P) (*(sp_ ## T ## P ++) Q)); \ - xs_filter_mbn = (tmp + xs_filter_mbn) / (oversampleFactor + 1); \ - *(dp_ ## T ## P ++) = ((g ## K ## int ## P) xs_filter_mbn) Q ; \ - } - - -static gint32 xs_filter_mbn = 0; - - -gint xs_filter_rateconv(void *destBuf, void *srcBuf, const AFormat audioFormat, - const gint oversampleFactor, const gint bufSize) -{ - static gint32 tmp; - XS_FVAR(s, 8,); - XS_FVAR(u, 8, u); - XS_FVAR(s, 16,); - XS_FVAR(u, 16, u); - gint i; - gint dataSize = bufSize; - - if (dataSize <= 0) - return dataSize; - - switch (audioFormat) { - case FMT_U8: - XS_FILTER1(u, 8, u, ^0x80) - break; - - case FMT_S8: - XS_FILTER1(s, 8,,) - break; - - - case FMT_U16_BE: - case FMT_U16_LE: - case FMT_U16_NE: - XS_FILTER1(u, 16, u, ^0x8000) - break; - - case FMT_S16_BE: - case FMT_S16_LE: - case FMT_S16_NE: - XS_FILTER1(s, 16,,) - break; - - default: - return -1; - } - - return 0; -} diff -r c8be6b069eec -r d9d769b5dbe2 src/xs_support.h --- a/src/xs_support.h Mon Nov 05 17:26:43 2012 +0200 +++ b/src/xs_support.h Mon Nov 05 17:51:08 2012 +0200 @@ -101,14 +101,6 @@ void xs_findeol(const gchar *, size_t *); void xs_findnum(const gchar *, size_t *); -/* -typedef struct { -} t_xs_filter; - -void xs_filter_init(t_xs_filter *); -*/ -gint xs_filter_rateconv(void *, void *, const AFormat, const gint, const gint); - #ifdef __cplusplus } diff -r c8be6b069eec -r d9d769b5dbe2 xmms-sid.glade --- a/xmms-sid.glade Mon Nov 05 17:26:43 2012 +0200 +++ b/xmms-sid.glade Mon Nov 05 17:51:08 2012 +0200 @@ -280,117 +280,6 @@ - - - GtkFrame - cfg_oversample_frame - 4 - - 0 - GTK_SHADOW_ETCHED_IN - - 0 - False - True - - - - GtkVBox - w_vbox27 - 2 - False - 2 - - - GtkCheckButton - cfg_oversample - True - - toggled - xs_cfg_oversample_toggled - Wed, 18 Aug 2004 02:20:35 GMT - - - False - True - - 0 - False - False - - - - - GtkHBox - cfg_oversample_box - 2 - False - 4 - - 0 - False - True - - - - GtkLabel - cfg_oversample_label1 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - 0 - False - False - - - - - GtkSpinButton - cfg_oversample_factor - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 2 - 2 - 8 - 1 - 1 - 1 - - 0 - False - True - - - - - GtkLabel - cfg_oversample_label2 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - 0 - False - False - - - - -