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