summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2011-11-17 14:25:26 +0000
committerBenny Prijono <bennylp@teluu.com>2011-11-17 14:25:26 +0000
commit52da2dd0b10a9390d0c1b02f428dbe8f2c03324f (patch)
treeef1b7615fc538cb22e529c2165d8c61cf28a7db3
parent5d2066e0c3368cce23090e842c407a35bc351a83 (diff)
Missing video component deinitialization caused assertion when the stack is restarted. Thanks Régis Montoya for the report (re #1393)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3887 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip/src/pjsua-lib/pjsua_vid.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_vid.c b/pjsip/src/pjsua-lib/pjsua_vid.c
index d231b079..38b77f22 100644
--- a/pjsip/src/pjsua-lib/pjsua_vid.c
+++ b/pjsip/src/pjsua-lib/pjsua_vid.c
@@ -64,21 +64,21 @@ pj_status_t pjsua_vid_subsys_init(void)
goto on_error;
}
- status = pjmedia_vid_dev_subsys_init(&pjsua_var.cp.factory);
+#if PJMEDIA_HAS_VIDEO && PJMEDIA_HAS_FFMPEG_CODEC
+ status = pjmedia_codec_ffmpeg_init(NULL, &pjsua_var.cp.factory);
if (status != PJ_SUCCESS) {
PJ_PERROR(1,(THIS_FILE, status,
- "Error creating PJMEDIA video subsystem"));
+ "Error initializing ffmpeg library"));
goto on_error;
}
+#endif
-#if PJMEDIA_HAS_VIDEO && PJMEDIA_HAS_FFMPEG_CODEC
- status = pjmedia_codec_ffmpeg_init(NULL, &pjsua_var.cp.factory);
+ status = pjmedia_vid_dev_subsys_init(&pjsua_var.cp.factory);
if (status != PJ_SUCCESS) {
PJ_PERROR(1,(THIS_FILE, status,
- "Error initializing ffmpeg library"));
+ "Error creating PJMEDIA video subsystem"));
goto on_error;
}
-#endif
for (i=0; i<PJSUA_MAX_VID_WINS; ++i) {
if (pjsua_var.win[i].pool == NULL) {
@@ -121,9 +121,18 @@ pj_status_t pjsua_vid_subsys_destroy(void)
pjmedia_vid_dev_subsys_shutdown();
#if PJMEDIA_HAS_FFMPEG_CODEC
- pjmedia_codec_ffmpeg_deinit();
+ pjmedia_codec_ffmpeg_deinit();
#endif
+ if (pjmedia_vid_codec_mgr_instance())
+ pjmedia_vid_codec_mgr_destroy(NULL);
+
+ if (pjmedia_converter_mgr_instance())
+ pjmedia_converter_mgr_destroy(NULL);
+
+ if (pjmedia_video_format_mgr_instance())
+ pjmedia_video_format_mgr_destroy(NULL);
+
pj_log_pop_indent();
return PJ_SUCCESS;
}