|
From: <dep...@us...> - 2003-03-13 23:32:47
|
Update of /cvsroot/madsserv/madsserv/src/server/transition In directory sc8-pr-cvs1:/tmp/cvs-serv23111 Modified Files: Transition.java Log Message: quelques modif de transition Index: Transition.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/server/transition/Transition.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Transition.java 12 Mar 2003 23:07:11 -0000 1.4 --- Transition.java 13 Mar 2003 23:32:34 -0000 1.5 *************** *** 1,188 **** ! import java.awt.*; ! import java.io.*; ! import java.lang.Object.*; ! import javax.media.Time.*; ! import javax.media.*; ! import javax.media.format.*; ! import javax.media.format.AudioFormat.*; ! import javax.media.format.VideoFormat.*; ! ! /** ! * La classe Transition assure la transition la plus rapide lors d'un changement de niveau de qualit�. D�s que le gestionnaire des Connexions lui transmet un changement de niveau de qualit�, il collecte les informations sur les diffusions en cours, fixe les param�tres de l'encodage � effectuer et les transmet au module de traitement de la conversion. ! */ ! ! public class Transition ! { ! ! /*On d�clare ici le num�ro du client, le num�ro de frame courant et le niveau de qualit�*/ ! ! private int numClient; ! private int qualityLevel; ! Reencode reencodeRef; ! GestionAdapta gestionAdaptaRef; ! Streaming streamingRef; ! ! ! /** ! * Constructeur vide, il initialise le num�ro du client � 1, il met le niveau de quailt� � 1 par d�faut et le num�ro de FRame � 0. Il ne peut �tre utiliser que la premi�re fois, sinon il y a des risques de colision. ! */ ! ! public Transition () ! ! { ! numClient = 1; ! qualityLevel = 1; ! } ! ! /** ! * Constructeur de la classe Transition qui initialise le num�ro du client, le niveau de qualit� � 1 par d�faut et le num�ro de frame � 0. ! *@param _nmclient le numero du client ! */ ! ! public Transition(int _numClient) ! ! { ! numClient = _numClient; ! qualityLevel = 1; ! } ! ! /** ! * Constructeur de la classe Transition qui initialise le num�ro de client et le niveau de qualit� et met le num�ro de Frame � 0 par d�faut. ! *@param _nmclient le numero du client ! *@param _qualitylevel le niveau de qualite demande ! */ ! ! public Transition(int _numClient, int _qualityLevel) ! ! { ! numClient = _numClient; ! qualityLevel = _qualityLevel; ! } ! ! /** ! * Constructeur de la classe Transition qui initialise le num�ro de client et le niveau de qualit� et met le num�ro de Frame. ! *@param _nmclient le numero du client ! *@param _qualitylevel le niveau de qualite demande ! *@param _numFrame le num�ro de frame ! ! ! public Transition(int _numClient, int _qualityLevel, float _numFrame) ! ! { ! numClient = _numClient; ! qualityLevel = _qualityLevel; ! numFrame = _numFrame; ! */ ! ! /** ! *findNewNumberFrame : Cette m�thode calcule le nouveau num�ro de Frame � partir duquel il faut reencoder le fichier multimedia diffus�. ! *@param oldNumFrame le numero de frame qui vient d'etre envoye au client ! *@param reencodingVideoFor le nouveau format video de reencodage. ! *@param reencodingAudioFor le nouveau format audio de reencodage. ! */ ! ! public Time findNewMediaTime(double oldMediaTime, VideoFormat reencodingVideoFor, AudioFormat reencodingAudioFor) ! { ! double newAuxMediaTime = 0; ! double VideoMediaLength = 0; ! double AudioMediaLength = 0; ! Time newMediaTime; ! ! if (reencodeRef.multiMedia) ! { ! ! //frameRateVideo = reencodingVideoFor.getFrameRate(); ! newAuxMediaTime = oldMediaTime + 60; ! } ! ! else ! { ! //frameRateAudio = reencodingAudioFor.getFrameRate(); ! newAuxMediaTime = oldMediaTime + 60; ! ! } ! newMediaTime = new Time(newAuxMediaTime); ! //on retourne le num�ro de Frame � partir duquel il faut r�encoder. ! return(newMediaTime); ! ! } ! ! /** ! *setQualityLevel Cette m�thode lance tout le processus de transition entre deux niveau de qualit�s. ! *@param _qualityLevel le niveau de qualit� demande par le simulateur ! **/ ! ! public void setQualityLevel(int _qualityLevel) ! ! { ! int i = 2; ! double currentMediaTime = 0; ! Time startTime; ! Time auxMediaTime; ! String str = "coucou"; ! ! //variables qui vont stock�es le format original Video et Audio ! VideoFormat origVideoFor; ! AudioFormat origAudioFor; ! ! //variables qui vont stock�es le format de r�encodage Video et Audio ! VideoFormat reencodingVideoFor = null; ! AudioFormat reencodingAudioFor = null; ! ! ! qualityLevel = _qualityLevel; ! ! ! ! //On obtient ici les formats Vid�o et Audio Originaux. ! ! origVideoFor = reencodeRef.getOriginalVideoFormat(); ! origAudioFor = reencodeRef.getOriginalAudioFormat(); ! ! //On obtient ici les formats Vid�o et Audio de r�encodage. ! reencodingVideoFor = gestionAdaptaRef.getVideoStreamingFormat(qualityLevel, origVideoFor); ! reencodingAudioFor = gestionAdaptaRef.getAudioStreamingFormat(qualityLevel, origAudioFor); ! ! //auxMediaTime = getCurrentFrame(); ! ! startTime = findNewMediaTime(currentMediaTime, reencodingVideoFor, reencodingAudioFor); ! ! //on Transmet ici les formats Audio et Vid�o de r�encodage ! reencodeRef.setReencodingVideoFormat(reencodingVideoFor); ! reencodeRef.setReencodingAudioFormat(reencodingAudioFor); ! ! ! //On Transmet ici le num�ro de Frame � partir de laquelle il faut r�encoder le fichier. ! reencodeRef.setReencodingTime(startTime); ! ! } ! /** ! * setStreaming donne une referrence sur un objet Streaming ! * @param streamingRef un objet de type Streaming ! */ ! public void setStreaming(Streaming streamingRef) ! { ! this.streamingRef = streamingRef; ! } ! ! /** ! * setStreaming donne une referrence sur un objet gestionAdapta ! * @param gestionAdptaRef un objet de type Streaming ! */ ! public void setGestionAdapta(GestionAdapta gestionAdaptaRef) ! { ! this.gestionAdaptaRef = gestionAdaptaRef; ! } ! ! /** ! * setStreaming donne une referrence sur un objet Reencode ! * @param reencodeRef un objet de type Reencode ! */ ! public void setReencode(Reencode reencodeRef) ! { ! this.reencodeRef = reencodeRef; ! } ! ! } ! ! --- 1,201 ---- ! import java.awt.*; ! import java.io.*; ! import java.lang.Object.*; ! import javax.media.Time.*; ! import javax.media.*; ! import javax.media.format.*; ! import javax.media.format.AudioFormat.*; ! import javax.media.format.VideoFormat.*; ! ! /** ! * La classe Transition assure la transition la plus rapide lors d'un changement de niveau de qualite. Des que le gestionnaire des Connexions lui transmet un changement de niveau de qualit�, il collecte les informations sur les diffusions en cours, fixe les param�tres de l'encodage � effectuer et les transmet au module de traitement de la conversion. ! * @author Xavier Deplancq ! */ ! ! public class Transition { ! ! /*On declare ici le num�ro du client, le num�ro de frame courant et le niveau de qualite*/ ! ! private int numClient; ! private int qualityLevel; ! Reencode reencodeRef; ! GestionAdapta gestionAdaptaRef; ! Streaming streamingRef; ! ! /** ! * Constructeur vide, il initialise le num�ro du client � 1, il met le niveau de quailt� � 1 par d�faut et le num�ro de FRame � 0. Il ne peut �tre utiliser que la premi�re fois, sinon il y a des risques de colision. ! */ ! ! public Transition() ! ! { ! numClient = 1; ! qualityLevel = 1; ! } ! ! /** ! * Constructeur de la classe Transition qui initialise le num�ro du client, le niveau de qualit� � 1 par d�faut et le num�ro de frame � 0. ! *@param _nmclient le numero du client ! */ ! ! public Transition(int _numClient) ! ! { ! numClient = _numClient; ! qualityLevel = 1; ! } ! ! /** ! * Constructeur de la classe Transition qui initialise le num�ro de client et le niveau de qualit� et met le num�ro de Frame � 0 par d�faut. ! *@param _nmclient le numero du client ! *@param _qualitylevel le niveau de qualite demande ! */ ! ! public Transition(int _numClient, int _qualityLevel) ! ! { ! numClient = _numClient; ! qualityLevel = _qualityLevel; ! } ! ! /** ! * Constructeur de la classe Transition qui initialise le num�ro de client et le niveau de qualit� et met le num�ro de Frame. ! *@param _nmclient le numero du client ! *@param _qualitylevel le niveau de qualite demande ! *@param _numFrame le num�ro de frame ! public Transition(int _numClient, int _qualityLevel, float _numFrame) ! { ! numClient = _numClient; ! qualityLevel = _qualityLevel; ! numFrame = _numFrame; ! */ ! ! /** ! *findNewNumberFrame : Cette methode calcule le nouveau numero de Frame a partir duquel il faut reencoder le fichier multimedia diffus�. ! *@param oldNumFrame le numero de frame qui vient d'etre envoye au client ! *@param reencodingVideoFor le nouveau format video de reencodage. ! *@param reencodingAudioFor le nouveau format audio de reencodage. ! */ ! ! public Time findNewMediaTime(double oldMediaTime, ! VideoFormat reencodingVideoFor, ! AudioFormat reencodingAudioFor, ! double VideoMediaLength, double AudioMediaLength) { ! double newAuxMediaTime = 0; ! Time newMediaTime; ! ! if (reencodeRef.multiMedia) { ! if (reencodingVideoFor.getEncoding() == "JPEG") { ! newAuxMediaTime = oldMediaTime + 3; ! } ! if (reencodingVideoFor.getEncoding() == "JPEG") { ! newAuxMediaTime = oldMediaTime + 3; ! } ! if (reencodingVideoFor.getEncoding() == "JPEG") { ! newAuxMediaTime = oldMediaTime + 3; ! } ! if (reencodingVideoFor.getEncoding() == "JPEG") { ! newAuxMediaTime = oldMediaTime + 3; ! } ! if (reencodingVideoFor.getEncoding() == "JPEG") { ! newAuxMediaTime = oldMediaTime + 3; ! } ! ! } ! ! else { ! if (reencodingAudioFor.getEncoding() == "MP3") { ! newAuxMediaTime = oldMediaTime + 2; ! } ! if (reencodingAudioFor.getEncoding() == "MP3") { ! newAuxMediaTime = oldMediaTime + 2; ! } ! ! } ! newMediaTime = new Time(newAuxMediaTime); ! //on retourne le numero de Frame a partir duquel il faut r�encoder. ! return (newMediaTime); ! ! } ! ! /** ! *setQualityLevel Cette methode lance tout le processus de transition entre deux niveau de qualites. ! *@param _qualityLevel le niveau de qualite demande par le simulateur ! **/ ! ! public void setQualityLevel(int _qualityLevel) ! ! { ! int i = 2; ! double currentMediaTime = 0; ! double videoMediaLength = 0; ! double audioMediaLength = 0; ! Time startTime; ! Time auxMediaTime; ! ! //variables qui vont stockees le format original Video et Audio ! VideoFormat origVideoFor; ! AudioFormat origAudioFor; ! ! //variables qui vont stockees le format de r�encodage Video et Audio ! VideoFormat reencodingVideoFor = null; ! AudioFormat reencodingAudioFor = null; ! ! qualityLevel = _qualityLevel; ! ! //On obtient ici les formats Video et Audio Originaux. ! if (reencodeRef.multimedia) ! origVideoFor = reencodeRef.getOriginalVideoFormat(); ! origAudioFor = reencodeRef.getOriginalAudioFormat(); ! ! //On obtient ici les formats Video et Audio de reencodage. ! if (reencodeRef.multimedia) ! reencodingVideoFor = gestionAdaptaRef.getVideoStreamingFormat(qualityLevel, ! origVideoFor); ! reencodingAudioFor = gestionAdaptaRef.getAudioStreamingFormat(qualityLevel, ! origAudioFor); ! ! ! //auxMediaTime = streamingRef.getCurrentFrame(); ! //videoMediaLength = streamingRef.getVideoMediaLength(); ! //audioMediaLength = strealingRef.gatAudioMediaLength(); ! ! startTime = findNewMediaTime(currentMediaTime, reencodingVideoFor, ! reencodingAudioFor, videoMediaLength, ! audioMediaLength); ! ! //on Transmet ici les formats Audio et Video de reencodage ! if (reencodeRef.multimedia) ! reencodeRef.setReencodingVideoFormat(reencodingVideoFor); ! reencodeRef.setReencodingAudioFormat(reencodingAudioFor); ! ! //On Transmet ici le numero de Frame a partir de laquelle il faut reencoder le fichier. ! reencodeRef.setReencodingTime(startTime); ! ! } ! ! /** ! * setStreaming donne une referrence sur un objet Streaming ! * @param streamingRef un objet de type Streaming ! */ ! public void setStreaming(Streaming streamingRef) { ! this.streamingRef = streamingRef; ! } ! ! /** ! * setStreaming donne une referrence sur un objet gestionAdapta ! * @param gestionAdptaRef un objet de type Streaming ! */ ! public void setGestionAdapta(GestionAdapta gestionAdaptaRef) { ! this.gestionAdaptaRef = gestionAdaptaRef; ! } ! ! /** ! * setStreaming donne une referrence sur un objet Reencode ! * @param reencodeRef un objet de type Reencode ! */ ! public void setReencode(Reencode reencodeRef) { ! this.reencodeRef = reencodeRef; ! } ! ! } |