summaryrefslogtreecommitdiff
path: root/pjsip/src
diff options
context:
space:
mode:
authorRiza Sulistyo <riza@teluu.com>2015-05-28 07:14:24 +0000
committerRiza Sulistyo <riza@teluu.com>2015-05-28 07:14:24 +0000
commit5bb6d872c7bd5a258152fcb57b16acaf3012385f (patch)
tree15286090bc713fcb91b856059fcc5474517a7a52 /pjsip/src
parent1f5cf04d6dad8d08da58b086aad46cee580ea8d3 (diff)
Re #1855 (Pjsua2 Video Preview API): Add Pjsua2 Preview API and sample usage in pjsua2 app for android.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5102 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src')
-rw-r--r--pjsip/src/pjsua2/media.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/pjsip/src/pjsua2/media.cpp b/pjsip/src/pjsua2/media.cpp
index 18b75f13..12e67f52 100644
--- a/pjsip/src/pjsua2/media.cpp
+++ b/pjsip/src/pjsua2/media.cpp
@@ -1093,6 +1093,88 @@ void VideoWindow::setWindow(const VideoWindowHandle &win) throw(Error)
PJ_UNUSED_ARG(win);
#endif
}
+///////////////////////////////////////////////////////////////////////////////
+
+VideoPreviewOpParam::VideoPreviewOpParam()
+{
+#if PJSUA_HAS_VIDEO
+ pjsua_vid_preview_param vid_prev_param;
+
+ pjsua_vid_preview_param_default(&vid_prev_param);
+ fromPj(vid_prev_param);
+#endif
+}
+
+void VideoPreviewOpParam::fromPj(const pjsua_vid_preview_param &prm)
+{
+#if PJSUA_HAS_VIDEO
+ this->rendId = prm.rend_id;
+ this->show = PJ2BOOL(prm.show);
+ this->windowFlags = prm.wnd_flags;
+ this->format.id = prm.format.id;
+ this->format.type = prm.format.type;
+ this->window.type = prm.wnd.type;
+ this->window.handle.window = prm.wnd.info.window;
+#else
+ PJ_UNUSED_ARG(prm);
+#endif
+}
+
+pjsua_vid_preview_param VideoPreviewOpParam::toPj() const
+{
+ pjsua_vid_preview_param param;
+#if PJSUA_HAS_VIDEO
+ param.rend_id = this->rendId;
+ param.show = this->show;
+ param.wnd_flags = this->windowFlags;
+ param.format.id = this->format.id;
+ param.format.type = this->format.type;
+ param.wnd.type = this->window.type;
+ param.wnd.info.window = this->window.handle.window;
+#endif
+ return param;
+}
+
+VideoPreview::VideoPreview(int dev_id)
+: devId(dev_id)
+{
+
+}
+
+bool VideoPreview::hasNative()
+{
+#if PJSUA_HAS_VIDEO
+ return(PJ2BOOL(pjsua_vid_preview_has_native(devId)));
+#else
+ return false;
+#endif
+}
+
+void VideoPreview::start(const VideoPreviewOpParam &param) throw(Error)
+{
+#if PJSUA_HAS_VIDEO
+ pjsua_vid_preview_param prm = param.toPj();
+ PJSUA2_CHECK_EXPR(pjsua_vid_preview_start(devId, &prm));
+#else
+ PJ_UNUSED_ARG(param);
+#endif
+}
+
+void VideoPreview::stop() throw(Error)
+{
+#if PJSUA_HAS_VIDEO
+ pjsua_vid_preview_stop(devId);
+#endif
+}
+
+VideoWindow VideoPreview::getVideoWindow()
+{
+#if PJSUA_HAS_VIDEO
+ return (VideoWindow(pjsua_vid_preview_get_win(devId)));
+#else
+ return (VideoWindow(PJSUA_INVALID_ID));
+#endif
+}
///////////////////////////////////////////////////////////////////////////////
void CodecInfo::fromPj(const pjsua_codec_info &codec_info)