Skip to content

Commit 0757e08

Browse files
committed
Do not modify fmp4 bytes when there is no offset
1 parent 847c2dc commit 0757e08

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

src/utils/mp4-tools.ts

+17-15
Original file line numberDiff line numberDiff line change
@@ -697,21 +697,23 @@ export function offsetStartDTS(
697697
// get the base media decode time from the tfdt
698698
findBox(traf, ['tfdt']).forEach((tfdt) => {
699699
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+
}
715717
}
716718
});
717719
});

0 commit comments

Comments
 (0)