games/mp3dec: dont give up too soon on stream errors
This commit is contained in:
parent
251c3cd70a
commit
79172e71e6
1 changed files with 16 additions and 7 deletions
|
@ -9,6 +9,7 @@
|
||||||
char *name;
|
char *name;
|
||||||
vlong offset;
|
vlong offset;
|
||||||
int rate = 44100;
|
int rate = 44100;
|
||||||
|
int debug = 0;
|
||||||
|
|
||||||
char *outfile;
|
char *outfile;
|
||||||
int vfd; /* /dev/volume */
|
int vfd; /* /dev/volume */
|
||||||
|
@ -149,12 +150,17 @@ output(void *data, struct mad_header const* header, struct mad_pcm *pcm)
|
||||||
static enum mad_flow
|
static enum mad_flow
|
||||||
error(void *data, struct mad_stream *stream, struct mad_frame *frame)
|
error(void *data, struct mad_stream *stream, struct mad_frame *frame)
|
||||||
{
|
{
|
||||||
if(stream->error == MAD_ERROR_LOSTSYNC)
|
if(stream->error == MAD_ERROR_LOSTSYNC){
|
||||||
return MAD_FLOW_CONTINUE;
|
if(memcmp(stream->this_frame, "TAG", 3)==0){
|
||||||
sysfatal("%s:#%lld: %s",
|
mad_stream_skip(stream, 128);
|
||||||
name, offset-(stream->bufend-stream->next_frame),
|
return MAD_FLOW_CONTINUE;
|
||||||
mad_stream_errorstr(stream));
|
}
|
||||||
return 0;
|
}
|
||||||
|
if(debug)
|
||||||
|
fprint(2, "%s:#%lld: %s\n",
|
||||||
|
name, offset-(stream->bufend-stream->next_frame),
|
||||||
|
mad_stream_errorstr(stream));
|
||||||
|
return MAD_FLOW_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -171,7 +177,7 @@ play(int fd, char *nam)
|
||||||
void
|
void
|
||||||
usage(void)
|
usage(void)
|
||||||
{
|
{
|
||||||
fprint(2, "usage: mp3dec [-o outfile] [file...]\n");
|
fprint(2, "usage: mp3dec [ -d ] [ -o outfile ] [ file ... ]\n");
|
||||||
exits("usage");
|
exits("usage");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -185,6 +191,9 @@ main(int argc, char **argv)
|
||||||
case 'o':
|
case 'o':
|
||||||
outfile = EARGF(usage());
|
outfile = EARGF(usage());
|
||||||
break;
|
break;
|
||||||
|
case 'd':
|
||||||
|
debug++;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
}ARGEND
|
}ARGEND
|
||||||
|
|
Loading…
Reference in a new issue