Hi, Should be possible, however the media framework will need clock generator, you can employ null audio device as clock generator, please see pjsua_set_null_snd_dev() doc. However, if your hardware codec has clock generator, I think it'd be better to integrate it as "sound device". And for clarification, PJMEDIA_SDPNEG_NOANSCODEC error is a different issue. BR, nanang On Wed, Nov 11, 2009 at 3:09 PM, Kresten Tolstrup <kt at danphone.com> wrote: > Hi, > > When I got the error, "No suitable codec for remote offer > (PJMEDIA_SDPNEG_NOANSCODEC)", WMME-Direct was not switched on. Now it is, > but there is no sound device. > Is it possible to use a passthrough CODEC without any sound device? > > Best Regards > Kresten > > -----Oprindelig meddelelse----- > Fra: pjsip-bounces at lists.pjsip.org > [mailto:pjsip-bounces at lists.pjsip.org]P? vegne af Nanang Izzuddin > Sendt: 9. november 2009 16:12 > Til: pjsip list > Emne: Re: [pjsip] CODEC > > > Hi Kresten, > > First, the error message "No suitable codec for remote offer > (PJMEDIA_SDPNEG_NOANSCODEC)" means no common/shared codec among > endpoints, or no format/codec specified in the SDP offer (any chance > that all the codecs were disabled?). > > So, for example if only PCMA is preferred: > --- > #define PJMEDIA_HAS_PASSTHROUGH_CODECS ?1 > #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA ? ? ?1 > // then disable other passthrough codec implementations > #define PJMEDIA_HAS_PASSTHROUGH_CODEC_* ?0 > --- > > Repeating what Benny mentioned before, the WMME-Direct is a full > sample of integration of hardware codecs (implemented as sound > device), which might be usable as reference. > > BR, > nanang > > > On Mon, Nov 9, 2009 at 6:09 PM, Kresten Tolstrup <kt at danphone.com> wrote: >> Hi Benny >> >> Thank you for your answer. >> >> I have added the defines in config_site.h, but it is still not working, as >> it founds no WMME sound device. >> The CODEC is not known by WinCE, and there is no sound device, and > therefore >> PJSIP fails when initializing, how to handle this? >> >> In file wmmw_dev.c, it ends at the line: >> PJ_LOG(4,(THIS_FILE, "WMME found no sound devices")); >> >> //------------------------------------------------------- >> /* API: init factory */ >> static pj_status_t factory_init(pjmedia_aud_dev_factory *f) >> { >> ? ?struct wmme_factory *wf = (struct wmme_factory*)f; >> ? ?unsigned c; >> ? ?int i; >> ? ?int inputDeviceCount, outputDeviceCount, devCount=0; >> ? ?pj_bool_t waveMapperAdded = PJ_FALSE; >> >> ? ?/* Enumerate sound devices */ >> ? ?wf->dev_count = 0; >> >> ? ?inputDeviceCount = waveInGetNumDevs(); >> ? ?devCount += inputDeviceCount; >> >> ? ?outputDeviceCount = waveOutGetNumDevs(); >> ? ?devCount += outputDeviceCount; >> >> ? ?if (devCount) { >> ? ? ? ?/* Assume there is WAVE_MAPPER */ >> ? ? ? ?devCount += 2; >> ? ?} >> >> ? ?if (devCount==0) { >> ? ? ? ?PJ_LOG(4,(THIS_FILE, "WMME found no sound devices")); >> ? ? ? ?return PJMEDIA_EAUD_NODEV; >> ? ?} >> >> //--------------------------------- >> >> And it returns to endpoint.c : >> >> ?/* Sound */ >> ? ?status = pjmedia_aud_subsys_init(pf); >> ? ?if (status != PJ_SUCCESS) >> ? ? ? ?goto on_error; >> >> where it goes to error >> >> //---------------------------------------------------- >> >> The output log looks like this: >> >> Load module: BSSIPClient.exe >> Load module: lpcrt.dll >> Load module: ws2.dll >> Load module: rpcrt4.dll >> Load module: oleaut32.dll >> Load module: ole32.dll >> Load module: fpcrt.dll >> Load module: commctrl.dll >> Load module: coredll.dll >> BSVoice startedBSSIPClient --> Ip addr:192.168.0.17, port: 50012 >> Load module: ssllsp.dll >> Load module: wspm.dll >> Load module: nspm.dll >> Load module: iphlpapi.dll >> BSSIPClient -> ?--> ?01:44:15.912 sip_endpoint.c ?Module "mod-pjsua-log" >> registered >> >> BSSIPClient -> ?--> ?01:44:16.077 sip_endpoint.c ?Module "mod-tsx-layer" >> registered >> >> BSSIPClient -> ?--> ?01:44:16.328 sip_endpoint.c ?Module > "mod-stateful-util" >> registered >> >> BSSIPClient -> ?--> ?01:44:16.581 sip_endpoint.c ?Module "mod-ua" > registered >> >> BSSIPClient -> ?--> ?01:44:16.775 sip_endpoint.c ?Module "mod-100rel" >> registered >> >> BSSIPClient -> ?--> ?01:44:17.045 sip_endpoint.c ?Module "mod-pjsua" >> registered >> >> BSSIPClient -> ?--> ?01:44:17.239 sip_endpoint.c ?Module "mod-invite" >> registered >> >> BSSIPClient -> ?--> ?01:49:53.157 ? ? wmme_dev.c ?WMME found no sound >> devices >> >> //--------------------------------------------------------------- >> >> >> Best Regards >> Kresten >> >> >> -----Oprindelig meddelelse----- >> Fra: pjsip-bounces at lists.pjsip.org >> [mailto:pjsip-bounces at lists.pjsip.org]P? vegne af Benny Prijono >> Sendt: 6. november 2009 09:40 >> Til: pjsip list >> Emne: Re: [pjsip] CODEC >> >> >> On Tue, Nov 3, 2009 at 7:17 PM, Kresten Tolstrup <kt at danphone.com> wrote: >>> Hi, >>> >>> Isn't there anyone that kan help me with this problem? The short version >> of >>> the problem is that I need a passthrought CODEC, but when I use a >>> passthrought CODEC, the other end don't get any CODEC information, in the >>> SIP call. >>> >> >> Snippet of message trace would help here. >> >> But actually, we do have a sample to use hardware codec on Windows! >> The native WMME audio backend supports PCMA/PCMU codec, and here's >> what I have in my config_site.h to enable it: >> >> >> #define PJ_CONFIG_WIN32_WMME_DIRECT ? ? 1 >> #include <pj/config_site_sample.h> >> >> #define PJMEDIA_HAS_L16_CODEC ? ? ? ? ? 0 >> #define PJMEDIA_HAS_G711_CODEC ? ? ? ? ?0 >> #define PJMEDIA_HAS_GSM_CODEC ? ? ? ? ? 0 >> #define PJMEDIA_HAS_ILBC_CODEC ? ? ? ? ?0 >> #define PJMEDIA_HAS_G722_CODEC ? ? ? ? ?0 >> #define PJMEDIA_HAS_SPEEX_CODEC ? ? ? ? 0 >> #define PJMEDIA_HAS_G7221_CODEC ? ? ? ? 0 >> >> I just tested with latest pjsua and it seems to work. >> >> Cheers >> ?Benny >> >> >> >> >> >>> Best Regards >>> Kresten >>> >>> -----Oprindelig meddelelse----- >>> Fra: pjsip-bounces at lists.pjsip.org >>> [mailto:pjsip-bounces at lists.pjsip.org]P? vegne af Kresten Tolstrup >>> Sendt: 30. oktober 2009 14:15 >>> Til: pjsip list >>> Emne: Re: [pjsip] CODEC >>> >>> >>> Hi Naning >>> >>> Thanks for your answer. I mean PCMA. >>> >>> I have read the link you gave me, but I have still problems. >>> >>> I have added #define PJMEDIA_CONF_USE_SWITCH_BOARD 1 in config_site.h and >>> the passthrough codec for PCMA is also set to 1, but when I make a call > to >>> the PJSIP stack, I get the following error in the SIP SPD: "No suitable >>> codec for remote offer (PJMEDIA_SPDNEG_NOANSCODEC)". It looks like the > SIP >>> stack don't have any passthrough codec, although #define >>> PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA is set to 1. All codec defines are set >> to >>> zero. >>> >>> I have looked in the function pjsua_media_subsys_init, in file >>> pjsua_media.c, under the define PJMEDIA_HAS_PASSTHROUGH_CODECS. When I > run >>> the code it finds no sound device, to me it looks like that could be the >>> problem, because ext_fmt_cnt remains on zero, how to add a dummy sound >>> device, I tried with null_sound_device, but it doesn't work. >>> >>> The samples shall be transmitted / received over a SSC bus, where the >> codec >>> is connected, so I have made my own PJSIP port, where the to functions >> put- >>> and getframe transmit and receive the data from and to the SSC bus, so I >>> don't need any sounddevice. >>> >>> Does anyone know how to solve this problem? >>> >>> Best Regards >>> Kresten >>> >>> -----Oprindelig meddelelse----- >>> Fra: pjsip-bounces at lists.pjsip.org >>> [mailto:pjsip-bounces at lists.pjsip.org]P? vegne af Nanang Izzuddin >>> Sendt: 29. oktober 2009 17:52 >>> Til: pjsip list >>> Emne: Re: [pjsip] CODEC >>> >>> >>> Hi Kresten, >>> >>> Did you mean PCMU/u-law hardware codec? >>> >>> Please also note that enabling passthrough codecs will require audio >>> switchboard as described in APS/VAS-direct wiki [1]. >>> >>> Log snippet could be very useful. >>> >>> --- >>> [1] http://trac.pjsip.org/repos/wiki/Nokia_APS_VAS_Direct >>> >>> BR, >>> nanang >>> >>> >>> On Thu, Oct 29, 2009 at 8:07 PM, Kresten Tolstrup <kt at danphone.com> > wrote: >>>> Hi, >>>> >>>> I have a a-low hardware codec together with a WinCE uP. Therefore I want >>> to >>>> use PJSIP with a passthrough CODEC. in the file config_site.h I have set >>> the >>>> following: >>>> >>>> #define PJMEDIA_HAS_PASSTHROUGH_CODECS ?1 >>>> #define PJMEDIA_HAS_L16_CODEC ? ? ? ? ? 0 >>>> #define PJMEDIA_HAS_ILBC_CODEC ? ? ? ? ?0 >>>> #define PJMEDIA_HAS_GSM_CODEC ? ? ? ? ? 0 >>>> #define PJMEDIA_HAS_SPEEX_CODEC ? ? ? ? 0 >>>> #define PJMEDIA_HAS_G722_CODEC ? ? ? ? ?0 >>>> #define PJMEDIA_HAS_PASSTHROUGH_CODEC_G729 ?0 >>>> #define PJMEDIA_HAS_PASSTHROUGH_CODEC_ILBC ? ? ?0 >>>> #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA ? ? ?0 >>>> >>>> When I make a call to SJphone, and PJMEDIA_HAS_PASSTHROUGH_CODECS is set >>> to >>>> 1, SJphone says that there is CODEC error, but when >>>> PJMEDIA_HAS_PASSTHROUGH_CODECS is set to 0 the sip call go through. >>>> How can I fix this? >>>> >>>> Best regards >>>> Kresten >>>> >>>> >>>> _______________________________________________ >>>> 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 >>> >>> >>> _______________________________________________ >>> 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 >>> >> >> _______________________________________________ >> 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 >> > > _______________________________________________ > 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 >