Browse Source

rtmp: support negative timestamps in MessageWriter

pull/956/head
aler9 3 years ago
parent
commit
180db31166
  1. 11
      internal/rtmp/base/messagewriter.go

11
internal/rtmp/base/messagewriter.go

@ -20,8 +20,13 @@ func (wc *messageWriterChunkStream) write(msg *Message) error { @@ -20,8 +20,13 @@ func (wc *messageWriterChunkStream) write(msg *Message) error {
var timestampDelta *uint32
if wc.lastTimestamp != nil {
v := msg.Timestamp - *wc.lastTimestamp
timestampDelta = &v
diff := int64(msg.Timestamp) - int64(*wc.lastTimestamp)
// use delta only if it is positive
if diff >= 0 {
v := uint32(diff)
timestampDelta = &v
}
}
for {
@ -34,7 +39,7 @@ func (wc *messageWriterChunkStream) write(msg *Message) error { @@ -34,7 +39,7 @@ func (wc *messageWriterChunkStream) write(msg *Message) error {
firstChunk = false
switch {
case wc.lastMessageStreamID == nil || *wc.lastMessageStreamID != msg.MessageStreamID:
case wc.lastMessageStreamID == nil || timestampDelta == nil || *wc.lastMessageStreamID != msg.MessageStreamID:
err := Chunk0{
ChunkStreamID: msg.ChunkStreamID,
Timestamp: msg.Timestamp,

Loading…
Cancel
Save