Replacing the audio backend in pjsua

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I just realized that my solution may cause trouble if '--enable-ext-sound' starts to work 
as I originally thought it should ;-)

/Dan

Dan Arrhenius wrote:
> I don't actually have a problem with the new audio API and my own audio 
> driver, the only thing I wanted was to avoid having to modify code in 
> pjproject.
> 
> But here's what I did:
> 
> 1. Use the parameter '--enable-ext-sound' when running the configure 
> script.
> 
> 2. Add the following to config_site.h: "#define 
> PJMEDIA_AUDIO_DEV_HAS_EXTAUDIO 1"
> 
> 3. Edit user.mak to build the source code for my audio implementation 
> (implementing the function 'pjmedia_ext_factory').
> 
> 4. Apply the following patch:
> 
> --- pjmedia/src/pjmedia-audiodev/audiodev.c     (revision 2945)
> +++ pjmedia/src/pjmedia-audiodev/audiodev.c     (working copy)
> @@ -86,6 +86,10 @@
>  pjmedia_aud_dev_factory* pjmedia_symb_mda_factory(pj_pool_factory *pf);
>  #endif
> 
> +#if PJMEDIA_AUDIO_DEV_HAS_EXTAUDIO
> +pjmedia_aud_dev_factory* pjmedia_ext_factory(pj_pool_factory *pf);
> +#endif
> +
>  #define MAX_DRIVERS    16
>  #define MAX_DEVS       64
> 
> @@ -383,6 +387,9 @@
>  #if PJMEDIA_AUDIO_DEV_HAS_SYMB_MDA
>      aud_subsys.drv[aud_subsys.drv_cnt++].create = 
> &pjmedia_symb_mda_factory;
>  #endif
> +#if PJMEDIA_AUDIO_DEV_HAS_EXTAUDIO
> +    aud_subsys.drv[aud_subsys.drv_cnt++].create = &pjmedia_ext_factory;
> +#endif
> 
>      /* Initialize each factory and build the device ID list */
>      for (i=0; i<aud_subsys.drv_cnt; ++i) {
> 
> 
> Regards,
> Dan
> 
> 
> Shayne O'Neill wrote:
>>
>> Sorry for the double mail
>>
>> As an alternative, is there a good template driver that a new iphone 
>> driver can be built from. Like a stub with all the callbacks , or 
>> something like that. I might have some time next week I could have try 
>> at at it.
>> I'm not a great coder (samuels a better coder than I , likely) but I 
>> could at least get a head start on it.
>>
>> Note that this would still not solve the problem for 'oddball' 
>> platforms with custom old-school audio drivers.
>>
>> Shayne.
>>
>> On 15/10/2009, at 12:44 AM, samuel.vinson wrote:
>>
>>>
>>> Hello,
>>>
>>> I posted a patch here to resolve your problem, few weeks ago.
>>> Because in 1.4 branch, the legacy disapeared :-(
>>>
>>> Benny could you integrate this patch or fixe the problem, pls.
>>>
>>> Regards
>>>
>>> Samuel
>>>
>>>
>>> > Message du 14/10/09 17:21
>>> > De : "Dan Arrhenius"
>>> > A : "pjsip list"
>>> > Copie ? :
>>> > Objet : Re: [pjsip] Replacing the audio backend in pjsua
>>> >
>>> >
>>> > It didn't work for me to define 
>>> PJMEDIA_AUDIO_DEV_HAS_LEGACY_DEVICE. I should probably
>>> > make it clear that I'm using pjsua-lib, so I don't initialize the 
>>> audio directly in my code.
>>> >
>>> > In audiodev.c there is support for maximum 16(MAX_DRIVERS) audio 
>>> device factories, but
>>> > they are added and initialized statically, and in my case no driver 
>>> at all is added :-(
>>> > Might I suggest the ability to dynamically add audio device 
>>> factories, for example
>>> > 'pjmedia_aud_subsys_add_driver(...)'.
>>> >
>>> > Best regards,
>>> > Dan
>>> >
>>> >
>>> > Benny Prijono wrote:
>>> > > On Wed, Oct 14, 2009 at 5:45 PM, Dan Arrhenius wrote:
>>> > >> Hello,
>>> > >> I've been working with pjproject 1.0.x and want to upgrade to 
>>> the latest
>>> > >> version.
>>> > >> How can I replace the audio back-end in pjsua with my own using 
>>> the new
>>> > >> audio subsystem? With the old version I configured pjproject with
>>> > >> '--enable-ext-sound' and supplied rules to build the audio 
>>> back-end in
>>> > >> user.mak.
>>> > >>
>>> > >> As I understand it all available audio back-ends are hard-coded in
>>> > >> audiodev.c (PORTAUDIO, WMME, SYMB_VAS, SYMB_APS, and SYMB_MDA), 
>>> and there is
>>> > >> no way of dynamically add a new audio driver. Or am I missing 
>>> something?
>>> > >> Do I have to modify audiodev.c to get my own audio back-end in 
>>> pjsua? I want
>>> > >> to modify as little code in pjproject as possible to ease 
>>> maintenance.
>>> > >>
>>> > >>
>>> > >
>>> > > In http://trac.pjsip.org/repos/wiki/Audio_Dev_API there is a 
>>> guide on
>>> > > how to access legacy device using the new API (see under
>>> > > PJMEDIA_AUDIO_DEV_HAS_LEGACY_DEVICE). I have not tested it with
>>> > > --enable-ext-sound, but it's supposed to work. :)
>>> > >
>>> > > Cheers
>>> > > Benny
>>> > >
>>> > > _______________________________________________
>>> > > Visit our blog: http://blog.pjsip.org
>>> > >
>>> > > pjsip mailing list
>>> > > pjsip at lists.pjsip.org
>>> > > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>> > >
>>> >
>>> > _______________________________________________
>>> > Visit our blog: http://blog.pjsip.org
>>> >
>>> > pjsip mailing list
>>> > pjsip at lists.pjsip.org
>>> > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>> >
>>> >
>>>
>>>
>>>     Gratuite, garantie ? vie et d?j? utilis?e par des millions 
>>> d'internautes...
>>> vous aussi, pour votre adresse e-mail, choisissez laposte.net.
>>>
>>> Laposte.net, bien + qu'une messagerie
>>>
>>> _______________________________________________
>>> Visit our blog: http://blog.pjsip.org
>>>
>>> pjsip mailing list
>>> pjsip at lists.pjsip.org
>>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>
>> ===================================
>> Shayne O'Neill Development
>> Mobile, Web and Business process integration.
>> shayne.oneill at gmail.com 0400247091
>> Ask me about how Alfresco can help your business grow.
>>
>>
>> _______________________________________________
>> Visit our blog: http://blog.pjsip.org
>>
>> pjsip mailing list
>> pjsip at lists.pjsip.org
>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>
> 



[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux