@@ -98,6 +98,12 @@ func jpegExtractSize(image []byte) (int, int, error) {
9898 }
9999}
100100
101+ type formatFMP4Sample struct {
102+ * fmp4.Sample
103+ dts int64
104+ ntp time.Time
105+ }
106+
101107type formatFMP4 struct {
102108 ri * recorderInstance
103109
@@ -111,18 +117,15 @@ func (f *formatFMP4) initialize() bool {
111117 nextID := 1
112118
113119 addTrack := func (format rtspformat.Format , codec mp4.Codec ) * formatFMP4Track {
114- initTrack := & fmp4.InitTrack {
115- TimeScale : uint32 (format .ClockRate ()),
116- Codec : codec ,
117- }
118- initTrack .ID = nextID
119- nextID ++
120-
121120 track := & formatFMP4Track {
122121 f : f ,
123- initTrack : initTrack ,
122+ id : nextID ,
123+ clockRate : uint32 (format .ClockRate ()),
124+ codec : codec ,
124125 }
126+ track .initialize ()
125127
128+ nextID ++
126129 f .tracks = append (f .tracks , track )
127130 return track
128131 }
@@ -180,7 +183,7 @@ func (f *formatFMP4) initialize() bool {
180183 return err
181184 }
182185
183- return track .write (& sample {
186+ return track .write (& formatFMP4Sample {
184187 Sample : & sampl ,
185188 dts : u .PTS ,
186189 ntp : u .NTP ,
@@ -257,7 +260,7 @@ func (f *formatFMP4) initialize() bool {
257260 firstReceived = true
258261 }
259262
260- return track .write (& sample {
263+ return track .write (& formatFMP4Sample {
261264 Sample : & fmp4.Sample {
262265 IsNonSyncSample : ! randomAccess ,
263266 Payload : u .Payload .(unit.PayloadVP9 ),
@@ -348,7 +351,7 @@ func (f *formatFMP4) initialize() bool {
348351 return err
349352 }
350353
351- return track .write (& sample {
354+ return track .write (& formatFMP4Sample {
352355 Sample : & sampl ,
353356 dts : dts ,
354357 ntp : u .NTP ,
@@ -424,7 +427,7 @@ func (f *formatFMP4) initialize() bool {
424427 return err
425428 }
426429
427- return track .write (& sample {
430+ return track .write (& formatFMP4Sample {
428431 Sample : & sampl ,
429432 dts : dts ,
430433 ntp : u .NTP ,
@@ -481,7 +484,7 @@ func (f *formatFMP4) initialize() bool {
481484 }
482485 lastPTS = u .PTS
483486
484- return track .write (& sample {
487+ return track .write (& formatFMP4Sample {
485488 Sample : & fmp4.Sample {
486489 Payload : u .Payload .(unit.PayloadMPEG4Video ),
487490 IsNonSyncSample : ! randomAccess ,
@@ -532,7 +535,7 @@ func (f *formatFMP4) initialize() bool {
532535 }
533536 lastPTS = u .PTS
534537
535- return track .write (& sample {
538+ return track .write (& formatFMP4Sample {
536539 Sample : & fmp4.Sample {
537540 Payload : u .Payload .(unit.PayloadMPEG1Video ),
538541 IsNonSyncSample : ! randomAccess ,
@@ -570,7 +573,7 @@ func (f *formatFMP4) initialize() bool {
570573 f .updateCodecParams ()
571574 }
572575
573- return track .write (& sample {
576+ return track .write (& formatFMP4Sample {
574577 Sample : & fmp4.Sample {
575578 Payload : u .Payload .(unit.PayloadMJPEG ),
576579 },
@@ -596,7 +599,7 @@ func (f *formatFMP4) initialize() bool {
596599 pts := u .PTS
597600
598601 for _ , packet := range u .Payload .(unit.PayloadOpus ) {
599- err := track .write (& sample {
602+ err := track .write (& formatFMP4Sample {
600603 Sample : & fmp4.Sample {
601604 Payload : packet ,
602605 },
@@ -630,7 +633,7 @@ func (f *formatFMP4) initialize() bool {
630633 for i , au := range u .Payload .(unit.PayloadMPEG4Audio ) {
631634 pts := u .PTS + int64 (i )* mpeg4audio .SamplesPerAccessUnit
632635
633- err := track .write (& sample {
636+ err := track .write (& formatFMP4Sample {
634637 Sample : & fmp4.Sample {
635638 Payload : au ,
636639 },
@@ -667,7 +670,7 @@ func (f *formatFMP4) initialize() bool {
667670 return err
668671 }
669672
670- return track .write (& sample {
673+ return track .write (& formatFMP4Sample {
671674 Sample : & fmp4.Sample {
672675 Payload : ame .Payloads [0 ][0 ][0 ],
673676 },
@@ -710,7 +713,7 @@ func (f *formatFMP4) initialize() bool {
710713 f .updateCodecParams ()
711714 }
712715
713- err = track .write (& sample {
716+ err = track .write (& formatFMP4Sample {
714717 Sample : & fmp4.Sample {
715718 Payload : frame ,
716719 },
@@ -779,7 +782,7 @@ func (f *formatFMP4) initialize() bool {
779782
780783 pts := u .PTS + int64 (i )* ac3 .SamplesPerFrame
781784
782- err = track .write (& sample {
785+ err = track .write (& formatFMP4Sample {
783786 Sample : & fmp4.Sample {
784787 Payload : frame ,
785788 },
@@ -825,7 +828,7 @@ func (f *formatFMP4) initialize() bool {
825828 lpcm = al
826829 }
827830
828- return track .write (& sample {
831+ return track .write (& formatFMP4Sample {
829832 Sample : & fmp4.Sample {
830833 Payload : lpcm ,
831834 },
@@ -851,7 +854,7 @@ func (f *formatFMP4) initialize() bool {
851854 return nil
852855 }
853856
854- return track .write (& sample {
857+ return track .write (& formatFMP4Sample {
855858 Sample : & fmp4.Sample {
856859 Payload : u .Payload .(unit.PayloadLPCM ),
857860 },
0 commit comments