annotate audioio/AudioJACKTarget.h @ 70:716e9d2f91c7

* Skip ID3 block when reading MP3 files (so long as ID3 support is included) * Show progress when retrieving audio file from playlist * Avoid -- but do not actually fix -- segmentation fault on exit. I am totally stumped at the moment about why both the PA and JACK audio targets should crash when properly shut down. For the moment, we just don't shut them down... * Fix incorrect behaviour (introduced on Friday as part of a different fix) when replacing main model in situation where no current main model exists
author Chris Cannam
date Fri, 30 Nov 2007 17:31:09 +0000
parents 3c5756fb6a68
children 9fc4b256c283
rev   line source
Chris@43 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@43 2
Chris@43 3 /*
Chris@43 4 Sonic Visualiser
Chris@43 5 An audio file viewer and annotation editor.
Chris@43 6 Centre for Digital Music, Queen Mary, University of London.
Chris@43 7 This file copyright 2006 Chris Cannam.
Chris@43 8
Chris@43 9 This program is free software; you can redistribute it and/or
Chris@43 10 modify it under the terms of the GNU General Public License as
Chris@43 11 published by the Free Software Foundation; either version 2 of the
Chris@43 12 License, or (at your option) any later version. See the file
Chris@43 13 COPYING included with this distribution for more information.
Chris@43 14 */
Chris@43 15
Chris@43 16 #ifndef _AUDIO_JACK_TARGET_H_
Chris@43 17 #define _AUDIO_JACK_TARGET_H_
Chris@43 18
Chris@43 19 #ifdef HAVE_JACK
Chris@43 20
Chris@43 21 #include <jack/jack.h>
Chris@43 22 #include <vector>
Chris@43 23
Chris@43 24 #include "AudioCallbackPlayTarget.h"
Chris@43 25
Chris@43 26 #include <QMutex>
Chris@43 27
Chris@43 28 class AudioCallbackPlaySource;
Chris@43 29
Chris@43 30 class AudioJACKTarget : public AudioCallbackPlayTarget
Chris@43 31 {
Chris@43 32 Q_OBJECT
Chris@43 33
Chris@43 34 public:
Chris@43 35 AudioJACKTarget(AudioCallbackPlaySource *source);
Chris@43 36 virtual ~AudioJACKTarget();
Chris@43 37
Chris@70 38 virtual void shutdown();
Chris@70 39
Chris@43 40 virtual bool isOK() const;
Chris@43 41
Chris@43 42 public slots:
Chris@43 43 virtual void sourceModelReplaced();
Chris@43 44
Chris@43 45 protected:
Chris@43 46 int process(jack_nframes_t nframes);
Chris@43 47 int xrun();
Chris@43 48
Chris@43 49 static int processStatic(jack_nframes_t, void *);
Chris@43 50 static int xrunStatic(void *);
Chris@43 51
Chris@43 52 jack_client_t *m_client;
Chris@43 53 std::vector<jack_port_t *> m_outputs;
Chris@43 54 jack_nframes_t m_bufferSize;
Chris@43 55 jack_nframes_t m_sampleRate;
Chris@43 56 QMutex m_mutex;
Chris@70 57 bool m_done;
Chris@43 58 };
Chris@43 59
Chris@43 60 #endif /* HAVE_JACK */
Chris@43 61
Chris@43 62 #endif
Chris@43 63