File indexing completed on 2024-05-19 04:52:10
0001 /* 0002 SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #ifndef K3BAUDIOJOB_H 0007 #define K3BAUDIOJOB_H 0008 0009 #include "k3bjob.h" 0010 0011 class QTemporaryFile; 0012 0013 namespace K3b { 0014 class AudioDoc; 0015 class AudioImager; 0016 class AbstractWriter; 0017 class AudioNormalizeJob; 0018 class AudioJobTempData; 0019 class AudioMaxSpeedJob; 0020 class Doc; 0021 0022 /** 0023 *@author Sebastian Trueg 0024 */ 0025 class AudioJob : public BurnJob 0026 { 0027 Q_OBJECT 0028 0029 public: 0030 AudioJob( AudioDoc*, JobHandler*, QObject* parent = 0 ); 0031 ~AudioJob() override; 0032 0033 Doc* doc() const; 0034 Device::Device* writer() const override; 0035 0036 QString jobDescription() const override; 0037 QString jobDetails() const override; 0038 0039 public Q_SLOTS: 0040 void cancel() override; 0041 void start() override; 0042 0043 protected Q_SLOTS: 0044 // writer slots 0045 void slotWriterFinished( bool success ); 0046 void slotWriterNextTrack(int, int); 0047 void slotWriterJobPercent(int); 0048 0049 // audiodecoder slots 0050 void slotAudioDecoderFinished( bool ); 0051 void slotAudioDecoderNextTrack( int, int ); 0052 void slotAudioDecoderPercent(int); 0053 void slotAudioDecoderSubPercent( int ); 0054 0055 // normalizing slots 0056 void slotNormalizeJobFinished( bool ); 0057 void slotNormalizeProgress( int ); 0058 void slotNormalizeSubProgress( int ); 0059 0060 // max speed 0061 void slotMaxSpeedJobFinished( bool ); 0062 0063 private: 0064 bool prepareWriter(); 0065 bool startWriting(); 0066 void cleanupAfterError(); 0067 void removeBufferFiles(); 0068 void normalizeFiles(); 0069 bool writeTocFile(); 0070 bool writeInfFiles(); 0071 bool checkAudioSources(); 0072 0073 AudioDoc* m_doc; 0074 AudioImager* m_audioImager; 0075 AbstractWriter* m_writer; 0076 AudioNormalizeJob* m_normalizeJob; 0077 AudioJobTempData* m_tempData; 0078 AudioMaxSpeedJob* m_maxSpeedJob; 0079 0080 QTemporaryFile* m_tocFile; 0081 0082 bool m_canceled; 0083 bool m_errorOccuredAndAlreadyReported; 0084 0085 bool m_written; 0086 0087 WritingApp m_usedWritingApp; 0088 WritingMode m_usedWritingMode; 0089 0090 class Private; 0091 Private* d; 0092 }; 0093 } 0094 0095 #endif