annotate data/fileio/MP3FileReader.h @ 167:665342c6ec57

* Add a bit of resistance to pane dragging so as to make it harder to inadvertently drag in the other axis from the one you intended
author Chris Cannam
date Fri, 22 Sep 2006 16:46:10 +0000
parents c03ec31005e1
children 71dfc6ab3b54
rev   line source
Chris@148 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@148 2
Chris@148 3 /*
Chris@148 4 Sonic Visualiser
Chris@148 5 An audio file viewer and annotation editor.
Chris@148 6 Centre for Digital Music, Queen Mary, University of London.
Chris@148 7 This file copyright 2006 Chris Cannam.
Chris@148 8
Chris@148 9 This program is free software; you can redistribute it and/or
Chris@148 10 modify it under the terms of the GNU General Public License as
Chris@148 11 published by the Free Software Foundation; either version 2 of the
Chris@148 12 License, or (at your option) any later version. See the file
Chris@148 13 COPYING included with this distribution for more information.
Chris@148 14 */
Chris@148 15
Chris@148 16 #ifndef _MP3_FILE_READER_H_
Chris@148 17 #define _MP3_FILE_READER_H_
Chris@148 18
Chris@148 19 #ifdef HAVE_MAD
Chris@148 20
Chris@148 21 #include "CodedAudioFileReader.h"
Chris@148 22
Chris@148 23 #include <mad.h>
Chris@148 24
Chris@157 25 #include <set>
Chris@157 26
Chris@148 27 class QProgressDialog;
Chris@148 28
Chris@148 29 class MP3FileReader : public CodedAudioFileReader
Chris@148 30 {
Chris@148 31 public:
Chris@148 32 MP3FileReader(QString path, bool showProgress, CacheMode cacheMode);
Chris@148 33 virtual ~MP3FileReader();
Chris@148 34
Chris@148 35 virtual QString getError() const { return m_error; }
Chris@157 36
Chris@157 37 static void getSupportedExtensions(std::set<QString> &extensions);
Chris@148 38
Chris@148 39 protected:
Chris@148 40 QString m_path;
Chris@148 41 QString m_error;
Chris@148 42 size_t m_fileSize;
Chris@148 43 double m_bitrateNum;
Chris@148 44 size_t m_bitrateDenom;
Chris@148 45
Chris@148 46 QProgressDialog *m_progress;
Chris@148 47 bool m_cancelled;
Chris@148 48
Chris@148 49 struct DecoderData
Chris@148 50 {
Chris@148 51 unsigned char const *start;
Chris@148 52 unsigned long length;
Chris@148 53 MP3FileReader *reader;
Chris@148 54 };
Chris@148 55
Chris@148 56 bool decode(void *mm, size_t sz);
Chris@148 57 enum mad_flow accept(struct mad_header const *, struct mad_pcm *);
Chris@148 58
Chris@148 59 static enum mad_flow input(void *, struct mad_stream *);
Chris@148 60 static enum mad_flow output(void *, struct mad_header const *, struct mad_pcm *);
Chris@148 61 static enum mad_flow error(void *, struct mad_stream *, struct mad_frame *);
Chris@148 62 };
Chris@148 63
Chris@148 64 #endif
Chris@148 65
Chris@148 66 #endif