23 #include <QDockWidget>
24 #include <QDomElement>
25 #include <QStandardItemModel>
26 #include <QSortFilterProxyModel>
27 #include <MltProperties.h>
29 class QTreeWidgetItem;
41 class PresetsProxyModel :
public QSortFilterProxyModel
44 bool filterAcceptsRow(
int source_row,
const QModelIndex &source_parent)
const;
47 class EncodeDock :
public QDockWidget
52 explicit EncodeDock(QWidget *parent = 0);
55 void loadPresetFromProperties(Mlt::Properties &);
56 bool isExportInProgress()
const;
59 void captureStateChanged(
bool);
62 void onAudioChannelsChanged();
63 void onProducerOpened();
64 void onProfileChanged();
65 void on_hwencodeButton_clicked();
66 bool detectHardwareEncoders();
69 void on_presetsTree_clicked(
const QModelIndex &index);
70 void on_presetsTree_activated(
const QModelIndex &index);
72 void on_encodeButton_clicked();
74 void on_streamButton_clicked();
76 void on_addPresetButton_clicked();
78 void on_removePresetButton_clicked();
80 void onFinished(AbstractJob *,
bool isSuccess);
82 void on_stopCaptureButton_clicked();
84 void on_videoRateControlCombo_activated(
int index);
86 void on_audioRateControlCombo_activated(
int index);
88 void on_scanModeCombo_currentIndexChanged(
int index);
90 void on_presetsSearch_textChanged(
const QString &search);
92 void on_resetButton_clicked();
94 void openCaptureFile();
96 void on_formatCombo_currentIndexChanged(
int index);
98 void on_videoBufferDurationChanged();
100 void on_gopSpinner_valueChanged(
int value);
102 void on_fromCombo_currentIndexChanged(
int index);
104 void on_videoCodecCombo_currentIndexChanged(
int index);
106 void on_audioCodecCombo_currentIndexChanged(
int index);
108 void setAudioChannels(
int channels );
110 void on_widthSpinner_editingFinished();
112 void on_heightSpinner_editingFinished();
114 void on_advancedButton_clicked(
bool checked);
116 void on_hwencodeCheckBox_clicked(
bool checked);
118 void on_advancedCheckBox_clicked(
bool checked);
120 void on_fpsSpinner_editingFinished();
122 void on_fpsComboBox_activated(
const QString &arg1);
124 void on_videoQualitySpinner_valueChanged(
int vq);
126 void on_audioQualitySpinner_valueChanged(
int aq);
128 void on_parallelCheckbox_clicked(
bool checked);
130 void on_resolutionComboBox_activated(
const QString &arg1);
134 RateControlAverage = 0,
137 RateControlConstrained
145 Mlt::Properties *m_presets;
146 QScopedPointer<MeltJob> m_immediateJob;
148 Mlt::Properties *m_profiles;
149 PresetsProxyModel m_presetsModel;
150 QStringList m_outputFilenames;
151 bool m_isDefaultSettings;
155 Mlt::Properties *collectProperties(
int realtime,
bool includeProfile =
false);
156 void collectProperties(QDomElement &node,
int realtime);
157 MeltJob *createMeltJob(Mlt::Producer *service,
const QString &target,
int realtime,
int pass = 0,
158 const QThread::Priority priority = Settings.jobPriority());
159 void runMelt(
const QString &target,
int realtime = -1);
160 void enqueueAnalysis();
161 void enqueueMelt(
const QStringList &targets,
int realtime);
162 void encode(
const QString &target);
164 Mlt::Producer *fromProducer()
const;
165 static void filterX265Params(QStringList &other);
166 void onVideoCodecComboChanged(
int index,
bool ignorePreset =
false);
167 bool checkForMissingFiles();
168 QString &defaultFormatExtension();