Changeset 278 for pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c
- Timestamp:
- Mar 4, 2006 8:43:52 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c
r277 r278 529 529 } 530 530 531 /* Init pjmedia-codecs: */532 533 status = pjmedia_codec_init(pjsua.med_endpt);534 if (status != PJ_SUCCESS) {535 pj_caching_pool_destroy(&pjsua.cp);536 pjsua_perror(THIS_FILE,537 "Media codec initialization has returned error",538 status);539 return status;540 }541 542 543 531 /* Done. */ 544 532 return PJ_SUCCESS; … … 609 597 610 598 /* 611 * Start pjsua stack. 612 * This will start the registration process, if registration is configured. 613 */ 614 pj_status_t pjsua_start(void) 615 { 616 int i; /* Must be signed */ 617 pjsip_transport *udp_transport; 618 pj_status_t status = PJ_SUCCESS; 599 * Init media. 600 */ 601 static pj_status_t init_media(void) 602 { 603 604 pj_status_t status; 605 606 /* If user doesn't specify any codecs, register all of them. */ 607 if (pjsua.codec_cnt == 0) { 608 609 unsigned option = PJMEDIA_SPEEX_NO_WB | PJMEDIA_SPEEX_NO_UWB; 610 611 /* Register speex. */ 612 if (pjsua.clock_rate >= 16000) 613 option &= ~(PJMEDIA_SPEEX_NO_WB); 614 if (pjsua.clock_rate >= 32000) 615 option &= ~(PJMEDIA_SPEEX_NO_UWB); 616 617 status = pjmedia_codec_speex_init(pjsua.med_endpt, option, -1, -1); 618 if (status != PJ_SUCCESS) { 619 pjsua_perror(THIS_FILE, "Error initializing Speex codec", 620 status); 621 return status; 622 } 623 624 pjsua.codec_arg[pjsua.codec_cnt] = pj_str("speex"); 625 pjsua.codec_deinit[pjsua.codec_cnt] = &pjmedia_codec_speex_deinit; 626 pjsua.codec_cnt++; 627 628 /* Register GSM */ 629 status = pjmedia_codec_gsm_init(pjsua.med_endpt); 630 if (status != PJ_SUCCESS) { 631 pjsua_perror(THIS_FILE, "Error initializing GSM codec", 632 status); 633 return status; 634 } 635 636 pjsua.codec_arg[pjsua.codec_cnt] = pj_str("gsm"); 637 pjsua.codec_deinit[pjsua.codec_cnt] = &pjmedia_codec_gsm_deinit; 638 pjsua.codec_cnt++; 639 640 /* Register PCMA and PCMU */ 641 status = pjmedia_codec_g711_init(pjsua.med_endpt); 642 if (status != PJ_SUCCESS) { 643 pjsua_perror(THIS_FILE, "Error initializing G711 codec", 644 status); 645 return status; 646 } 647 648 pjsua.codec_arg[pjsua.codec_cnt] = pj_str("pcmu"); 649 pjsua.codec_deinit[pjsua.codec_cnt] = &pjmedia_codec_g711_deinit; 650 pjsua.codec_cnt++; 651 pjsua.codec_arg[pjsua.codec_cnt] = pj_str("pcma"); 652 pjsua.codec_deinit[pjsua.codec_cnt] = &pjmedia_codec_g711_deinit; 653 pjsua.codec_cnt++; 654 655 } else { 656 657 /* If user specifies the exact codec to be used, then create only 658 * those codecs. 659 */ 660 int i; 661 662 for (i=0; i<pjsua.codec_cnt; ++i) { 663 664 /* Is it speex? */ 665 if (!pj_stricmp2(&pjsua.codec_arg[i], "speex")) { 666 667 unsigned option = PJMEDIA_SPEEX_NO_WB | PJMEDIA_SPEEX_NO_UWB; 668 669 /* Register speex. */ 670 if (pjsua.clock_rate >= 16000) 671 option &= ~(PJMEDIA_SPEEX_NO_WB); 672 if (pjsua.clock_rate >= 32000) 673 option &= ~(PJMEDIA_SPEEX_NO_UWB); 674 675 status = pjmedia_codec_speex_init(pjsua.med_endpt, option, 676 -1, -1); 677 if (status != PJ_SUCCESS) { 678 pjsua_perror(THIS_FILE, "Error initializing Speex codec", 679 status); 680 return status; 681 } 682 683 pjsua.codec_deinit[i] = &pjmedia_codec_speex_deinit; 684 } 685 /* Is it gsm? */ 686 else if (!pj_stricmp2(&pjsua.codec_arg[i], "gsm")) { 687 688 status = pjmedia_codec_gsm_init(pjsua.med_endpt); 689 if (status != PJ_SUCCESS) { 690 pjsua_perror(THIS_FILE, "Error initializing GSM codec", 691 status); 692 return status; 693 } 694 695 pjsua.codec_deinit[i] = &pjmedia_codec_gsm_deinit; 696 697 } 698 /* Is it pcma/pcmu? */ 699 else if (!pj_stricmp2(&pjsua.codec_arg[i], "pcmu") || 700 !pj_stricmp2(&pjsua.codec_arg[i], "pcma")) 701 { 702 703 status = pjmedia_codec_g711_init(pjsua.med_endpt); 704 if (status != PJ_SUCCESS) { 705 pjsua_perror(THIS_FILE, "Error initializing G711 codec", 706 status); 707 return status; 708 } 709 710 pjsua.codec_deinit[i] = &pjmedia_codec_g711_deinit; 711 712 } 713 /* Don't know about this codec... */ 714 else { 715 716 PJ_LOG(1,(THIS_FILE, "Error: unsupported codecs %s", 717 pjsua.codec_arg[i].ptr)); 718 return PJMEDIA_CODEC_EUNSUP; 719 } 720 } 721 } 619 722 620 723 /* Init conference bridge. */ … … 662 765 663 766 767 return PJ_SUCCESS; 768 } 769 770 771 /* 772 * Start pjsua stack. 773 * This will start the registration process, if registration is configured. 774 */ 775 pj_status_t pjsua_start(void) 776 { 777 int i; /* Must be signed */ 778 pjsip_transport *udp_transport; 779 pj_status_t status = PJ_SUCCESS; 780 781 /* 782 * Init media subsystem (codecs, conference bridge, et all). 783 */ 784 status = init_media(); 785 if (status != PJ_SUCCESS) 786 return status; 787 664 788 /* Init sockets (STUN etc): */ 665 789 for (i=0; i<(int)pjsua.max_calls; ++i) { … … 871 995 pj_status_t pjsua_destroy(void) 872 996 { 873 int i; 997 int i; /* Must be signed */ 874 998 875 999 /* Signal threads to quit: */ … … 908 1032 pjmedia_conf_destroy(pjsua.mconf); 909 1033 910 /* Shutdown pjmedia-codec: */911 pjmedia_codec_deinit();912 913 1034 /* Destroy sound framework: 914 1035 * (this should be done in pjmedia_shutdown()) … … 916 1037 pj_snd_deinit(); 917 1038 1039 /* Shutdown all codecs: */ 1040 for (i = pjsua.codec_cnt-1; i >= 0; --i) { 1041 (*pjsua.codec_deinit[i])(); 1042 } 1043 1044 /* Destroy media endpoint. */ 1045 1046 pjmedia_endpt_destroy(pjsua.med_endpt); 1047 918 1048 /* Destroy endpoint. */ 919 1049
Note: See TracChangeset
for help on using the changeset viewer.