def parallel_show_image(filename,size,op, timestamp=None, mute=True, divergence=None, force='N',full='N'):
	global videowall_dict
	global unique_id
	global frame_duration
	global videowall_time
	#global frame_number
	#global movie_timestamp

	

	val=0
	#print (" agent ", unique_id, " entra en show image TS:", timestamp)

	#__CLOUDBOOK:BEGINREMOVE__  
	# -------------------------------
	unique_id=int(unique_id)
	unique_id+=1
	if (unique_id==size*size+10):
		unique_id=10
	unique_id=str(unique_id)
	#__CLOUDBOOK:ENDREMOVE__
	
	
	# comprobamos si nos han invocado ya
	# en modo no cloudbook no tiene sentido ojo.
	"""
	if (frame!=None and op=="next_frame"):
		if (frame_number==frame*unique_id):
			print ("invocado ya ",unique_id, frame_number, frame)
			return
		else:
			frame_number=frame
	"""
	#print (videowall_dict)
	my_portion=videowall_dict[str(unique_id)]
	#print ("I am agent:",unique_id,"showing portion: ",my_portion)
	t,val=simpleMedia.show(filename,my_portion,size,op,unique_id, timestamp,mute,divergence, force,full)
	#print ("agent", unique_id, "val is ",val, "t is ",t)
	if (t!=0):
		videowall_time[str(unique_id)]=t
		# el movietimestamp deberia ser el minimo pero cojo el max
		# de lo contrario la pelicula va mas despacio pues puede coger a un pausado
		# en live video curiosamente debe ser al reves
		# estrategia MIN: hay que pausar a los adelantados 
		# estrategia MAX: hay que pasar mas fps en los atrasados
		
		#movie_timestamp=min(movie_timestamp,t) 

	#if val!=0:
		#print ("hey", val, "   framedur:",frame_duration)
	try:
		#val puede ser un string, como "eof" o "pause"
		frame_duration=max(val, frame_duration) # biggest of all screens ( each frame starts at -1)

	except:
		#estamos en pause o eof
		if val=='eof':
			frame_duration=1000000
		else: # pause 
			frame_duration=0
def parallel_show_image3(filename,size,op, timestamp=None, mute=True, divergence=None, force='N',full='N', video_dict=None,delay=0):
	global unique_id # esta es non shared
	global videowall_time # necesaria para saber en que t queda cada player
	
	val=0
	#print (" agent ", unique_id, " entra en show image TS:", timestamp)

	#__CLOUDBOOK:BEGINREMOVE__  
	# -------------------------------
	unique_id=int(unique_id)
	unique_id+=1
	if (unique_id==size*size+10):
		unique_id=10
	unique_id=str(unique_id)
	#__CLOUDBOOK:ENDREMOVE__
	
	my_portion=video_dict[str(unique_id)]
	#print ("I am agent:",unique_id,"showing portion: ",my_portion, " delay:", delay)

	#sleep depending when is called

	time.sleep(delay)
	t,val=simpleMedia.show(filename,my_portion,size,op,unique_id, timestamp,mute,divergence, force,full)
	#print ("agent", unique_id, "val is ",val, "t is ",t)
	if (t!=0):
		videowall_time[str(unique_id)]=t
	if val=='eof':
		videowall_time[str(unique_id)]=-1
	else: 
		pass
def parallel_show_image2(filename,
                         size,
                         op,
                         timestamp=None,
                         mute=True,
                         divergence=None,
                         force='N',
                         full='N',
                         video_dict=None):
    #global videowall_dict   #v2
    global unique_id  # esta es non shared

    #global frame_duration # necesaria para detectar el eof

    global videowall_time  # necesaria para saber en que t queda cada player
    #global frame_number
    #global movie_timestamp   # v2

    val = 0
    #print (" agent ", unique_id, " entra en show image TS:", timestamp)

    #__CLOUDBOOK:BEGINREMOVE__
    # -------------------------------
    unique_id = int(unique_id)
    unique_id += 1
    if (unique_id == size * size + 10):
        unique_id = 10
    unique_id = str(unique_id)
    #__CLOUDBOOK:ENDREMOVE__

    #my_portion=videowall_dict[str(unique_id)]
    my_portion = video_dict[str(unique_id)]

    #print ("I am agent:",unique_id,"showing portion: ",my_portion)
    t, val = simpleMedia.show(filename, my_portion, size, op, unique_id,
                              timestamp, mute, divergence, force, full)
    #print ("agent", unique_id, "val is ",val, "t is ",t)
    if (t != 0):
        videowall_time[str(unique_id)] = t
        # el movietimestamp deberia ser el minimo pero cojo el max
        # de lo contrario la pelicula va mas despacio pues puede coger a un pausado
        # en live video curiosamente debe ser al reves
        # estrategia MIN: hay que pausar a los adelantados
        # estrategia MAX: hay que pasar mas fps en los atrasados

        #me lo ahorro v2
        #movie_timestamp=min(movie_timestamp,t)

    #if val!=0:
    #print ("hey", val, "   framedur:",frame_duration)

    if val == 'eof':
        #frame_duration=1000000
        videowall_time[str(unique_id)] = -1
    else:  # pause
        pass
        #frame_duration=0
    """