@@ -697,21 +697,23 @@ export function offsetStartDTS(
697
697
// get the base media decode time from the tfdt
698
698
findBox ( traf , [ 'tfdt' ] ) . forEach ( ( tfdt ) => {
699
699
const version = tfdt [ 0 ] ;
700
- let baseMediaDecodeTime = readUint32 ( tfdt , 4 ) ;
701
-
702
- if ( version === 0 ) {
703
- baseMediaDecodeTime -= timeOffset * timescale ;
704
- baseMediaDecodeTime = Math . max ( baseMediaDecodeTime , 0 ) ;
705
- writeUint32 ( tfdt , 4 , baseMediaDecodeTime ) ;
706
- } else {
707
- baseMediaDecodeTime *= Math . pow ( 2 , 32 ) ;
708
- baseMediaDecodeTime += readUint32 ( tfdt , 8 ) ;
709
- baseMediaDecodeTime -= timeOffset * timescale ;
710
- baseMediaDecodeTime = Math . max ( baseMediaDecodeTime , 0 ) ;
711
- const upper = Math . floor ( baseMediaDecodeTime / ( UINT32_MAX + 1 ) ) ;
712
- const lower = Math . floor ( baseMediaDecodeTime % ( UINT32_MAX + 1 ) ) ;
713
- writeUint32 ( tfdt , 4 , upper ) ;
714
- writeUint32 ( tfdt , 8 , lower ) ;
700
+ const offset = timeOffset * timescale ;
701
+ if ( offset ) {
702
+ let baseMediaDecodeTime = readUint32 ( tfdt , 4 ) ;
703
+ if ( version === 0 ) {
704
+ baseMediaDecodeTime -= offset ;
705
+ baseMediaDecodeTime = Math . max ( baseMediaDecodeTime , 0 ) ;
706
+ writeUint32 ( tfdt , 4 , baseMediaDecodeTime ) ;
707
+ } else {
708
+ baseMediaDecodeTime *= Math . pow ( 2 , 32 ) ;
709
+ baseMediaDecodeTime += readUint32 ( tfdt , 8 ) ;
710
+ baseMediaDecodeTime -= offset ;
711
+ baseMediaDecodeTime = Math . max ( baseMediaDecodeTime , 0 ) ;
712
+ const upper = Math . floor ( baseMediaDecodeTime / ( UINT32_MAX + 1 ) ) ;
713
+ const lower = Math . floor ( baseMediaDecodeTime % ( UINT32_MAX + 1 ) ) ;
714
+ writeUint32 ( tfdt , 4 , upper ) ;
715
+ writeUint32 ( tfdt , 8 , lower ) ;
716
+ }
715
717
}
716
718
} ) ;
717
719
} ) ;
0 commit comments