File indexing completed on 2024-11-03 07:36:25

0001 /*
0002     SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 #ifndef _K3B_CDDA2WAV_READER_H_
0006 #define _K3B_CDDA2WAV_READER_H_
0007 
0008 #include "k3bjob.h"
0009 #include <QProcess>
0010 
0011 namespace K3b {
0012     namespace Device {
0013         class Device;
0014     }
0015 
0016 
0017     /**
0018      * An Audio CD reader completely based on cdda2wav.
0019      * It does not use Device::Device but parses the track offsets
0020      * from the cdda2wav output.
0021      */
0022     class Cdda2wavReader : public Job
0023     {
0024         Q_OBJECT
0025 
0026     public:
0027         explicit Cdda2wavReader( QObject* parent = 0 );
0028         ~Cdda2wavReader();
0029 
0030         bool active() const;
0031 
0032     public Q_SLOTS:
0033         void start();
0034         void start( bool onlyReadInfo );
0035         void cancel();
0036 
0037         void setReadDevice( K3b::Device::Device* dev ) { m_device = dev; }
0038         void setImagePath( const QString& p ) { m_imagePath = p; }
0039 
0040         /**
0041          * the data gets written directly into fd instead of the imagefile.
0042          * Be aware that this only makes sense before starting the job.
0043          * To disable just set fd to -1
0044          */
0045         void writeToFd( int fd );
0046 
0047     private Q_SLOTS:
0048         void slotProcessLine( const QString& );
0049         void slotProcessExited( int, QProcess::ExitStatus );
0050 
0051     private:
0052         Device::Device* m_device;
0053 
0054         QString m_imagePath;
0055 
0056         class Private;
0057         Private* d;
0058     };
0059 }
0060 
0061 #endif