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