git: 9front

Download patch

ref: 0d8cfa83c83077abdd024decd89cbc3cabcf620f
parent: d89865d7984c5bf00361392e09b44d4517af3e51
author: cinap_lenrek <cinap_lenrek@rei2.9hal>
date: Tue Feb 14 10:42:58 EST 2012

mp3dec: skip ID3v2 tags

--- a/sys/src/cmd/audio/mp3dec/main.c
+++ b/sys/src/cmd/audio/mp3dec/main.c
@@ -129,9 +129,20 @@
 error(void *, struct mad_stream *stream, struct mad_frame *frame)
 {
 	if(stream->error == MAD_ERROR_LOSTSYNC){
-		if(memcmp(stream->this_frame, "TAG", 3)==0){
+		uchar *p;
+		ulong n;
+
+		p = stream->this_frame;
+		if(memcmp(p, "TAG", 3)==0){
 			mad_stream_skip(stream, 128);
 			return MAD_FLOW_CONTINUE;
+		}
+		if(memcmp(p, "ID3", 3)==0){
+			if(((p[6] | p[7] | p[8] | p[9]) & 0x80) == 0){
+				n = p[9] | p[8]<<7 | p[7]<<14 | p[6]<<21;
+				mad_stream_skip(stream, n+10);
+				return MAD_FLOW_CONTINUE;
+			}
 		}
 	}
 	if(debug)
--