comparison Plugins/Input/console/Audacious_Driver.cpp @ 149:908ef215f340 trunk

[svn] basic resampling code.
author nenolod
date Thu, 10 Nov 2005 18:15:39 -0800
parents fe9cb5132263
children 1997ecd9dcb1
comparison
equal deleted inserted replaced
148:fe9cb5132263 149:908ef215f340
121 static void play_file_spc(char *filename) 121 static void play_file_spc(char *filename)
122 { 122 {
123 gchar *name; 123 gchar *name;
124 Emu_Std_Reader reader; 124 Emu_Std_Reader reader;
125 Spc_Emu::header_t header; 125 Spc_Emu::header_t header;
126 gint samplerate;
127
128 if (audcfg.resample == TRUE)
129 samplerate = audcfg.resample_rate;
130 else
131 samplerate = Spc_Emu::native_sample_rate;
126 132
127 reader.open(filename); 133 reader.open(filename);
128 reader.read(&header, sizeof(header)); 134 reader.read(&header, sizeof(header));
129 135
130 spc = new Spc_Emu; 136 spc = new Spc_Emu;
131 spc->init(32000); 137 spc->init(samplerate);
132 spc->load(header, reader); 138 spc->load(header, reader);
133 spc->start_track(0); 139 spc->start_track(0);
134 140
135 console_ip_is_going = TRUE; 141 console_ip_is_going = TRUE;
136 142
137 name = get_title(filename); 143 name = get_title(filename);
138 144
139 if (audcfg.loop_length) 145 if (audcfg.loop_length)
140 console_ip.set_info(name, audcfg.loop_length * 1000, 146 console_ip.set_info(name, audcfg.loop_length * 1000,
141 spc->voice_count() * 1000, 32000, 2); 147 spc->voice_count() * 1000, samplerate, 2);
142 else 148 else
143 console_ip.set_info(name, -1, spc->voice_count(), 32000, 2); 149 console_ip.set_info(name, -1, spc->voice_count() * 1000,
144 150 samplerate, 2);
145 151
146 g_free(name); 152 g_free(name);
147 153
148 if (!console_ip.output->open_audio(MY_FMT, 32000, 2)) 154 if (!console_ip.output->open_audio(MY_FMT, samplerate, 2))
149 return; 155 return;
150 156
151 playing_type = PLAY_TYPE_SPC; 157 playing_type = PLAY_TYPE_SPC;
152 158
153 decode_thread = g_thread_create(play_loop_spc, spc, TRUE, NULL); 159 decode_thread = g_thread_create(play_loop_spc, spc, TRUE, NULL);