Path: blob/main/misc/emulator/xnes/snes9x/apu/resampler.h
28798 views
/* Simple resampler based on bsnes's ruby audio library */12#ifndef __RESAMPLER_H3#define __RESAMPLER_H45#include "ring_buffer.h"67class Resampler : public ring_buffer8{9public:10virtual void clear (void) = 0;11virtual void time_ratio (double) = 0;12virtual void read (short *, int) = 0;13virtual int avail (void) = 0;1415Resampler (int num_samples) : ring_buffer (num_samples << 1)16{17}1819virtual ~Resampler ()20{21}2223inline bool24push (short *src, int num_samples)25{26if (max_write () < num_samples)27return false;2829!num_samples || ring_buffer::push ((unsigned char *) src, num_samples << 1);3031return true;32}3334inline int35space_empty (void)36{37return buffer_size - size;38}3940inline int41space_filled (void)42{43return size;44}4546inline int47max_write (void)48{49return space_empty () >> 1;50}5152inline void53resize (int num_samples)54{55ring_buffer::resize (num_samples << 1);56}57};5859#endif /* __RESAMPLER_H */606162