[pjsip] Using pjsua to create a mp3 stream

Marco Zissen maz at gmx.net
Sat Feb 23 04:32:53 EST 2008


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




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20080223/c6fa3948/attachment.html>


More information about the pjsip mailing list