1 #ifndef __JPLAYER_H 2 #define __JPLAYER_H 3 4 5 #include <zita-jclient.h> 6 #include <zita-resampler/resampler.h> 7 #include "afreader.h" 8 9 10 class Jplayer : public Jclient 11 { 12 public: 13 14 Jplayer (const char *client_name, const char *server_name, int nchan); 15 virtual ~Jplayer (void); 16 17 enum { MAXCHAN = 100 }; 18 enum { STOPPED = 10, STOPLOC, PLAYING, PLAYLOC, ENDFILE, LOCATE }; 19 jack_name(void)20 const char *jack_name (void) const { return _jack_name; } jack_rate(void)21 int jack_rate (void) const { return _jack_rate; } jack_size(void)22 int jack_size (void) const { return _jack_size; } get_posit(void)23 int64_t get_posit (void) const { return _afreader.posit (); } 24 void set_state (int state); 25 void set_posit (int64_t posit); 26 void set_gain (float g, float t); 27 int open_file (const char *name); 28 int close_file (void); file_chan(void)29 int file_chan (void) { return _afreader.file_chan (); } file_rate(void)30 int file_rate (void) { return _afreader.file_rate (); } file_size(void)31 int64_t file_size (void) { return _afreader.file_size (); } 32 33 protected: 34 35 int jack_process (int nframes); 36 void update_state (void); 37 void check_reader (void); 38 void get_frames (int k, int *n, float **p); 39 void output_frames (int n, float *p); 40 void output_silence (int n); 41 42 volatile int _new_state; 43 volatile int64_t _new_posit; 44 volatile int _state_seq1; 45 volatile int _state_seq2; 46 P_sema _state_sync; 47 volatile int _gain_seq1; 48 volatile int _gain_seq2; 49 volatile float _gain0; 50 volatile float _gain1; 51 volatile float _tgain; 52 float _dgain; 53 int _ngain; 54 float *_port_buff [MAXCHAN]; 55 AFreader _afreader; 56 Resampler _resampler; 57 float *_resbuffer; 58 double _resratio; 59 float _g0; 60 float _g1; 61 float _dg; 62 63 static void jack_static_shutdown (void *arg); 64 static int jack_static_process (jack_nframes_t nframes, void *arg); 65 }; 66 67 68 #endif 69