annotate data/fileio/OggVorbisFileReader.h @ 1376:d9511f9e04d7 dev/refactor-piper-related

Introduce some POD structs for describing an external server application and the desired libraries to load from it, and disambiguating between empty list request and invalid list request. This allows for overriding PiperVampPluginFactory behaviour for using a PluginScan to populate the list request.
author Lucas Thompson <lucas.thompson@qmul.ac.uk>
date Fri, 10 Feb 2017 11:15:19 +0000
parents 1c9bbbb6116a
children c01cbe41aeb5
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@1359 16 #ifndef SV_OGG_VORBIS_FILE_READER_H
Chris@1359 17 #define SV_OGG_VORBIS_FILE_READER_H
Chris@148 18
Chris@148 19 #ifdef HAVE_OGGZ
Chris@148 20 #ifdef HAVE_FISHSOUND
Chris@148 21
Chris@148 22 #include "CodedAudioFileReader.h"
Chris@148 23
Chris@263 24 #include "base/Thread.h"
Chris@148 25 #include <oggz/oggz.h>
Chris@148 26 #include <fishsound/fishsound.h>
Chris@148 27
Chris@1359 28 #include <cstdio>
Chris@1359 29
Chris@157 30 #include <set>
Chris@157 31
Chris@392 32 class ProgressReporter;
Chris@148 33
Chris@148 34 class OggVorbisFileReader : public CodedAudioFileReader
Chris@148 35 {
Chris@392 36 Q_OBJECT
Chris@392 37
Chris@148 38 public:
Chris@317 39 OggVorbisFileReader(FileSource source,
Chris@297 40 DecodeMode decodeMode,
Chris@297 41 CacheMode cacheMode,
Chris@1040 42 sv_samplerate_t targetRate = 0,
Chris@920 43 bool normalised = false,
Chris@1097 44 ProgressReporter *reporter = nullptr);
Chris@148 45 virtual ~OggVorbisFileReader();
Chris@148 46
Chris@290 47 virtual QString getError() const { return m_error; }
Chris@290 48
Chris@345 49 virtual QString getLocation() const { return m_source.getLocation(); }
Chris@290 50 virtual QString getTitle() const { return m_title; }
Chris@333 51 virtual QString getMaker() const { return m_maker; }
Chris@633 52 virtual TagMap getTags() const { return m_tags; }
Chris@271 53
Chris@290 54 static void getSupportedExtensions(std::set<QString> &extensions);
Chris@316 55 static bool supportsExtension(QString ext);
Chris@316 56 static bool supportsContentType(QString type);
Chris@317 57 static bool supports(FileSource &source);
Chris@157 58
Chris@265 59 virtual int getDecodeCompletion() const { return m_completion; }
Chris@265 60
Chris@263 61 virtual bool isUpdating() const {
Chris@263 62 return m_decodeThread && m_decodeThread->isRunning();
Chris@263 63 }
Chris@263 64
Chris@392 65 public slots:
Chris@392 66 void cancelled();
Chris@392 67
Chris@148 68 protected:
Chris@317 69 FileSource m_source;
Chris@290 70 QString m_path;
Chris@290 71 QString m_error;
Chris@290 72 QString m_title;
Chris@333 73 QString m_maker;
Chris@633 74 TagMap m_tags;
Chris@148 75
Chris@1359 76 QFile *m_qfile;
Chris@1359 77 FILE *m_ffile;
Chris@263 78 OGGZ *m_oggz;
Chris@148 79 FishSound *m_fishSound;
Chris@392 80 ProgressReporter *m_reporter;
Chris@1043 81 sv_frame_t m_fileSize;
Chris@1043 82 sv_frame_t m_bytesRead;
Chris@271 83 bool m_commentsRead;
Chris@148 84 bool m_cancelled;
Chris@265 85 int m_completion;
Chris@148 86
Chris@620 87 static int readPacket(OGGZ *, ogg_packet *, long, void *);
Chris@148 88 static int acceptFrames(FishSound *, float **, long, void *);
Chris@263 89
Chris@263 90 class DecodeThread : public Thread
Chris@263 91 {
Chris@263 92 public:
Chris@263 93 DecodeThread(OggVorbisFileReader *reader) : m_reader(reader) { }
Chris@263 94 virtual void run();
Chris@263 95
Chris@263 96 protected:
Chris@263 97 OggVorbisFileReader *m_reader;
Chris@263 98 };
Chris@263 99
Chris@263 100 DecodeThread *m_decodeThread;
Chris@148 101 };
Chris@148 102
Chris@148 103 #endif
Chris@148 104 #endif
Chris@148 105
Chris@148 106 #endif