summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua2/media.cpp
diff options
context:
space:
mode:
authorRiza Sulistyo <riza@teluu.com>2015-08-21 06:00:46 +0000
committerRiza Sulistyo <riza@teluu.com>2015-08-21 06:00:46 +0000
commit8c6f78c4426aae98c9d72b14afd010a3458a662d (patch)
tree80fb8c2c54bccfda1464c3571e76fd961cf79c2f /pjsip/src/pjsua2/media.cpp
parent110c26a8ca47442eba6c625646b034be97002823 (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.cpp55
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 &param)
+{
+ 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(&param, 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;
+ }
+}