Hi, AFAIK, SDP attribute 'ptime' is rather debatable, since it will affect all the codecs in the media block while each codec may have different preference value of ptime (e.g: high bandwidth codecs may be better to use smaller ptime than low bandwidth codecs to avoid RTP packet size exceeding MTU, another 'bad' example: iLBC want ptime=30ms while other codec may not support 30ms). Along with some other reasons (e.g: negotiation complexity), I think by now it is not so urgent to use SDP attribute 'ptime'. To add attribute 'ptime' in the SDP, I don't think you cannot use codec's frm_ptime, since frm_ptime is decoder frame time (not packet time), while attribute ptime in the SDP refers to packet time (one or more frames), CMIIW. Perhaps you can use pjsua config 'media_cfg.ptime' (or default codec setting 'enc_ptime' while this may have different values among the codecs). Moreover, just FYI, pjmedia should be able to parse and decode multiple frames per packet, so without specifying 'ptime' attribute in the SDP, there should be no problem in the decoding direction. Regards, nanang On Thu, Oct 23, 2008 at 4:01 PM, Javier Rodriguez <javier.rodriguez at genaker.net> wrote: > Hi, > > It seems that the ptime information that is set in a codec is not added to > the SDP offer (endpoint#pjmedia_endpt_create_sdp()). I guess this can be > done by retrieving the ptime information from codec_param.info.frm_ptime . > > Best regards, > javier > > Index: pjproject/pjmedia/src/pjmedia/endpoint.c > =================================================================== > --- pjproject/pjmedia/src/pjmedia/endpoint.c (revision 2351) > +++ pjproject/pjmedia/src/pjmedia/endpoint.c (working copy) > @@ -373,7 +376,7 @@ > > pjmedia_codec_info *codec_info; > pjmedia_sdp_rtpmap rtpmap; > - char tmp_param[3]; > + char tmp_param[4]; > pjmedia_sdp_attr *attr; > pjmedia_codec_param codec_param; > pj_str_t *fmt; > @@ -474,9 +477,24 @@ > attr->name = pj_str("fmtp"); > attr->value = pj_strdup3(pool, buf); > m->attr[m->attr_count++] = attr; > + > + > } > + //PJPATCH: Add ptime and maxptime to the endpt capabilities, > it feels like this should be aquired from the coded impl. TBI > + attr = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_attr); > + attr->name = pj_str("ptime"); > + > + > pj_ansi_sprintf(tmp_param,"%d",(int)codec_param.info.frm_ptime); > + attr->value = pj_strdup3(pool, tmp_param); > + m->attr[m->attr_count++] = attr; > + > + attr = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_attr); > + attr->name = pj_str("maxptime"); > + attr->value = pj_strdup3(pool, "400"); > + m->attr[m->attr_count++] = attr; > } > > + > /* Add sendrecv attribute. */ > attr = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_attr); > attr->name = STR_SENDRECV; > > > _______________________________________________ > 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 > >