25#include <QStandardItemModel>
26#include <QSortFilterProxyModel>
28#include <MltProperties.h>
42class PresetsProxyModel :
public QSortFilterProxyModel
45 bool filterAcceptsRow(
int source_row,
const QModelIndex &source_parent)
const;
48class EncodeDock :
public QDockWidget
53 explicit EncodeDock(QWidget *parent = 0);
56 void loadPresetFromProperties(Mlt::Properties &);
57 bool isExportInProgress()
const;
60 void captureStateChanged(
bool);
61 void createOrEditFilterOnOutput(Mlt::Filter *,
const QStringList & = {});
64 void onAudioChannelsChanged();
65 void onProducerOpened();
66 void onProfileChanged();
67 void onReframeChanged();
68 void on_hwencodeButton_clicked();
69 bool detectHardwareEncoders();
72 void on_presetsTree_clicked(
const QModelIndex &index);
73 void on_presetsTree_activated(
const QModelIndex &index);
75 void on_encodeButton_clicked();
77 void on_streamButton_clicked();
79 void on_addPresetButton_clicked();
81 void on_removePresetButton_clicked();
83 void onFinished(AbstractJob *,
bool isSuccess);
85 void on_stopCaptureButton_clicked();
87 void on_videoRateControlCombo_activated(
int index);
89 void on_audioRateControlCombo_activated(
int index);
91 void on_scanModeCombo_currentIndexChanged(
int index);
93 void on_presetsSearch_textChanged(
const QString &search);
95 void on_resetButton_clicked();
97 void openCaptureFile();
99 void on_formatCombo_currentIndexChanged(
int index);
101 void on_videoBufferDurationChanged();
103 void on_gopSpinner_valueChanged(
int value);
105 void on_fromCombo_currentIndexChanged(
int index);
107 void on_videoCodecCombo_currentIndexChanged(
int index);
109 void on_audioCodecCombo_currentIndexChanged(
int index);
111 void setAudioChannels(
int channels );
113 void on_widthSpinner_editingFinished();
115 void on_heightSpinner_editingFinished();
117 void on_advancedButton_clicked(
bool checked);
119 void on_hwencodeCheckBox_clicked(
bool checked);
121 void on_advancedCheckBox_clicked(
bool checked);
123 void on_fpsSpinner_editingFinished();
125 void on_fpsComboBox_activated(
int arg1);
127 void on_videoQualitySpinner_valueChanged(
int vq);
129 void on_audioQualitySpinner_valueChanged(
int aq);
131 void on_parallelCheckbox_clicked(
bool checked);
133 void on_resolutionComboBox_activated(
int arg1);
135 void on_reframeButton_clicked();
137 void on_aspectNumSpinner_valueChanged(
int value);
139 void on_aspectDenSpinner_valueChanged(
int value);
143 RateControlAverage = 0,
146 RateControlConstrained
155 Mlt::Properties *m_presets;
156 QScopedPointer<MeltJob> m_immediateJob;
158 Mlt::Properties *m_profiles;
159 PresetsProxyModel m_presetsModel;
160 QStringList m_outputFilenames;
161 bool m_isDefaultSettings;
163 QStringList m_intraOnlyCodecs;
164 QStringList m_losslessVideoCodecs;
165 QStringList m_losslessAudioCodecs;
168 Mlt::Properties *collectProperties(
int realtime,
bool includeProfile =
false);
169 void collectProperties(QDomElement &node,
int realtime);
170 void setSubtitleProperties(QDomElement &node, Mlt::Producer *service);
171 QPoint addConsumerElement(Mlt::Producer *service, QDomDocument &dom,
const QString &target,
172 int realtime,
int pass);
173 MeltJob *createMeltJob(Mlt::Producer *service,
const QString &target,
int realtime,
int pass = 0,
174 const QThread::Priority priority = Settings.jobPriority());
175 void runMelt(
const QString &target,
int realtime = -1);
176 void enqueueAnalysis();
177 void enqueueMelt(
const QStringList &targets,
int realtime);
178 void encode(
const QString &target);
180 Mlt::Producer *fromProducer()
const;
181 static void filterCodecParams(
const QString &vcodec, QStringList &other);
182 void onVideoCodecComboChanged(
int index,
bool ignorePreset =
false,
bool resetBframes =
true);
183 bool checkForMissingFiles();
184 QString &defaultFormatExtension();
185 void initSpecialCodecLists();
186 void setReframeEnabled(
bool enabled);
187 void showResampleWarning(
const QString &message);
188 void hideResampleWarning(
bool hide =
true);
189 void checkFrameRate();
190 void setResolutionAspectFromProfile();