| 
					
				 | 
			
			
				@@ -212,17 +212,23 @@ class Vopen(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.Rsuccess = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if self.cv2: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self.Rcap = self.cv2.VideoCapture(self.fpath+self.fname) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            self.Rcap.read() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            self.Rfvs = FileVideoStream(self.fpath+self.fname).start() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self.Rsuccess = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self._read() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def _read(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         success = self.Rsuccess 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ok = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if success and self.fname: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             cap = self.Rcap 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            #fvs = self.Rfvs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             _break = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 success, self.img = cap.read() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                #self.img = fvs.read() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if not success: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     self.end = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     return 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -241,6 +247,7 @@ class Vopen(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 #self.cv2.normalize(self.img, self.img, 0, self.dim, self.cv2.NORM_MINMAX)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 self.buffer.append(self.img) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ok = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if len(self.buffer) % 100 == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     _id = str(self.__repr__)[-5:-1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     print(_id,"video read",self.dmx,len(self.buffer),self.fname,"fps",self.fps,self.dim) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -248,6 +255,7 @@ class Vopen(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 print("Excetpion","_init",self,e,end="") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.success = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return ok 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def read(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if len(self.buffer) <= 0: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -258,7 +266,8 @@ class Vopen(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self.img = self.buffer[int(self.pos)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             #self.img = self.cv2.cvtColor(self.img, self.cv2.COLOR_BGR2RGB) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self.img = self.rescale_frame(self.img, percent=self.scale) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if self._run: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if self._run: # and len(self.buffer) > 400: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 t = time.time() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 self.t_delta = t-self.t_last  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 self.t_last = t 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -311,19 +320,20 @@ class Vopen(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self.im = pygame.image.frombuffer(img.tobytes(), self.shape, "RGB") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if self._run: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if self._run and len(self.buffer) > 30: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 t = time.time() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 self.t_delta = t-self.t_last  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 self.t_last = t 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 self.pos += self.t_delta*self.fps 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                #self.pos += 4 # speedupt for testing 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 t = time.time() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 self.t_delta = 0  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 self.t_last = t 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if self.pos > len(self.buffer): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                self.pos = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                self.pos = len(self.buffer)-1  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if self.pos >= len(self.buffer): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                self.pos = 0 # restart 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                #self.pos = len(self.buffer)-1 # stay at the end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         except AttributeError as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             time.sleep(.05) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -355,13 +365,13 @@ class Vopen(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             pygame.draw.line(wn,yellow,[self.x+__xw-4-__xw,self.y+2-__yw],[self.x+2-__xw,self.y+__yw-4-__yw]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         pz = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        txt = "FPS:{} F:{:05} von {:05} sec:{:0.02f} von {:0.02f}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        txt = txt.format(self.fps,int(self.pos),len(self.buffer),(-1),pz )  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if self.end: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            fr = font15.render(txt,1, (0,255,0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            fr = font15.render(txt,1, (255,0,0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        wn.blit(fr,(10,main_size[1]-(self._id+1)*35)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #txt = "FPS:{} F:{:05} von {:05} sec:{:0.02f} von {:0.02f}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #txt = txt.format(self.fps,int(self.pos),len(self.buffer),(-1),pz )  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #if self.end: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #    fr = font15.render(txt,1, (0,255,0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #    fr = font15.render(txt,1, (255,0,0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #wn.blit(fr,(10,main_size[1]-(self._id+1)*35)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if self.success and wn and self.im: # is not None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             wn.blit(self.im, (int(self.x-__xw), int(self.y-__yw))) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -384,12 +394,11 @@ class Vopen(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         pygame.draw.rect(wn,rgb,[220,main_size[1]-(self._id+1)*35,80,13]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         _line = "error no _line" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        _line ="FPS:{} F:{:05} von {:05} sec:{:0.02f} von {:0.02f}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if self.fps == 0: # check if div zerro 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            _line ="FPS:{} F:{:05} von {:05} sec:{:0.02f} von {:0.02f}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             _line = _line.format(self.fps,int(self.pos),len(self.buffer),(-1),pz ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             pz = (len(self.buffer)/self.fps) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            _line = "FPS:{} F:{:05} von {:05} sec:{:0.02f} von {:0.02f}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             _line = _line.format(self.fps,int(self.pos),len(self.buffer),(self.pos/self.fps),pz )   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         fr = font15.render(_line ,1, (0,0,0)) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -409,11 +418,18 @@ class Vopen(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 VIDEO = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 videoplayer=[]             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 cv2 = None 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+FileVideoStream = None 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _vid = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if type(options.videoplayer) is str: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         import cv2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    except: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        print("Except Import:",e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # faster video reading ... ??? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        from imutils.video import FileVideoStream 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         print("Except Import:",e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     max_videoplayer = 4 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -435,12 +451,19 @@ def loop_videoplayer(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     while 1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         _videoplayer = videoplayer[:] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         #print(".") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ok = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for i in _videoplayer: #.append( Vopen(cdmx,_id=_vid) ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                i._read() # read next frame from file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                r = i._read() # read next frame from file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if r: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ok = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                print("EXCEPTION loop_videoplayer ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        time.sleep(0.005) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                print("EXCEPTION loop_videoplayer ",e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            time.sleep(0.002) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if ok == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            time.sleep(0.1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            time.sleep(0.005) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 thread.start_new_thread(loop_videoplayer,()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # ===== ====== 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -569,7 +592,7 @@ try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     main_size=(wx,wy) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if PIXEL_MAPPING >= 1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        pm_wy = 120+block[0] * 8  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pm_wy = 11*p #+ p*3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         main_size=(wx,wy+pm_wy) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1195,18 +1218,19 @@ def reshape(_x,_y): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     # black background for -> output MAP 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     pygame.draw.rect(window,[0,0,20],[0,60,wx,pm_wy-10])  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    tmp_font = pygame.font.SysFont("freemonobold",int(p*0.8)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    fr = font.render("OUTPUT".format(t1.get()) ,1, (255,255,255)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    fr_r = fr.get_rect(center=(x+int(wx/3),y+pm_wy-5)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    #window.blit(fr,(x+int(wx/2),y+pm_wy)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fr   = tmp_font.render("OUTPUT" ,1, (255,255,255)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fr_r = fr.get_rect(center=(x+int(wx/2),int(60+pm_wy-p*1.5))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     window.blit(fr,fr_r) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    fr = font.render("↑  ↑    MAP    ↑  ↑".format(t1.get()) ,1, (255,255,255)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    fr_r = fr.get_rect(center=(x+int(wx/3),y+pm_wy+15)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    #window.blit(fr,(x+int(wx/2),y+pm_wy)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fr   = tmp_font.render("↑  ↑    MAP    ↑  ↑" ,1, (255,255,255)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fr_r = fr.get_rect(center=(x+int(wx/2),int(60+pm_wy-p))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     window.blit(fr,fr_r) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    fr = font.render("INPUT".format(t1.get()) ,1, (255,255,255)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    fr_r = fr.get_rect(center=(x+int(wx/3),y+pm_wy+35)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    #window.blit(fr,(x+int(wx/2),y+pm_wy)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fr   = tmp_font.render("INPUT" ,1, (255,255,255)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fr_r = fr.get_rect(center=(x+int(wx/2),int(60+pm_wy-p/2))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     window.blit(fr,fr_r) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1214,8 +1238,6 @@ def reshape(_x,_y): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for fix in _GRID: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if j >= 8*8: # max output size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        #if j >= _x*_y: # max input size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        #    break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         j+=1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ii = i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         #z= i # helping border offset  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1822,12 +1844,12 @@ def main(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         #COUNTER.append({"DMX":31,"DIM":0,"PAN":127,"TILT":127,"CONTROL":0,"SEC":10,"RED":255,"GREEN":255,"BLUE":255,"_time":time.time(),"_RUN":0,"_SEC":0}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if options.countdown: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            draw_counter(COUNTER) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if VIDEO: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             draw_video(VIDEO) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if options.countdown: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            draw_counter(COUNTER) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         pointer.draw(0,pm_wy) #wy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         spos = [0,0,0,0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if PIXEL_MAPPING >= 1: 
			 |