pepoluan
Sep 22 2006, 10:43
Gee... this plugin is well on its way to becoming like Lancer editions... the "Build-of-the-day" club...

Heck... haven't even copied the zip from my office PC to my house, you already released a new build....

Anyways, great work, MoSPDude! Much appreciated!
MoSPDude
Sep 22 2006, 12:25
I've uploaded the update to the usual place.
@pepoluan, I just like things to work for people
MoSPDude, thanks for this plugin. I am curious about the dither used. You mentioned in the original post that you are using Gaussian dither. If I don't tick "dither" and set the output to 16 bits, is the plugin simply truncating the data at 16 bits?
Thank you.
But not English simbols in ID3v2 still displays incorrect
I know that in Unicode all good, but nevertheless maybe you fix this for not only Unicode symbols?
(I'm still wondered because ID3v1 at the same time absolutely correct

)
By the way when copy tag from ID3v1 to ID3v2(pressing the button) field "Gentre" don't copy correctly.
MoSPDude
Sep 23 2006, 04:17
@LMS, effectively yes, without any dither or noise shaping the lower bits from libmad fixed output are simply removed to give you your desired resolution.
@LITBe, they are some strange things in libid3tag but I've fixed the Genre problem. However, the foreign characters are still confusing...first of all, what operating system are you running? and what regional settings is windows set to? The ID3v1 tag will be shown in your regional ANSI code page, but the ID3v2 tag will want to be shown in Latin only characters, so I made it though go through windows conversion to Unicode and use that.
I'm going to keep thinking about this character conversion for a bit longer, then I'll upload another update.
QUOTE(MoSPDude @ Sep 23 2006, 12:17)

@LITBe, they are some strange things in libid3tag but I've fixed the Genre problem. However, the foreign characters are still confusing...first of all, what operating system are you running? and what regional settings is windows set to? The ID3v1 tag will be shown in your regional ANSI code page, but the ID3v2 tag will want to be shown in Latin only characters, so I made it though go through windows conversion to Unicode and use that.
Windows XP SP2
All regional settings is set to my language.
MoSPDude
Sep 23 2006, 08:41
@LITBe, can I ask what your language settings are? and specifically on the Advanced tab of the Regional and Language options in the control panel, what is the language for non-Unicode programs? It could be that I'm passing flags which aren't valid for your code page and its falling back to Latin coding only.
Thanks
I may be wrong, but it seems that the plugin is not handling the dither and noise shaping functions correctly. To test this, I wrote 4 wav files using the Wimamp diskwriter, each with the MAD plugin set to output 16 bits. The four files were Dither Only, Noise Shaping Only, Both, and Neither. I loaded all four wav files into Foobar 0.8.3 and bit-compared them. "Dither Only" and "Neither" were bit-identical. "Both" and "Noise Shaping Only" were not identical.
Thanks again for the plugin, I'm really enjoying it. I think we are all impressed by your efforts to fix bugs and add features that people request.
MoSPDude
Sep 23 2006, 11:29
It could well be not adding dither correctly, I had doubts as to whether the noiseamp value was right or not. I'll look into it.
Hopefully, I might have fixed this international character problem.
QUOTE(MoSPDude @ Sep 23 2006, 16:41)

@LITBe, can I ask what your language settings are? and specifically on the Advanced tab of the Regional and Language options in the control panel, what is the language for non-Unicode programs?
Russian in ALL Regional and Language options and in Advanced tab too
gameplaya15143
Sep 23 2006, 16:36
When seeking, buffer errors are no longer reported. Sync errors still sometimes occur and there are a LOT of 'other' errors. This IS an audible problem. Just step by 5sec using the arrow keys, and watch the errors add up. VBR seeking isn't accurate yet either
Still sync errors with VBR streams (disabling shoutcast title support still fixes that problem). Doesn't get titles from my icecast2 server even when titles are enabled. When starting a stream, the sound skips for a while (sounds like buffer underruns), pausing playback for a few seconds fixes this. It also isn't decoding shoutcast mp3 streams even with streaming enabled (grabs streams ending with ".mp3" just fine though).
It also chokes on mp3s with bad headers (44.1khz stereo, but reported as 48khz mono, etc.).. shouldn't it be able to pick up on stuff like that when it's wrong?
Anyways.. keep up the great work.
MoSPDude
Sep 24 2006, 03:26
I've had a look at the resync section - I'd based it on 0.14.1b, but now rather than try to decode only two frames, it'll search for the first full frame and then continue. libmad seems to seek only one byte forward when it lost has lost sync meaning that is has to loop potentially nearly a full frame of bytes to find the next sync. The other errors (bad data ptr, bad huff table, bad sample rate, bad bitrate) were due to libmad thinking it had found a frame and then changing its mind! Hopefully its sorted now
I doubt VBR seeking will ever be 100% accurate as there is no sample counter, I could make it use the xing tables to seek in the file to the correct whole percentage then sample skip to the correct place, I don't know how much extra processing this would require.
Do you have any links to VBR streams I can test? I can't seem to find any. There is a problem if shoutcast metaint is set to less than 2048 bytes, or your first metadata block is sent before your first (valid) mp3 frame. I'll have to think of a way to solve this elegantly. The shoutcast failing could be due to the above, or the ICY header parser - I'll tweak the parser a bit and see if that helps.
The mp3 header problem is difficult to solve, the plug-in uses the first header to open the output plug-in. I could make it scan for second or third header and hope thats correct. It'd be difficult to have it close and re-open the output plugin mid-track.
I'll have a think about the above, thanks for all comments and problems you find

EDIT: I'll upload the update later, I might add a stream saving option to 'record' internet streams so it can help solve these streaming problems.
This plugin is the best :-)
My radio stream now play and show title correct, thanks for that ;-)
The save stream sounds like a nice feature
k.eight.a
Sep 24 2006, 18:06
@
MoSPDude: I really much apperciate your work, thanks a lot!

I have a "
feature request"... I'd love to have a button
Cancel in the ID3Tag window do "
Cancel All".
I mean when I select several files in the playlist I click
Save and I see ID3Tag window of the next file but when I click
Cancel I see the same as before. Contrary to this the original WinAMP mp3 decoder don't view ID3Tag windows when
Cancel is clicked.
OT: I hope I have cleared up enough what I want, sorry for my bad English.
MoSPDude
Sep 24 2006, 19:23
I uploaded an update to the usual place.
I've had a go at tweaking the shoutcast header parser, and added an internet streaming save function in the configuration, its not that advanced but enough for recording streams to provide debugging information.
@k.eight.a, will look into making the cancel button cancel all.
gameplaya15143
Sep 25 2006, 18:02
QUOTE(MoSPDude @ Sep 24 2006, 05:26)

I doubt VBR seeking will ever be 100% accurate as there is no sample counter, I could make it use the xing tables to seek in the file to the correct whole percentage then sample skip to the correct place, I don't know how much extra processing this would require.
Might be worth a try to find out.
QUOTE
Do you have any links to VBR streams I can test?
I don't know of any myself, although it is a perfectly acceptable practice. I just run oddcast3 and icecast2 on my own machine for testing. Running shoutcast server on my own was when I first realized mad wasn't decoding it even with streaming enabled. All metadata intervals are at whatever the defaults are (1024 bytes maybe). I'll test with the new version once I get a chance to download it.
QUOTE
The mp3 header problem is difficult to solve, the plug-in uses the first header to open the output plug-in. I could make it scan for second or third header and hope thats correct.
Yes I have a few corrupt files in my library

(only the beginnings and ends though). I would have it check the first 2 headers, if they are the same, then begin playback. If not, keep searching untill 2 consecutive headers have the same info.
MoSPDude
Sep 27 2006, 09:49
I'm preparing a new update.
I've attempted to make input buffering more efficient, along with making it check for a set of identical headers to solve gameplaya15143 problems

. I've fixed a large problem with gapless playback and internal EQ, there was data left in the EQ buffer that would be emptied into the next song - so when you disk write it would catch part of the previous song. This has been solved now. Dither is also now applied correctly.
With the release of Winamp 5.3 I'm going to look into getting global replaygain settings from Winamp. I could do with some clarification as to how Winamp is applying the replaygain settings though. For the moment, you still need to set them through in_mad configuration as this will be separate to the rest of Winamp.
gameplaya15143
Sep 27 2006, 14:07
I was playing around with VBR mp3 streams last night (yesterday's version of in_mad). VBR mp3 streams from a shoutcast server work perfectly fine

no sync errors, titles show up perfectly. When using icecast2 server, sync errors galore, and no titles. I was under the impression that both icecast2 and shoutcast streamed mp3 titles the same way. I'm beginning to think this is not the case.
www.icecast.org should have the info needed to hack in icecast title support. Good luck with all the great improvements.
MoSPDude
Sep 27 2006, 15:09
QUOTE(gameplaya15143 @ Sep 27 2006, 21:07)

I was playing around with VBR mp3 streams last night (yesterday's version of in_mad). VBR mp3 streams from a shoutcast server work perfectly fine

no sync errors, titles show up perfectly. When using icecast2 server, sync errors galore, and no titles. I was under the impression that both icecast2 and shoutcast streamed mp3 titles the same way. I'm beginning to think this is not the case.
That suggests that in_mad probably isn't understanding the header correctly still. If you could use the internet stream save option and store header and metadata information, then post the header information from the beginning of the file that'd be great. I'll also download the icecast source code to try and help clarify things. I've not had chance to fully test the streaming VBR problems yet.
I'm just hunting down an issue with the new buffering
Cheers for all the help everyone
MoSPDude
Sep 29 2006, 07:02
I've uploaded an update to the usual place.
One of the minor things I've also fixed is seeking to 0:00 now works. Hoepfully this new buffering shouldn't cause any problems and be more efficient with usage of memory. I haven't noticed any improvement on decoding speeds though. When you press Cancel in the file info box, its cancels all afterwards now. To cancel a single file box, press the close button in the top right of the window.
I'll look into icecast streaming problems and make a few other tweaks.
Please post problems all problems, and I'll look into them, especially with the new buffering.
Thanks
k.eight.a
Sep 29 2006, 07:57
QUOTE(MoSPDude @ Sep 29 2006, 15:02)

When you press Cancel in the file info box, its cancels all afterwards now. To cancel a single file box, press the close button in the top right of the window.
Thanks a lot, I love you!
QUOTE(MoSPDude @ Sep 29 2006, 15:02)

Please post problems all problems, and I'll look into them, especially with the new buffering.
Thanks
I've encountered a weird bug concerning files which contain ReplayGain tags with the plugin's preamp being enabled. Sometimes repeated seeking causes these files to soften, no matter whether the preamp value is positive or negative. Usually I use a preamp of 3.0, the first time I encountered this bug the volume level was lowered a bit, therefore I suspected the new buffering had conflicted with the preamp, disabling it completely. Hence, for testing purposes I increased it to 6.0, but against my expectations the next time this bug occured the volume level wasn't set back to the one I encountered the previous time. It was audibly louder instead, meaning the bug doesn't set back loudness to the non-preamped value, but always more quiet. For verification I set a negative preamp of -6.0, after some excessive seeking (the bug occurs rather rarely) the volume was lowered once more. I'm not completely sure whether it's the preamp causing this issue, but up to this point I wasn't able to reproduce it with the preamp being disabled.
To reproduce the bug by yourself simply keep clicking around in the seeking bar until an audible volume change takes place. Sometimes it already happens just after a few clicks.
pepoluan
Sep 29 2006, 09:15
QUOTE(MoSPDude @ Sep 27 2006, 22:49)

With the release of Winamp 5.3 I'm going to look into getting global replaygain settings from Winamp. I could do with some clarification as to how Winamp is applying the replaygain settings though. For the moment, you still need to set them through in_mad configuration as this will be separate to the rest of Winamp.
So, what's you're trying to say is, use ReplayGain inside in_mad instead of Winamp's Preference > Playback?
MoSPDude
Sep 29 2006, 09:28
@pepoluan, yes if you want RG for just your mp3 files.
With the replaygain you need to set it twice, within in_mad for mp3 files, and again in the winamp for the other "Winamp replaygain compatible" plugins. This is because in_mad doesn't take its settings from Winamp 5.3 global settings.
@Junon, I'll look into it

Thanks for all comments, I've noticed a small problem with gapless and EQ now but seems to vary depending on song and output plugin

.
MoSPDude
Sep 29 2006, 13:03
This gapless EQ problem is very strange.
When disk writing and joining the outputted files together it plays back gaplessly. However using the directsound output plugin gives what sounds to be a break, but the output plug-in status shows no under-runs etc. When EQ is disabled it doesn't show this problem.
Does anyone have any ideas as to what could be causing this?

Has anyone else found or not found this problem?
Thanks for all ideas and help on this
Teknojnky
Sep 29 2006, 13:22
For the last month or 2 builds, I get memory errors/crashes with using this plugin in Mediamonkey (compatible with WA2 plugins).
Unfortunately it got so bad I had to stop using it, but if I can help narrow down the problem somehow I will.
MoSPDude
Sep 29 2006, 16:47
The EQ gapless problem is due to CPU usage (again) causing it to skip on my laptop. I'm going to look into reducing the amount of repetitive things that happen in the decoding loop etc.
@Teknojnky, I've not checked in_mad in Mediamonkey for some time now, I'll reinstall it and look into it.
The main list of bugs now are volume reducing on seeking, MediaMonkey problems, Icecast VBR title problems and more CPU usage/speed problems. I'd also like to get Winamp 5.3 global settings working.
Thanks to all for comments and testing
MoSPDude
Oct 1 2006, 13:08
I've uploaded an update to the usual place.
I've made some changes to seeking, RG behaviour, and both input and output buffering in an attempt to reduce CPU usage. I've also made changes to the shoutcast header parser hopefully allowing more streams to be played.
@Teknojnky, what other plug-ins are active in MediaMonkey? what tags are on the files your trying to play? I've clean installed it and tried it with various DSPs and options but can't make it crash.
Teknojnky
Oct 1 2006, 15:42
I don't actively use many special plugins, however the main ones are gen_audioscrobbler.dll (new style last.fm plugin), minilyrics (v 2266), and the DS_out.dll from winamp 5.21 (says v 2.42).
When not using the mad plugin, I use either in_mp3 from winamp 5.21, or sometimes the default MM plugin.
As far as tags, MM uses id3 2.3 format. My own rips I use cbr 192, but I have lots of varying types of encodings from whenever and wherever.
I'll load up the lastest mad and see if I can find a file which has problems.
As to why I use 5.21, I beleive it was the last release of winamp which plugins work in MM. Newer releases plugins have changed something so that MM can't use them.
Hi
I have found a small bug in the id3v2-tags. My with Lame tagged files have in Genre a number instead of the actual Genre.

Otherwise it's a great plug-in and i love your work

Btw: The bug with volume reducing in seeking hasn't been solved for me.
MoSPDude
Oct 4 2006, 15:54
I'll have to take a closer look at the volume reducing bug, and I'll fix the genre problem as well.
@Teknojnky, I'll test MM with the plug-ins you mention and in_mad, hopefully it'll shed some light on your problem.
gameplaya15143
Oct 6 2006, 09:05
Seeking seems to be doing much better now. I don't think I'm getting any more audible glitches. (will continue to test though)
edit: Seems to freeze up winamp a lot. Always at the end (and possibly beginning) of some mp3's (my nice old partially corrupt ones). Sometimes results in 100% CPU usage, other times I can just hit the stop button and advance to the next track. I've reverted to the previous version to see if the problems still occur.
jarretth
Oct 8 2006, 11:38
I have to ask...is this preferred to Otachan's mpg123 for any reason? Is it more accurate or better features? Otachan's is updated once or twice a month and I see no discussion about it in its thread.
QUOTE(jarretth @ Oct 8 2006, 19:38)

I have to ask...is this preferred to Otachan's mpg123 for any reason? Is it more accurate or better features? Otachan's is updated once or twice a month and I see no discussion about it in its thread.
I switched from Otachan to MAD mainly because the latter offers full tag editing support for both ID3 and APEv2. The last Otachan version I tested opened the native Windows properties panel when I checked the info of an MP3 file, which was really useless in the case of my APEv2 tagged MP3 collection. It also offers a nice Gap Removal function for non-LAME encoded files and ID3v2 equalizer as well as streaming support. In the case of MAD we also have a very dedicated developer who reads both bug reports and suggestions in this topic. Cheers @ MoSPDude!
I from Russia. MAD does not support the russian text in tags...
Possible this correct and as?
QUOTE(D!m@$ @ Oct 9 2006, 09:17)

I from Russia. MAD does not support the russian text in tags...
Possible this correct and as?
ENG: Author knows it and works on it
RUS: Автор в курсе и работает над этим
Hello MoSPDude
Is there any fixes to original in_mad 1.14.2-beta code in your modification?
MoSPDude
Oct 9 2006, 13:17
@nogus, this plug-in started out as an upgrade of the code to the 0.14.2b plug-in with basic ID3v2 support using libmad 0.15.1b and libid3tag 0.15.1b. From there I've added large parts to it such as the enhanced ID3v2 support, APE tag support and shoutcast support, and re-written a few old troublesome sections such as the decoding loop. The most heavily changed library in this plug-in is libid3tag as I've fixed it so it writes correct ID3v2.3 and v2.4 tags.
@gameplaya15143, I'm holding off on an update while I solve the end of track problem. It occurs very rarely (like that volume bug!), but I've had it happen now twice.
I've also managed to fix the volume bug ready for the next release, hopefully for good!
Thanks to everyone for all support, testing and comments
my in_mad modI just found MoSPDude's modification. I thought there is no modifications. So i compiled in_mad 0.14.2.beta with msvc60 against 0.15.1 mad libraries and just used ID3V2 tag editor from in_mp3.dll (there is call to in_mp3 InfoBox function).
Changes to in_mad 1.14.2 code is minor, just one minor fix, so therefore i asked about known bugs in 0.14.2.
It supports cyrillics in tag values.
The untested issue is how id3v2 creation wil interfer with same file playback.
If somebody interested:
http://rapidshare.de/files/36213437/mad-0.14.2b.p1.rar.htmlAbout SSRCI have found out_wave_ssrc 2.0.2a source code by Peter Pawlowsky. He used old version of ssrc resampler by Naoki Shibata. I wanted to compile out_wave_ssrc against new SSRC 1.30 but unfortunately resampler is not convenient for external usage so people just cut-n-paste some code from it. Peter made nice OO refactoring of SSRC library. But it is OLD SSRC code and no easy way to update it

There is allso Besweet DLL based on version 1.28 of Naoki SSRC code. People expecting 1.30 dll from BeSweet. Sounds good but: BeSweet can't redistribute SSRC code due to LGPL license...
Conclusions:1. Naoki resampler needs library interface! There is some reasons to use Besweet SSRC DLL. Or find some automated way to make library from Naoki SSRC resampler. Certainly best way is to ask Naoki to part his code into normal lib and frontend.
2. Resampling, dithering and shaping is output module business. Best solution is SSRC output module that chains to any Nullsoft output module.
Cheers,
Oleg
MoSPDude
Oct 10 2006, 10:55
Dithering and shaping are not necessarily just for the output module, it should be used whenever there is a bit-depth conversion. libmad uses a 28-bit fixed internal representation. The dither and noise-shaping are applied when the 28-bit output is reduced to 8, 16 or 24 bits (the 32 bit output is simply 24 bits padded).
The old 0.14.2b plug-in applied simple triangular dither and a basic 2nd order noise shaper. In my updated in_mad the only parts used from SSRC 1.30 are the co-efficients for the noise shaper at different sampling rates, and the methods for generating and applying the dither.
In terms of bugs in the 0.14.2b code, one I remember is in the Xing tag reader - I merged the Xing/LAME tag reader from the latest madplay as that was more updated and fixed that. Another is the internet stream hijacking problem due to "is_ourfile" behaviour. Feel free to look at my updated source code and apply fixes, although if you are going to apply huge sections of code such as decoding loop, please would you add some recognition to the About box. Thanks
MoSPDude
Oct 12 2006, 07:38
I've uploaded an update to the usual place.
This hopefully will have solved both the volume reducing on seek and sync error, and the end of track problem. I've also fixed the genre problem, converting genre names back to numbers (and back again) as in the specification. Improvements have also been made to the gap removal feature on tracks without gapless information - the threshold for silence can also be set.
I've been trying to access WA5.3 global settings, but my C to C++ wrapper crashes.

Does anyone know of a way to access them without going through class pointers?
@Teknojnky, I still can't make MediaMonkey crash. The only plug-in you mention that I haven't been able to test is the gen_audioscrobbler.dll, if you could check that by disabling it for me. Otherwise I've tested the latest minilyrics and the DS output plug-in you mentioned, with the latest MediaMonkey. What OS are you using? Does in_mad crash winamp on your machine?
Thanks for all help, bug-finding and comments in advance.
MoSPDude
Oct 13 2006, 16:22
I've uploaded another quick update to the usual place.
This now has (hopefully) sample accurate seeking - its disabled by default. I haven't properly tested it so all comments are welcome.

EDIT: There is a bug in the accurate seeking that puts it way off. I've sorted most of it out but am still out by a few samples. I'll hopefully get it fixed for an update later.
EDIT 2: It turns out that on my test files instructing winamp to seek to 2 minutes actually seeked to 120092 ms, which was the exact output I was getting. I've uploaded this new version, all other files and seeks seem to be working
gameplaya15143
Oct 18 2006, 17:11
I'll have to redownload to make sure I have the latest version.
Accurate seeking worked fine for me, no audible glitches, and it has yet to crash.
Excellent work!
edit: There is still a problem that hasn't been resolved. At the end of some of my lovely slightly corrupt mp3's, in_mad ends up in an infinite loop (CPU 100%). I can still use 'stop' and 'next' without crashing winamp. This happens both with and without the gapless option on, the accurate seeking option doesn't effect it either.
MoSPDude
Oct 20 2006, 07:25
@gameplaya15143, can you tell me what it says in the Buffer information tab in the File info window when it enters its infinite loop. (The option to show the buffer information is at the bottom of the Buffer configuration page). I'm mainly interested in the length of the input buffer, and status of end of input and end of decoding flags.
Come to think of it, I might know what is causing the trouble if the file is damaged at the end - I'll have another go at it later today for an update tomorrow.
Thanks
gameplaya15143
Oct 21 2006, 18:37
The 'end of input' box gets checked, and the input buffer goes down (as it should). On the files where it is looping, the 'end of decoding' box does not get checked. There is still a lot in the decoding buffer when it runs into this problem.
I hope that helps
It appears that it's stuck in a while loop at playback.c line 639. Specifically, after call to mad_frame_decode fails, it breaks there:
CODE
if (input_buffer_cycle(input_buffer, stream.next_frame, &input_ptr, input_length, input_size) == -1)
{
//we've EOF and its not because we're at the end of memory
err_buflen = 1;
break;
}
and goes here:
CODE
if ((err_buflen == 1) || (eof_decode == 1)) continue;
if (err > 0) break;
Since err_buflen is set to 1, it continues to the start of the while loop again and again. While loop condition checks if eof_decode==1, so i set it before continue:
CODE
if ((err_buflen == 1) || (eof_decode == 1))
{
eof_decode=1;
continue;
}
if (err > 0) break;
and it seems to work. Well it's not that i understand the whole process, this is only a dirty hack.
MoSPDude
Oct 22 2006, 08:55
Yep, kairo is right. The behaviour when its ran out off data but not at the end of the buffer memory should halt the decoding because there is no more valid data and we're end of file. The err_buflen should have continued to the outside loop (my mistake) so as to fetch more data from an internet stream.
I've uploaded an update to the usual location. Thanks for everyone support and helping me track down these problems.
gameplaya15143
Oct 23 2006, 13:37
Here is a small present for you MoSPDude, this one crashes in_mad even when it just tried to read the tag. (result of a 'bad cut') I think this is the only file I have that is still causing problems.
As far as streaming goes.. I tried listening to a shoutcast mp3 stream, in_mad did not pick it up. It also gave me an error when trying to listen to an icecast mp3 stream (../listen.mp3) saying 'file could not be located on disk' or something. I tried opening the file info dialog, when I clicked on the 'buffer' tab (which shouldn't have been there since it wasn't playing) in_mad crashed. I have no problems like these streaming from shoutcast or icecast on my own machine (localhost). It seems to just not like outside sources.
The first 'problem' may be due to the fact that I am using some random letters for winamp's default type for unknown files (same random letters on the extention list of in_mp3).
As always, thanks for the great plugin!
Apparently, something is wrong with buffering algorithm in scan_header() (same playback.c), but I can't figure out where exactly. It keeps calling memmove() with source=destination.
As another quick-and-dirty hack, simply enlarging buffer from 1536 to 15360 bytes seem to do the trick. Well, at least this broken track plays now
MoSPDude
Oct 24 2006, 12:46
I'm playing with a way to fix this, I'm not quite happy with it yet.
I believe its to do with libmad and how it sets stream.this_frame and stream.next_frame when there is an error. I think its supposed to (correctly) set stream.next_frame = stream.this_frame + 1 , so in an error it steps byte by byte to find a correct header. On other occassions though it leaves it stream.next_frame = stream.this_frame (which ends up equal to the start of the buffer) entering the loop problem.
I try to avoid modifying libmad and libid3tag unless I really need to, but I think I'll have to have a proper look into libmad for this one.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please
click here.