Skip to content

Commit

Permalink
testing
Browse files Browse the repository at this point in the history
  • Loading branch information
deepch committed Jan 29, 2024
1 parent a743575 commit 7a563b0
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 17 deletions.
25 changes: 14 additions & 11 deletions format/mp4/muxer.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,22 @@ package mp4
import (
"bufio"
"fmt"
"io"
"time"

"github.com/deepch/vdk/codec/h265parser"

"github.com/deepch/vdk/av"
"github.com/deepch/vdk/codec/aacparser"
"github.com/deepch/vdk/codec/h264parser"
"github.com/deepch/vdk/codec/h265parser"
"github.com/deepch/vdk/format/mp4/mp4io"
"github.com/deepch/vdk/utils/bits/pio"
"io"
"time"
)

type Muxer struct {
w io.WriteSeeker
bufw *bufio.Writer
wpos int64
streams []*Stream
w io.WriteSeeker
bufw *bufio.Writer
wpos int64
streams []*Stream
NegativeTsMakeZero bool
}

func NewMuxer(w io.WriteSeeker) *Muxer {
Expand Down Expand Up @@ -206,8 +205,12 @@ func (self *Muxer) WritePacket(pkt av.Packet) (err error) {

func (self *Stream) writePacket(pkt av.Packet, rawdur time.Duration) (err error) {
if rawdur < 0 {
err = fmt.Errorf("mp4: stream#%d time=%v < lasttime=%v", pkt.Idx, pkt.Time, self.lastpkt.Time)
return
if self.muxer.NegativeTsMakeZero {
rawdur = 0
} else {
err = fmt.Errorf("mp4: stream#%d time=%v < lasttime=%v", pkt.Idx, pkt.Time, self.lastpkt.Time)
return
}
}

if _, err = self.muxer.bufw.Write(pkt.Data); err != nil {
Expand Down
17 changes: 11 additions & 6 deletions format/mp4m/muxer.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@ import (
)

type Muxer struct {
w io.WriteSeeker
bufw *bufio.Writer
wpos int64
streams []*Stream
w io.WriteSeeker
bufw *bufio.Writer
wpos int64
streams []*Stream
NegativeTsMakeZero bool
}

func NewMuxer(w io.WriteSeeker) *Muxer {
Expand Down Expand Up @@ -181,8 +182,12 @@ func (self *Muxer) WritePacket(pkt av.Packet) (err error) {

func (self *Stream) writePacket(pkt av.Packet, rawdur time.Duration) (err error) {
if rawdur < 0 {
err = fmt.Errorf("mp4: stream#%d time=%v < lasttime=%v", pkt.Idx, pkt.Time, self.lastpkt.Time)
return
if self.muxer.NegativeTsMakeZero {
rawdur = 0
} else {
err = fmt.Errorf("mp4: stream#%d time=%v < lasttime=%v", pkt.Idx, pkt.Time, self.lastpkt.Time)
return
}
}

if _, err = self.muxer.bufw.Write(pkt.Data); err != nil {
Expand Down
1 change: 1 addition & 0 deletions format/nvr/muxer.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ func (m *Muxer) OpenMP4() (err error) {
return
}
m.muxer = mp4.NewMuxer(m.d)
m.muxer.NegativeTsMakeZero = true
if err = m.muxer.WriteHeader(m.gof.Streams); err != nil {
return
}
Expand Down

0 comments on commit 7a563b0

Please sign in to comment.