contrib: Move the shared code into a new file
This commit is contained in:
parent
4552d8061a
commit
602559fd9f
|
@ -3,73 +3,13 @@ Simple UDP replay from the state files
|
|||
"
|
||||
|
||||
PackageLoader fileInPackage: #Sockets.
|
||||
FileStream fileIn: 'rtp_replay_shared.st'.
|
||||
|
||||
Object subclass: RTPReplay [
|
||||
| filename |
|
||||
RTPReplay class >> on: aFile [
|
||||
^ self new
|
||||
file: aFile; yourself
|
||||
]
|
||||
|
||||
file: aFile [
|
||||
filename := aFile
|
||||
]
|
||||
|
||||
streamAudio: aHost port: aPort [
|
||||
| file last_time last_image udp_send socket dest |
|
||||
|
||||
last_time := nil.
|
||||
last_image := nil.
|
||||
file := FileStream open: filename.
|
||||
|
||||
"Send the payload"
|
||||
dest := Sockets.SocketAddress byName: aHost.
|
||||
socket := Sockets.DatagramSocket new.
|
||||
udp_send := [:payload | | datagram |
|
||||
datagram := Sockets.Datagram data: payload contents address: dest port: aPort.
|
||||
socket nextPut: datagram
|
||||
].
|
||||
|
||||
[file atEnd] whileFalse: [
|
||||
| lineStream time data now_image |
|
||||
lineStream := file nextLine readStream.
|
||||
|
||||
"Read the time, skip the blank, parse the data"
|
||||
time := Number readFrom: lineStream.
|
||||
lineStream skip: 1.
|
||||
|
||||
data := WriteStream on: (ByteArray new: 30).
|
||||
[lineStream atEnd] whileFalse: [
|
||||
| hex |
|
||||
hex := lineStream next: 2.
|
||||
data nextPut: (Number readFrom: hex readStream radix: 16).
|
||||
].
|
||||
|
||||
last_time isNil
|
||||
ifTrue: [
|
||||
"First time, send it right now"
|
||||
last_time := time.
|
||||
last_image := Time millisecondClockValue.
|
||||
udp_send value: data.
|
||||
]
|
||||
ifFalse: [
|
||||
| wait_image new_image_time |
|
||||
|
||||
"How long to wait?"
|
||||
wait_image := last_image + ((time - last_time) * 1000).
|
||||
[ wait_image > Time millisecondClockValue ] whileTrue: [].
|
||||
|
||||
udp_send value: data.
|
||||
last_time := time.
|
||||
last_image := wait_image.
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
Eval [
|
||||
| replay |
|
||||
|
||||
|
||||
replay := RTPReplay on: 'rtp_ssrc6976010.240.240.1_to_10.240.240.50.state'.
|
||||
|
||||
Transcript nextPutAll: 'Going to stream now'; nl.
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
"
|
||||
Simple UDP replay from the state files
|
||||
"
|
||||
|
||||
PackageLoader fileInPackage: #Sockets.
|
||||
|
||||
Object subclass: RTPReplay [
|
||||
| filename |
|
||||
RTPReplay class >> on: aFile [
|
||||
^ self new
|
||||
file: aFile; yourself
|
||||
]
|
||||
|
||||
file: aFile [
|
||||
filename := aFile
|
||||
]
|
||||
|
||||
streamAudio: aHost port: aPort [
|
||||
| file last_time last_image udp_send socket dest |
|
||||
|
||||
last_time := nil.
|
||||
last_image := nil.
|
||||
file := FileStream open: filename.
|
||||
|
||||
"Send the payload"
|
||||
dest := Sockets.SocketAddress byName: aHost.
|
||||
socket := Sockets.DatagramSocket new.
|
||||
udp_send := [:payload | | datagram |
|
||||
datagram := Sockets.Datagram data: payload contents address: dest port: aPort.
|
||||
socket nextPut: datagram
|
||||
].
|
||||
|
||||
[file atEnd] whileFalse: [
|
||||
| lineStream time data now_image |
|
||||
lineStream := file nextLine readStream.
|
||||
|
||||
"Read the time, skip the blank, parse the data"
|
||||
time := Number readFrom: lineStream.
|
||||
lineStream skip: 1.
|
||||
|
||||
data := WriteStream on: (ByteArray new: 30).
|
||||
[lineStream atEnd] whileFalse: [
|
||||
| hex |
|
||||
hex := lineStream next: 2.
|
||||
data nextPut: (Number readFrom: hex readStream radix: 16).
|
||||
].
|
||||
|
||||
last_time isNil
|
||||
ifTrue: [
|
||||
"First time, send it right now"
|
||||
last_time := time.
|
||||
last_image := Time millisecondClockValue.
|
||||
udp_send value: data.
|
||||
]
|
||||
ifFalse: [
|
||||
| wait_image new_image_time |
|
||||
|
||||
"How long to wait?"
|
||||
wait_image := last_image + ((time - last_time) * 1000).
|
||||
[ wait_image > Time millisecondClockValue ] whileTrue: [].
|
||||
|
||||
udp_send value: data.
|
||||
last_time := time.
|
||||
last_image := wait_image.
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
Loading…
Reference in New Issue