This commit is contained in:
Xavier Drudis
2025-01-02 10:37:47 -08:00
committed by Eric Daniels
parent 31d8dbc720
commit 04b46212a9
2 changed files with 7 additions and 5 deletions

View File

@@ -52,7 +52,8 @@ type IVFFrameHeader struct {
type IVFReader struct {
stream io.Reader
bytesReadSuccesfully int64
fileHeader *IVFFileHeader
timebaseDenominator uint32
timebaseNumerator uint32
}
// NewWith returns a new IVF reader and IVF file header
@@ -70,7 +71,8 @@ func NewWith(in io.Reader) (*IVFReader, *IVFFileHeader, error) {
if err != nil {
return nil, nil, err
}
reader.fileHeader = header
reader.timebaseDenominator = header.TimebaseDenominator
reader.timebaseNumerator = header.TimebaseNumerator
return reader, header, nil
}
@@ -83,7 +85,7 @@ func (i *IVFReader) ResetReader(reset func(bytesRead int64) io.Reader) {
}
func (i *IVFReader) ptsToTimestamp(pts uint64) uint64 {
return pts * uint64(i.fileHeader.TimebaseDenominator) / uint64(i.fileHeader.TimebaseNumerator)
return pts * uint64(i.timebaseDenominator) / uint64(i.timebaseNumerator)
}
// ParseNextFrame reads from stream and returns IVF frame payload, header,

View File

@@ -123,8 +123,8 @@ func (i *IVFWriter) timestampToPts(timestamp uint64) uint64 {
func (i *IVFWriter) writeFrame(frame []byte, timestamp uint64) error {
frameHeader := make([]byte, 12)
binary.LittleEndian.PutUint32(frameHeader[0:], uint32(len(frame))) // Frame length
binary.LittleEndian.PutUint64(frameHeader[4:], i.timestampToPts(timestamp))
binary.LittleEndian.PutUint32(frameHeader[0:], uint32(len(frame))) // Frame length
binary.LittleEndian.PutUint64(frameHeader[4:], i.timestampToPts(timestamp)) // PTS
i.count++
if _, err := i.ioWriter.Write(frameHeader); err != nil {