Journal PJsip et Python

Posté par  (site web personnel) .
Étiquettes : aucune
0
19
fév.
2007
Bonjour,

La librairie PJsip est une pile SIP en C supportant beaucoup de fonctionnalités, multi-plateformes et qui semble très performante.

PJSUA est une sur-couche à PJSIP orienté User Agent, permettant par exemple de faire un softphone facilement.

Depuis la version 0.5.10, l'API de PJSUA est fournit avec un module Python (en C) permettant de créer un softphone encore plus rapidement et facilement, et toujours de façon portable. Elle permet aussi par exemple de créer des scripts jouant le rôle d'un SIP UA, permettant de faire tout un tas de tests !

Cette librairie est différente des autres dans le sens où elle gère tout, est manipulable facilement via son API, et depuis d'autres langages que le C, le tout de manière portable et avec un soucis de performance.

http://www.pjsip.org/
http://blog.pjsip.org/
  • # Questions sur choix techniques (sur PJSIP)

    Posté par  . Évalué à 1.

    Les sections suivantes m'ont fait tiquer :

    Do NOT Use ANSI C
    Contrary to popular teaching, ANSI C (and LIBC) is not the most portable library in the world, nor it's the most ubiquitous. For example, LIBC is not available in Linux kernel. Also normally LIBC will be excluded from compilation of RTOSes to reduce size.

    So for maximum portability, do NOT use ANSI C. Do not even try to include any other header files outside <include/pj>. Stick with the functionalities provided by PJLIB.
    Use pj_str_t instead of C Strings
    PJLIB uses pj_str_t instead of normal C strings. You SHOULD follow this convention too. Remember, ANSI string-h is not always available. And PJLIB string is faster!
    Use Pool for Memory Allocations
    You MUST NOT use malloc() or any other memory allocation functions. Use PJLIB Fast Memory Pool instead! It's faster and most portable.
    [...]
    DO NOT use <stdio.h> for text output. Use PJLIB Logging Facility instead.

    et la lib ré-implémente au moins ceci :
    - Threads
    - Thread Local Storage
    - Mutexes
    - Semaphores.
    - Event Object.
    - Time Data Type and Manipulation.
    - High Resolution Timestamp
    - Socket Abstraction
    - String Operations (ses propres chaînes)
    - Exception Construct (mise en place d'un mécanisme d'exception à l'aide de jump)
    - Memory pool (surcouche au malloc, etc)

    tout ça à la page suivante : http://www.pjsip.org/pjlib/docs/html/main.htm


    Ma question est donc qu'est réellement le PJSIP ? Il est dit ceci :

    PJSIP is an Open Source SIP prototol stack, designed to be very small in footprint, have high performance, and very flexible.

    Mais cela ressemble plus à un framework à la Qt et autres qu'à une implémentation d'un protocole.

    Petite question annexe :
    Je ne sais pas si ne pas s'appuyer sur le C Ansi (ou ce qui est normalisé de façon générale) est une bonne idée, car développer des applications avec cette librairie rend celles-ci très dépendantes de la dite-librairie. Autant s'appuyer sur le framework de Qt, de GTK, des MFC rend les applications dépendantes de ces frameworks, autant ces frameworks assurent une certaine pérénité à l'ensemble du produit, quid de la durée de vie cette librairie ?
    • [^] # Re: Questions sur choix techniques (sur PJSIP)

      Posté par  (site web personnel) . Évalué à 3.

      En regardant rapidement, j'ai l'impression que le very small in footprint + le fait qu'ils veuillent pouvoir le porter sur différentes plateformes embarquées a toute son importance. Pour ça ils ont dû se retaper les couches bas niveau...

      Ce genre de boulot d'abstraction vis à vis de l'OS cible existe déjà (par exemple le Apache Portable Runtime), mais même le core d'abstraction de Qt ne dois pas tourner sur autant de plateformes que le leur, je cite:
      Extreme Portability
      PJLIB is designed to be extremely portable. It can run on any kind of processors (16-bit, 32-bit, or 64-bit, big or little endian, single or multi-processors) and operating systems. Floating point or no floating point. Multi-threading or not. It can even run in environment where no ANSI LIBC is available.

      Currently PJLIB is known to run on these platforms:

      * Win32/x86 (Win95/98/ME, NT/2000/XP/2003, mingw).
      * arm, WinCE and Windows Mobile.
      * Linux/x86, (user mode and as kernel module(!)).
      * Linux/alpha
      * Solaris/ultra.
      * MacOS X/powerpc
      * RTEMS (x86 and powerpc).

      And efforts is under way to port PJLIB on:

      * Symbian OS


      Quand tu lis que ça tourne sur des environnements où ANSI C ou Lib C ne sont pas dispos, tu comprends leurs conseils... ceci dit, si tu ne cible pas toutes les plateformes où ça tourne, tu dois pouvoir utiliser des librairies plus lourdes.

      Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

      • [^] # Re: Questions sur choix techniques (sur PJSIP)

        Posté par  (site web personnel) . Évalué à 2.

        D'autant que le protocole SIP peut avoir des utilisations sur des systèmes très petit (tant au niveau taille physique que processeur) comme sur un téléphone portable ou autre appareil (domotique?)
      • [^] # Re: Questions sur choix techniques (sur PJSIP)

        Posté par  . Évalué à 1.

        (...) le fait qu'ils veuillent pouvoir (...)
        Justement, c'est qui le ils en question ? Ca me parait a peu près bien écrit, bien documenté, ca utilise une couche d'abstraction qui ne doit pas être si facile à maintenir, ca a visiblement été testé sur pas mal de plateformes ... Bref, ça fait beaucoup de travail , et j'imagine que ça ne doit pas être fait que le soir après le boulot. Pourtant, aucune pub, aucun nom de boite ou de sponsort ... je m'interroge ;)
      • [^] # Re: Questions sur choix techniques (sur PJSIP)

        Posté par  . Évalué à 2.

        < disclaimer >Je ne suis pas un expert en embarqué, je m'interroge seulement. Et non :-) je ne cherche pas à caser Qt< /disclaimer >
        Ma foi, je connais au moins[1] une librairie qui est également bien portable : Qt[2] tourne sur les plateformes suivantes :

        Supported/Verified[3] on ARM®, ARM® 9 & 11 chipsets (e.g. Marvell®, Freescale®, NXPTM and NEC®), x86®, MIPS®, PowerPC®, Freescale®, NXPTM , Microsoft Windows Vista™, Server 2003, XP, 2000, NT 4, Me/98, Mac® OS X, 10.3 and 10.4, Linux®, Solaris®, HP-UX, IRIX, AIX, many other Unix variants.

        Cela en fait pas mal tout de même, et il en dehors des slots/signaux ils doivent respecter les standards. Et puis que représente les parts de marché des différentes architectures supportées par l'un ou l'autre ?[4]

        Et enfin cela ne répond pas quant à la pérénité de la librairie.

        P.S. : Toutes ces questions, car cela me pertube toujours quand on quitte les standards. Évidemment, il y a des fois où cela est nécessaire, ou novateur.




        [1] en fait, pour être honnête, c'est la seule que je connaisse (cf le disclaimer), mais j'imagine qu'il doit y en avoir bien d'autres
        [2] n'allons pas trop vite évidemment, je mélange ici les différentes solutions de chez trolltech : Qtopia Phone Edition, Qtopia PDA Edition, Qtopia Platform, Qtopia Core, Qt Destop
        [3] selon le cas
        [4] c'est une vraie question
  • # Plus d'informations sur PJsip et ceux qui le développent

    Posté par  (site web personnel) . Évalué à 2.

    J'ai reçu ce mail :


    Hi Greg,

    I got your email address from the comments section of our blog, thanks for commenting and posting in linuxfr.org. I don't speak French, so just for fun I tried running the linuxfr page through Google Translator. At one point, a commenter (using the handle name "left"), seems to mention "However, no advertizing, no name of limps or of sponsort… I question myself;". It may be down to bad translation, but I feel some explanation is needed: pjsip has a company (PJSIP LLP) backing it, that will provide non-GPL licensing and support to people that needs them. Therefore if people are worried that this is just some hobbyist, they can be assured that we are a proper company with long term plans for pjsip. It is true that the website does not yet reflect this, as we haven't properly "launched" yet, that is to come sometime later this year. Stay tuned.

    Thank you very much for your attention.

    Best Regards,

    --
    Perry Ismangil


    Si le coté codage dans son coin ne vous rassuraient pas, vous voilà maintenant rassurés ;)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.