I tagged this myself!
$ mono ReadFromUri.exe mac_pc_linux_2.OGG mac_pc_linux_2.OGG Title: Second Novell "I'm a mac..." parody ad Artists: Novell Performers: Composers: Album: Comment: Genres: Year: 2007 Track: 2 TrackCount: 0 Disc: 0 DiscCount: 0 Lyrics: Audio Properties Bitrate: 56 SampleRate: 22050 Channels: 2 Length: 00:00:41.9000000 Embedded Pictures: 0
What I ended up doing is, on Save(), reading the OGG structure in an identical manner to the initial Read() (minus scanning to the end for duration information). Along the way, I store all the Pages I’ve collected, and by the end of the “Read”, I’ll have read all the way to the end of the taggable region. Then I dump the pages into stream specific Paginators which separate the pages into packets. After that, I take the stream specific XiphComments and use the appropriate codec to stick it in the packet collection. Then, all I need to do is Paginate (which could use some improvement), shuffle the pages back together, and insert the chunk where the old packets used to be. Wow, that could have been a lot clearer.
But anyway, the code is now in subversion: http://svn.myrealbox.com/viewcvs/trunk/taglib-sharp/ and if haven’t yet seen it, see “Blades of Glory”. It is not just Will Farrell’s funniest movie (which isn’t saying much) but it’s the funniest movie I’ve seen in a long time. I haven’t laughed out loud like this in a movie theatre since opening night of Episode III, and this one was actually supposed to be funny (but had significantly less gay innuendo)!