Connection on a Multicast channel with PJSIP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi guys,

With Pjsip I’m trying to connect with a multicast channel/ipAddress (I should receive and transmit audio on defined idAddress).

According with streamutil.c I have wrote the following c++ function but It’s not working:

 

pj_status_t ApplicationCore::multicastConnection() {

  

    intLogger->log(InternalLogger::LOG_INFO, "MULTICAST CONNECTION");

 

    pjmedia_stream **p_stream;

    pjmedia_endpt *med_endpt;

    pj_caching_pool cp;

    pj_status_t status;

    pjmedia_stream *stream = NULL;

    pj_uint16_t local_port = 3000;

    const pjmedia_codec_info *codec_info;

    const pj_sockaddr_in *rem_addr;

 

    /* Must create a pool factory before we can allocate any memory. */

    pj_caching_pool_init(&cp, &pj_pool_factory_default_policy, 0);

 

    /*

     * Initialize media endpoint.

     * This will implicitly initialize PJMEDIA too.

     */

    status = pjmedia_endpt_create(&cp.factory, NULL, 1, &med_endpt);

    PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1);

 

    pjmedia_stream_info info;

    pjmedia_transport *transport = NULL;

 

    //Reset stream info

    pj_bzero(&info, sizeof(info));

 

    //Initialize stream info formats

    info.type = PJMEDIA_TYPE_AUDIO;

    //info.dir = dir;

    pj_memcpy(&info.fmt, codec_info, sizeof(pjmedia_codec_info));

    info.tx_pt = codec_info->pt;

    info.rx_pt = codec_info->pt;

    info.ssrc = pj_rand();

 

     pj_memcpy(&info.rem_addr, rem_addr, sizeof(pj_sockaddr_in));

 

     //239.0.0.1 multicast channel

     const pj_str_t multicastAddrIpv4 = pj_str("239.0.0.1");

     status = pj_sockaddr_in_init(&info.rem_addr.ipv4, &multicastAddrIpv4, 0);

     if(status != PJ_SUCCESS) {

         intLogger->log(InternalLogger::LOG_CRITICAL, "initialize IPv4 socket address failed");

         return status;

     }

 

     //Create media transport

     status = pjmedia_transport_udp_create(med_endpt, NULL, local_port, 0, &transport);

     if(status != PJ_SUCCESS) {

         intLogger->log(InternalLogger::LOG_CRITICAL, "pjmedia transport udp create failed");

         return status;

     }

 

     status = pjmedia_stream_create( med_endpt, pool, &info, transport, NULL, p_stream);

 

     if (status != PJ_SUCCESS) {

         intLogger->log(InternalLogger::LOG_CRITICAL, "error creating stream");

         pjmedia_transport_close(transport);

         return status;

     }

 

     //Start streaming

     pjmedia_stream_start(stream);

 

     return PJ_SUCCESS;

}

 

How can I implement this function in the right mode? Thanks in advice.

 

Best Regards

LL

 

_______________________________________________
Visit our blog: http://blog.pjsip.org

pjsip mailing list
pjsip@xxxxxxxxxxxxxxx
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org

[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux