<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.12.0">
</HEAD>
<BODY>
Good eye. I've updated the methods to only update offsets which are after the position of the newly written box. The changes should appear in the anonymous subversion shortly.<BR>
<BR>
Thanks,<BR>
Brian<BR>
<BR>
On Wed, 2006-10-11 at 16:01 +0200, Lukáš Lalinský wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
<FONT COLOR="#000000">Brian Nickel wrote:</FONT>
<FONT COLOR="#000000">> The system I've come up with is a working solution. My method performs a</FONT>
<FONT COLOR="#000000">> single file size change (when required) to write the smallest block</FONT>
<FONT COLOR="#000000">> possible ILST, META, or UDTA, and then updates the necessary higher</FONT>
<FONT COLOR="#000000">> level nested boxes and the offset tables. The only problem is</FONT>
<FONT COLOR="#000000">> statistically impossible case where the MOOV box changes size from less</FONT>
<FONT COLOR="#000000">> than to greater than 4GB.</FONT>
<FONT COLOR="#000000">Hi,</FONT>
<FONT COLOR="#000000">I've just read the TagLib# sources and the way you're updating the offset tables</FONT>
<FONT COLOR="#000000">is wrong. You should change only those entries for which you actually change</FONT>
<FONT COLOR="#000000">also offsets in the file. So if there are some entries that point before the</FONT>
<FONT COLOR="#000000">'ilst' offset, you should not add your size difference to them, otherwise you</FONT>
<FONT COLOR="#000000">make them invalid.</FONT>
<FONT COLOR="#000000">-Lukáš</FONT>
</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>