From 800ce6baadbe4e18f091af5a3ae718eb9b4fe4ca Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 6 Nov 2018 23:04:03 +1100 Subject: [PATCH] fixed crashes when exporting only video or only audio --- dialogs/exportdialog.cpp | 3 +++ effects/effect.cpp | 4 ++++ io/exportthread.cpp | 8 ++++---- io/media.cpp | 7 ++----- io/media.h | 3 +-- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/dialogs/exportdialog.cpp b/dialogs/exportdialog.cpp index 5c0fbfa82..bd54cd5b0 100644 --- a/dialogs/exportdialog.cpp +++ b/dialogs/exportdialog.cpp @@ -435,6 +435,9 @@ void ExportDialog::on_pushButton_clicked() { case FORMAT_MOV: ext = "mov"; break; + case FORMAT_WAV: + ext = "wav"; + break; case FORMAT_WEBM: ext = "webm"; break; diff --git a/effects/effect.cpp b/effects/effect.cpp index 9673c5d22..8b0f9685c 100644 --- a/effects/effect.cpp +++ b/effects/effect.cpp @@ -253,6 +253,10 @@ Effect::Effect(Clip* c, const EffectMeta *em) : // set up UI from effect file container->setText(em->name); + if (em->type == EFFECT_TYPE_TRANSITION) { + add_row("Length:")->add_field(EFFECT_FIELD_DOUBLE); + } + if (!em->filename.isEmpty()) { QFile effect_file(get_effects_dir() + "/" + em->filename); if (effect_file.open(QFile::ReadOnly)) { diff --git a/io/exportthread.cpp b/io/exportthread.cpp index 882b59d24..6c5c6ef61 100644 --- a/io/exportthread.cpp +++ b/io/exportthread.cpp @@ -322,9 +322,9 @@ void ExportThread::run() { continueEncode = setupContainer(); - if (continueEncode) continueEncode = setupVideo(); + if (video_enabled && continueEncode) continueEncode = setupVideo(); - if (continueEncode) continueEncode = setupAudio(); + if (audio_enabled && continueEncode) continueEncode = setupAudio(); if (continueEncode) { ret = avformat_write_header(fmt_ctx, NULL); @@ -412,8 +412,8 @@ void ExportThread::run() { if (continueEncode) { // flush remaining packets while (continueVideo && continueAudio) { - if (continueVideo) continueVideo = encode(fmt_ctx, vcodec_ctx, NULL, &video_pkt, video_stream); - if (continueAudio) continueAudio = encode(fmt_ctx, acodec_ctx, NULL, &audio_pkt, audio_stream); + if (continueVideo && video_enabled) continueVideo = encode(fmt_ctx, vcodec_ctx, NULL, &video_pkt, video_stream); + if (continueAudio && audio_enabled) continueAudio = encode(fmt_ctx, acodec_ctx, NULL, &audio_pkt, audio_stream); } ret = av_write_trailer(fmt_ctx); diff --git a/io/media.cpp b/io/media.cpp index d2293f399..5cf47ffd0 100644 --- a/io/media.cpp +++ b/io/media.cpp @@ -10,7 +10,7 @@ extern "C" { #include "project/clip.h" -Media::Media() : ready(false), preview_gen(NULL), throbber(NULL) { +Media::Media() : ready(false), preview_gen(NULL) { ready_lock.lock(); } @@ -22,10 +22,7 @@ void Media::reset() { if (preview_gen != NULL) { preview_gen->cancel(); preview_gen->wait(); - } - if (throbber != NULL) { - delete throbber; - } + } for (int i=0;i