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

Loading…
Cancel
Save