Codebase list squeezelite / d35d19e
split RESAMPLE build option into RESAMPLE and RESAMPLE_MP, OpenMP is now disabled for RESAMPLE Adrian Smith 9 years ago
4 changed file(s) with 29 addition(s) and 5 deletion(s). Raw diff Collapse all Expand all
9595
9696 Minor changes
9797 - reduce time to start track when playing local files
98
98 - disable use of OPENMP when RESAMPLE build option defined, add new option RESAMPLE_MP to enable it
116116 #if WINEVENT
117117 " WINEVENT"
118118 #endif
119 #if RESAMPLE_MP
120 " RESAMPLE_MP"
121 #else
119122 #if RESAMPLE
120123 " RESAMPLE"
124 #endif
121125 #endif
122126 #if FFMPEG
123127 " FFMPEG"
4949 void (* soxr_delete)(soxr_t);
5050 soxr_error_t (* soxr_process)(soxr_t, soxr_in_t, size_t, size_t *, soxr_out_t, size_t olen, size_t *);
5151 size_t *(* soxr_num_clips)(soxr_t);
52 #if RESAMPLE_OPENMP
5253 soxr_runtime_spec_t (* soxr_runtime_spec)(unsigned num_threads);
54 #endif
5355 // soxr_strerror is a macro so not included here
5456 #endif
5557 };
175177
176178 soxr_io_spec_t io_spec;
177179 soxr_quality_spec_t q_spec;
180 soxr_error_t error;
181 #if RESAMPLE_OPENMP
178182 soxr_runtime_spec_t r_spec;
179 soxr_error_t error;
183 #endif
180184
181185 LOG_INFO("resampling from %u -> %u", raw_sample_rate, outrate);
182186
197201 q_spec.phase_response = r->q_phase_response;
198202 }
199203
204 #if RESAMPLE_OPENMP
200205 r_spec = SOXR(r, runtime_spec, 0); // make use of libsoxr OpenMP support allowing parallel execution if multiple cores
206 #endif
201207
202208 LOG_DEBUG("resampling with soxr_quality_spec_t[precision: %03.1f, passband_end: %03.6f, stopband_begin: %03.6f, "
203209 "phase_response: %03.1f, flags: 0x%02x], soxr_io_spec_t[scale: %03.2f]", q_spec.precision,
204210 q_spec.passband_end, q_spec.stopband_begin, q_spec.phase_response, q_spec.flags, io_spec.scale);
205211
206 r->resampler = SOXR(r, create, raw_sample_rate, outrate, 2, &error, &io_spec, &q_spec, &r_spec);
212 r->resampler = SOXR(r, create, raw_sample_rate, outrate, 2, &error, &io_spec, &q_spec,
213 #if RESAMPLE_OPENMP
214 &r_spec
215 #else
216 NULL
217 #endif
218 );
207219 if (error) {
208220 LOG_INFO("soxr_create error: %s", soxr_strerror(error));
209221 return false;
238250
239251 r->soxr_io_spec = dlsym(handle, "soxr_io_spec");
240252 r->soxr_quality_spec = dlsym(handle, "soxr_quality_spec");
241 r->soxr_runtime_spec = dlsym(handle, "soxr_runtime_spec");
242253 r->soxr_create = dlsym(handle, "soxr_create");
243254 r->soxr_delete = dlsym(handle, "soxr_delete");
244255 r->soxr_process = dlsym(handle, "soxr_process");
245256 r->soxr_num_clips = dlsym(handle, "soxr_num_clips");
257 #if RESAMPLE_OPENMP
258 r->soxr_runtime_spec = dlsym(handle, "soxr_runtime_spec");
259 #endif
246260
247261 if ((err = dlerror()) != NULL) {
248262 LOG_INFO("dlerror: %s", err);
7070 #define WINEVENT 1
7171 #endif
7272
73 #if defined(RESAMPLE)
73 #if defined(RESAMPLE) || defined(RESAMPLE_MP)
7474 #undef RESAMPLE
7575 #define RESAMPLE 1 // resampling
7676 #define PROCESS 1 // any sample processing (only resampling at present)
7777 #else
7878 #define RESAMPLE 0
7979 #define PROCESS 0
80 #endif
81 #if defined(RESAMPLE_MP)
82 #undef RESAMPLE_MP
83 #define RESAMPLE_MP 1
84 #else
85 #define RESAMPLE_MP 0
8086 #endif
8187
8288 #if defined(FFMPEG)