Select Git revision
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
sdp.cpp 13.61 KiB
/*
* Copyright (C) 2009 Savoir-Faire Linux inc.
*
* Author: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "sdp.h"
#include "global.h"
#include "manager.h"
static const pj_str_t STR_AUDIO = { (char*)"audio", 5};
static const pj_str_t STR_VIDEO = { (char*)"video", 5};
static const pj_str_t STR_IN = { (char*)"IN", 2 };
static const pj_str_t STR_IP4 = { (char*)"IP4", 3};
static const pj_str_t STR_IP6 = { (char*)"IP6", 3};
static const pj_str_t STR_RTP_AVP = { (char*)"RTP/AVP", 7 };
static const pj_str_t STR_SDP_NAME = { (char*)"sflphone", 8 };
static const pj_str_t STR_SENDRECV = { (char*)"sendrecv", 8 };
Sdp::Sdp( pj_pool_t *pool )
: _local_media_cap(), _session_media(0), _ip_addr( "" ), _local_offer( NULL ), _negociated_offer(NULL), _negociator(NULL), _pool(NULL), _local_extern_audio_port(0)
{
_pool = pool;
}
Sdp::~Sdp() {
//unsigned int k;
/*
for( k=0; k<_session_media.size(); k++ ){
delete _session_media[k];
_session_media[k] = 0;
}*/
//for( k=0; k<_local_media_cap.size(); k++ ){
// delete _local_media_cap[k];
//_local_media_cap[k] = 0;
//}
}
void Sdp::set_media_descriptor_line( sdpMedia *media, pjmedia_sdp_media** p_med ) {
pjmedia_sdp_media* med;
pjmedia_sdp_rtpmap rtpmap;
pjmedia_sdp_attr *attr;
AudioCodec *codec;
int count, i;
std::string tmp;
med = PJ_POOL_ZALLOC_T( _pool, pjmedia_sdp_media );
// Get the right media format
pj_strdup(_pool, &med->desc.media,
( media->get_media_type() == MIME_TYPE_AUDIO ) ? &STR_AUDIO : &STR_VIDEO );