G.722 aus trunk backported für asterisk 1.4.x

Fehlermeldung

Hallo und ein frohes Neues!

Ich versuche den G.722 rein zu patchen bekome jedoch fogende Fehler (nach Restart sehe ich bei "show translation" den G.722 keine Veränderung.
frame.c habe ich mittels "patch -p0 <frame.c.patch" gepatched - ist das ok?

Im Makefile habe ich ASTTOPDIR=/usr/src/bristuff-0.4.0-test4/asterisk-1.4.9 gesetzt, ansonsten bekam ich einen Fehler,dass das Verzeichnis nicht gefunden wurde.

Viele Grüße
Patrick Straßburger

Code:
asterisk2:/usr/src/bristuff-0.4.0-test4/asterisk-1.4.9/codecs# make;make install
   [CC] codec_adpcm.c -> codec_adpcm.o
   [LD] codec_adpcm.o -> codec_adpcm.so
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o: In function `_start':
../sysdeps/i386/elf/start.S:115: undefined reference to `main'
codec_adpcm.o: In function `__unreg_module':
codec_adpcm.c:(.text+0xfc): undefined reference to `ast_module_unregister'
codec_adpcm.o: In function `unload_module':
codec_adpcm.c:(.text+0x131): undefined reference to `ast_unregister_translator'
codec_adpcm.c:(.text+0x141): undefined reference to `ast_unregister_translator'
codec_adpcm.o: In function `parse_config':
codec_adpcm.c:(.text+0x1de): undefined reference to `ast_config_load'
codec_adpcm.c:(.text+0x1fa): undefined reference to `ast_variable_browse'
codec_adpcm.c:(.text+0x236): undefined reference to `ast_true'
codec_adpcm.c:(.text+0x240): undefined reference to `option_verbose'
codec_adpcm.c:(.text+0x270): undefined reference to `ast_verbose'
codec_adpcm.c:(.text+0x284): undefined reference to `ast_config_destroy'
codec_adpcm.o: In function `load_module':
codec_adpcm.c:(.text+0x2d5): undefined reference to `__ast_register_translator'
codec_adpcm.c:(.text+0x2f5): undefined reference to `__ast_register_translator'
codec_adpcm.c:(.text+0x314): undefined reference to `ast_unregister_translator'
codec_adpcm.o: In function `__reg_module':
codec_adpcm.c:(.text+0x33c): undefined reference to `ast_module_register'
codec_adpcm.o: In function `__unregister_file_version':
codec_adpcm.c:(.text+0x36c): undefined reference to `ast_unregister_file_version                                              '
codec_adpcm.o: In function `__register_file_version':
codec_adpcm.c:(.text+0x3a6): undefined reference to `ast_register_file_version'
codec_adpcm.o: In function `lintoadpcm_frameout':
codec_adpcm.c:(.text+0x9ab): undefined reference to `ast_trans_frameout'
collect2: ld returned 1 exit status
make: *** [codec_adpcm.so] Error 1
   [LD] codec_adpcm.o -> codec_adpcm.so
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o: In function `_start':
../sysdeps/i386/elf/start.S:115: undefined reference to `main'
codec_adpcm.o: In function `__unreg_module':
codec_adpcm.c:(.text+0xfc): undefined reference to `ast_module_unregister'
codec_adpcm.o: In function `unload_module':
codec_adpcm.c:(.text+0x131): undefined reference to `ast_unregister_translator'
codec_adpcm.c:(.text+0x141): undefined reference to `ast_unregister_translator'
codec_adpcm.o: In function `parse_config':
codec_adpcm.c:(.text+0x1de): undefined reference to `ast_config_load'
codec_adpcm.c:(.text+0x1fa): undefined reference to `ast_variable_browse'
codec_adpcm.c:(.text+0x236): undefined reference to `ast_true'
codec_adpcm.c:(.text+0x240): undefined reference to `option_verbose'
codec_adpcm.c:(.text+0x270): undefined reference to `ast_verbose'
codec_adpcm.c:(.text+0x284): undefined reference to `ast_config_destroy'
codec_adpcm.o: In function `load_module':
codec_adpcm.c:(.text+0x2d5): undefined reference to `__ast_register_translator'
codec_adpcm.c:(.text+0x2f5): undefined reference to `__ast_register_translator'
codec_adpcm.c:(.text+0x314): undefined reference to `ast_unregister_translator'
codec_adpcm.o: In function `__reg_module':
codec_adpcm.c:(.text+0x33c): undefined reference to `ast_module_register'
codec_adpcm.o: In function `__unregister_file_version':
codec_adpcm.c:(.text+0x36c): undefined reference to `ast_unregister_file_version                                              '
codec_adpcm.o: In function `__register_file_version':
codec_adpcm.c:(.text+0x3a6): undefined reference to `ast_register_file_version'
codec_adpcm.o: In function `lintoadpcm_frameout':
codec_adpcm.c:(.text+0x9ab): undefined reference to `ast_trans_frameout'
collect2: ld returned 1 exit status
make: *** [codec_adpcm.so] Error 1
asterisk2:/usr/src/bristuff-0.4.0-test4/asterisk-1.4.9/codecs#
 
Hier steht doch eigentlich ziemlich genau was zu tun ist:

http://www.ip-phone-forum.de/showpost.php?p=939134&postcount=13

Das Makefile unter .../codecs ist zu ersetzen und die g.722*-Sourcen sowie der g.722-Pfad muss unterhalb von .../codecs vorhanden sein. Erst dann wird nach einem 'make clean;make;make install' das modul codec_g722.so erzeugt.

Frame.c zu patchen reicht allein nicht aus - es dient lediglich dazu, dass der codec auch ausgewählt wird (der patch selbst ist dann ok wenn keine rejects entstehen)!
 
Hier nochmals das fertige Lademodul 'codec_g722.so' welches nach '/usr/lib/asterisk/modules/' zu kopieren ist (Anm.: wurde gegen glibc 2.3.6 gelinked (Basis: debian etch)):

PS: zusätzlich ist noch der frame.c-patch erforderlich!
 

Anhänge

  • codec_g722.zip
    6.4 KB · Aufrufe: 40
Hallo,

ich bekomme noch immer Fehlermeldungen habe nach und nach Verzeichnisse angepasst (Fehlermeldungen zu $ASTTOPDIR). Ich versuch es heut abend nochmal etwas strukturierter. Dein letztes File habe ich in /usr/asterisk/modules/ kopiert - testen kann ich es jedoch erst heut abend.

@Netview: Wie kommst Du auf Version 1.4.17 mit BRIstuff wird derzeit nur 1.4.9 gelinkt?
Hast Du die Scripte umgeschrieben oder kann man Asterisk im Nachhinein aktualisieren?

Viele Grüße
Patrick
 
@pstrassburger

Was willst du damit erreichen: ASTTOPDIR=/usr/src/bristuff-0.4.0-test4/asterisk-1.4.9

Ich habe im Makefile überhaupt nichts geändert!
Es gibt im subdirectory .../codecs ein Makefile welches ersetzt werden muss, damit der g.722 überhaupt erstellt wird.

Hast du mal das fertige binary codec_g722.so (ein posting zuvor) ausprobiert?
Den frame.c-Patch hast du ja bereits eingebaut!

Den bristuff-0.4.0-test4 kann man auch für neuere asterisk-Versionen anpassen. Allerdings muss man dann die rejects händisch nacharbeiten (einwenig C-Kenntnisse sind dann nicht schlecht).
 
Hallo Netview,

Dein File funktioniert - ich habe nun schonmal einige Tests gemacht - morgen werden wir uns mit ein paar mehr Telefonen einwählen und mehr Tests (Meetme, Transcoding) machen.

PS: In den Tracen ist mir aufgefallen, dass der RTP Strom asymetrisch ist (Asterisk -160bytes-> Client, Client -80bytes-> Asterisk (pro RTP Paket). Denke das ist Client abhängig.

Vielen Dank für Deine Hilfe,
Patrick
 
Hallo,

nicht schlecht :) - den kannte ich nicht.
Statistiken sowie schnelle Konfig Änderungen machen einen guten Eindruck.

Viele Grüße
Patrick Strassburger
 
Hallo,

ich habe alles nach Anleitung installiert, aber der Anrufer hört mich nicht. Ich benutze das SL75WLAN. Hat jemand eine Idee?
Fehlen Informationen die ich zur Analyse noch liefern muss?

Code:
show translation
         Translation times between formats (in milliseconds) for one second of data
          Source Format (Rows) Destination Format (Columns)

          g723 gsm ulaw alaw g726aal2 adpcm slin lpc10 g729 speex ilbc g726 g722
     g723    -   -    -    -        -     -    -     -    -     -    -    -    -
      gsm    -   -    2    2        2     2    1     3    -     -    -    2    2
     ulaw    -   2    -    1        2     2    1     3    -     -    -    2    2
     alaw    -   2    1    -        2     2    1     3    -     -    -    2    2
 g726aal2    -   2    2    2        -     2    1     3    -     -    -    1    2
    adpcm    -   2    2    2        2     -    1     3    -     -    -    2    2
     slin    -   1    1    1        1     1    -     2    -     -    -    1    1
    lpc10    -   2    2    2        2     2    1     -    -     -    -    2    2
     g729    -   -    -    -        -     -    -     -    -     -    -    -    -
    speex    -   -    -    -        -     -    -     -    -     -    -    -    -
     ilbc    -   -    -    -        -     -    -     -    -     -    -    -    -
     g726    -   2    2    2        1     2    1     3    -     -    -    -    2
     g722    -   2    2    2        2     2    1     3    -     -    -    2    -
Code:
codec_g722.so                  ITU G.722-64kbps G722 Transcoder         0
 
mit Siemens geht es nicht (es gibt Unterschiede in der Implementierung)!

Gehen tut z.B. www.phonerlite.de
 
Schade - vielen Dank für die schnelle Antwort trotzdem.
 

Statistik des Forums

Themen
244,881
Beiträge
2,220,088
Mitglieder
371,611
Neuestes Mitglied
Mandylion73
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.