// ---------------------------------------------------------------------------- // // Copyright (C) 2006-2012 Fons Adriaensen // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // ---------------------------------------------------------------------------- #ifndef __RESAMPLER_TABLE_H #define __RESAMPLER_TABLE_H #include class Resampler_mutex { private: friend class Resampler_table; Resampler_mutex (void) { pthread_mutex_init (&_mutex, nullptr); } ~Resampler_mutex (void) { pthread_mutex_destroy (&_mutex); } void lock (void) { pthread_mutex_lock (&_mutex); } void unlock (void) { pthread_mutex_unlock (&_mutex); } pthread_mutex_t _mutex; }; class Resampler_table { public: static void print_list (void); private: Resampler_table (double fr, unsigned int hl, unsigned int np); ~Resampler_table (void); friend class Resampler; friend class VResampler; Resampler_table *_next; unsigned int _refc; float *_ctab; double _fr; unsigned int _hl; unsigned int _np; static Resampler_table *create (double fr, unsigned int hl, unsigned int np); static void destroy (Resampler_table *T); static Resampler_table *_list; static Resampler_mutex _mutex; }; #endif