Skip to content

Instantly share code, notes, and snippets.

@itspriddle
Created March 25, 2009 18:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save itspriddle/85616 to your computer and use it in GitHub Desktop.
Save itspriddle/85616 to your computer and use it in GitHub Desktop.
<?php
function parse_sdp($packet = '')
{
$out = array();
$lines = explode("\n", $packet);
foreach ($lines as $l)
{
$l = trim($l);
$l = str_replace('=- ', '=', $l);
@list($key, $val) = explode("=", $l);
$key = trim($key);
$val = trim($val);
switch ($key)
{
// SDP version
case 'v':
$out['version'] = $val;
break;
// Origin
case 'o':
@list($username, $session_id, $version, $network_type, $address_type, $address) = explode(' ', $val);
$out['origin'] = array(
'username' => $username,
'session_id' => $session_id,
'start' => $username,
'end' => $session_id,
'version' => $version,
'network_type' => $network_type,
'address_type' => $address_type,
'address' => $address,
);
unset($username, $session_id, $version, $network_type, $address_type, $address);
break;
// Session name
case 's':
$out['session_name'] = $val;
break;
// Connection data
case 'c':
@list($network_type, $address_type, $connection_address) = explode(' ', $val);
$out['connection_data'] = array(
'network_type' => $network_type,
'address_type' => $address_type,
'connection_address' => $connection_address,
);
unset($network_type, $address_type, $connection_address);
break;
// Times
case 't':
@list($start_time, $stop_time) = explode(' ', $val);
$out['times'] = array(
'start_time' => $start_time,
'stop_time' => $stop_time,
);
unset($start_time, $stop_time);
break;
// Media announcements
case 'm':
@list($media, $port, $transport, $fmt_list) = explode(' ', $val);
$out['media_announcements'] = array(
'media' => $media,
'port' => $port,
'transport' => $transport,
'fmt_list' => $fmt_list,
);
break;
// Attributes
case 'a':
$out['attributes'][] = $val;
break;
}
unset($key, $val);
}
return $out;
}
print_r(parse_sdp($msg));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment