aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDH42017-06-01 11:01:51 -0500
committerDH42017-06-01 11:01:51 -0500
commitfcbe211bf1588d4d3740d5b8ec70aa45bbe8ea69 (patch)
tree4ebf3b995602a0428cb6bfd66e949a57fc1268b5
parent43073cbd429fe415be3009124bee26b12ec8d2de (diff)
Performance boost for static backgrounds. moved drawBars() inside class.
-rw-r--r--components/original.py63
-rw-r--r--video_thread.py23
2 files changed, 42 insertions, 44 deletions
diff --git a/components/original.py b/components/original.py
index 045ffa0..9e7da30 100644
--- a/components/original.py
+++ b/components/original.py
@@ -44,7 +44,7 @@ class Component(__base__.Component):
spectrum = numpy.fromfunction(lambda x: 0.008*(x-128)**2, (255,), dtype="int16")
width = int(previewWorker.core.settings.value('outputWidth'))
height = int(previewWorker.core.settings.value('outputHeight'))
- return drawBars(width, height, spectrum, self.visColor, self.layout)
+ return self.drawBars(width, height, spectrum, self.visColor, self.layout)
def preFrameRender(self, **kwargs):
super().preFrameRender(**kwargs)
@@ -61,7 +61,7 @@ class Component(__base__.Component):
def frameRender(self, moduleNo, frameNo):
width = int(self.worker.core.settings.value('outputWidth'))
height = int(self.worker.core.settings.value('outputHeight'))
- return drawBars(width, height, self.spectrumArray[frameNo], self.visColor, self.layout)
+ return self.drawBars(width, height, self.spectrumArray[frameNo], self.visColor, self.layout)
def pickColor(self):
RGBstring, btnStyle = super().pickColor()
@@ -97,42 +97,41 @@ class Component(__base__.Component):
x = frequencies[0:int(paddedSampleSize/2) - 1]
return lastSpectrum
-
-def drawBars(width, height, spectrum, color, layout):
- vH = height-height/8
- bF = width / 64
- bH = bF / 2
- bQ = bF / 4
- imTop = Image.new("RGBA", (width, height),(0,0,0,0))
- draw = ImageDraw.Draw(imTop)
- r, g, b = color
- color2 = (r, g, b, 125)
- bP = height / 1200
+ def drawBars(self, width, height, spectrum, color, layout):
+ vH = height-height/8
+ bF = width / 64
+ bH = bF / 2
+ bQ = bF / 4
+ imTop = Image.new("RGBA", (width, height),(0,0,0,0))
+ draw = ImageDraw.Draw(imTop)
+ r, g, b = color
+ color2 = (r, g, b, 125)
- for j in range(0, 63):
- draw.rectangle((bH + j * bF, vH+bQ, bH + j * bF + bF, vH + bQ - spectrum[j * 4] * bP - bH), fill=color2)
- draw.rectangle((bH + bQ + j * bF, vH , bH + bQ + j * bF + bH, vH - spectrum[j * 4] * bP), fill=color)
+ bP = height / 1200
+ for j in range(0, 63):
+ draw.rectangle((bH + j * bF, vH+bQ, bH + j * bF + bF, vH + bQ - spectrum[j * 4] * bP - bH), fill=color2)
+ draw.rectangle((bH + bQ + j * bF, vH , bH + bQ + j * bF + bH, vH - spectrum[j * 4] * bP), fill=color)
- imBottom = imTop.transpose(Image.FLIP_TOP_BOTTOM)
+ imBottom = imTop.transpose(Image.FLIP_TOP_BOTTOM)
- im = Image.new("RGBA", (width, height),(0,0,0,0))
+ im = Image.new("RGBA", (width, height),(0,0,0,0))
- if layout == 0:
- y = 0 - int(height/100*43)
- im.paste(imTop, (0, y), mask=imTop)
- y = 0 + int(height/100*43)
- im.paste(imBottom, (0, y), mask=imBottom)
+ if layout == 0:
+ y = 0 - int(height/100*43)
+ im.paste(imTop, (0, y), mask=imTop)
+ y = 0 + int(height/100*43)
+ im.paste(imBottom, (0, y), mask=imBottom)
- if layout == 1:
- y = 0 + int(height/100*10)
- im.paste(imTop, (0, y), mask=imTop)
- y = 0 - int(height/100*10)
- im.paste(imBottom, (0, y), mask=imBottom)
+ if layout == 1:
+ y = 0 + int(height/100*10)
+ im.paste(imTop, (0, y), mask=imTop)
+ y = 0 - int(height/100*10)
+ im.paste(imBottom, (0, y), mask=imBottom)
- if layout == 2:
- y = 0 + int(height/100*10)
- im.paste(imTop, (0, y), mask=imTop)
+ if layout == 2:
+ y = 0 + int(height/100*10)
+ im.paste(imTop, (0, y), mask=imTop)
- return im
+ return im
diff --git a/video_thread.py b/video_thread.py
index 388093a..dee254a 100644
--- a/video_thread.py
+++ b/video_thread.py
@@ -32,16 +32,10 @@ class Worker(QtCore.QObject):
while True:
i = self.compositeQueue.get()
- frame = Image.new(
- "RGBA",
- (self.width, self.height),
- (0, 0, 0, 255)
- )
-
if self.imBackground is not None:
- frame.paste(self.imBackground)
+ frame = self.imBackground
else:
- frame.paste(self.getBackgroundAtIndex(i[1]))
+ frame = self.getBackgroundAtIndex(i[1])
for compNo, comp in enumerate(self.components):
if compNo in self.staticComponents and self.staticComponents[compNo] != None:
@@ -75,10 +69,16 @@ class Worker(QtCore.QObject):
self.lastPreview = time.time()
self.previewQueue.task_done()
-
def getBackgroundAtIndex(self, i):
- return self.core.drawBaseImage(self.backgroundFrames[i])
+ background = Image.new(
+ "RGBA",
+ (self.width, self.height),
+ (0, 0, 0, 255)
+ )
+ layer = self.core.drawBaseImage(self.backgroundFrames[i])
+ background.paste(layer)
+ return background
@pyqtSlot(str, str, str, list)
def createVideo(self, backgroundImage, inputFile, outputFile, components):
@@ -154,7 +154,6 @@ class Worker(QtCore.QObject):
if properties and 'static' in properties:
self.staticComponents[compNo] = copy(comp.frameRender(compNo, 0))
- print('done')
self.compositeQueue = Queue()
self.compositeQueue.maxsize = 20
@@ -163,7 +162,7 @@ class Worker(QtCore.QObject):
self.previewQueue = PriorityQueue()
# create threads to render frames and send them back here for piping out
- for i in range(2):
+ for i in range(3):
t = Thread(target=self.renderNode, name="Render Thread")
t.daemon = True
t.start()