[Ffmpeg-devel] [PATCH] MP3 decoding from RTP stream. Getting "invalid new backstep"

Michael Niedermayer michaelni
Mon Nov 6 19:13:42 CET 2006


Hi

On Mon, Nov 06, 2006 at 06:10:28PM +0100, Guillaume POIRIER wrote:
> Hi,
> 
> On 11/6/06, Michael Niedermayer <michaelni at gmx.at> wrote:
> >Hi
> >On Mon, Nov 06, 2006 at 05:44:07PM +0100, Martin wrote:
> >> Hi
> >>
> >> Michael Niedermayer wrote:
> 
> [..]
> 
> >> > the whole above should be replaced by a if (discard_frame) \n 
> >memset(..., 0, ...)
> >> > as already said
> >> >
> >> > [...]
> >>
> >> Ok, I didn't see that. Obviously its much better that way... :)
> >> Attached the updated patch. Hope everything is finally ok now... ;)
> >
> >looks ok
> >
> >whoever applies this should test it with a damaged mp3 though
> 
> I don't have one on hand. Martin, please provide the damaged mp3 that
> your patch is supposed to improve support for.

try the attached program (but make a backup first ;) )

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

In the past you could go to a library and read, borrow or copy any book
Today you'd get arrested for mere telling someone where the library is
-------------- next part --------------

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <inttypes.h>

int main(int argc, char** argv)
{
	FILE *f= fopen(argv[1], "rb+");
	int count= atoi(argv[2]);
	int maxburst= atoi(argv[3]);
	int length, i;

	srand (time (0));

	fseek(f, 0, SEEK_END);
	length= ftell(f);
	fseek(f, 0, SEEK_SET);

	while(count--){
		int burst= random() * (uint64_t) maxburst / RAND_MAX; 
		int pos= random() * (uint64_t) length / RAND_MAX; 
		fseek(f, pos, SEEK_SET);

                while(burst--){
	                int val= random() * 256ULL / RAND_MAX;

                        fwrite(&val, 1, 1, f);
                }
	}
        
	return 0;
}



More information about the ffmpeg-devel mailing list