aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/command.py9
-rw-r--r--src/components/spectrum.py3
-rw-r--r--src/core.py10
-rw-r--r--src/toolkit/frame.py1
-rw-r--r--src/video_thread.py11
5 files changed, 24 insertions, 10 deletions
diff --git a/src/command.py b/src/command.py
index 4116c5a..cd3c6c3 100644
--- a/src/command.py
+++ b/src/command.py
@@ -8,6 +8,7 @@ import argparse
import os
import sys
import time
+import signal
from core import Core
@@ -91,6 +92,9 @@ class Command(QtCore.QObject):
for arg in args:
self.core.selectedComponents[i].command(arg)
+ # ctrl-c stops the export thread
+ signal.signal(signal.SIGINT, self.stopVideo)
+
if self.args.export and self.args.projpath:
errcode, data = self.core.parseAvFile(projPath)
for key, value in data['WindowFields']:
@@ -124,6 +128,11 @@ class Command(QtCore.QObject):
self.worker.progressBarSetText.connect(self.progressBarSetText)
self.createVideo.emit()
+ def stopVideo(self, *args):
+ self.worker.error = True
+ self.worker.cancelExport()
+ self.worker.cancel()
+
@QtCore.pyqtSlot(str)
def progressBarSetText(self, value):
if 'Export ' in value:
diff --git a/src/components/spectrum.py b/src/components/spectrum.py
index 77cb086..6675f5b 100644
--- a/src/components/spectrum.py
+++ b/src/components/spectrum.py
@@ -98,7 +98,8 @@ class Component(Component):
def preFrameRender(self, **kwargs):
super().preFrameRender(**kwargs)
- self.previewPipe.wait()
+ if self.previewPipe is not None:
+ self.previewPipe.wait()
self.updateChunksize()
w, h = scale(self.scale, self.width, self.height, str)
self.video = FfmpegVideo(
diff --git a/src/core.py b/src/core.py
index 1a90296..d7445c9 100644
--- a/src/core.py
+++ b/src/core.py
@@ -13,8 +13,8 @@ import toolkit
log = logging.getLogger('AVP.Core')
-STDOUT_LOGLVL = logging.INFO
-FILE_LOGLVL = logging.VERBOSE
+STDOUT_LOGLVL = logging.WARNING
+FILE_LOGLVL = None
class Core:
@@ -77,8 +77,7 @@ class Core:
if compPos < 0 or compPos > len(self.selectedComponents):
compPos = len(self.selectedComponents)
if len(self.selectedComponents) > 50:
- return None
-
+ return -1
if type(component) is int:
# create component using module index in self.modules
moduleIndex = int(component)
@@ -188,7 +187,6 @@ class Core:
for key, value in data['Settings']:
Core.settings.setValue(key, value)
-
for tup in data['Components']:
name, vers, preset = tup
clearThis = False
@@ -213,7 +211,7 @@ class Core:
self.moduleIndexFor(name),
loader
)
- if i is None:
+ if i == -1:
loader.showMessage(msg="Too many components!")
break
diff --git a/src/toolkit/frame.py b/src/toolkit/frame.py
index aefb55f..0e200b5 100644
--- a/src/toolkit/frame.py
+++ b/src/toolkit/frame.py
@@ -32,6 +32,7 @@ class FramePainter(QtGui.QPainter):
super().setPen(penStyle)
def finalize(self):
+ log.verbose("Finalizing FramePainter")
imBytes = self.image.bits().asstring(self.image.byteCount())
frame = Image.frombytes(
'RGBA', (self.image.width(), self.image.height()), imBytes
diff --git a/src/video_thread.py b/src/video_thread.py
index 823ac73..91ebe93 100644
--- a/src/video_thread.py
+++ b/src/video_thread.py
@@ -252,9 +252,14 @@ class Worker(QtCore.QObject):
print('############################')
log.info('Opening pipe to ffmpeg')
log.info(cmd)
- self.out_pipe = openPipe(
- ffmpegCommand, stdin=sp.PIPE, stdout=sys.stdout, stderr=sys.stdout
- )
+ try:
+ self.out_pipe = openPipe(
+ ffmpegCommand,
+ stdin=sp.PIPE, stdout=sys.stdout, stderr=sys.stdout
+ )
+ except sp.CalledProcessError:
+ log.critical('Ffmpeg pipe couldn\'t be created!')
+ raise
# =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~==~=~=~=~=~=~=~=~=~=~=~=~=~=~
# START CREATING THE VIDEO