Skip to content

Commit

Permalink
Do not modify fmp4 bytes when there is no offset
Browse files Browse the repository at this point in the history
  • Loading branch information
robwalch committed Aug 30, 2023
1 parent 847c2dc commit 0757e08
Showing 1 changed file with 17 additions and 15 deletions.
32 changes: 17 additions & 15 deletions src/utils/mp4-tools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -697,21 +697,23 @@ export function offsetStartDTS(
// get the base media decode time from the tfdt
findBox(traf, ['tfdt']).forEach((tfdt) => {
const version = tfdt[0];
let baseMediaDecodeTime = readUint32(tfdt, 4);

if (version === 0) {
baseMediaDecodeTime -= timeOffset * timescale;
baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);
writeUint32(tfdt, 4, baseMediaDecodeTime);
} else {
baseMediaDecodeTime *= Math.pow(2, 32);
baseMediaDecodeTime += readUint32(tfdt, 8);
baseMediaDecodeTime -= timeOffset * timescale;
baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);
const upper = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));
const lower = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));
writeUint32(tfdt, 4, upper);
writeUint32(tfdt, 8, lower);
const offset = timeOffset * timescale;
if (offset) {
let baseMediaDecodeTime = readUint32(tfdt, 4);
if (version === 0) {
baseMediaDecodeTime -= offset;
baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);
writeUint32(tfdt, 4, baseMediaDecodeTime);
} else {
baseMediaDecodeTime *= Math.pow(2, 32);
baseMediaDecodeTime += readUint32(tfdt, 8);
baseMediaDecodeTime -= offset;
baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);
const upper = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));
const lower = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));
writeUint32(tfdt, 4, upper);
writeUint32(tfdt, 8, lower);
}
}
});
});
Expand Down

0 comments on commit 0757e08

Please sign in to comment.