def update_sdp_media(peerMedia, ourMedia)
peerCLine = peerMedia[:c]
peerMLine = peerMedia[:m]
peerMLineVars = peerMLine.split(" ")
peerCLineVars = peerCLine.split(" ")
if (peerMedia[:m].split(" ")[1].to_i == 0 ||
ourMedia[:m].split(" ")[1].to_i == 0)
clear_codecs
return
end
send_info(peerCLineVars[2], peerMLineVars[1])
peerCodecs = peerMLineVars[3..-1]
ourCodecs = ourMedia[:m].split(" ")[3..-1]
if peerCodecs.include?("0") && ourCodecs.include?("0")
if @codec.include?(8)
set_sdp_media(ourMedia, peerMedia)
return
end
add_codecs("G711U", 0, 0) unless @codec.include?(0)
else
if @codec.include?(0)
set_sdp_media(ourMedia, peerMedia)
return
end
if peerCodecs.include?("8") && ourCodecs.include?("8")
add_codecs("G711A", 8, 8) unless @codec.include?(8)
else
if @codec.include?(8)
set_sdp_media(ourMedia, peerMedia)
return
end
end
end
peerdtmf = nil
peerMedia[:a].split("||").each do |val|
peerdtmf = val.split(" ")[0].split(":")[1] if val.include?("telephone-event")
end
ourdtmf = nil
ourMedia[:a].split("||").each do |val|
ourdtmf = val.split(" ")[0].split(":")[1] if val.include?("telephone-event")
end
if peerdtmf && ourdtmf
add_codecs("DTMF", peerdtmf, ourdtmf) unless @codec.include?(peerdtmf)
diffcodec = @codec - [0, 8, peerdtmf]
if diffcodec.length > 0
set_sdp_media(ourMedia, peerMedia)
return
end
else
diffcodec = @codec - [0, 8]
if diffcodec.length > 0
set_sdp_media(ourMedia, peerMedia)
return
end
end
ourstatus = "SENDRECV"
ourMedia[:a].split("||").each do |val|
ourstatus = "INACTIVE" if val == "inactive"
ourstatus = "SENDONLY" if val == "sendonly"
ourstatus = "RECVONLY" if val == "recvonly"
end
set_status(ourstatus)
end