88 lines
2.1 KiB
Smalltalk
88 lines
2.1 KiB
Smalltalk
"""
|
|
Create a SIP connection and then stream...
|
|
"""
|
|
|
|
PackageLoader
|
|
fileInPackage: #OsmoSIP.
|
|
|
|
"Load for the replay code"
|
|
FileStream fileIn: 'rtp_replay_shared.st'.
|
|
|
|
|
|
Osmo.SIPCall subclass: StreamCall [
|
|
| sem stream |
|
|
|
|
createCall: aSDP [
|
|
| sdp |
|
|
stream := RTPReplay on: 'rtp_ssrc6976010.240.240.1_to_10.240.240.50.state'.
|
|
sdp := aSDP % {stream localPort}.
|
|
^ super createCall: sdp.
|
|
]
|
|
|
|
sem: aSemaphore [
|
|
sem := aSemaphore
|
|
]
|
|
|
|
sessionNew [
|
|
| host port |
|
|
Transcript nextPutAll: 'The call has started'; nl.
|
|
Transcript nextPutAll: sdp_result; nl.
|
|
|
|
host := SDPUtils findHost: sdp_result.
|
|
port := SDPUtils findPort: sdp_result.
|
|
|
|
[
|
|
stream streamAudio: host port: port.
|
|
Transcript nextPutAll: 'Streaming has finished.'; nl.
|
|
] fork.
|
|
]
|
|
|
|
sessionFailed [
|
|
sem signal
|
|
]
|
|
|
|
sessionEnd [
|
|
sem signal
|
|
]
|
|
]
|
|
|
|
Eval [
|
|
| transport agent call sem sdp_fr sdp_amr |
|
|
|
|
|
|
sdp_fr := (WriteStream on: String new)
|
|
nextPutAll: 'v=0'; cr; nl;
|
|
nextPutAll: 'o=twinkle 1739517580 1043400482 IN IP4 127.0.0.1'; cr; nl;
|
|
nextPutAll: 's=-'; cr; nl;
|
|
nextPutAll: 'c=IN IP4 127.0.0.1'; cr; nl;
|
|
nextPutAll: 't=0 0'; cr; nl;
|
|
nextPutAll: 'm=audio %1 RTP/AVP 0 101'; cr; nl;
|
|
nextPutAll: 'a=rtpmap:0 PCMU/8000'; cr; nl;
|
|
nextPutAll: 'a=rtpmap:101 telephone-event/8000'; cr; nl;
|
|
nextPutAll: 'a=fmtp:101 0-15'; cr; nl;
|
|
nextPutAll: 'a=ptime:20'; cr; nl;
|
|
contents.
|
|
|
|
sem := Semaphore new.
|
|
transport := Osmo.SIPUdpTransport
|
|
startOn: '0.0.0.0' port: 5066.
|
|
agent := Osmo.SIPUserAgent createOn: transport.
|
|
transport start.
|
|
|
|
call := (StreamCall
|
|
fromUser: 'sip:1000@sip.zecke.osmocom.org'
|
|
host: '127.0.0.1'
|
|
port: 5060
|
|
to: 'sip:123456@127.0.0.1'
|
|
on: agent)
|
|
sem: sem; yourself.
|
|
|
|
call createCall: sdp_fr.
|
|
|
|
|
|
"Wait for the stream to have ended"
|
|
sem wait.
|
|
|
|
(Delay forSeconds: 4) wait.
|
|
]
|