PDA

Επιστροφή στο Forum : Info: G.729 - Τι είναι συμβατό με τι;



cosmos
07-07-06, 12:31
Για να ξεκαθαριστεί λίγο η ασάφεια που υπάρχει γύρω από τις διάφορες εκδόσεις G.729 που κυκλοφορούν:

Μία είναι η προδιαγραφή του G.729. Όμως:
- Υπάρχει το Συμπλήρωμα Α (Annex A), το οποίο αναφέρει μία υλοποίηση του G.729, η οποία χρειάζεται λιγότερη υπολογιστική ισχύ για να παίξει σε σχέση με την full G.729. Θα την δείτε και ως G.729a σε αρκετές αναφορές. Είναι πλήρως συμβατή με μία "πλήρη" υλοποίηση G.729 όμως! Με άλλα λόγια δε θα πρέπει να σας απασχολεί η συμβατότητα. Απλά η Annex A υλοποίηση δίνει λίγο χειρότερη φωνή από την κανονική/πλήρη G.729. Στα επόμενα, όπου γράφω G.729a εννοώ έναν G.729 Annex A υλοποιημένο coder

- Υπάρχει το Συμπλήρωμα Β (Annex B), το οποίο με τη σειρά του αποτελεί ένα extra χαρακτηριστικό το οποίο αφορά Voice Activity Detection/Comfort Noise Generation (VAD/CNG).

Για να ξεκαθαρίζουμε τώρα:
- Ένας G.729 codec μπορεί να είναι υλοποιημένος είτε με το κανονικό G.729 είτε με το Annex A (τα συμβολίζω με G.729 και G.729a αντίστοιχα)
- Ένας G.729 codec, ανεξάρτητα από το αν είναι υλοποιημένος με το κανονικό ή με το Αnnex, μπορεί από κατασκευής να μπορεί ή να μην μπορεί και να παίξει σε Annex B (τα συμβολίζω με G.729b και G.729ab αντίστοιχα). Ο ίδιος codec μπορεί να λειτουργεί με απενεργοποιημένη τη λειτουργικότητα του Annex B, oπότε συμπεριφέρεται ως απλός G.729 ή G.729a!

Ως εδώ λοιπόν μπορούμε να πούμε ότι πιο feature-rich είναι ένας G.729b codec, δηλαδή πλήρης υλοποίηση και compliant με Annex B.

To ερώτημα είναι τι παίζει με τι... Χονδρικά, και στα πλαίσια SIP κλήσεων, παίζουν όλα με όλα (όταν όλα δουλεύουν σε SIP σωστά*). Έτσι μπορεί να μιλήσει (προφανώς):
- g.729 <-> g.729
- g.729 <-> g.729a
- g.729 <-> g.729b* (με απενεργοποιημένη τη λειτουργικότητα του Annex B όμως)
- g.729 <-> g.729ab* (με απενεργοποιημένη τη λειτουργικότητα του Annex B όμως)
- g.729a <-> g.729a
- g.729a <-> g.729b* (με απενεργοποιημένη τη λειτουργικότητα του Annex B όμως)
- g.729 <-> g.729ab* (με απενεργοποιημένη τη λειτουργικότητα του Annex B όμως)
- g.729b <-> g.729b (με ενεργοποιημένη τη λειτουργικότητα του Annex B)
- g.729b <-> g.729ab (με ενεργοποιημένη τη λειτουργικότητα του Annex B)


Σημείωση: η δήλωση ότι υποστηρίζεις ως συσκευή το codec G.729 είναι μία τόσο για το G.729 όσο και για το G.729a! Δε διαφέρουν και είναι πλήρως interoperable σε επίπεδο κωδικοποίησης. Είπαμε, μόνο η ποιότητα διαφέρει.


*= Εδώ μία μικρή προσοχή. H απόφαση χρήσης ή μη Annex B λειτουργικότητας, πραγματοποιείται κατά την ανταλλαγή πακέτων SDP προ της ανταλλαγής φωνής. Κατά το στάδιο δλδ που η κάθε πλευρά λέει ποια codec υποστηρίζει, με ποια σειρά κτλ. Όταν μία υλοποίηση δηλώνει ότι υποστηρίζει G.729 τότε εκ των πραγμάτων εννοεί ότι είναι συμβατή με Annex B!!!! By default δλδ, αν λες "έχω g.729, εννοείς ότι έχεις g.729b (ή g.729ab)!!

Οπότε μία υλοποίηση που δεν έχει Annex B λειτουργικότητα πρέπει να το δηλώσει κατά την αποκατάσταση της κλήσης! Έχω δει υλοποιήσεις που δεν το κάνουν, με αποτέλεσμα να δηλώνουν στην πραγματικότητα Αnnex B συμπεριφορά! Έτσι, αν η άλλη πλευρά είναι Annex B συμβατή θα θεωρήσει οk να κάνει κλήση ως Annex B! To αποτέλεσμα θα είναι ότι η απομακρυσμένη πλευρά θα στέλνει Annex B πληροφορία που δε θα την καταλαβαίνει η "βλαμμένη" πλευρά....

Ελπίζω να τα έγραψα σωστά...

sdikr
07-07-06, 21:02
Τώρα με μπέρδεψες!!

annex b;

μιλαμε για voip codecs ή για χDsl;

nnn
07-07-06, 22:15
Εννοεί την τροποποίηση/συμπλήρωμα Β.

@ ADSLgr.com All rights reserved.