diff options
author | Riza Sulistyo <riza@teluu.com> | 2015-08-21 06:00:46 +0000 |
---|---|---|
committer | Riza Sulistyo <riza@teluu.com> | 2015-08-21 06:00:46 +0000 |
commit | 8c6f78c4426aae98c9d72b14afd010a3458a662d (patch) | |
tree | 80fb8c2c54bccfda1464c3571e76fd961cf79c2f /pjsip/src/pjsua2/media.cpp | |
parent | 110c26a8ca47442eba6c625646b034be97002823 (diff) |
Re #1879:
- Implement set video codec param in PJSUA2 API
- Fix bug in videoCodecEnum and updateCodecInfoList
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5165 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua2/media.cpp')
-rw-r--r-- | pjsip/src/pjsua2/media.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/pjsip/src/pjsua2/media.cpp b/pjsip/src/pjsua2/media.cpp index ba443703..b6b73ea3 100644 --- a/pjsip/src/pjsua2/media.cpp +++ b/pjsip/src/pjsua2/media.cpp @@ -1506,3 +1506,58 @@ void CodecInfo::fromPj(const pjsua_codec_info &codec_info) priority = codec_info.priority; desc = pj2Str(codec_info.desc); } + +void VidCodecParam::fromPj(const pjmedia_vid_codec_param ¶m) +{ + dir = param.dir; + packing = param.packing; + ignoreFmtp = param.ignore_fmtp; + encMtu = param.enc_mtu; + encFmt.fromPj(param.enc_fmt); + decFmt.fromPj(param.dec_fmt); + setCodecFmtp(param.enc_fmtp, encFmtp); + setCodecFmtp(param.dec_fmtp, decFmtp); +} + +pjmedia_vid_codec_param VidCodecParam::toPj() const +{ + pjmedia_vid_codec_param param; + pj_bzero(¶m, sizeof(param)); + param.dir = dir; + param.packing = packing; + param.ignore_fmtp = ignoreFmtp; + param.enc_mtu = encMtu; + param.enc_fmt = encFmt.toPj(); + param.dec_fmt = decFmt.toPj(); + getCodecFmtp(encFmtp, param.enc_fmtp); + getCodecFmtp(decFmtp, param.dec_fmtp); + return param; +} + +void VidCodecParam::setCodecFmtp(const pjmedia_codec_fmtp &in_fmtp, + CodecFmtpVector &out_fmtp) +{ + unsigned i = 0; + for ( ; i<in_fmtp.cnt; ++i) { + CodecFmtp fmtp; + fmtp.name = pj2Str(in_fmtp.param[i].name); + fmtp.val = pj2Str(in_fmtp.param[i].val); + + out_fmtp.push_back(fmtp); + } +} + +void VidCodecParam::getCodecFmtp(const CodecFmtpVector &in_fmtp, + pjmedia_codec_fmtp &out_fmtp) const +{ + CodecFmtpVector::const_iterator i; + out_fmtp.cnt = 0; + for (i=in_fmtp.begin(); i!=in_fmtp.end();++i) { + if (out_fmtp.cnt >= PJMEDIA_CODEC_MAX_FMTP_CNT) { + break; + } + out_fmtp.param[out_fmtp.cnt].name = str2Pj((*i).name); + out_fmtp.param[out_fmtp.cnt].val = str2Pj((*i).val); + ++out_fmtp.cnt; + } +} |