UNPKG

mp4box

Version:

JavaScript version of GPAC's MP4Box tool

51 lines (49 loc) 1.56 kB
BoxParser.trunBox.prototype.write = function(stream) { this.version = 0; this.size = 4; if (this.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) { this.size += 4; } if (this.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG) { this.size += 4; } if (this.flags & BoxParser.TRUN_FLAGS_DURATION) { this.size += 4*this.sample_duration.length; } if (this.flags & BoxParser.TRUN_FLAGS_SIZE) { this.size += 4*this.sample_size.length; } if (this.flags & BoxParser.TRUN_FLAGS_FLAGS) { this.size += 4*this.sample_flags.length; } if (this.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) { this.size += 4*this.sample_composition_time_offset.length; } this.writeHeader(stream); stream.writeUint32(this.sample_count); if (this.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) { this.data_offset_position = stream.getPosition(); stream.writeInt32(this.data_offset); //signed } if (this.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG) { stream.writeUint32(this.first_sample_flags); } for (var i = 0; i < this.sample_count; i++) { if (this.flags & BoxParser.TRUN_FLAGS_DURATION) { stream.writeUint32(this.sample_duration[i]); } if (this.flags & BoxParser.TRUN_FLAGS_SIZE) { stream.writeUint32(this.sample_size[i]); } if (this.flags & BoxParser.TRUN_FLAGS_FLAGS) { stream.writeUint32(this.sample_flags[i]); } if (this.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) { if (this.version === 0) { stream.writeUint32(this.sample_composition_time_offset[i]); } else { stream.writeInt32(this.sample_composition_time_offset[i]); //signed } } } }