File indexing completed on 2024-05-12 04:51:52

0001 /*
0002     SPDX-FileCopyrightText: 2006-2009 Sebastian Trueg <trueg@k3b.org>
0003     SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef _K3B_VIDEODVD_RIPPING_JOB_H_
0009 #define _K3B_VIDEODVD_RIPPING_JOB_H_
0010 
0011 #include "k3bjob.h"
0012 #include "k3bvideodvd.h"
0013 #include "k3bvideodvdtitletranscodingjob.h"
0014 
0015 #include <QVector>
0016 
0017 
0018 namespace K3b {
0019     class VideoDVDTitleDetectClippingJob;
0020 
0021     /**
0022      * For details on the options see VideoDVDTitleTranscodingJob
0023      */
0024     class VideoDVDRippingJob : public Job
0025     {
0026         Q_OBJECT
0027 
0028     public:
0029         VideoDVDRippingJob( JobHandler* hdl, QObject* parent );
0030         ~VideoDVDRippingJob() override;
0031 
0032         class TitleRipInfo {
0033         public:
0034             TitleRipInfo();
0035             explicit TitleRipInfo( int title,
0036                           int audioStream = 0,
0037                           const QString& fn = QString(),
0038                           int width = 0,  // 0 -> no resize
0039                           int height = 0, // 0 -> no resize
0040                           int videoBitrate = 0, // 0 -> use default from job settings
0041                           int clipTop = 0,
0042                           int clipLeft = 0,
0043                           int clipBottom = 0,
0044                           int clipRight = 0 );
0045             int title;
0046             int audioStream;
0047             QString filename;
0048             int width;
0049             int height;
0050             int videoBitrate;
0051             int clipTop;
0052             int clipLeft;
0053             int clipBottom;
0054             int clipRight;
0055         };
0056 
0057         QString jobDescription() const override;
0058         QString jobDetails() const override;
0059 
0060     public Q_SLOTS:
0061         void start() override;
0062         void cancel() override;
0063 
0064         void setVideoDVD( const K3b::VideoDVD::VideoDVD& dvd ) { m_dvd = dvd; }
0065         void setTitles( const QVector<TitleRipInfo>& titles ) { m_titleRipInfos = titles; }
0066 
0067         void setVideoCodec( K3b::VideoDVDTitleTranscodingJob::VideoCodec codec );
0068         void setVideoBitrate( int bitrate );
0069         void setTwoPassEncoding( bool b );
0070         void setAudioCodec( K3b::VideoDVDTitleTranscodingJob::AudioCodec codec );
0071         void setAudioBitrate( int bitrate );
0072         void setAudioVBR( bool vbr );
0073         void setResampleAudioTo44100( bool b );
0074         void setLowPriority( bool b );
0075         void setAutoClipping( bool b );
0076 
0077     private Q_SLOTS:
0078         void slotTranscodingJobFinished( bool );
0079         void slotDetectClippingJobFinished( bool );
0080         void slotTranscodingProgress( int );
0081         void slotDetectClippingProgress( int );
0082 
0083     private:
0084         void startTranscoding( int ripInfoIndex );
0085         void startDetectClipping( int ripInfoIndex );
0086         void initProgressInfo();
0087 
0088         VideoDVD::VideoDVD m_dvd;
0089         QVector<TitleRipInfo> m_titleRipInfos;
0090 
0091         VideoDVDTitleTranscodingJob* m_transcodingJob;
0092         VideoDVDTitleDetectClippingJob* m_detectClippingJob;
0093 
0094         class Private;
0095         Private* d;
0096     };
0097 }
0098 
0099 #endif