23#include <MltProperties.h>
26#include <QSortFilterProxyModel>
27#include <QStandardItemModel>
43class PresetsProxyModel :
public QSortFilterProxyModel
46 bool filterAcceptsRow(
int source_row,
const QModelIndex &source_parent)
const;
49class EncodeDock :
public QDockWidget
54 explicit EncodeDock(QWidget *parent = 0);
57 void loadPresetFromProperties(Mlt::Properties &);
58 bool isExportInProgress()
const;
61 void captureStateChanged(
bool);
62 void createOrEditFilterOnOutput(Mlt::Filter *,
const QStringList & = {});
65 void onAudioChannelsChanged();
66 void onProducerOpened();
67 void onProfileChanged();
68 void onReframeChanged();
69 void on_hwencodeButton_clicked();
70 bool detectHardwareEncoders();
73 void on_presetsTree_clicked(
const QModelIndex &index);
74 void on_presetsTree_activated(
const QModelIndex &index);
76 void on_encodeButton_clicked();
78 void on_streamButton_clicked();
80 void on_addPresetButton_clicked();
82 void on_removePresetButton_clicked();
84 void onFinished(AbstractJob *,
bool isSuccess);
86 void on_stopCaptureButton_clicked();
88 void on_videoRateControlCombo_activated(
int index);
90 void on_audioRateControlCombo_activated(
int index);
92 void on_scanModeCombo_currentIndexChanged(
int index);
94 void on_presetsSearch_textChanged(
const QString &search);
96 void on_resetButton_clicked();
98 void openCaptureFile();
100 void on_formatCombo_currentIndexChanged(
int index);
102 void on_videoBufferDurationChanged();
104 void on_gopSpinner_valueChanged(
int value);
106 void on_fromCombo_currentIndexChanged(
int index);
108 void on_videoCodecCombo_currentIndexChanged(
int index);
110 void on_audioCodecCombo_currentIndexChanged(
int index);
112 void setAudioChannels(
int channels);
114 void on_widthSpinner_editingFinished();
116 void on_heightSpinner_editingFinished();
118 void on_advancedButton_clicked(
bool checked);
120 void on_hwencodeCheckBox_clicked(
bool checked);
122 void on_hwdecodeCheckBox_clicked(
bool checked);
124 void on_advancedCheckBox_clicked(
bool checked);
126 void on_fpsSpinner_editingFinished();
128 void on_fpsComboBox_activated(
int arg1);
130 void on_videoQualitySpinner_valueChanged(
int vq);
132 void on_audioQualitySpinner_valueChanged(
int aq);
134 void on_parallelCheckbox_clicked(
bool checked);
136 void on_resolutionComboBox_activated(
int arg1);
138 void on_reframeButton_clicked();
140 void on_aspectNumSpinner_valueChanged(
int value);
142 void on_aspectDenSpinner_valueChanged(
int value);
144 void on_coverArtButton_clicked();
146 void on_hdrMetaButton_clicked();
150 RateControlAverage = 0,
153 RateControlConstrained
162 Mlt::Properties *m_presets;
163 QScopedPointer<MeltJob> m_immediateJob;
165 Mlt::Properties *m_profiles;
166 PresetsProxyModel m_presetsModel;
167 QStringList m_outputFilenames;
168 bool m_isDefaultSettings;
170 QStringList m_intraOnlyCodecs;
171 QStringList m_losslessVideoCodecs;
172 QStringList m_losslessAudioCodecs;
173 int m_hdrMaxCll{1000};
174 int m_hdrMaxFall{400};
175 int m_hdrMasterPreset{0};
176 int m_hdrMaxLuminance{1000};
177 double m_hdrMinLuminance{0.01};
180 Mlt::Properties *collectProperties(
int realtime,
bool includeProfile =
false);
181 void collectProperties(QDomElement &node,
int realtime);
182 void setSubtitleProperties(QDomElement &node, Mlt::Producer *service);
183 QPoint addConsumerElement(
184 Mlt::Producer *service, QDomDocument &dom,
const QString &target,
int realtime,
int pass);
185 MeltJob *convertReframe(Mlt::Producer *service,
187 const QString &target,
190 const QThread::Priority priority);
191 MeltJob *createMeltJob(Mlt::Producer *service,
192 const QString &target,
195 const QThread::Priority priority = Settings.jobPriority());
196 void runMelt(
const QString &target,
int realtime = -1);
197 void enqueueAnalysis();
198 void enqueueMelt(
const QStringList &targets,
int realtime);
199 void encode(
const QString &target);
201 Mlt::Producer *fromProducer(
bool usePlaylistBin =
false)
const;
202 static void filterCodecParams(
const QString &vcodec, QStringList &other);
203 void onVideoCodecComboChanged(
int index,
bool ignorePreset =
false,
bool resetBframes =
true);
204 void updateHdrMetaButton();
205 bool checkForMissingFiles();
206 QString &defaultFormatExtension();
207 void initSpecialCodecLists();
208 void setReframeEnabled(
bool enabled);
209 void showResampleWarning(
const QString &message);
210 void hideResampleWarning(
bool hide =
true);
211 void checkFrameRate();
212 void setResolutionAspectFromProfile();