Simulation d'un timecode (chronometre specifique à l'audio-visuel)

Contenu du snippet

Programme qui simule le TC (TimeCode), c'est le chronometre utilisé dans l'audio-visuel. Il est de la forme hh:mm:ss:ff
(hh : heure, mm : minute, ss : seconde, ff : frame)

Car en audio-visuel le nb de frame (image par seconde) est important, il est au nombre de 25 image par seconde, de 0 à 24, la p^remiere image etant le 0.

Source / Exemple :


package canal8 ;

import java.text.DecimalFormat;

class TimeCode extends Thread
{
	private Interface obj ;

	private boolean arreterThread = false ;

	private int ff = 0 ;
	private int ss = 0 ;
	private int mm = 0 ;
	private int hh = 0 ;

	public TimeCode(Interface obj)
	{
		this.obj = obj ;
	}

	public void run()
	{
		while(!arreterThread) // permet d'arreter le thread en cours
		{

			for(int i=0 ; i < 2160000 ; i++)
			{
				try
				{
					this.sleep(40);//25 images par seconde
				}
				catch(InterruptedException e)
				{
					System.out.println("Systeme interrompu" + e);
				}

				if(ff <= 25)
					ff++ ;

				if((ss <=59) && (ff == 25))
				{
					ff = 0 ;
					ss++ ;
				}
				if((mm < 59)&& (ss == 59))
				{
					ss = 0;
					mm++ ;
				}
				if((hh < 24) && (mm == 59))
				{
					mm = 0 ;
					hh++ ;
				}
				afficher(ff, ss, mm, hh) ;//appelle de la methode d'affichage
			}

			try
			{
				this.sleep(4000l);
			}
			catch(InterruptedException e)
			{
				System.out.println(e);
			}
		}
	}

	/*

  • Cette fonction permet de <b></b>
  • @param
  • @return
  • /
public void afficher(int ff, int ss, int mm, int hh) { // %.2i DecimalFormat f = new DecimalFormat("00") ; obj.TCGeneral.setText(f.format(hh) +" : " + f.format(mm) + " : " + f.format(ss) +" : " + f.format(ff) ); } /*
  • Cette fonction permet de <b></b>
  • @param
  • @return
  • /
public void init() { obj.TCGeneral.setText("00 : 00 : 00 : 00"); } /*
  • Cette fonction permet de <b></b>
  • @param
  • @return
  • /
public void lancer() { //si l'objet vient d'etre initialisé /*if(arreterThread == true) arreterThread = false ; else*/ this.start() ; //sinon // } /*
  • Cette fonction permet de <b></b>
  • @param
  • @return
  • /
public void arreter() { this.notify() ; //arreterThread = true ; } /*
  • Cette fonction permet de <b></b>
  • @param
  • @return
  • /
public TimeCode getValeur() { return this ; } /*
  • Cette fonction permet de <b></b>
  • @param
  • @return
  • /
public void setValeur(TimeCode tc) { this.hh = tc.hh ; this.mm = tc.mm ; this.ss = tc.ss ; this.ff = tc.ff ; } /*
  • Cette fonction permet de <b></b>
  • @param
  • @return
  • /
int comparer(TimeCode t) { // on compare l'objet en parametre avec le this // return 1 si t > this // return 0 si t = this // return -1 si t < this int retour = 2 ; // valeur lambda int valThis = this.recupereValeur() ; int valT = t.recupereValeur() ; if (valT > valThis) retour = 1 ; if (valT == valThis) retour = 0 ; if (valT < valThis) retour = -1 ; return (retour) ; } /*
  • Cette fonction permet de <b></b>
  • @param
  • @return
  • /
int recupereValeur() { // donne la valeur en nombre de frame // pour pouvoir faire une comparaison int heure = this.hh ; int minute = this.mm ; int seconde = this.ss ; int frame = this.ff ; int nbFrame = ff + (ss * 25) + (mm * 60 * 25) + (hh * 60 * 60 * 25) ; return (nbFrame) ; } }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (p0236)