Résumé

  • La RFC 3952 concaténait des trames iLBC de taille fixe sans transmettre leur nombre ; le récepteur divisait la longueur par 38 ou 50 selon le mode décidé en SDP.
  • Une errata encore classée Reported propose de remplacer 32/50 par 38/50 dans une phrase, rappelant qu’une longueur, un contrat de session et un résultat audio sont trois preuves différentes.

Le nombre était dans la relation, pas dans le champ

Une charge de 76 octets peut contenir deux trames de 20 ms. Une charge de 100 octets peut en contenir deux de 30 ms. La RFC 3952 rendait ces deux énoncés calculables sans octet de comptage : 38 octets par trame dans le premier mode, 50 dans le second.

Le gain était réel. Une taille fixe rend un compte explicite redondant. Mais la suppression d’un champ ne supprime pas la connaissance qu’il portait. Elle la déplace. La longueur appartenait au paquet ; le diviseur appartenait à la négociation ; l’obéissance au mode appartenait à l’émetteur.

La spécification interdisait donc de couper une trame entre deux paquets et de mélanger les modes 20 et 30 ms dans un même paquet. Elle déconseillait aussi une agrégation dépassant le MTU. Peu de trames réduisaient le délai mais augmentaient la part des en-têtes ; davantage de trames réduisaient ce coût tout en concentrant plus de parole dans une seule perte.

Le contrôle fournissait le diviseur

En SDP, le format apparaissait comme iLBC/8000, et a=fmtp transportait mode=20 ou mode=30. Sans paramètre, le mode 30 s’appliquait. La RFC insistait sur son caractère bidirectionnel : les deux extrémités devaient employer le même résultat.

L’offre annonçait une préférence ; la réponse pouvait retenir l’autre valeur. Le mode commun était celui de plus faible débit. Ici, 30 ms signifie 50 octets tous les 30 ms, donc moins d’octets par seconde que 38 tous les 20 ms. Les deux exemples où offre et réponse diffèrent aboutissent ainsi à 30.

La RFC 2327 donnait la forme SDP et la RFC 3264 le modèle offre-réponse. La RFC 3550 donnait à RTP ses numéros de séquence et horodatages. Aucun de ces éléments pris seul ne disait combien de trames iLBC se trouvaient dans la charge : il fallait conserver leur jointure temporelle.

Une coquille placée sur la couture

Les sections 2 et 3.1 de la RFC 3952 donnent 38 octets pour 20 ms. La RFC 3951, qui décrit le codec, concorde avec cette taille. Pourtant, la section 3.2 imprime 32/50 au moment précis où elle explique la division.

L’enregistrement des errata contient depuis le 3 avril 2026 l’Errata 8866, proposant 38/50. Son statut reste Reported. La cohérence interne soutient fortement 38, mais une proposition signalée n’est pas une correction officiellement vérifiée. Une rédaction rigoureuse doit conserver cette incertitude procédurale.

Cette divergence ne démontre ni incident commercial ni panne mesurée. Elle démontre un risque documentaire : un lecteur de l’ensemble dispose de plusieurs indices pour 38 ; un outil qui extrait une seule phrase peut adopter 32. Le paquet reste identique, tandis que l’interprète change.

La division ne prononçait pas le verdict final

Cent quatorze octets divisés par 38 donnent trois trames sans reste. Cela établit une compatibilité de longueur avec le mode 20, non la validité du codage, l’identité de l’émetteur, l’authenticité SRTP, l’admission par le tampon de gigue, le décodage ou l’écoute.

La RFC 3711 sépare la protection SRTP de la mise en trames. Une authentification cryptographique peut accepter des octets que l’application ne sait pas interpréter avec son état courant. Inversement, une longueur divisible n’authentifie personne. Un reste est un signal puissant de désaccord de mode, de type de charge erroné, de corruption ou de capture incomplète, mais pas encore un diagnostic causal.

La notice RFC Editor classe le document Experimental et le date de décembre 2004. Son héritage tient dans une règle générale : une représentation compacte peut être parfaitement déterministe tout en dépendant d’un contrat extérieur. Garder les octets sans garder ce contrat produit une archive exacte et pourtant incomplète.

Sources