2012-03-22 3 views
-1

Pourriez-vous me dire la meilleure façon d'implémenter un tampon circulaire avec un temps constant entre l'entrée et la sortie dans c sur linux. J'écris dans le tampon dans le fil et le lis sur un autre. J'ai besoin de sauver la différence de temps constante entre lire et écrire, et le flux d'écriture a un débit variable. Maintenant, j'ajoute des timpramps à chaque paquet pour les synchroniser, et je reçois des timestamps d'un autre thread qui utilise clock_gettime toutes les 1ms.c tampon circulaire avec retard constant pour mpeg-ts

+1

On ne sait pas ce que vous demandez ici. –

+0

Je demande quelle est la meilleure façon d'implémenter un tampon circulaire avec un temps constant entre l'écriture et la lecture dans c sous linux – ostryck

+0

@ostryck Je vous recommande de lire http://stackoverflow.com/questions/how-to-ask et ensuite revenez et éditez votre question. – JustinDoesWork

Répondre

1

L'approche globale est correcte comme vous l'avez suggéré. Cependant, il y a beaucoup de choses doivent être pris en charge -

  1. Le fil source soumettant à CBUF et fils s'enfoncer retirer de CBUF. Le CBuf doit être suffisamment grand pour que les données ne soient pas perdues. Le CBuf doit être verrouillé par les deux threads pour garantir l'absence de corruption.

  2. Les données CBuf doivent être horodatées. Ces horodatages doivent être suffisamment précis pour ne pas provoquer de gigue de transmission.

  3. Le filetage de l'évier doit être retardé pour s'assurer qu'il ne s'écoule pas. Les fils de source et d'évier ne doivent dériver le temps que d'une source de temps commune de sorte qu'il n'y ait pas de dérive entre leur débit respectif d'entrée et de sortie.

probablement si vous envisagez de le transmettre à un système matériel à l'extérieur, la précision d'horodatage de 1 ms, est assez faible parce que le besoin de 500 ns conformité MPEG de transmission. Cependant, si vous utilisez un adaptateur matériel à transmettre, il s'en occupe généralement.

+0

merci beaucoup pour l'explication, c'était juste ce que je cherchais – ostryck