diff options
author | Benny Prijono <bennylp@teluu.com> | 2011-11-17 14:25:26 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2011-11-17 14:25:26 +0000 |
commit | 52da2dd0b10a9390d0c1b02f428dbe8f2c03324f (patch) | |
tree | ef1b7615fc538cb22e529c2165d8c61cf28a7db3 | |
parent | 5d2066e0c3368cce23090e842c407a35bc351a83 (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.c | 23 |
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; } |