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 lem__mel . Évalué à 1.
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 lolop (site web personnel) . Évalué à 3.
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:
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.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Questions sur choix techniques (sur PJSIP)
Posté par Greg (site web personnel) . Évalué à 2.
[^] # Re: Questions sur choix techniques (sur PJSIP)
Posté par left . Évalué à 1.
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 lem__mel . Évalué à 2.
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 Greg (site web personnel) . Évalué à 2.
Si le coté codage dans son coin ne vous rassuraient pas, vous voilà maintenant rassurés ;)
[^] # Re: Plus d'informations sur PJsip et ceux qui le développent
Posté par lem__mel . Évalué à 1.
[^] # Re: Plus d'informations sur PJsip et ceux qui le développent
Posté par left . Évalué à 1.
Merci pour les infos.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.