annotate data/fileio/QuickTimeFileReader.h @ 316:3a6725f285d6

* Make RemoteFile far more pervasive, and use it for local files as well so that we can handle both transparently. Make it shallow copy with reference counting, so it can be used by value without having to worry about the cache file lifetime. Use RemoteFile for MainWindow file-open functions, etc
author Chris Cannam
date Thu, 18 Oct 2007 15:31:20 +0000
parents c022976d18e8
children c324d410b096
rev   line source
Chris@281 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@281 2
Chris@281 3 /*
Chris@281 4 Sonic Visualiser
Chris@281 5 An audio file viewer and annotation editor.
Chris@281 6 Centre for Digital Music, Queen Mary, University of London.
Chris@281 7 This file copyright 2006-2007 Chris Cannam and QMUL.
Chris@281 8
Chris@281 9 Based in part on QTAudioFile.h from SoundBite, copyright 2006
Chris@281 10 Chris Sutton and Mark Levy.
Chris@281 11
Chris@281 12 This program is free software; you can redistribute it and/or
Chris@281 13 modify it under the terms of the GNU General Public License as
Chris@281 14 published by the Free Software Foundation; either version 2 of the
Chris@281 15 License, or (at your option) any later version. See the file
Chris@281 16 COPYING included with this distribution for more information.
Chris@281 17 */
Chris@281 18
Chris@281 19 #ifndef _QUICKTIME_FILE_READER_H_
Chris@281 20 #define _QUICKTIME_FILE_READER_H_
Chris@281 21
Chris@281 22 #ifdef HAVE_QUICKTIME
Chris@281 23
Chris@281 24 #include "CodedAudioFileReader.h"
Chris@281 25
Chris@281 26 #include "base/Thread.h"
Chris@281 27
Chris@281 28 #include <set>
Chris@281 29
Chris@281 30 class QProgressDialog;
Chris@281 31
Chris@281 32 class QuickTimeFileReader : public CodedAudioFileReader
Chris@281 33 {
Chris@281 34 public:
Chris@281 35 enum DecodeMode {
Chris@281 36 DecodeAtOnce, // decode the file on construction, with progress dialog
Chris@281 37 DecodeThreaded // decode in a background thread after construction
Chris@281 38 };
Chris@281 39
Chris@316 40 QuickTimeFileReader(RemoteFile source,
Chris@297 41 DecodeMode decodeMode,
Chris@297 42 CacheMode cacheMode,
Chris@297 43 size_t targetRate = 0);
Chris@281 44 virtual ~QuickTimeFileReader();
Chris@281 45
Chris@290 46 virtual QString getError() const { return m_error; }
Chris@290 47 virtual QString getTitle() const { return m_title; }
Chris@281 48
Chris@290 49 static void getSupportedExtensions(std::set<QString> &extensions);
Chris@316 50 static bool supportsExtension(QString ext);
Chris@316 51 static bool supportsContentType(QString type);
Chris@316 52 static bool supports(RemoteFile &source);
Chris@281 53
Chris@281 54 virtual int getDecodeCompletion() const { return m_completion; }
Chris@281 55
Chris@281 56 virtual bool isUpdating() const {
Chris@281 57 return m_decodeThread && m_decodeThread->isRunning();
Chris@281 58 }
Chris@281 59
Chris@281 60 protected:
Chris@316 61 RemoteFile m_source;
Chris@290 62 QString m_path;
Chris@290 63 QString m_error;
Chris@290 64 QString m_title;
Chris@281 65
Chris@281 66 class D;
Chris@281 67 D *m_d;
Chris@281 68
Chris@282 69 QProgressDialog *m_progress;
Chris@281 70 bool m_cancelled;
Chris@281 71 int m_completion;
Chris@281 72
Chris@281 73 class DecodeThread : public Thread
Chris@281 74 {
Chris@281 75 public:
Chris@281 76 DecodeThread(QuickTimeFileReader *reader) : m_reader(reader) { }
Chris@281 77 virtual void run();
Chris@281 78
Chris@281 79 protected:
Chris@281 80 QuickTimeFileReader *m_reader;
Chris@281 81 };
Chris@281 82
Chris@281 83 DecodeThread *m_decodeThread;
Chris@281 84 };
Chris@281 85
Chris@281 86 #endif
Chris@281 87
Chris@281 88 #endif