Jempeg runs out of memory while parsing some MP3s for ID3 tags. Probably a bad MP3, but emplode seems to deal with it OK. Send me an email if you want a mp3 sample.
-Mike
ID3Tag.parseFrames: Parsing frame at 84...
ID3FrameHeader.parse: id = TMED
ID3Frame.parse: Parsed field: [ID3Field: id = [mschrag.id3lib.ID3FieldID: value = 1]; type = [mschrag.id3lib.ID3FieldType: value = 0]; value = 0]
ID3Frame.parse: Parsed field: [ID3Field: id = [mschrag.id3lib.ID3FieldID: value = 2]; type = [mschrag.id3lib.ID3FieldType: value = 2]; value = UNKNOWN]
ID3Tag.parseFrames: Parsing frame at 102...
ID3FrameHeader.parse: id = APIC
Exception occurred during event dispatching:
java.lang.OutOfMemoryError:
at mschrag.id3lib.ID3Frame.parse(ID3Frame.java:364)
at mschrag.id3lib.ID3Tag.parseFrames(ID3Tag.java:783)
at mschrag.id3lib.ID3Tag.parse(ID3Tag.java:916)
at mschrag.id3lib.ID3Tag.parseID3v2(ID3Tag.java:840)
at mschrag.id3lib.ID3Tag.parseFile(ID3Tag.java:937)
at mschrag.id3lib.ID3Tag.link(ID3Tag.java:547)
at mschrag.id3lib.ID3Tag.link(ID3Tag.java:552)
at mschrag.empeg.core.FileMagic.extractTags(FileMagic.java:182)
at mschrag.empeg.core.FileMagic.identifyMP3(FileMagic.java:173)
at mschrag.empeg.core.FileMagic.identify(FileMagic.java:119)
at mschrag.empeg.core.FileMagic.<init>(FileMagic.java:43)
at mschrag.empeg.emptool.PlayerDatabase.identify(PlayerDatabase.java:92) at mschrag.empeg.emplode.Emplode.uploadFiles(Emplode.java:328)
at mschrag.empeg.emplode.action.NewTuneAction.actionPerformed(NewTuneAction.java:75)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1066)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1101)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)
at javax.swing.AbstractButton.doClick(AbstractButton.java:226)
at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(BasicMenuItemUI.java:754)
at java.awt.Component.processMouseEvent(Component.java:3162)
at java.awt.Component.processEvent(Component.java:3001)
at java.awt.Container.processEvent(Container.java:1011)
at java.awt.Component.dispatchEventImpl(Component.java:2396)
at java.awt.Container.dispatchEventImpl(Container.java:1056)
at java.awt.Component.dispatchEvent(Component.java:2309)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2064)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:1848) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:1751)
at java.awt.Container.dispatchEventImpl(Container.java:1043)
at java.awt.Window.dispatchEventImpl(Window.java:749)
at java.awt.Component.dispatchEvent(Component.java:2309)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:287)
at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:92)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:83)
I've fixed it so that we don't get the OutOfMemoryError any more (the problem was reading the wrong bytes of the tag to determine how big a compressed frame was and then, in this case, trying to allocate a 1.2 GB byte array based on this value to hold the uncompressed data). However, we still can't parse the tag properly. On the bright side, there are some commercial apps which can't parse it properly either.
Thus, I've resolved this one with "Later", since the important part for now is taken care of - you can now add the track to the Empeg, but not get its information automatically filled in.
Is this "fixed" now?
This still seems to be causing problems. I now get an error dialog with no error text when it tries to upload one of these files. After the sync the file ends up in Unattached Items.
Logged In: YES
user_id=67724
This should be fixed as part of the patch I gave Mike Schrag today. It was a problem parsing ID3v2 GEOB frames. Since the empeg does not care about these frames the patch just catches and drops the exception.
Logged In: YES
user_id=71113
Completely replaced the ID3 tag parsing framework, solving this problem in the process.