thumbnail/waveform generation
This commit is contained in:
+23
-18
@@ -20,23 +20,7 @@ EffectControls::EffectControls(QWidget *parent) :
|
||||
init_effects();
|
||||
|
||||
clip = NULL;
|
||||
set_clip(NULL);
|
||||
|
||||
effects_menu = new QMenu(this);
|
||||
for (int i=0;i<VIDEO_EFFECT_COUNT;i++) {
|
||||
QAction* action = new QAction();
|
||||
action->setText(video_effect_names.at(i));
|
||||
action->setData(i);
|
||||
effects_menu->addAction(action);
|
||||
}
|
||||
effects_menu->addSeparator();
|
||||
for (int i=0;i<AUDIO_EFFECT_COUNT;i++) {
|
||||
QAction* action = new QAction();
|
||||
action->setText(audio_effect_names.at(i));
|
||||
action->setData(i);
|
||||
effects_menu->addAction(action);
|
||||
}
|
||||
connect(effects_menu, SIGNAL(triggered(QAction*)), this, SLOT(menu_select(QAction*)));
|
||||
set_clip(NULL);
|
||||
}
|
||||
|
||||
void EffectControls::menu_select(QAction* q) {
|
||||
@@ -51,7 +35,28 @@ EffectControls::~EffectControls()
|
||||
|
||||
void EffectControls::on_pushButton_clicked()
|
||||
{
|
||||
effects_menu->exec(QCursor::pos());
|
||||
int lim;
|
||||
QVector<QString>* effect_names;
|
||||
if (clip->track < 0) {
|
||||
lim = VIDEO_EFFECT_COUNT;
|
||||
effect_names = &video_effect_names;
|
||||
} else {
|
||||
lim = AUDIO_EFFECT_COUNT;
|
||||
effect_names = &audio_effect_names;
|
||||
}
|
||||
|
||||
QMenu effects_menu(this);
|
||||
|
||||
for (int i=0;i<lim;i++) {
|
||||
QAction* action = new QAction(&effects_menu);
|
||||
action->setText(effect_names->at(i));
|
||||
action->setData(i);
|
||||
effects_menu.addAction(action);
|
||||
}
|
||||
|
||||
connect(&effects_menu, SIGNAL(triggered(QAction*)), this, SLOT(menu_select(QAction*)));
|
||||
|
||||
effects_menu.exec(QCursor::pos());
|
||||
}
|
||||
|
||||
void EffectControls::set_clip(Clip* c) {
|
||||
|
||||
@@ -25,8 +25,7 @@ private slots:
|
||||
|
||||
private:
|
||||
Ui::EffectControls *ui;
|
||||
Clip* clip;
|
||||
QMenu* effects_menu;
|
||||
Clip* clip;
|
||||
};
|
||||
|
||||
#endif // EFFECTCONTROLS_H
|
||||
|
||||
+15
-5
@@ -7,6 +7,10 @@
|
||||
#include "panels/viewer.h"
|
||||
#include "playback/playback.h"
|
||||
#include "effects/effects.h"
|
||||
#include "panels/timeline.h"
|
||||
#include "project/sequence.h"
|
||||
#include "project/effect.h"
|
||||
#include "io/previewgenerator.h"
|
||||
|
||||
#include <QFileDialog>
|
||||
#include <QString>
|
||||
@@ -17,10 +21,6 @@
|
||||
#include <QXmlStreamReader>
|
||||
#include <QXmlStreamWriter>
|
||||
|
||||
#include "panels/timeline.h"
|
||||
#include "project/sequence.h"
|
||||
#include "project/effect.h"
|
||||
|
||||
extern "C" {
|
||||
#include <libavformat/avformat.h>
|
||||
#include <libavcodec/avcodec.h>
|
||||
@@ -76,6 +76,8 @@ void Project::new_sequence(Sequence *s) {
|
||||
source_table = ui->treeWidget;
|
||||
|
||||
project_changed = true;
|
||||
|
||||
set_sequence(s);
|
||||
}
|
||||
|
||||
Media* Project::import_file(QString file) {
|
||||
@@ -110,6 +112,8 @@ Media* Project::import_file(QString file) {
|
||||
qDebug() << "[ERROR] Unsupported codec in stream %d.\n";
|
||||
} else {
|
||||
MediaStream* ms = new MediaStream();
|
||||
ms->preview_done = false;
|
||||
ms->preview_lock.lock();
|
||||
ms->file_index = i;
|
||||
if (pFormatCtx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||
qDebug() << "[WARNING] INFINITE_LENGTH calculation is inaccurate in this build\n";
|
||||
@@ -143,7 +147,13 @@ Media* Project::import_file(QString file) {
|
||||
project_changed = true;
|
||||
}
|
||||
}
|
||||
avformat_close_input(&pFormatCtx);
|
||||
|
||||
PreviewGenerator* pg = new PreviewGenerator();
|
||||
pg->fmt_ctx = pFormatCtx; // cleaned up in PG
|
||||
pg->media = m;
|
||||
connect(pg, SIGNAL(finished()), pg, SLOT(deleteLater()));
|
||||
pg->run();
|
||||
|
||||
delete [] filename;
|
||||
return m;
|
||||
}
|
||||
|
||||
+2
-1
@@ -14,6 +14,7 @@
|
||||
#include "playback/playback.h"
|
||||
|
||||
#include <QTime>
|
||||
#include <QtMath>
|
||||
|
||||
Timeline::Timeline(QWidget *parent) :
|
||||
QDockWidget(parent),
|
||||
@@ -120,7 +121,7 @@ void Timeline::update_sequence() {
|
||||
} else {
|
||||
setWindowTitle("Timeline: " + sequence->name);
|
||||
redraw_all_clips();
|
||||
playback_updater.setInterval(floor(1000 / sequence->frame_rate));
|
||||
playback_updater.setInterval(qFloor(1000 / sequence->frame_rate));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -340,6 +340,9 @@
|
||||
<height>15</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::ClickFocus</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
||||
+12
-12
@@ -18,7 +18,7 @@ Viewer::Viewer(QWidget *parent) :
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->glViewerPane->child = ui->openGLWidget;
|
||||
viewer_widget = ui->openGLWidget;
|
||||
viewer_widget = ui->openGLWidget;
|
||||
update_sequence();
|
||||
}
|
||||
|
||||
@@ -31,22 +31,22 @@ Viewer::~Viewer()
|
||||
void Viewer::update_sequence() {
|
||||
bool null_sequence = (sequence == NULL);
|
||||
|
||||
ui->openGLWidget->setEnabled(!null_sequence);
|
||||
ui->openGLWidget->setVisible(!null_sequence);
|
||||
ui->pushButton->setEnabled(!null_sequence);
|
||||
ui->pushButton_2->setEnabled(!null_sequence);
|
||||
ui->pushButton_3->setEnabled(!null_sequence);
|
||||
ui->pushButton_4->setEnabled(!null_sequence);
|
||||
ui->pushButton_5->setEnabled(!null_sequence);
|
||||
ui->openGLWidget->setEnabled(!null_sequence);
|
||||
ui->openGLWidget->setVisible(!null_sequence);
|
||||
ui->pushButton->setEnabled(!null_sequence);
|
||||
ui->pushButton_2->setEnabled(!null_sequence);
|
||||
ui->pushButton_3->setEnabled(!null_sequence);
|
||||
ui->pushButton_4->setEnabled(!null_sequence);
|
||||
ui->pushButton_5->setEnabled(!null_sequence);
|
||||
|
||||
init_audio();
|
||||
|
||||
if (!null_sequence) {
|
||||
ui->glViewerPane->aspect_ratio = (float) sequence->width / (float) sequence->height;
|
||||
if (!null_sequence) {
|
||||
ui->glViewerPane->aspect_ratio = (float) sequence->width / (float) sequence->height;
|
||||
ui->glViewerPane->adjust();
|
||||
}
|
||||
}
|
||||
|
||||
update();
|
||||
update();
|
||||
}
|
||||
|
||||
void Viewer::on_pushButton_clicked()
|
||||
|
||||
+4
-10
@@ -49,18 +49,12 @@
|
||||
<widget class="ViewerWidget" name="openGLWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>130</x>
|
||||
<y>60</y>
|
||||
<width>301</width>
|
||||
<height>221</height>
|
||||
<x>110</x>
|
||||
<y>50</y>
|
||||
<width>300</width>
|
||||
<height>200</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
Reference in New Issue
Block a user