Hi Jan, this is because the file gets opened with fopen(), instead of open(). It causes the application to block until any other application reads out the pipe. A normal behaviour, so you have to start the mp3 encoder on the console first. To make it more flexible, there are additional modifications to do in the File I/O functions in pjsip (using open & read in non blocking mode), but that would also cause incompatiblities with some OS. An extra thread in pjsua may also solve this. Best regards, Marco _____ Von: pjsip-bounces at lists.pjsip.org [mailto:pjsip-bounces at lists.pjsip.org] Im Auftrag von jvdsandt Gesendet: Samstag, 23. Februar 2008 12:07 An: pjsip list Betreff: Re: [pjsip] Using pjsua to create a mp3 stream Hello Marco, Thank you for the example code. I made the changes and can now record in RAW and MP3 format. But when I pass a pipe to the pjsua --rec-file argument the application still halts. Probably I still need to change the code that opens the file to open it in streaming mode instead of random access mode. Can you give me a pointer where this is done? Best regards, Jan. On Sat, Feb 23, 2008 at 10:32 AM, Marco Zissen <maz at gmx.net> wrote: Hi Jan, There is some coding required. Toni posted an example for the mp3 encoder. You can do it the same way. E.g: enum Format { FMT_UNKNOWN, FMT_WAV, FMT_MP3, FMT_RAW, }; ..... ..... if (pj_stricmp2(&ext, ".wav") == 0) file_format = FMT_WAV; else if (pj_stricmp2(&ext, ".mp3") == 0) file_format = FMT_MP3; else if (pj_stricmp2(&ext, ".raw") == 0) file_format = FMT_RAW; else { PJ_LOG(1,(THIS_FILE, "pjsua_recorder_create() error: unable to " "determine file format for %.*s", (int)filename->slen, filename->ptr)); return PJ_ENOTSUP; } .... .... if (file_format == FMT_WAV) { status = pjmedia_wav_writer_port_create(pool, path, pjsua_var.media_cfg.clock_rate, pjsua_var.mconf_cfg.channel_count, pjsua_var.mconf_cfg.samples_per_frame, pjsua_var.mconf_cfg.bits_per_sample, options, 0, &port); } else if (file_format == FMT_RAW) { status = pjmedia_raw_writer_port_create(pool, path, pjsua_var.media_cfg.clock_rate, pjsua_var.mconf_cfg.channel_count, pjsua_var.mconf_cfg.samples_per_frame, pjsua_var.mconf_cfg.bits_per_sample, 0, 0, &port); } else { PJ_UNUSED_ARG(enc_param); port = NULL; status = PJ_ENOTSUP; } When the extension of the named pipe is '.raw', the raw media port will be used. - Marco _____ Von: pjsip-bounces at lists.pjsip.org [mailto:pjsip-bounces at lists.pjsip.org] Im Auftrag von jvdsandt Gesendet: Freitag, 22. Februar 2008 21:18 An: pjsip list Betreff: Re: [pjsip] Using pjsua to create a mp3 stream Marco, Great, I have build your modifications and the playfile en recfile examples work. Is it possible to use these new "raw" ports from the pjsua program. Or is there more coding required for this? Thanks, Jan. On Fri, Feb 22, 2008 at 4:19 PM, Marco Zissen <maz at gmx.net> wrote: Hi Jan, I just copied and modified the wav_player.c and wav_writer.c and created two new ports in pjsip (raw_player.c, raw_writer.c). With these ports you are able to play and record from/to a named pipe (raw pcm data without a wave header). Maybe others will also find it useful, so I post it to the list. Just unpack the tar archive in pjproject-0.8.0. It will overwrite a Makefile and the playfile.c/recfile.c example to show how it works. Best regards, Marco ps: The functions can be much more improved and are poorly tested. I think it's a good "startpoint" to work with. _____ Von: pjsip-bounces at lists.pjsip.org [mailto:pjsip-bounces at lists.pjsip.org] Im Auftrag von jvdsandt Gesendet: Dienstag, 19. Februar 2008 20:01 An: pjsip list Betreff: Re: [pjsip] Using pjsua to create a mp3 stream Hello, Thank you all for your responses. I think it is possible to use pjsip/pjsau to stream a VoIP conversation as an mp3 stream without to much work. Unfortunately I am not a C programmer. I will look for someone who can help me to write the correct extension to pjsip/pjsua. Chhers, Jan. On Feb 19, 2008 7:15 PM, <buldozer at aufbix.org> wrote: Regarding MP3 recording ... what I do, is to re-add the code to pjsua-lib, which was there until mp3 writer was moved to the third-party folder. Just find if (file_format == FMT_WAV) { status = pjmedia_wav_writer_port_create(pool, path, pjsua_var.media_cfg.clock_rate, pjsua_var.mconf_cfg.channel_count, pjsua_var.mconf_cfg.samples_per_frame, pjsua_var.mconf_cfg.bits_per_sample, options, 0, &port); in pjsua_media.c and add the following lines right after } else if (file_format == FMT_MP3) { status = pjmedia_mp3_writer_port_create(pjsua_var.pool, path, pjsua_var.media_cfg.clock_rate, pjsua_var.mconf_cfg.channel_count, pjsua_var.mconf_cfg.samples_per_frame, pjsua_var.mconf_cfg.bits_per_sample, enc_param, &port); ... and include mp3_writer.c and mp3_port.h to pjsua-lib project. This works for any pjsua-lib based applications. Greets, Toni ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program. _______________________________________________ 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 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20080223/c3360090/attachment.html