Logo Search packages:      
Sourcecode: videoporama version File versions  Download package

def mplayer::Mplayer::recupSortie (   self )
récupère les lignes d'information émises par QProcess (mplayerProcess) et en tire les conséquences

Definition at line 452 of file mplayer.py.

                       :
    """récupère les lignes d'information émises par QProcess (mplayerProcess) et en tire les conséquences"""
    while self.mplayerProcess.canReadLine(): # renvoie True si une ligne complète peut être lue à partir du système
      # stocker l'ensemble des bits d'une ligne
      tampon=QByteArray(self.mplayerProcess.readLine()) # readline: lit une ligne ascii à partir du système
      
      #print "tampon :", tampon
      
      # On vérifie si on a eu des réponses
      if tampon.startsWith("Playing"):
        # On récupère les infos de base ('$ mplayer -input cmdlist' pour avoir la liste complète - file:///usr/share/doc/mplayer-doc/tech/slave.txt.gz pour plus de détails)
        self.mplayerProcess.write("get_video_resolution\n") # récupère la résolution de la vidéo
        self.mplayerProcess.write("get_time_length\n")
        # Nouveau fichier chargé -> on récupère son nom
        ind = tampon.length() - 2 # suppression du '.' à la fin
        tampon.remove(ind,ind)
        tampon.remove(0, 8) # vire Playing
        tampon.replace(QByteArray("\n"), QByteArray(""))
        tampon.replace(QByteArray("\r"), QByteArray(""))
        try:
          # Tour de passe-passe pour ne pas avoir de problème d'accents
          
          # Condition pour détection windows
          if os.name == 'nt': 
            self.fichierCourant[1]=unicode(QString(tampon))
          # Condition pour détection Linux ou MacOSX
          elif os.name in ['posix', 'mac']:
            self.fichierCourant[1]=unicode(QString(tampon)).encode("Latin1").decode("UTF8")
        except UnicodeEncodeError, e:
          print e
          self.fichierCourant[1]="?"
        self.cibleVideo.setToolTip(self.fichierCourant[1])
        if self.barreTaches is not None:
          self.barreTaches.showMessage(self.fichierCourant[1])
      
      # réponse à get_video_resolution : ANS_VIDEO_RESOLUTION='<width> x <height>'
      if tampon.startsWith("ANS_VIDEO_RESOLUTION"): # retourne True si l'ensemble de bits démarre avec "..."
        print "tampon :",tampon # ex. -> ANS_VIDEO_RESOLUTION='352 x 288'
        tampon.remove(0, 21) # suppression des 21 1er caract -> '352 x 288'
        tampon.replace(QByteArray("'"), QByteArray("")) # -> 352 x 288
        tampon.replace(QByteArray(" "), QByteArray("")) # -> 352x288
        tampon.replace(QByteArray("\n"), QByteArray("")) # -> 352x288 # retour chariot unix
        tampon.replace(QByteArray("\r"), QByteArray("")) # -> 352x288 # retour chariot windows
        #print "-----tampon.indexOf('x') :", tampon.indexOf('x'), type(tampon.indexOf('x'))
        sepIndex = tampon.indexOf('x') # récupère la position de 'x' # 3 <type 'int'>
        #print "-----tampon.left(sepIndex).toInt():", tampon.left(sepIndex).toInt(), type(tampon.left(sepIndex).toInt())
        resX = tampon.left(sepIndex).toInt()[0] # -> 352 # (352, True) <type 'tuple'>
        #print "-----tampon.mid(sepIndex+1).toInt() :", tampon.mid(sepIndex+1).toInt(), type(tampon.mid(sepIndex+1).toInt())
        resY = tampon.mid(sepIndex+1).toInt()[0] # -> 288 # (288, True) <type 'tuple'>
        
        # on définit les nouvelles dimensions de l'image du widget-mplayer.
        # try pour éviter les bogues sur les fichiers audio (sans dimension d'image)!!!
        #try:
        if resX!=0 or resY!=0:
          print "ratio :", self.ratio, type(self.ratio)
        else:
          print "fichier audio"
      
      # réponse à get_time_length : ANS_LENGTH=xx.yy
      elif tampon.startsWith("ANS_LENGTH"):
        print "tampon :",tampon # -> ANS_LENGTH=279.38
        tampon.remove(0, 11) # vire ANS_LENGTH=
        tampon.replace(QByteArray("'"), QByteArray(""))
        tampon.replace(QByteArray(" "), QByteArray(""))
        tampon.replace(QByteArray("\n"), QByteArray(""))
        tampon.replace(QByteArray("\r"), QByteArray("")) # -> 279.38
        #print "-----tampon.toFloat() :", tampon.toFloat(), type(tampon.toFloat())
        tempsMax = tampon.toFloat()[0] # (279.3800048828125, True) <type 'tuple'>
        self.dureeVideo = tempsMax
        ## Modifié le 28/05/2009 : On augmente la précision du slider
        #self.slider.setMaximum(tempsMax) # déf du domaine de valeur du curseur
        self.slider.setMaximum(tempsMax*self.echelle)
        
        # ATTENTION J'AI COMMENTE CETTE LIGNE !!!
        #self.slider.setMaximum(tempsMax)
      
      # réponse à get_time_pos : ANS_TIME_POSITION=xx.y
      elif tampon.startsWith("ANS_TIME_POSITION"):
        #print "tampon :",tampon # -> ANS_TIME_POSITION=1.4 (temps courant)
        tampon.remove(0, 18) # vire ANS_TIME_POSITION=
        tampon.replace(QByteArray("'"), QByteArray(""))
        tampon.replace(QByteArray(" "), QByteArray(""))
        tampon.replace(QByteArray("\n"), QByteArray(""))
        tampon.replace(QByteArray("\r"), QByteArray(""))
        #print "-----tampon.toFloat() :", tampon.toFloat(), type(tampon.toFloat())
        tempsCourant = tampon.toFloat()[0] # (1.3999999761581421, True) <type 'tuple'>
        # récupération du temps courant: utile dans certains cadres
        self.temps = tempsCourant
        # Programmer un arrêt. Utile pour les aperçus
        #print "self.temps", self.temps, type(self.temps)
        #print "self.debutFin", self.debutFin[1], type(self.debutFin[1])
        temps = float("%.1f" %self.temps)
        #print "temps", temps, type(temps), '\n'
        if self.debutFin!=(0,0) and self.debutFin[1]==temps:
          self.arretMPlayer()
          return
        ## Modifié le 28/05/2009 : On augmente la précision du slider ###############
        #self.slider.setValue(tempsCourant) # aller au temps courant
        self.slider.setValue(tempsCourant*self.echelle)
        #############################################################################
        self.changerTempsChrono(tempsCourant) # modifier le chrono du bouton
  
  

Generated by  Doxygen 1.6.0   Back to index