Aller au contenu principal

3.6.2. Interpreting imageattr Attributes (Interprétation des attributs imageattr)

3.6.2. Interpreting imageattr Attributes (Interprétation des attributs imageattr)

[RFC6236] définit "a=imageattr" comme un champ consultatif. Cela signifie qu'il ne contraint pas absolument les formats vidéo que l'émetteur peut utiliser mais donne une indication des valeurs préférées.

Cette spécification prescrit un comportement plus spécifique. Lorsqu'un MediaStreamTrack, qui produit une vidéo d'une certaine résolution (la "résolution de piste"), est attaché à un RtpSender, qui encode la vidéo de piste à la même résolution ou à une résolution inférieure (les "résolutions d'encodeur"), et qu'une description distante est appliquée qui référence l'émetteur et contient des attributs "a=imageattr recv" valides, il DOIT suivre les règles ci-dessous pour garantir que l'émetteur ne transmet pas une résolution qui dépasserait les critères de taille spécifiés dans les attributs. Ces règles DOIVENT être suivies tant que les attributs restent présents dans la description distante, y compris dans les cas où la piste change sa résolution ou est remplacée par une piste différente.

Selon la configuration du RtpSender, il peut produire un encodage unique à une certaine résolution ou, si le simulcast (Section 3.7) a été négocié, plusieurs encodages, chacun à sa propre résolution spécifique. De plus, selon la configuration, chaque encodage peut avoir la flexibilité de réduire la résolution si nécessaire ou peut être verrouillé sur une résolution de sortie spécifique.

Pour chaque encodage produit par le RtpSender, l'ensemble des attributs "a=imageattr recv" dans la section "m=" correspondante de la description distante est traité pour déterminer ce qui doit être transmis. Seuls les attributs qui référencent le format média sélectionné pour l'encodage sont considérés; chaque attribut de ce type est évalué individuellement, en commençant par l'attribut avec la valeur "q=" la plus élevée. Si plusieurs attributs ont la même valeur "q=", ils sont évalués dans l'ordre où ils apparaissent dans leur section "m=" contenante. Notez que bien que les points de terminaison JSEP incluront au plus un attribut "a=imageattr recv" par format média, les points de terminaison JSEP peuvent recevoir des descriptions de session de points de terminaison non-JSEP avec des sections "m=" qui contiennent plusieurs de ces attributs.

Pour chaque attribut "a=imageattr recv", les règles suivantes sont appliquées. Si ce traitement réussit, l'encodage est transmis en conséquence, et aucun autre attribut n'est considéré pour cet encodage. Sinon, l'attribut suivant est évalué, dans l'ordre susmentionné. Si aucun des attributs fournis ne peut être traité avec succès, l'encodage NE DOIT PAS être transmis, et une erreur DEVRAIT être signalée à l'application.

  • Les limites de l'attribut sont comparées à la résolution de l'encodeur. Seules les limites spécifiques mentionnées ci-dessous sont considérées; toutes les autres valeurs, telles que le rapport d'aspect de l'image, DOIVENT être ignorées. Lors de la considération d'un MediaStreamTrack qui produit une vidéo tournée, la résolution non tournée DOIT être utilisée pour les vérifications. Cela est requis que le récepteur prenne en charge la rotation côté réception (par exemple, via la coordination de l'orientation vidéo (CVO) [TS26.114]), car cela simplifie considérablement la logique de correspondance.

  • Si l'attribut inclut une valeur "sar=" (rapport d'aspect d'échantillon) définie sur autre chose que "1.0", indiquant que le récepteur souhaite recevoir des pixels non carrés, cela ne peut pas être satisfait et l'attribut NE DOIT PAS être utilisé.

  • Si la résolution de l'encodeur dépasse la taille maximale autorisée par l'attribut et que l'encodeur est autorisé à ajuster sa résolution, l'encodeur DEVRAIT appliquer une réduction d'échelle afin de satisfaire les limites. La réduction d'échelle NE DOIT PAS modifier le rapport d'aspect de l'image de l'encodage, en ignorant les différences triviales dues à l'arrondi. Par exemple, si la résolution de l'encodeur est 1280x720 et que l'attribut a spécifié un maximum de 640x480, la résolution de sortie attendue serait 640x360. Si la réduction d'échelle ne peut pas être appliquée, l'attribut NE DOIT PAS être utilisé.

  • Si la résolution de l'encodeur est inférieure à la taille minimale autorisée par l'attribut, l'attribut NE DOIT PAS être utilisé; l'encodeur NE DOIT PAS appliquer de mise à l'échelle. Les implémentations JSEP DEVRAIENT éviter cette situation en permettant la réception de résolutions arbitrairement petites, peut-être via un repli sur un décodeur logiciel.

  • Si la résolution de l'encodeur est comprise entre les tailles maximale et minimale, aucune action n'est nécessaire.